Geant4  10.02.p03
Par01PhysicsList Class Reference

#include <Par01PhysicsList.hh>

Inheritance diagram for Par01PhysicsList:
Collaboration diagram for Par01PhysicsList:

Public Member Functions

 Par01PhysicsList ()
 
virtual ~Par01PhysicsList ()
 
- Public Member Functions inherited from G4VUserPhysicsList
 G4VUserPhysicsList ()
 
virtual ~G4VUserPhysicsList ()
 
 G4VUserPhysicsList (const G4VUserPhysicsList &)
 
G4VUserPhysicsListoperator= (const G4VUserPhysicsList &)
 
void Construct ()
 
void UseCoupledTransportation (G4bool vl=true)
 
void SetDefaultCutValue (G4double newCutValue)
 
G4double GetDefaultCutValue () const
 
void BuildPhysicsTable ()
 
void PreparePhysicsTable (G4ParticleDefinition *)
 
void BuildPhysicsTable (G4ParticleDefinition *)
 
G4bool StorePhysicsTable (const G4String &directory=".")
 
G4bool IsPhysicsTableRetrieved () const
 
G4bool IsStoredInAscii () const
 
const G4StringGetPhysicsTableDirectory () const
 
void SetPhysicsTableRetrieved (const G4String &directory="")
 
void SetStoredInAscii ()
 
void ResetPhysicsTableRetrieved ()
 
void ResetStoredInAscii ()
 
void DumpList () const
 
void DumpCutValuesTable (G4int flag=1)
 
void DumpCutValuesTableIfRequested ()
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
void SetCutsWithDefault ()
 
void SetCutValue (G4double aCut, const G4String &pname)
 
G4double GetCutValue (const G4String &pname) const
 
void SetCutValue (G4double aCut, const G4String &pname, const G4String &rname)
 
void SetParticleCuts (G4double cut, G4ParticleDefinition *particle, G4Region *region=0)
 
void SetParticleCuts (G4double cut, const G4String &particleName, G4Region *region=0)
 
void SetCutsForRegion (G4double aCut, const G4String &rname)
 
void ResetCuts ()
 obsolete methods More...
 
void SetApplyCuts (G4bool value, const G4String &name)
 
G4bool GetApplyCuts (const G4String &name) const
 
void RemoveProcessManager ()
 
void AddProcessManager (G4ParticleDefinition *newParticle, G4ProcessManager *newManager=0)
 
void CheckParticleList ()
 
void DisableCheckParticleList ()
 
G4int GetInstanceID () const
 
void InitializeWorker ()
 

Protected Member Functions

virtual void ConstructParticle ()
 
virtual void ConstructProcess ()
 
virtual void SetCuts ()
 
virtual void ConstructBosons ()
 
virtual void ConstructLeptons ()
 
virtual void ConstructMesons ()
 
virtual void ConstructBaryons ()
 
virtual void ConstructIons ()
 
void AddParameterisation ()
 
virtual void ConstructGeneral ()
 
virtual void ConstructEM ()
 
virtual void AddTransportation ()
 
- Protected Member Functions inherited from G4VUserPhysicsList
void AddTransportation ()
 
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
void BuildIntegralPhysicsTable (G4VProcess *, G4ParticleDefinition *)
 
virtual void RetrievePhysicsTable (G4ParticleDefinition *, const G4String &directory, G4bool ascii=false)
 
void InitializeProcessManager ()
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VUserPhysicsList
static const G4VUPLManagerGetSubInstanceManager ()
 
- Protected Attributes inherited from G4VUserPhysicsList
G4ParticleTabletheParticleTable
 
G4int verboseLevel
 
G4double defaultCutValue
 
G4bool isSetDefaultCutValue
 
G4ProductionCutsTablefCutsTable
 
G4bool fRetrievePhysicsTable
 
G4bool fStoredInAscii
 
G4bool fIsCheckedForRetrievePhysicsTable
 
G4bool fIsRestoredCutValues
 
G4String directoryPhysicsTable
 
G4bool fDisableCheckParticleList
 
G4int g4vuplInstanceID
 
- Static Protected Attributes inherited from G4VUserPhysicsList
static G4RUN_DLL G4VUPLManager subInstanceManager
 

Detailed Description

Definition at line 36 of file Par01PhysicsList.hh.

Constructor & Destructor Documentation

◆ Par01PhysicsList()

Par01PhysicsList::Par01PhysicsList ( )

Definition at line 47 of file Par01PhysicsList.cc.

48 {
49  SetVerboseLevel(1);
50 }
void SetVerboseLevel(G4int value)
Here is the call graph for this function:

◆ ~Par01PhysicsList()

Par01PhysicsList::~Par01PhysicsList ( )
virtual

Definition at line 52 of file Par01PhysicsList.cc.

53 {
54 }

Member Function Documentation

◆ AddParameterisation()

void Par01PhysicsList::AddParameterisation ( )
protected

Definition at line 264 of file Par01PhysicsList.cc.

265 {
266  // -- Fast simulation manager process for "mass geometry":
268  fastSimProcess_massGeom = new G4FastSimulationManagerProcess("G4FSMP_massGeom");
269  // -- Fast simulation manager process for "parallel geometry":
271  fastSimProcess_parallelGeom = new G4FastSimulationManagerProcess("G4FSMP_parallelGeom",
272  "pionGhostWorld");
274  particleIterator->reset();
275  while( (*particleIterator)() )
276  {
277  G4ParticleDefinition* particle = particleIterator->value();
278  G4ProcessManager* pmanager = particle->GetProcessManager();
279  // -- For the mass geometry, G4FSMP is a PostStep process, ordering does not matter:
280  if (particle->GetParticleName() == "e+" ||
281  particle->GetParticleName() == "e-" ||
282  particle->GetParticleName() == "gamma") pmanager->
283  AddDiscreteProcess(fastSimProcess_massGeom);
284  // -- For the parallel geometry, G4FSMP is an Along+PostStep process, and ordering matters:
285  if (particle->GetParticleName() == "pi+" ||
286  particle->GetParticleName() == "pi-")
287  {
288  pmanager->AddProcess(fastSimProcess_parallelGeom);
289  pmanager->SetProcessOrdering(fastSimProcess_parallelGeom, idxAlongStep, 1);
290  pmanager->SetProcessOrdering(fastSimProcess_parallelGeom, idxPostStep);
291  }
292  }
293 }
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
std::vector< G4InuclElementaryParticle >::iterator particleIterator
Definition: G4BigBanger.cc:65
Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddTransportation()

void Par01PhysicsList::AddTransportation ( )
protectedvirtual

Definition at line 124 of file Par01PhysicsList.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructBaryons()

void Par01PhysicsList::ConstructBaryons ( )
protectedvirtual

Definition at line 100 of file Par01PhysicsList.cc.

101 {
102  // Construct all barions
103  G4BaryonConstructor pConstructor;
104  pConstructor.ConstructParticle();
105 }
static void ConstructParticle()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructBosons()

void Par01PhysicsList::ConstructBosons ( )
protectedvirtual

Definition at line 70 of file Par01PhysicsList.cc.

71 {
72  // pseudo-particles
75 
76  // gamma
78 
79  // optical photon
81 }
static G4Geantino * GeantinoDefinition()
Definition: G4Geantino.cc:82
static G4ChargedGeantino * ChargedGeantinoDefinition()
static G4OpticalPhoton * OpticalPhotonDefinition()
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructEM()

void Par01PhysicsList::ConstructEM ( )
protectedvirtual

Definition at line 146 of file Par01PhysicsList.cc.

147 {
149  particleIterator->reset();
150  while( (*particleIterator)() ){
151  G4ParticleDefinition* particle = particleIterator->value();
152  G4ProcessManager* pmanager = particle->GetProcessManager();
153  G4String particleName = particle->GetParticleName();
154 
155  if (particleName == "gamma") {
156  // gamma
157  // Construct processes for gamma
158  pmanager->AddDiscreteProcess(new G4GammaConversion());
159  pmanager->AddDiscreteProcess(new G4ComptonScattering());
160  pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
161 
162  } else if (particleName == "e-") {
163  //electron
164  // Construct processes for electron
165  G4VProcess* theeminusMultipleScattering = new G4eMultipleScattering();
166  G4VProcess* theeminusIonisation = new G4eIonisation();
167  G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung();
168  // add processes
169  pmanager->AddProcess(theeminusMultipleScattering);
170  pmanager->AddProcess(theeminusIonisation);
171  pmanager->AddProcess(theeminusBremsstrahlung);
172  // set ordering for AlongStepDoIt
173  pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep, 1);
174  pmanager->SetProcessOrdering(theeminusIonisation, idxAlongStep, 2);
175  // set ordering for PostStepDoIt
176  pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep, 1);
177  pmanager->SetProcessOrdering(theeminusIonisation, idxPostStep, 2);
178  pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxPostStep, 3);
179 
180  } else if (particleName == "e+") {
181  //positron
182  // Construct processes for positron
183  G4VProcess* theeplusMultipleScattering = new G4eMultipleScattering();
184  G4VProcess* theeplusIonisation = new G4eIonisation();
185  G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung();
186  G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation();
187  // add processes
188  pmanager->AddProcess(theeplusMultipleScattering);
189  pmanager->AddProcess(theeplusIonisation);
190  pmanager->AddProcess(theeplusBremsstrahlung);
191  pmanager->AddProcess(theeplusAnnihilation);
192  // set ordering for AtRestDoIt
193  pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest);
194  // set ordering for AlongStepDoIt
195  pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep, 1);
196  pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep, 2);
197  // set ordering for PostStepDoIt
198  pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep, 1);
199  pmanager->SetProcessOrdering(theeplusIonisation, idxPostStep, 2);
200  pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxPostStep, 3);
201  pmanager->SetProcessOrdering(theeplusAnnihilation, idxPostStep, 4);
202 
203  } else if( particleName == "mu+" ||
204  particleName == "mu-" ) {
205  //muon
206  // Construct processes for muon+
207  G4VProcess* aMultipleScattering = new G4MuMultipleScattering();
208  G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung();
209  G4VProcess* aPairProduction = new G4MuPairProduction();
210  G4VProcess* anIonisation = new G4MuIonisation();
211  // add processes
212  pmanager->AddProcess(anIonisation);
213  pmanager->AddProcess(aMultipleScattering);
214  pmanager->AddProcess(aBremsstrahlung);
215  pmanager->AddProcess(aPairProduction);
216  // set ordering for AlongStepDoIt
217  pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep, 1);
218  pmanager->SetProcessOrdering(anIonisation, idxAlongStep, 2);
219  // set ordering for PostStepDoIt
220  pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep, 1);
221  pmanager->SetProcessOrdering(anIonisation, idxPostStep, 2);
222  pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep, 3);
223  pmanager->SetProcessOrdering(aPairProduction, idxPostStep, 4);
224 
225  } else if ((!particle->IsShortLived()) &&
226  (particle->GetPDGCharge() != 0.0) &&
227  (particle->GetParticleName() != "chargedgeantino")) {
228  // all others charged particles except geantino
229  G4VProcess* aMultipleScattering = new G4hMultipleScattering();
230  G4VProcess* anIonisation = new G4hIonisation();
231  // add processes
232  pmanager->AddProcess(anIonisation);
233  pmanager->AddProcess(aMultipleScattering);
234  // set ordering for AlongStepDoIt
235  pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep, 1);
236  pmanager->SetProcessOrdering(anIonisation, idxAlongStep, 2);
237  // set ordering for PostStepDoIt
238  pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep, 1);
239  pmanager->SetProcessOrdering(anIonisation, idxPostStep, 2);
240  }
241  }
242 }
void SetProcessOrderingToFirst(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
std::vector< G4InuclElementaryParticle >::iterator particleIterator
Definition: G4BigBanger.cc:65
G4double GetPDGCharge() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructGeneral()

void Par01PhysicsList::ConstructGeneral ( )
protectedvirtual

Definition at line 246 of file Par01PhysicsList.cc.

247 {
248  // Add Decay Process
249  G4Decay* theDecayProcess = new G4Decay();
251  particleIterator->reset();
252  while( (*particleIterator)() ){
253  G4ParticleDefinition* particle = particleIterator->value();
254  G4ProcessManager* pmanager = particle->GetProcessManager();
255  if (theDecayProcess->IsApplicable(*particle)) {
256  pmanager ->AddProcess(theDecayProcess);
257  // set ordering for PostStepDoIt and AtRestDoIt
258  pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
259  pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
260  }
261  }
262 }
virtual G4bool IsApplicable(const G4ParticleDefinition &)
Definition: G4Decay.cc:89
G4ProcessManager * GetProcessManager() const
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
std::vector< G4InuclElementaryParticle >::iterator particleIterator
Definition: G4BigBanger.cc:65
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructIons()

void Par01PhysicsList::ConstructIons ( )
protectedvirtual

Definition at line 108 of file Par01PhysicsList.cc.

109 {
110  // Construct light ions
111  G4IonConstructor pConstructor;
112  pConstructor.ConstructParticle();
113 }
static void ConstructParticle()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructLeptons()

void Par01PhysicsList::ConstructLeptons ( )
protectedvirtual

Definition at line 84 of file Par01PhysicsList.cc.

85 {
86  // Construct all leptons
87  G4LeptonConstructor pConstructor;
88  pConstructor.ConstructParticle();
89 }
static void ConstructParticle()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructMesons()

void Par01PhysicsList::ConstructMesons ( )
protectedvirtual

Definition at line 92 of file Par01PhysicsList.cc.

93 {
94  // Construct all mesons
95  G4MesonConstructor pConstructor;
96  pConstructor.ConstructParticle();
97 }
static void ConstructParticle()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructParticle()

void Par01PhysicsList::ConstructParticle ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 56 of file Par01PhysicsList.cc.

57 {
58  // In this method, static member functions should be called
59  // for all particles which you want to use.
60  // This ensures that objects of these particle types will be
61  // created in the program.
62 
67  ConstructIons();
68 }
virtual void ConstructIons()
virtual void ConstructLeptons()
virtual void ConstructBosons()
virtual void ConstructBaryons()
virtual void ConstructMesons()
Here is the call graph for this function:

◆ ConstructProcess()

void Par01PhysicsList::ConstructProcess ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 115 of file Par01PhysicsList.cc.

116 {
119 
120  ConstructEM();
122 }
virtual void ConstructGeneral()
virtual void AddTransportation()
virtual void ConstructEM()
Here is the call graph for this function:

◆ SetCuts()

void Par01PhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 295 of file Par01PhysicsList.cc.

296 {
297  if (verboseLevel >1){
298  G4cout << "Par01PhysicsList::SetCuts:";
299  }
300  // " G4VUserPhysicsList::SetCutsWithDefault" method sets
301  // the default cut value for all particle types
303 }
G4GLOB_DLL std::ostream G4cout
Here is the call graph for this function:

The documentation for this class was generated from the following files: