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

#include <F03PhysicsList.hh>

Inheritance diagram for F03PhysicsList:
G4VUserPhysicsList

Public Member Functions

 F03PhysicsList (F03DetectorConstruction *)
 
virtual ~F03PhysicsList ()
 
void SetGammaCut (G4double)
 
void SetElectronCut (G4double)
 
void SetMaxStep (G4double)
 
- 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 ()
 

Data Fields

G4double fMaxChargedStep
 

Protected Member Functions

virtual void ConstructParticle ()
 
virtual void ConstructProcess ()
 
void SetCuts ()
 
void ConstructBosons ()
 
void ConstructLeptons ()
 
void ConstructMesons ()
 
void ConstructBarions ()
 
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 46 of file F03PhysicsList.hh.

Constructor & Destructor Documentation

F03PhysicsList::F03PhysicsList ( F03DetectorConstruction p)

Definition at line 53 of file F03PhysicsList.cc.

References G4VUserPhysicsList::defaultCutValue, python.hepunit::mm, and G4VUserPhysicsList::SetVerboseLevel().

55 {
56  fDet = p;
57 
58  defaultCutValue = 1.000*mm;
59 
60  fCutForGamma = defaultCutValue;
61  fCutForElectron = defaultCutValue;
62 
63  SetVerboseLevel(1);
64  fPhysicsListMessenger = new F03PhysicsListMessenger(this);
65 }
const char * p
Definition: xmltok.h:285
void SetVerboseLevel(G4int value)
G4double fMaxChargedStep
#define DBL_MAX
Definition: templates.hh:83
F03PhysicsList::~F03PhysicsList ( )
virtual

Definition at line 69 of file F03PhysicsList.cc.

70 {
71  delete fPhysicsListMessenger;
72 }

Member Function Documentation

void F03PhysicsList::ConstructBarions ( )
protected

Definition at line 137 of file F03PhysicsList.cc.

References G4AntiProton::AntiProtonDefinition(), and G4Proton::ProtonDefinition().

Referenced by ConstructParticle().

138 {
139  // barions
140 
143 }
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:88
static G4AntiProton * AntiProtonDefinition()
Definition: G4AntiProton.cc:88
void F03PhysicsList::ConstructBosons ( )
protected

Definition at line 93 of file F03PhysicsList.cc.

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

Referenced by ConstructParticle().

94 {
95  // gamma
96 
98 
99  // charged geantino
100 
102 
103 }
static G4ChargedGeantino * ChargedGeantinoDefinition()
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
void F03PhysicsList::ConstructEM ( )
protected

Definition at line 177 of file F03PhysicsList.cc.

References G4ProcessManager::AddDiscreteProcess(), G4ProcessManager::AddProcess(), fComptonScattering, fGammaConversion, fMaxChargedStep, fPhotoElectricEffect, G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), python.hepunit::mm, F03StepCut::SetMaxStep(), and theParticleIterator.

Referenced by ConstructProcess().

178 {
179  theParticleIterator->reset();
180 
181  while( (*theParticleIterator)() )
182  {
183  G4ParticleDefinition* particle = theParticleIterator->value();
184  G4ProcessManager* pmanager = particle->GetProcessManager();
185  G4String particleName = particle->GetParticleName();
186 
187  if (particleName == "gamma")
188  {
189  // Construct processes for gamma
190 
194 
195  pmanager->AddDiscreteProcess(fPhotoElectricEffect);
196  pmanager->AddDiscreteProcess(fComptonScattering);
197 
198  pmanager->AddDiscreteProcess(fGammaConversion);
199  }
200  else if (particleName == "e-")
201  {
202  // Construct processes for electron
203 
204  G4eIonisation* feminusIonisation = new G4eIonisation();
205  G4eBremsstrahlung* feminusBremsstrahlung = new G4eBremsstrahlung();
206  F03StepCut* feminusStepCut = new F03StepCut();
207  feminusStepCut->SetMaxStep(fMaxChargedStep);
208 
209  pmanager->AddProcess(feminusIonisation,-1,2,2);
210  pmanager->AddProcess(feminusBremsstrahlung,-1,-1,3);
211  pmanager->AddProcess(feminusStepCut,-1,-1,4);
212  }
213  else if (particleName == "e+")
214  {
215  // Construct processes for positron
216 
217  G4eIonisation* feplusIonisation = new G4eIonisation();
218  G4eBremsstrahlung* feplusBremsstrahlung = new G4eBremsstrahlung();
219  F03StepCut* feplusStepCut = new F03StepCut();
220  feplusStepCut->SetMaxStep(fMaxChargedStep);
221 
222  pmanager->AddProcess(feplusIonisation,-1,2,2);
223  pmanager->AddProcess(feplusBremsstrahlung,-1,-1,3);
224  pmanager->AddProcess(feplusStepCut,-1,-1,5);
225  }
226  else if( particleName == "mu+" || particleName == "mu-" )
227  {
228  // Construct processes for muon+
229 
230  F03StepCut* muonStepCut = new F03StepCut();
231  muonStepCut->SetMaxStep(fMaxChargedStep);
232  G4MuIonisation* muIonisation = new G4MuIonisation();
233 
234  pmanager->AddProcess(new G4MuMultipleScattering(),-1,1,1);
235  pmanager->AddProcess(muIonisation,-1,2,2);
236  pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3);
237  pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4);
238  pmanager->AddProcess(muonStepCut,-1,-1,3);
239  }
240  else if ( particleName == "proton"
241  || particleName == "antiproton"
242  || particleName == "pi+"
243  || particleName == "pi-"
244  || particleName == "kaon+"
245  || particleName == "kaon-"
246  )
247  {
248  F03StepCut* theHadronStepCut = new F03StepCut();
249  theHadronStepCut->SetMaxStep(10*mm);
250 
251  G4hIonisation* thehIonisation = new G4hIonisation();
252  G4hMultipleScattering* thehMultipleScattering =
253  new G4hMultipleScattering();
254 
255  pmanager->AddProcess(thehMultipleScattering,-1,1,1);
256  pmanager->AddProcess(thehIonisation,-1,2,2);
257  pmanager->AddProcess(theHadronStepCut,-1,-1,3);
258  }
259  }
260 }
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
void SetMaxStep(G4double)
Definition: F03StepCut.cc:66
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
G4double fMaxChargedStep
#define theParticleIterator
void F03PhysicsList::ConstructGeneral ( )
protected

Definition at line 266 of file F03PhysicsList.cc.

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

Referenced by ConstructProcess().

267 {
268  // Add Decay Process
269 
270  G4Decay* theDecayProcess = new G4Decay();
271  theParticleIterator->reset();
272 
273  while( (*theParticleIterator)() )
274  {
275  G4ParticleDefinition* particle = theParticleIterator->value();
276  G4ProcessManager* pmanager = particle->GetProcessManager();
277 
278  if (theDecayProcess->IsApplicable(*particle))
279  {
280  pmanager ->AddProcess(theDecayProcess);
281 
282  // set ordering for PostStepDoIt and AtRestDoIt
283 
284  pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
285  pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
286  }
287  }
288 }
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 F03PhysicsList::ConstructLeptons ( )
protected

Definition at line 107 of file F03PhysicsList.cc.

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

Referenced by ConstructParticle().

108 {
109  // leptons
110 
115 
120 }
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 F03PhysicsList::ConstructMesons ( )
protected

Definition at line 124 of file F03PhysicsList.cc.

References G4KaonMinus::KaonMinusDefinition(), G4KaonPlus::KaonPlusDefinition(), G4PionMinus::PionMinusDefinition(), G4PionPlus::PionPlusDefinition(), and G4PionZero::PionZeroDefinition().

Referenced by ConstructParticle().

125 {
126  // mesons
127 
133 }
static G4KaonPlus * KaonPlusDefinition()
Definition: G4KaonPlus.cc:108
static G4KaonMinus * KaonMinusDefinition()
Definition: G4KaonMinus.cc:108
static G4PionZero * PionZeroDefinition()
Definition: G4PionZero.cc:99
static G4PionMinus * PionMinusDefinition()
Definition: G4PionMinus.cc:93
static G4PionPlus * PionPlusDefinition()
Definition: G4PionPlus.cc:93
void F03PhysicsList::ConstructParticle ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 76 of file F03PhysicsList.cc.

References ConstructBarions(), ConstructBosons(), ConstructLeptons(), ConstructMesons(), and G4GenericIon::GenericIonDefinition().

77 {
78  // In this method, static member functions should be called
79  // for all particles which you want to use.
80  // This ensures that objects of these particle types will be
81  // created in the program.
82 
87 
89 }
static G4GenericIon * GenericIonDefinition()
Definition: G4GenericIon.cc:88
void ConstructBosons()
void F03PhysicsList::ConstructProcess ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 147 of file F03PhysicsList.cc.

References G4VUserPhysicsList::AddTransportation(), ConstructEM(), and ConstructGeneral().

148 {
150 
151  ConstructEM();
153 }
void F03PhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 292 of file F03PhysicsList.cc.

References G4VUserPhysicsList::defaultCutValue, G4VUserPhysicsList::DumpCutValuesTable(), G4BestUnit, G4cout, G4endl, G4Timer::GetUserElapsed(), G4VUserPhysicsList::SetCutValue(), G4Timer::Start(), G4Timer::Stop(), and G4VUserPhysicsList::verboseLevel.

293 {
294  G4Timer theTimer;
295  theTimer.Start();
296  if (verboseLevel >0)
297  {
298  G4cout << "F03PhysicsList::SetCuts:";
299  G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
300  }
301  // set cut values for gamma at first and for e- second and next for e+,
302  // because some processes for e+/e- need cut values for gamma
303  SetCutValue(fCutForGamma,"gamma");
304 
305  SetCutValue(fCutForElectron,"e-");
306  SetCutValue(fCutForElectron,"e+");
307 
309 
310  theTimer.Stop();
311  G4cout.precision(6);
312  G4cout << G4endl;
313  G4cout << "total time(SetCuts)=" << theTimer.GetUserElapsed()
314  << " s " <<G4endl;
315 
316 }
void SetCutValue(G4double aCut, const G4String &pname)
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
void DumpCutValuesTable(G4int flag=1)
G4GLOB_DLL std::ostream G4cout
G4double GetUserElapsed() const
Definition: G4Timer.cc:130
void Stop()
#define G4endl
Definition: G4ios.hh:61
void Start()
void F03PhysicsList::SetElectronCut ( G4double  val)

Definition at line 327 of file F03PhysicsList.cc.

Referenced by F03PhysicsListMessenger::SetNewValue().

328 {
329  fCutForElectron = val;
330 }
void F03PhysicsList::SetGammaCut ( G4double  val)

Definition at line 320 of file F03PhysicsList.cc.

Referenced by F03PhysicsListMessenger::SetNewValue().

321 {
322  fCutForGamma = val;
323 }
void F03PhysicsList::SetMaxStep ( G4double  step)

Definition at line 334 of file F03PhysicsList.cc.

References fMaxChargedStep, G4cout, and G4endl.

Referenced by F03PhysicsListMessenger::SetNewValue().

335 {
336  fMaxChargedStep = step;
337  G4cout << " MaxChargedStep=" << fMaxChargedStep << G4endl;
338  G4cout << G4endl;
339 }
G4GLOB_DLL std::ostream G4cout
G4double fMaxChargedStep
#define G4endl
Definition: G4ios.hh:61

Field Documentation

G4double F03PhysicsList::fMaxChargedStep

Definition at line 82 of file F03PhysicsList.hh.

Referenced by ConstructEM(), and SetMaxStep().


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