Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions
Par01PhysicsList Class Reference

#include <Par01PhysicsList.hh>

Inheritance diagram for Par01PhysicsList:
G4VUserPhysicsList

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 ()
 

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 ( )

Definition at line 47 of file Par01PhysicsList.cc.

References G4VUserPhysicsList::SetVerboseLevel().

48 {
49  SetVerboseLevel(1);
50 }
void SetVerboseLevel(G4int value)
Par01PhysicsList::~Par01PhysicsList ( )
virtual

Definition at line 52 of file Par01PhysicsList.cc.

53 {
54 }

Member Function Documentation

void Par01PhysicsList::AddParameterisation ( )
protected

Definition at line 262 of file Par01PhysicsList.cc.

References G4ProcessManager::AddProcess(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), idxAlongStep, idxPostStep, G4ProcessManager::SetProcessOrdering(), and theParticleIterator.

Referenced by ConstructProcess().

263 {
264  // -- Fast simulation manager process for "mass geometry":
266  fastSimProcess_massGeom = new G4FastSimulationManagerProcess("G4FSMP_massGeom");
267  // -- Fast simulation manager process for "parallel geometry":
269  fastSimProcess_parallelGeom = new G4FastSimulationManagerProcess("G4FSMP_parallelGeom",
270  "pionGhostWorld");
271  theParticleIterator->reset();
272  while( (*theParticleIterator)() )
273  {
274  G4ParticleDefinition* particle = theParticleIterator->value();
275  G4ProcessManager* pmanager = particle->GetProcessManager();
276  // -- For the mass geometry, G4FSMP is a PostStep process, ordering does not matter:
277  if (particle->GetParticleName() == "e+" ||
278  particle->GetParticleName() == "e-" ||
279  particle->GetParticleName() == "gamma") pmanager->
280  AddDiscreteProcess(fastSimProcess_massGeom);
281  // -- For the parallel geometry, G4FSMP is an Along+PostStep process, and ordering matters:
282  if (particle->GetParticleName() == "pi+" ||
283  particle->GetParticleName() == "pi-")
284  {
285  pmanager->AddProcess(fastSimProcess_parallelGeom);
286  pmanager->SetProcessOrdering(fastSimProcess_parallelGeom, idxAlongStep, 1);
287  pmanager->SetProcessOrdering(fastSimProcess_parallelGeom, idxPostStep);
288  }
289  }
290 }
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)
#define theParticleIterator
void Par01PhysicsList::AddTransportation ( )
protectedvirtual

Definition at line 124 of file Par01PhysicsList.cc.

References G4VUserPhysicsList::AddTransportation().

Referenced by ConstructProcess().

void Par01PhysicsList::ConstructBaryons ( )
protectedvirtual

Definition at line 100 of file Par01PhysicsList.cc.

References G4BaryonConstructor::ConstructParticle().

Referenced by ConstructParticle().

101 {
102  // Construct all barions
103  G4BaryonConstructor pConstructor;
104  pConstructor.ConstructParticle();
105 }
static void ConstructParticle()
void Par01PhysicsList::ConstructBosons ( )
protectedvirtual

Definition at line 70 of file Par01PhysicsList.cc.

References G4ChargedGeantino::ChargedGeantinoDefinition(), G4Gamma::GammaDefinition(), G4Geantino::GeantinoDefinition(), and G4OpticalPhoton::OpticalPhotonDefinition().

Referenced by ConstructParticle().

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
void Par01PhysicsList::ConstructEM ( )
protectedvirtual

Definition at line 146 of file Par01PhysicsList.cc.

References G4ProcessManager::AddDiscreteProcess(), G4ProcessManager::AddProcess(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetProcessManager(), idxAlongStep, idxAtRest, idxPostStep, G4ParticleDefinition::IsShortLived(), G4ProcessManager::SetProcessOrdering(), G4ProcessManager::SetProcessOrderingToFirst(), and theParticleIterator.

Referenced by ConstructProcess().

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

Definition at line 245 of file Par01PhysicsList.cc.

References G4ProcessManager::AddProcess(), G4ParticleDefinition::GetProcessManager(), idxAtRest, idxPostStep, G4Decay::IsApplicable(), G4ProcessManager::SetProcessOrdering(), and theParticleIterator.

Referenced by ConstructProcess().

246 {
247  // Add Decay Process
248  G4Decay* theDecayProcess = new G4Decay();
249  theParticleIterator->reset();
250  while( (*theParticleIterator)() ){
251  G4ParticleDefinition* particle = theParticleIterator->value();
252  G4ProcessManager* pmanager = particle->GetProcessManager();
253  if (theDecayProcess->IsApplicable(*particle)) {
254  pmanager ->AddProcess(theDecayProcess);
255  // set ordering for PostStepDoIt and AtRestDoIt
256  pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
257  pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
258  }
259  }
260 }
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)
#define theParticleIterator
void Par01PhysicsList::ConstructIons ( )
protectedvirtual

Definition at line 108 of file Par01PhysicsList.cc.

References G4IonConstructor::ConstructParticle().

Referenced by ConstructParticle().

109 {
110  // Construct light ions
111  G4IonConstructor pConstructor;
112  pConstructor.ConstructParticle();
113 }
static void ConstructParticle()
void Par01PhysicsList::ConstructLeptons ( )
protectedvirtual

Definition at line 84 of file Par01PhysicsList.cc.

References G4LeptonConstructor::ConstructParticle().

Referenced by ConstructParticle().

85 {
86  // Construct all leptons
87  G4LeptonConstructor pConstructor;
88  pConstructor.ConstructParticle();
89 }
static void ConstructParticle()
void Par01PhysicsList::ConstructMesons ( )
protectedvirtual

Definition at line 92 of file Par01PhysicsList.cc.

References G4MesonConstructor::ConstructParticle().

Referenced by ConstructParticle().

93 {
94  // Construct all mesons
95  G4MesonConstructor pConstructor;
96  pConstructor.ConstructParticle();
97 }
static void ConstructParticle()
void Par01PhysicsList::ConstructParticle ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 56 of file Par01PhysicsList.cc.

References ConstructBaryons(), ConstructBosons(), ConstructIons(), ConstructLeptons(), and ConstructMesons().

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()
void Par01PhysicsList::ConstructProcess ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 115 of file Par01PhysicsList.cc.

References AddParameterisation(), AddTransportation(), ConstructEM(), and ConstructGeneral().

116 {
119 
120  ConstructEM();
122 }
virtual void ConstructGeneral()
virtual void AddTransportation()
virtual void ConstructEM()
void Par01PhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 292 of file Par01PhysicsList.cc.

References G4cout, G4VUserPhysicsList::SetCutsWithDefault(), and G4VUserPhysicsList::verboseLevel.

293 {
294  if (verboseLevel >1){
295  G4cout << "Par01PhysicsList::SetCuts:";
296  }
297  // " G4VUserPhysicsList::SetCutsWithDefault" method sets
298  // the default cut value for all particle types
300 }
G4GLOB_DLL std::ostream G4cout

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