Geant4  10.02.p03
UltraPhysicsList Class Reference

#include <UltraPhysicsList.hh>

Inheritance diagram for UltraPhysicsList:
Collaboration diagram for UltraPhysicsList:

Public Member Functions

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

void ConstructParticle ()
 
void ConstructProcess ()
 
void SetCuts ()
 
void ConstructBosons ()
 
void ConstructLeptons ()
 
void ConstructMesons ()
 
void ConstructBaryons ()
 
void ConstructGeneral ()
 
void ConstructEM ()
 
void ConstructOp ()
 
- 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 47 of file UltraPhysicsList.hh.

Constructor & Destructor Documentation

◆ UltraPhysicsList()

UltraPhysicsList::UltraPhysicsList ( )

Definition at line 58 of file UltraPhysicsList.cc.

◆ ~UltraPhysicsList()

UltraPhysicsList::~UltraPhysicsList ( )

Definition at line 62 of file UltraPhysicsList.cc.

62 {;}

Member Function Documentation

◆ ConstructBaryons()

void UltraPhysicsList::ConstructBaryons ( )
protected

Definition at line 123 of file UltraPhysicsList.cc.

124 {
125 // barions
130 }
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:88
static G4AntiProton * AntiProtonDefinition()
Definition: G4AntiProton.cc:88
static G4AntiNeutron * AntiNeutronDefinition()
static G4Neutron * NeutronDefinition()
Definition: G4Neutron.cc:99
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructBosons()

void UltraPhysicsList::ConstructBosons ( )
protected

Definition at line 82 of file UltraPhysicsList.cc.

83 {
84  // pseudo-particles
87 
88  // gamma
90 
91  // optical photon
93 
94 }
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 UltraPhysicsList::ConstructEM ( )
protected

Definition at line 183 of file UltraPhysicsList.cc.

184 {
186  particleIterator->reset();
187  while( (*particleIterator)() ){
188  G4ParticleDefinition* particle = particleIterator->value();
189  G4ProcessManager* pmanager = particle->GetProcessManager();
190  G4String particleName = particle->GetParticleName();
191 
192  if (particleName == "gamma") {
193  // gamma
194  // Construct processes for gamma
195  pmanager->AddDiscreteProcess(new G4GammaConversion());
196  pmanager->AddDiscreteProcess(new G4ComptonScattering());
197  pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
198 
199  } else if (particleName == "e-") {
200  //electron
201  // Construct processes for electron
202  pmanager->AddProcess(new G4eMultipleScattering(),-1,1,1);
203  pmanager->AddProcess(new G4eIonisation(),-1,2,2);
204  pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
205 
206  } else if (particleName == "e+") {
207  //positron
208  // Construct processes for positron
209  pmanager->AddProcess(new G4eMultipleScattering(),-1,1,1);
210  pmanager->AddProcess(new G4eIonisation(),-1,2,2);
211  pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
212  pmanager->AddProcess(new G4eplusAnnihilation(),0,-1,4);
213 
214  } else if( particleName == "mu+" ||
215  particleName == "mu-" ) {
216  //muon
217  // Construct processes for muon
218  pmanager->AddProcess(new G4MuMultipleScattering(),-1,1,1);
219  pmanager->AddProcess(new G4MuIonisation(),-1,2,2);
220  pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3);
221  pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4);
222 
223  } else {
224  if ((particle->GetPDGCharge() != 0.0) &&
225  (particle->GetParticleName() != "chargedgeantino")) {
226  // all others charged particles except geantino
227  pmanager->AddProcess(new G4hMultipleScattering(),-1,1,1);
228  pmanager->AddProcess(new G4hIonisation(),-1,2,2);
229  }
230  }
231  }
232 }
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)
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 UltraPhysicsList::ConstructGeneral ( )
protected

Definition at line 147 of file UltraPhysicsList.cc.

148 {
149  G4Decay* theDecayProcess = new G4Decay();
151  particleIterator->reset();
152  while( (*particleIterator)() ){
153  G4ParticleDefinition* particle = particleIterator->value();
154  G4ProcessManager* pmanager = particle->GetProcessManager();
155  if (theDecayProcess->IsApplicable(*particle)) {
156  pmanager->AddDiscreteProcess(theDecayProcess);
157  }
158  }
159 }
virtual G4bool IsApplicable(const G4ParticleDefinition &)
Definition: G4Decay.cc:89
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
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:

◆ ConstructLeptons()

void UltraPhysicsList::ConstructLeptons ( )
protected

Definition at line 98 of file UltraPhysicsList.cc.

99 {
100  // leptons
109 }
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
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructMesons()

void UltraPhysicsList::ConstructMesons ( )
protected

Definition at line 113 of file UltraPhysicsList.cc.

114 {
115  // mesons
119 }
static G4PionZero * PionZeroDefinition()
Definition: G4PionZero.cc:103
static G4PionMinus * PionMinusDefinition()
Definition: G4PionMinus.cc:93
static G4PionPlus * PionPlusDefinition()
Definition: G4PionPlus.cc:93
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructOp()

void UltraPhysicsList::ConstructOp ( )
protected

Definition at line 242 of file UltraPhysicsList.cc.

243 {
244  // this Cerenkov Process
245  G4Cerenkov* theCerenkovProcess = new G4Cerenkov("Cerenkov");
246  // this absorption process inside optical media
247  G4OpAbsorption* theAbsorptionProcess = new G4OpAbsorption();
248  // Rayleigh scattering for optical photons (aerogel radiators)
249  G4OpRayleigh* theRayleighScatteringProcess = new G4OpRayleigh();
250  // Boundary process definition Class
251  G4OpBoundaryProcess* theBoundaryProcess = new G4OpBoundaryProcess();
252 
253  // Chose level 0 (no verbose)
254  theCerenkovProcess -> SetVerboseLevel(0);
255  theAbsorptionProcess -> SetVerboseLevel(0);
256  theRayleighScatteringProcess -> SetVerboseLevel(0);
257  theBoundaryProcess -> SetVerboseLevel(0);
258 
259 
260 // Chose MaxNumPhotons that can be generated. Lets ignore this for now
261 // G4int MaxNumPhotons = 300;
262 // theCerenkovProcess->SetMaxNumPhotonsPerStep(MaxNumPhotons);
263  theCerenkovProcess->SetTrackSecondariesFirst(true);
264 
266  particleIterator->reset();
267  while( (*particleIterator)() ){
268  G4ParticleDefinition* particle = particleIterator->value();
269  G4ProcessManager* pmanager = particle->GetProcessManager();
270  G4String particleName = particle->GetParticleName();
271 
272  if (theCerenkovProcess->IsApplicable(*particle)) {
273  pmanager->AddProcess(theCerenkovProcess);
274  pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep);
275  }
276 
277 
278  if (particleName == "opticalphoton") {
279  G4cout << ">>>>>>>>>>>>>> AddDiscreteProcess to OpticalPhoton " << G4endl;
280  pmanager->AddDiscreteProcess(theAbsorptionProcess);
281  pmanager->AddDiscreteProcess(theRayleighScatteringProcess);
282  pmanager->AddDiscreteProcess(theBoundaryProcess);
283  }
284  }
285 }
void SetTrackSecondariesFirst(const G4bool state)
Definition: G4Cerenkov.cc:146
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
void SetVerboseLevel(G4int value)
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
#define G4endl
Definition: G4ios.hh:61
G4bool IsApplicable(const G4ParticleDefinition &aParticleType)
Definition: G4Cerenkov.cc:135
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructParticle()

void UltraPhysicsList::ConstructParticle ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 66 of file UltraPhysicsList.cc.

67 {
68  // In this method, static member functions should be called
69  // for all particles which you want to use.
70  // This ensures that objects of these particle types will be
71  // created in the program.
72 
77 
78 }
Here is the call graph for this function:

◆ ConstructProcess()

void UltraPhysicsList::ConstructProcess ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 134 of file UltraPhysicsList.cc.

135 {
138  ConstructEM();
139  ConstructOp();
140 
141 }
Here is the call graph for this function:

◆ SetCuts()

void UltraPhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 289 of file UltraPhysicsList.cc.

290 {
291  if (verboseLevel >1){
292  G4cout << "UltraPhysicsList::SetCuts:";
293  }
294  // " G4VUserPhysicsList::SetCutsWithDefault" method sets
295  // the default cut value for all particle types
297 }
G4GLOB_DLL std::ostream G4cout
Here is the call graph for this function:

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