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

#include <UltraPhysicsList.hh>

Inheritance diagram for UltraPhysicsList:
G4VUserPhysicsList

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

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

Definition at line 58 of file UltraPhysicsList.cc.

UltraPhysicsList::~UltraPhysicsList ( )

Definition at line 62 of file UltraPhysicsList.cc.

62 {;}

Member Function Documentation

void UltraPhysicsList::ConstructBaryons ( )
protected

Definition at line 123 of file UltraPhysicsList.cc.

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

Referenced by ConstructParticle().

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
void UltraPhysicsList::ConstructBosons ( )
protected

Definition at line 82 of file UltraPhysicsList.cc.

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

Referenced by ConstructParticle().

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
void UltraPhysicsList::ConstructEM ( )
protected

Definition at line 182 of file UltraPhysicsList.cc.

References G4ProcessManager::AddDiscreteProcess(), G4ProcessManager::AddProcess(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetProcessManager(), and theParticleIterator.

Referenced by ConstructProcess().

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

Definition at line 147 of file UltraPhysicsList.cc.

References G4ProcessManager::AddDiscreteProcess(), G4ParticleDefinition::GetProcessManager(), G4Decay::IsApplicable(), and theParticleIterator.

Referenced by ConstructProcess().

148 {
149  G4Decay* theDecayProcess = new G4Decay();
150  theParticleIterator->reset();
151  while( (*theParticleIterator)() ){
152  G4ParticleDefinition* particle = theParticleIterator->value();
153  G4ProcessManager* pmanager = particle->GetProcessManager();
154  if (theDecayProcess->IsApplicable(*particle)) {
155  pmanager->AddDiscreteProcess(theDecayProcess);
156  }
157  }
158 }
virtual G4bool IsApplicable(const G4ParticleDefinition &)
Definition: G4Decay.cc:89
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
#define theParticleIterator
void UltraPhysicsList::ConstructLeptons ( )
protected

Definition at line 98 of file UltraPhysicsList.cc.

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

Referenced by ConstructParticle().

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
void UltraPhysicsList::ConstructMesons ( )
protected

Definition at line 113 of file UltraPhysicsList.cc.

References G4PionMinus::PionMinusDefinition(), G4PionPlus::PionPlusDefinition(), and G4PionZero::PionZeroDefinition().

Referenced by ConstructParticle().

114 {
115  // mesons
119 }
static G4PionZero * PionZeroDefinition()
Definition: G4PionZero.cc:99
static G4PionMinus * PionMinusDefinition()
Definition: G4PionMinus.cc:93
static G4PionPlus * PionPlusDefinition()
Definition: G4PionPlus.cc:93
void UltraPhysicsList::ConstructOp ( )
protected

Definition at line 240 of file UltraPhysicsList.cc.

References G4ProcessManager::AddDiscreteProcess(), G4ProcessManager::AddProcess(), G4cout, G4endl, G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), idxPostStep, G4Cerenkov::IsApplicable(), G4ProcessManager::SetProcessOrdering(), G4Cerenkov::SetTrackSecondariesFirst(), G4VUserPhysicsList::SetVerboseLevel(), and theParticleIterator.

Referenced by ConstructProcess().

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

Implements G4VUserPhysicsList.

Definition at line 66 of file UltraPhysicsList.cc.

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

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 }
void UltraPhysicsList::ConstructProcess ( void  )
protectedvirtual
void UltraPhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 286 of file UltraPhysicsList.cc.

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

287 {
288  if (verboseLevel >1){
289  G4cout << "UltraPhysicsList::SetCuts:";
290  }
291  // " G4VUserPhysicsList::SetCutsWithDefault" method sets
292  // the default cut value for all particle types
294 }
G4GLOB_DLL std::ostream G4cout

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