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

#include <eRositaPhysicsList.hh>

Inheritance diagram for eRositaPhysicsList:
G4VUserPhysicsList

Public Member Functions

 eRositaPhysicsList ()
 
 ~eRositaPhysicsList ()
 
- 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 ()
 
- 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 36 of file eRositaPhysicsList.hh.

Constructor & Destructor Documentation

eRositaPhysicsList::eRositaPhysicsList ( )

Definition at line 59 of file eRositaPhysicsList.cc.

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

60 {
61  defaultCutValue = 0.001*mm;
62  SetVerboseLevel(1);
63 
64  std::cout << "==============================================================================="
65  << std::endl
66  << "Geant4 eRosita example - based on a simplified version of eROSITA simulation"
67  << std::endl
68  << "Further details can be found in:"
69  << std::endl
70  << "M.G. Pia et al., 'PIXE Simulation With Geant4', "
71  << "IEEE Trans. Nucl. Sci., vol. 56, no. 6, pp. 3614-3649, 2009"
72  << std::endl
73  << "N. Meidinger et al., 'Development of the focal plane PNCCD camera system for the X-ray space telescope eROSITA', "
74  << std::endl
75  <<"NIM A 624, 321-329, 2010"
76  << std::endl
77  << "==============================================================================="
78  << std::endl;
79 
80  std::cout<< std::endl;
81 
82  std::cout << "==============================================================================="
83  << std::endl
84  << " The use of G4LowEnergyIonisation, G4LowEnergyBremsstrahlung, "
85  << std::endl
86  << "G4LowEnergyPhotoElectric, G4LowEnergyCompton, G4LowEnergyGammaConversion"
87  << std::endl
88  << "in this example is intentional. These classes will be replaced by other classes"
89  << std::endl
90  << "appropriate to the problem domain in a forthcoming Geant4 version"
91  << std::endl
92  << "==============================================================================="
93  << std::endl;
94 }
void SetVerboseLevel(G4int value)
eRositaPhysicsList::~eRositaPhysicsList ( )

Definition at line 97 of file eRositaPhysicsList.cc.

98 {}

Member Function Documentation

void eRositaPhysicsList::ConstructBaryons ( )
protected

Definition at line 157 of file eRositaPhysicsList.cc.

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

Referenced by ConstructParticle().

158 {
159  // barions
162 
163  //G4Neutron::NeutronDefinition();
164  //G4AntiNeutron::AntiNeutronDefinition();
165 }
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:88
static G4AntiProton * AntiProtonDefinition()
Definition: G4AntiProton.cc:88
void eRositaPhysicsList::ConstructBosons ( )
protected

Definition at line 110 of file eRositaPhysicsList.cc.

References G4Gamma::GammaDefinition().

Referenced by ConstructParticle().

111 {
112  // pseudo-particles
113  //G4Geantino::GeantinoDefinition();
114  //G4ChargedGeantino::ChargedGeantinoDefinition();
115 
116  // gamma
118 }
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
void eRositaPhysicsList::ConstructEM ( )
protected

Definition at line 178 of file eRositaPhysicsList.cc.

References G4LowEnergyPhotoElectric::ActivateAuger(), G4ProcessManager::AddProcess(), python.hepunit::eV, G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetProcessManager(), G4ParticleDefinition::IsShortLived(), python.hepunit::keV, python.hepunit::MeV, G4hImpactIonisation::SetCutForAugerElectrons(), G4LowEnergyPhotoElectric::SetCutForLowEnSecElectrons(), G4LowEnergyPhotoElectric::SetCutForLowEnSecPhotons(), G4hImpactIonisation::SetCutForSecondaryPhotons(), G4hImpactIonisation::SetPixeCrossSectionK(), G4hImpactIonisation::SetPixeCrossSectionL(), G4hImpactIonisation::SetPixeCrossSectionM(), G4hImpactIonisation::SetPixeProjectileMaxEnergy(), G4hImpactIonisation::SetPixeProjectileMinEnergy(), and theParticleIterator.

Referenced by ConstructProcess().

179 {
180  theParticleIterator->reset();
181  while( (*theParticleIterator)() ){
182  G4ParticleDefinition* particle = theParticleIterator->value();
183  G4ProcessManager* processManager = particle->GetProcessManager();
184  G4String particleName = particle->GetParticleName();
185 
186  if (particleName == "gamma") {
187 
188  // photon
189 
191  photoelectric->ActivateAuger(true);
192  photoelectric->SetCutForLowEnSecPhotons(0.250 * keV);
193  photoelectric->SetCutForLowEnSecElectrons(0.250 * keV);
194  G4LowEnergyCompton* compton = new G4LowEnergyCompton;
197 
198  processManager -> AddDiscreteProcess(photoelectric);
199  processManager -> AddDiscreteProcess(compton);
200  processManager -> AddDiscreteProcess(gammaConversion);
201  processManager -> AddDiscreteProcess(rayleigh);
202 
203  } else if (particleName == "e-") {
204 
205  // electron
206 
207  G4eMultipleScattering* eMultipleScattering = new G4eMultipleScattering();
208  G4LowEnergyIonisation* eIonisation = new G4LowEnergyIonisation();
209  G4LowEnergyBremsstrahlung* eBremsstrahlung = new G4LowEnergyBremsstrahlung();
210 
211  processManager -> AddProcess(eMultipleScattering, -1, 1, 1);
212  processManager -> AddProcess(eIonisation, -1, 2, 2);
213  processManager -> AddProcess(eBremsstrahlung, -1, -1, 3);
214 
215  } else if (particleName == "e+") {
216  // positron
217  processManager->AddProcess(new G4eMultipleScattering, -1, 1, 1);
218  processManager->AddProcess(new G4eIonisation, -1, 2, 2);
219  processManager->AddProcess(new G4eBremsstrahlung, -1, 3, 3);
220  processManager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
221 
222  //} else if( particleName == "mu+" ||
223  // particleName == "mu-" ) {
224  //muon
225  //processManager->AddProcess(new G4MuMultipleScattering, -1, 1, 1);
226  //processManager->AddProcess(new G4MuIonisation, -1, 2, 2);
227  //processManager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
228  //processManager->AddProcess(new G4MuPairProduction, -1, 4, 4);
229 
230  } else if( particleName == "proton" ||
231  particleName == "pi-" ||
232  particleName == "pi+" ) {
233  //proton
234 
235  G4hImpactIonisation* hIonisation = new G4hImpactIonisation();
236  hIonisation->SetPixeCrossSectionK("ecpssr");
237  hIonisation->SetPixeCrossSectionL("ecpssr");
238  hIonisation->SetPixeCrossSectionM("ecpssr");
239  hIonisation->SetPixeProjectileMinEnergy(1.* keV);
240  hIonisation->SetPixeProjectileMaxEnergy(200. * MeV);
241  hIonisation->SetCutForSecondaryPhotons(250. * eV);
242  hIonisation->SetCutForAugerElectrons(250. * eV);
243 
244  G4hMultipleScattering* hMultipleScattering = new G4hMultipleScattering();
245 
246  processManager -> AddProcess(hMultipleScattering, -1, 1, 1);
247  processManager -> AddProcess(hIonisation, -1, 2, 2);
248 
249  } else if( particleName == "alpha" ||
250  particleName == "He3" ||
251  particleName == "pi-" ||
252  particleName == "pi+" ||
253  particleName == "GenericIon" ) {
254 
255  // pions, alpha, ions (should never occur in the current example)
256  processManager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
257  processManager->AddProcess(new G4ionIonisation, -1, 2, 2);
258 
259  } else if ((!particle->IsShortLived()) &&
260  (particle->GetPDGCharge() != 0.0) &&
261  (particle->GetParticleName() != "chargedgeantino")) {
262  //all others charged particles except geantino
263  processManager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
264  processManager->AddProcess(new G4hIonisation, -1, 2, 2);
265  }
266  }
267 }
void SetPixeProjectileMaxEnergy(G4double energy)
void SetPixeCrossSectionL(const G4String &name)
void SetPixeCrossSectionK(const G4String &name)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
void SetCutForSecondaryPhotons(G4double cut)
void SetPixeCrossSectionM(const G4String &name)
void SetCutForAugerElectrons(G4double cut)
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void SetPixeProjectileMinEnergy(G4double energy)
G4double GetPDGCharge() const
#define theParticleIterator
void eRositaPhysicsList::ConstructGeneral ( )
protected

Definition at line 271 of file eRositaPhysicsList.cc.

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

Referenced by ConstructProcess().

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

Definition at line 121 of file eRositaPhysicsList.cc.

References G4Electron::ElectronDefinition(), and G4Positron::PositronDefinition().

Referenced by ConstructParticle().

122 {
123  // leptons
124  // e+/-
127  // mu+/-
128  //G4MuonPlus::MuonPlusDefinition();
129  //G4MuonMinus::MuonMinusDefinition();
130  // nu_e
131  //G4NeutrinoE::NeutrinoEDefinition();
132  //G4AntiNeutrinoE::AntiNeutrinoEDefinition();
133  // nu_mu
134  //G4NeutrinoMu::NeutrinoMuDefinition();
135  //G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
136 }
static G4Electron * ElectronDefinition()
Definition: G4Electron.cc:89
static G4Positron * PositronDefinition()
Definition: G4Positron.cc:89
void eRositaPhysicsList::ConstructMesons ( )
protected

Definition at line 139 of file eRositaPhysicsList.cc.

Referenced by ConstructParticle().

140 {
141  // mesons
142  // light mesons
143  //G4PionPlus::PionPlusDefinition();
144  //G4PionMinus::PionMinusDefinition();
145  //G4PionZero::PionZeroDefinition();
146  //G4Eta::EtaDefinition();
147  //G4EtaPrime::EtaPrimeDefinition();
148  //G4KaonPlus::KaonPlusDefinition();
149  //G4KaonMinus::KaonMinusDefinition();
150  //G4KaonZero::KaonZeroDefinition();
151  //G4AntiKaonZero::AntiKaonZeroDefinition();
152  //G4KaonZeroLong::KaonZeroLongDefinition();
153  //G4KaonZeroShort::KaonZeroShortDefinition();
154 }
void eRositaPhysicsList::ConstructParticle ( void  )
protectedvirtual
void eRositaPhysicsList::ConstructProcess ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 168 of file eRositaPhysicsList.cc.

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

169 {
171  ConstructEM();
173  //AddStepMax();
174 }
void eRositaPhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 313 of file eRositaPhysicsList.cc.

References G4VUserPhysicsList::DumpCutValuesTable(), python.hepunit::eV, G4ProductionCutsTable::GetProductionCutsTable(), python.hepunit::GeV, G4VUserPhysicsList::SetCutsWithDefault(), G4ProductionCutsTable::SetEnergyRange(), and G4VUserPhysicsList::verboseLevel.

314 {
315  //G4VUserPhysicsList::SetCutsWithDefault method sets
316  //the default cut value for all particle types
317  //
319 
320  // Set the secondary production cut lower than 990. eV
321  // Very important for processes at low energies
322 
323  G4double lowLimit = 250. * eV;
324  G4double highLimit = 100. * GeV;
326 
328 }
void SetEnergyRange(G4double lowedge, G4double highedge)
void DumpCutValuesTable(G4int flag=1)
static G4ProductionCutsTable * GetProductionCutsTable()
double G4double
Definition: G4Types.hh:76

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