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

#include <ExGflashPhysicsList.hh>

Inheritance diagram for ExGflashPhysicsList:
G4VUserPhysicsList

Public Member Functions

 ExGflashPhysicsList ()
 
virtual ~ExGflashPhysicsList ()
 
- 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 38 of file ExGflashPhysicsList.hh.

Constructor & Destructor Documentation

ExGflashPhysicsList::ExGflashPhysicsList ( )

Definition at line 51 of file ExGflashPhysicsList.cc.

References G4VUserPhysicsList::SetVerboseLevel().

52 {
53  SetVerboseLevel(0);
54 }
void SetVerboseLevel(G4int value)
ExGflashPhysicsList::~ExGflashPhysicsList ( )
virtual

Definition at line 56 of file ExGflashPhysicsList.cc.

57 {
58 }

Member Function Documentation

void ExGflashPhysicsList::AddParameterisation ( )
protected

Definition at line 303 of file ExGflashPhysicsList.cc.

References G4ProcessManager::AddDiscreteProcess(), G4cout, G4endl, G4ParticleDefinition::GetProcessManager(), and theParticleIterator.

Referenced by ConstructProcess().

304 {
306  theFastSimulationManagerProcess =
308  G4cout << "FastSimulationManagerProcess" <<G4endl;
309  theParticleIterator->reset();
310  //std::cout<<"---"<<std::endl;
311  while( (*theParticleIterator)() ){
312  //std::cout<<"+++"<<std::endl;
313 
314  G4ParticleDefinition* particle = theParticleIterator->value();
315  // std::cout<<"--- particle "<<particle->GetParticleName()<<std::endl;
316  G4ProcessManager* pmanager = particle->GetProcessManager();
317  // The fast simulation process becomes a discrete process only since 9.0:
318  pmanager->AddDiscreteProcess(theFastSimulationManagerProcess);
319  }
320 }
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
#define theParticleIterator
void ExGflashPhysicsList::AddTransportation ( )
protectedvirtual

Definition at line 133 of file ExGflashPhysicsList.cc.

References G4VUserPhysicsList::AddTransportation().

Referenced by ConstructProcess().

void ExGflashPhysicsList::ConstructBaryons ( )
protectedvirtual

Definition at line 106 of file ExGflashPhysicsList.cc.

References G4BaryonConstructor::ConstructParticle().

Referenced by ConstructParticle().

107 {
108  // Construct all barions
109  G4BaryonConstructor pConstructor;
110  pConstructor.ConstructParticle();
111 }
static void ConstructParticle()
void ExGflashPhysicsList::ConstructBosons ( )
protectedvirtual

Definition at line 76 of file ExGflashPhysicsList.cc.

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

Referenced by ConstructParticle().

77 {
78  // pseudo-particles
81 
82  // gamma
84 
85  // optical photon
87 }
static G4Geantino * GeantinoDefinition()
Definition: G4Geantino.cc:82
static G4ChargedGeantino * ChargedGeantinoDefinition()
static G4OpticalPhoton * OpticalPhotonDefinition()
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
void ExGflashPhysicsList::ConstructEM ( )
protectedvirtual

Definition at line 157 of file ExGflashPhysicsList.cc.

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

Referenced by ConstructProcess().

158 {
159 
160  G4cout<<"Physics List constructor"<<G4endl;
161  SetCuts();
162  theParticleIterator->reset();
163  while( (*theParticleIterator)() ){
164  G4ParticleDefinition* particle = theParticleIterator->value();
165  G4ProcessManager* pmanager = particle->GetProcessManager();
166  G4String particleName = particle->GetParticleName();
167 
168  if (particleName == "gamma") {
169  // gamma
170  // Construct processes for gamma
171  G4VProcess* theGammaConversion = new G4GammaConversion();
172  G4VProcess* theComptonScattering = new G4ComptonScattering();
173  G4VProcess* thePhotoElectricEffect = new G4PhotoElectricEffect();
174  // G4VProcess* thegammacut = new G4UserLimits();
175  // thegammacut->SetUserMinEkine(1.0*MeV);
176 
177  pmanager->AddDiscreteProcess(theGammaConversion);
178  pmanager->AddDiscreteProcess(theComptonScattering);
179  pmanager->AddDiscreteProcess(thePhotoElectricEffect);
180  // pmanager->AddProcess(thegammacut);
181  // G4cout <<"theGammaConversion" << theGammaConversion <<endl;
182  //G4cout <<"theComptonScattering" << theComptonScattering <<endl;
183  //G4cout <<"thePhotoElectricEffect" << thePhotoElectricEffect <<endl;
184 
185  } else if (particleName == "e-") {
186  //electron
187  // Construct processes for electron
188  G4VProcess* theeminusMultipleScattering = new G4eMultipleScattering();
189  G4VProcess* theeminusIonisation = new G4eIonisation();
190  G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung();
191  // G4VProcess* theeminuscut = new G4UserLimits();
192  // theeminuscut->SetUserMinEkine(1.0*MeV);
193  // add processes
194  pmanager->AddProcess(theeminusMultipleScattering);
195  pmanager->AddProcess(theeminusIonisation);
196  pmanager->AddProcess(theeminusBremsstrahlung);
197 
198  // pmanager->AddProcess( theeminuscut);
199 
200 
201 
202  // set ordering for AlongStepDoIt
203  pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep, 1);
204  pmanager->SetProcessOrdering(theeminusIonisation, idxAlongStep, 2);
205  // set ordering for PostStepDoIt
206  pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep, 1);
207  pmanager->SetProcessOrdering(theeminusIonisation, idxPostStep, 2);
208  pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxPostStep, 3);
209 
210  //G4cout <<"theeminusMultipleScattering" << theeminusMultipleScattering <<endl;
211  //G4cout <<"theeminusIonisation" << theeminusIonisation <<endl;
212  //G4cout <<"theeminusBremsstrahlung" << theeminusBremsstrahlung <<endl;
213 
214  } else if (particleName == "e+") {
215  //positron
216  // Construct processes for positron
217  G4VProcess* theeplusMultipleScattering = new G4eMultipleScattering();
218  G4VProcess* theeplusIonisation = new G4eIonisation();
219  G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung();
220  G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation();
221  // add processes
222  pmanager->AddProcess(theeplusMultipleScattering);
223  pmanager->AddProcess(theeplusIonisation);
224  pmanager->AddProcess(theeplusBremsstrahlung);
225  pmanager->AddProcess(theeplusAnnihilation);
226  // set ordering for AtRestDoIt
227  pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest);
228  // set ordering for AlongStepDoIt
229  pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep, 1);
230  pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep, 2);
231  // set ordering for PostStepDoIt
232  pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep, 1);
233  pmanager->SetProcessOrdering(theeplusIonisation, idxPostStep, 2);
234  pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxPostStep, 3);
235  pmanager->SetProcessOrdering(theeplusAnnihilation, idxPostStep, 4);
236 
237  //G4cout <<"theeplusMultipleScattering" << theeplusMultipleScattering <<endl;
238  //G4cout <<"theeplusIonisation" << theeplusIonisation <<endl;
239  //G4cout <<"theeplusBremsstrahlung" << theeplusBremsstrahlung <<endl;
240 
241  } else if( particleName == "mu+" ||
242  particleName == "mu-" ) {
243  //muon
244  // Construct processes for muon+
245  G4VProcess* aMultipleScattering = new G4MuMultipleScattering();
246  G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung();
247  G4VProcess* aPairProduction = new G4MuPairProduction();
248  G4VProcess* anIonisation = new G4MuIonisation();
249  // add processes
250  pmanager->AddProcess(anIonisation);
251  pmanager->AddProcess(aMultipleScattering);
252  pmanager->AddProcess(aBremsstrahlung);
253  pmanager->AddProcess(aPairProduction);
254  // set ordering for AlongStepDoIt
255  pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep, 1);
256  pmanager->SetProcessOrdering(anIonisation, idxAlongStep, 2);
257  // set ordering for PostStepDoIt
258  pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep, 1);
259  pmanager->SetProcessOrdering(anIonisation, idxPostStep, 2);
260  pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep, 3);
261  pmanager->SetProcessOrdering(aPairProduction, idxPostStep, 4);
262 
263  } else if ((!particle->IsShortLived()) &&
264  (particle->GetPDGCharge() != 0.0) &&
265  (particle->GetParticleName() != "chargedgeantino")) {
266  // all others charged particles except geantino
267  G4VProcess* aMultipleScattering = new G4hMultipleScattering();
268  G4VProcess* anIonisation = new G4hIonisation();
269  // add processes
270  pmanager->AddProcess(anIonisation);
271  pmanager->AddProcess(aMultipleScattering);
272  // set ordering for AlongStepDoIt
273  pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep, 1);
274  pmanager->SetProcessOrdering(anIonisation, idxAlongStep, 2);
275  // set ordering for PostStepDoIt
276  pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep, 1);
277  pmanager->SetProcessOrdering(anIonisation, idxPostStep, 2);
278  }
279  }
280 }
void SetProcessOrderingToFirst(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
#define G4endl
Definition: G4ios.hh:61
G4double GetPDGCharge() const
#define theParticleIterator
void ExGflashPhysicsList::ConstructGeneral ( )
protectedvirtual

Definition at line 284 of file ExGflashPhysicsList.cc.

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

Referenced by ConstructProcess().

285 {
286  // Add Decay Process
287  G4Decay* theDecayProcess = new G4Decay();
288  //G4cout << "decay" <<theDecayProcess<<endl;
289  theParticleIterator->reset();
290  while( (*theParticleIterator)() ){
291  G4ParticleDefinition* particle = theParticleIterator->value();
292  G4ProcessManager* pmanager = particle->GetProcessManager();
293  if (theDecayProcess->IsApplicable(*particle)) {
294  pmanager ->AddProcess(theDecayProcess);
295  // set ordering for PostStepDoIt and AtRestDoIt
296  pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
297  pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
298  }
299  }
300 }
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 ExGflashPhysicsList::ConstructIons ( )
protectedvirtual

Definition at line 114 of file ExGflashPhysicsList.cc.

References G4IonConstructor::ConstructParticle().

Referenced by ConstructParticle().

115 {
116  // Construct light ions
117  G4IonConstructor pConstructor;
118  pConstructor.ConstructParticle();
119 }
static void ConstructParticle()
void ExGflashPhysicsList::ConstructLeptons ( )
protectedvirtual

Definition at line 90 of file ExGflashPhysicsList.cc.

References G4LeptonConstructor::ConstructParticle().

Referenced by ConstructParticle().

91 {
92  // Construct all leptons
93  G4LeptonConstructor pConstructor;
94  pConstructor.ConstructParticle();
95 }
static void ConstructParticle()
void ExGflashPhysicsList::ConstructMesons ( )
protectedvirtual

Definition at line 98 of file ExGflashPhysicsList.cc.

References G4MesonConstructor::ConstructParticle().

Referenced by ConstructParticle().

99 {
100  // Construct all mesons
101  G4MesonConstructor pConstructor;
102  pConstructor.ConstructParticle();
103 }
static void ConstructParticle()
void ExGflashPhysicsList::ConstructParticle ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 60 of file ExGflashPhysicsList.cc.

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

61 {
62  // In this method, static member functions should be called
63  // for all particles which you want to use.
64  // This ensures that objects of these particle types will be
65  // created in the program.
66 
67  std::cout<<"start construct particle"<<std::endl;
72  ConstructIons();
73  std::cout<<"end construct particle"<<std::endl;
74 }
virtual void ConstructMesons()
virtual void ConstructLeptons()
virtual void ConstructBaryons()
virtual void ConstructIons()
virtual void ConstructBosons()
void ExGflashPhysicsList::ConstructProcess ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 121 of file ExGflashPhysicsList.cc.

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

122 {
125  std::cout<<"AddParameterisation"<<std::endl;
126 
127  ConstructEM();
128  std::cout<<"ConstructEM"<<std::endl;
130 }
virtual void ConstructGeneral()
virtual void AddTransportation()
void ExGflashPhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 322 of file ExGflashPhysicsList.cc.

References G4VUserPhysicsList::DumpCutValuesTable(), G4cout, G4RegionStore::GetInstance(), G4ProductionCutsTable::GetProductionCutsTable(), G4RegionStore::GetRegion(), G4VUserPhysicsList::SetCutsWithDefault(), G4Region::SetProductionCuts(), and G4VUserPhysicsList::verboseLevel.

Referenced by ConstructEM().

323 {
324  if (verboseLevel >1){
325  G4cout << "ExGflashPhysicsList::SetCuts:";
326  }
327  // " G4VUserPhysicsList::SetCutsWithDefault" method sets
328  // the default cut value for all particle types
331  // SetCutValue(100*mm, "gamma");
332 // SetCutValue(0*mm, "e-");
333 // SetCutValue(0*mm, "e+");
334 
335 // SetCutValue(62*mm, "gamma");
336 // SetCutValue(0.73*mm, "e-");
337 // SetCutValue(0.78*mm, "e+");
338 
339 
340 
341 
342 
344 // set cuts for region crystals with default Cuts
345  G4Region* region = G4RegionStore::GetInstance()->GetRegion("crystals");
346  region->SetProductionCuts(
347  G4ProductionCutsTable::GetProductionCutsTable()->GetDefaultProductionCuts());
348 }
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
static G4RegionStore * GetInstance()
void DumpCutValuesTable(G4int flag=1)
G4GLOB_DLL std::ostream G4cout
static G4ProductionCutsTable * GetProductionCutsTable()
void SetProductionCuts(G4ProductionCuts *cut)

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