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

#include <RE06PhysicsList.hh>

Inheritance diagram for RE06PhysicsList:
G4VUserPhysicsList

Public Member Functions

 RE06PhysicsList ()
 
virtual ~RE06PhysicsList ()
 
- 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 ()
 
void ConstructBosons ()
 
void ConstructLeptons ()
 
void ConstructMesons ()
 
void ConstructBaryons ()
 
void ConstructGeneral ()
 
void ConstructEM ()
 
- 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 RE06PhysicsList.hh.

Constructor & Destructor Documentation

RE06PhysicsList::RE06PhysicsList ( )
RE06PhysicsList::~RE06PhysicsList ( )
virtual

Definition at line 52 of file RE06PhysicsList.cc.

53 {}

Member Function Documentation

void RE06PhysicsList::ConstructBaryons ( )
protected

Definition at line 118 of file RE06PhysicsList.cc.

References G4AntiNeutron::AntiNeutronDefinition(), G4AntiProton::AntiProtonDefinition(), G4Neutron::NeutronDefinition(), and G4Proton::ProtonDefinition().

Referenced by ConstructParticle().

119 {
120 // barions
125 }
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:88
static G4AntiProton * AntiProtonDefinition()
Definition: G4AntiProton.cc:88
static G4AntiNeutron * AntiNeutronDefinition()
static G4Neutron * NeutronDefinition()
Definition: G4Neutron.cc:99
void RE06PhysicsList::ConstructBosons ( )
protected

Definition at line 72 of file RE06PhysicsList.cc.

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

Referenced by ConstructParticle().

73 {
74  // pseudo-particles
77 
78  // gamma
80 }
static G4Geantino * GeantinoDefinition()
Definition: G4Geantino.cc:82
static G4ChargedGeantino * ChargedGeantinoDefinition()
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
void RE06PhysicsList::ConstructEM ( )
protected

Definition at line 156 of file RE06PhysicsList.cc.

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

Referenced by ConstructProcess().

157 {
158  G4bool displacementFlg = true; // for multiple scattering
159  theParticleIterator->reset();
160  while( (*theParticleIterator)() ){
161  G4ParticleDefinition* particle = theParticleIterator->value();
162  G4ProcessManager* pmanager = particle->GetProcessManager();
163  G4String particleName = particle->GetParticleName();
164 
165  if (particleName == "gamma") {
166  // gamma
167  pmanager->AddDiscreteProcess(new G4GammaConversion());
168  pmanager->AddDiscreteProcess(new G4ComptonScattering());
169  pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
170 
171  } else if (particleName == "e-") {
172  //electron
173  G4eMultipleScattering* theeminusMultipleScattering
174  = new G4eMultipleScattering();
175  theeminusMultipleScattering->SetLateralDisplasmentFlag(displacementFlg);
176  G4VProcess* theeminusIonisation = new G4eIonisation();
177  G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung();
178  //
179  // add processes
180  pmanager->AddProcess(theeminusMultipleScattering);
181  pmanager->AddProcess(theeminusIonisation);
182  pmanager->AddProcess(theeminusBremsstrahlung);
183  //
184  // set ordering for AlongStepDoIt
185  pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep,1);
186  pmanager->SetProcessOrdering(theeminusIonisation, idxAlongStep,2);
187  pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxAlongStep,3);
188  //
189  // set ordering for PostStepDoIt
190  pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep,1);
191  pmanager->SetProcessOrdering(theeminusIonisation, idxPostStep,2);
192  pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxPostStep,3);
193 
194  } else if (particleName == "e+") {
195  //positron
196  G4eMultipleScattering* theeplusMultipleScattering
197  = new G4eMultipleScattering();
198  theeplusMultipleScattering->SetLateralDisplasmentFlag(displacementFlg);
199  G4VProcess* theeplusIonisation = new G4eIonisation();
200  G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung();
201  G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation();
202  //
203  // add processes
204  pmanager->AddProcess(theeplusMultipleScattering);
205  pmanager->AddProcess(theeplusIonisation);
206  pmanager->AddProcess(theeplusBremsstrahlung);
207  pmanager->AddProcess(theeplusAnnihilation);
208  //
209  // set ordering for AtRestDoIt
210  pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest);
211  //
212  // set ordering for AlongStepDoIt
213  pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep,1);
214  pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep,2);
215  pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxAlongStep,3);
216  //
217  // set ordering for PostStepDoIt
218  pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep,1);
219  pmanager->SetProcessOrdering(theeplusIonisation, idxPostStep,2);
220  pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxPostStep,3);
221  pmanager->SetProcessOrdering(theeplusAnnihilation, idxPostStep,4);
222 
223  } else if( particleName == "mu+" ||
224  particleName == "mu-" ) {
225  //muon
226  G4MuMultipleScattering* aMultipleScattering
227  = new G4MuMultipleScattering();
228  aMultipleScattering->SetLateralDisplasmentFlag(displacementFlg);
229  G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung();
230  G4VProcess* aPairProduction = new G4MuPairProduction();
231  G4VProcess* anIonisation = new G4MuIonisation();
232  //
233  // add processes
234  pmanager->AddProcess(anIonisation);
235  pmanager->AddProcess(aMultipleScattering);
236  pmanager->AddProcess(aBremsstrahlung);
237  pmanager->AddProcess(aPairProduction);
238  //
239  // set ordering for AlongStepDoIt
240  pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
241  pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2);
242  pmanager->SetProcessOrdering(aBremsstrahlung, idxAlongStep,3);
243  pmanager->SetProcessOrdering(aPairProduction, idxAlongStep,4);
244 
245  //
246  // set ordering for PostStepDoIt
247  pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
248  pmanager->SetProcessOrdering(anIonisation, idxPostStep,2);
249  pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep,3);
250  pmanager->SetProcessOrdering(aPairProduction, idxPostStep,4);
251 
252  } else if ((!particle->IsShortLived()) &&
253  (particle->GetPDGCharge() != 0.0) &&
254  (particle->GetParticleName() != "chargedgeantino")) {
255  // all others charged particles except geantino
256  G4hMultipleScattering* aMultipleScattering = new G4hMultipleScattering();
257  aMultipleScattering->SetLateralDisplasmentFlag(displacementFlg);
258  G4VProcess* anIonisation = new G4hIonisation();
259  //
260  // add processes
261  pmanager->AddProcess(anIonisation);
262  pmanager->AddProcess(aMultipleScattering);
263  //
264  // set ordering for AlongStepDoIt
265  pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
266  pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2);
267  //
268  // set ordering for PostStepDoIt
269  pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
270  pmanager->SetProcessOrdering(anIonisation, idxPostStep,2);
271  }
272  }
273 }
void SetProcessOrderingToFirst(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
void SetLateralDisplasmentFlag(G4bool val)
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
bool G4bool
Definition: G4Types.hh:79
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 RE06PhysicsList::ConstructGeneral ( )
protected

Definition at line 280 of file RE06PhysicsList.cc.

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

Referenced by ConstructProcess().

281 {
282  // Add Decay Process and Parallel world Scoring Process
283  G4Decay* theDecayProcess = new G4Decay();
284  G4ParallelWorldScoringProcess* theParallelWorldScoringProcess
285  = new G4ParallelWorldScoringProcess("ParaWorldScoringProc");
286  theParallelWorldScoringProcess->SetParallelWorld("ParallelScoringWorld");
287 
288  theParticleIterator->reset();
289  while( (*theParticleIterator)() ){
290  G4ParticleDefinition* particle = theParticleIterator->value();
291  G4ProcessManager* pmanager = particle->GetProcessManager();
292  if (theDecayProcess->IsApplicable(*particle)) {
293  pmanager ->AddProcess(theDecayProcess);
294  pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
295  pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
296  }
297  pmanager->AddProcess(theParallelWorldScoringProcess);
298  pmanager
299  ->SetProcessOrderingToLast(theParallelWorldScoringProcess, idxAtRest);
300  pmanager
301  ->SetProcessOrdering(theParallelWorldScoringProcess, idxAlongStep, 1);
302  pmanager
303  ->SetProcessOrderingToLast(theParallelWorldScoringProcess, idxPostStep);
304  }
305 }
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 SetParallelWorld(G4String parallelWorldName)
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
void SetProcessOrderingToLast(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
#define theParticleIterator
void RE06PhysicsList::ConstructLeptons ( )
protected

Definition at line 84 of file RE06PhysicsList.cc.

References G4AntiNeutrinoE::AntiNeutrinoEDefinition(), G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(), G4Electron::ElectronDefinition(), G4MuonMinus::MuonMinusDefinition(), G4MuonPlus::MuonPlusDefinition(), G4NeutrinoE::NeutrinoEDefinition(), G4NeutrinoMu::NeutrinoMuDefinition(), and G4Positron::PositronDefinition().

Referenced by ConstructParticle().

85 {
86  // leptons
91 
96 }
static G4Electron * ElectronDefinition()
Definition: G4Electron.cc:89
static G4MuonPlus * MuonPlusDefinition()
Definition: G4MuonPlus.cc:94
static G4NeutrinoE * NeutrinoEDefinition()
Definition: G4NeutrinoE.cc:80
static G4AntiNeutrinoMu * AntiNeutrinoMuDefinition()
static G4Positron * PositronDefinition()
Definition: G4Positron.cc:89
static G4MuonMinus * MuonMinusDefinition()
Definition: G4MuonMinus.cc:95
static G4AntiNeutrinoE * AntiNeutrinoEDefinition()
static G4NeutrinoMu * NeutrinoMuDefinition()
Definition: G4NeutrinoMu.cc:80
void RE06PhysicsList::ConstructMesons ( )
protected

Definition at line 100 of file RE06PhysicsList.cc.

References G4AntiKaonZero::AntiKaonZeroDefinition(), G4Eta::EtaDefinition(), G4EtaPrime::EtaPrimeDefinition(), G4KaonMinus::KaonMinusDefinition(), G4KaonPlus::KaonPlusDefinition(), G4KaonZero::KaonZeroDefinition(), G4KaonZeroLong::KaonZeroLongDefinition(), G4KaonZeroShort::KaonZeroShortDefinition(), G4PionMinus::PionMinusDefinition(), G4PionPlus::PionPlusDefinition(), and G4PionZero::PionZeroDefinition().

Referenced by ConstructParticle().

101 {
102  // mesons
114 }
static G4KaonPlus * KaonPlusDefinition()
Definition: G4KaonPlus.cc:108
static G4KaonMinus * KaonMinusDefinition()
Definition: G4KaonMinus.cc:108
static G4KaonZero * KaonZeroDefinition()
Definition: G4KaonZero.cc:99
static G4AntiKaonZero * AntiKaonZeroDefinition()
static G4KaonZeroShort * KaonZeroShortDefinition()
static G4PionZero * PionZeroDefinition()
Definition: G4PionZero.cc:99
static G4PionMinus * PionMinusDefinition()
Definition: G4PionMinus.cc:93
static G4KaonZeroLong * KaonZeroLongDefinition()
static G4PionPlus * PionPlusDefinition()
Definition: G4PionPlus.cc:93
static G4EtaPrime * EtaPrimeDefinition()
Definition: G4EtaPrime.cc:100
static G4Eta * EtaDefinition()
Definition: G4Eta.cc:104
void RE06PhysicsList::ConstructParticle ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 57 of file RE06PhysicsList.cc.

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

58 {
59  // In this method, static member functions should be called
60  // for all particles which you want to use.
61  // This ensures that objects of these particle types will be
62  // created in the program.
63 
68 }
void RE06PhysicsList::ConstructProcess ( void  )
protectedvirtual
void RE06PhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 313 of file RE06PhysicsList.cc.

References G4VUserPhysicsList::defaultCutValue, G4BestUnit, G4cout, G4endl, G4RegionStore::GetInstance(), G4RegionStore::GetRegion(), G4VUserPhysicsList::SetCutsWithDefault(), G4ProductionCuts::SetProductionCut(), G4Region::SetProductionCuts(), and G4VUserPhysicsList::verboseLevel.

314 {
315  if (verboseLevel >0){
316  G4cout << "RE06PhysicsList::SetCuts: default cut length : "
317  << G4BestUnit(defaultCutValue,"Length") << G4endl;
318  }
319 
320  // These values are used as the default production thresholds
321  // for the world volume.
323 
324 
325  // Production thresholds for detector regions
326  G4String regName[] = {"Calor-A","Calor-B","Calor-C"};
327  G4double fuc = 1.;
328  for(G4int i=0;i<3;i++)
329  {
330  G4Region* reg = G4RegionStore::GetInstance()->GetRegion(regName[i]);
333  reg->SetProductionCuts(cuts);
334  fuc *= 10.;
335  }
336 }
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
void SetProductionCut(G4double cut, G4int index=-1)
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
int G4int
Definition: G4Types.hh:78
static G4RegionStore * GetInstance()
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
void SetProductionCuts(G4ProductionCuts *cut)
double G4double
Definition: G4Types.hh:76

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