Message: Need help setting up physics list Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Need help setting up physics list 

Forum: Physics List
Date: 03 Feb, 2012
From: Tobias Kunz <Tobias Kunz>

Hey,

after a week of searching the internet, I'm trying to ask here:

I'm trying to simulate particles in a scintillator (later it should be a muon beam hitting an lh2 target). The simulation works not too bad, but I've still problems setting up the physics list.

What I've done so far is listed below. I created the particles (a cout check showed me it worked fine)

void ConstructParticle(void){
	G4BosonConstructor  bosonConstructor;
	bosonConstructor.ConstructParticle();

	G4LeptonConstructor leptonConstructor;
	leptonConstructor.ConstructParticle();

	G4MesonConstructor mesonConstructor;
	mesonConstructor.ConstructParticle();

	G4BaryonConstructor baryonConstructor;
	baryonConstructor.ConstructParticle();

	G4IonConstructor ionConstructor;
	ionConstructor.ConstructParticle();

    G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
    particleTable->Remove(G4Geantino::GeantinoDefinition());
    particleTable->Remove(G4ChargedGeantino::ChargedGeantinoDefinition());
}

In the ConstructProcess(void) I subdivided the processes as followed:

void PhysicsList::ConstructProcess(void){
	AddTransportation();
	processElectromagnetic();
	processOptical();
	processHadronic();
	processDecay();
}

I think processElectromagnetic(), processDecay() and processOptical() work well, they are set up like this:

void PhysicsList::processElectromagnetic(void){
	theParticleIterator->reset();
	while( (*theParticleIterator)() ){
		G4ParticleDefinition* particle = theParticleIterator->value();
		if (particle->GetParticleName() == G4Gamma::GammaDefinition()->GetParticleName()) {
			physicListHelper->RegisterProcess(new G4PhotoElectricEffect(), particle);
			physicListHelper->RegisterProcess(new G4ComptonScattering()  , particle);
			physicListHelper->RegisterProcess(new G4GammaConversion()    , particle);
...
}

void PhysicsList::processOptical(void){
...
    physicListHelper->RegisterProcess(cerenkov, particle);
...
}

void PhysicsList::processDecay(void){
...
    physicListHelper->RegisterProcess(decay, particle);
...
}

The main problem I see now is the processHadronic(). This function should cover a very wide energy range, from 0.25 MeV (or even lower) up to 5 GeV (and later 160 GeV).

I thought of using something like this

G4HadronElasticProcess* hadronElasticProcess = new G4HadronElasticProcess(""); G4LElastic* modelElastic = new G4LElastic; hadronElasticProcess->RegisterMe(modelElastic);

for the elastic processes (for all particles the same) and I thought I could use the G4..particleName...InelasticProcess* inelasticProcess = new G4...particleName...InelasticProcess("");

for the inelastic stuff. What kinds of models do you propose? Is there a better way of creating my physics list?

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 Idea: Re: Need help setting up physics list   (Andrea Dotti - 03 Feb, 2012)
 Add Message Add Message
to: "Need help setting up physics list"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]