Geant4  10.02.p03
eRositaPhysicsList Class Reference

#include <eRositaPhysicsList.hh>

Inheritance diagram for eRositaPhysicsList:
Collaboration diagram for eRositaPhysicsList:

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

Constructor & Destructor Documentation

◆ eRositaPhysicsList()

eRositaPhysicsList::eRositaPhysicsList ( )

Definition at line 59 of file eRositaPhysicsList.cc.

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)
static const double mm
Definition: G4SIunits.hh:114
Here is the call graph for this function:

◆ ~eRositaPhysicsList()

eRositaPhysicsList::~eRositaPhysicsList ( )

Definition at line 97 of file eRositaPhysicsList.cc.

98 {}

Member Function Documentation

◆ ConstructBaryons()

void eRositaPhysicsList::ConstructBaryons ( )
protected

Definition at line 157 of file eRositaPhysicsList.cc.

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
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructBosons()

void eRositaPhysicsList::ConstructBosons ( )
protected

Definition at line 110 of file eRositaPhysicsList.cc.

111 {
112  // pseudo-particles
113  //G4Geantino::GeantinoDefinition();
114  //G4ChargedGeantino::ChargedGeantinoDefinition();
115 
116  // gamma
118 }
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 eRositaPhysicsList::ConstructEM ( )
protected

Definition at line 178 of file eRositaPhysicsList.cc.

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

◆ ConstructGeneral()

void eRositaPhysicsList::ConstructGeneral ( )
protected

Definition at line 272 of file eRositaPhysicsList.cc.

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

Definition at line 121 of file eRositaPhysicsList.cc.

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
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructMesons()

void eRositaPhysicsList::ConstructMesons ( )
protected

Definition at line 139 of file eRositaPhysicsList.cc.

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 }
Here is the caller graph for this function:

◆ ConstructParticle()

void eRositaPhysicsList::ConstructParticle ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 101 of file eRositaPhysicsList.cc.

Here is the call graph for this function:

◆ ConstructProcess()

void eRositaPhysicsList::ConstructProcess ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 168 of file eRositaPhysicsList.cc.

169 {
171  ConstructEM();
173  //AddStepMax();
174 }
Here is the call graph for this function:

◆ SetCuts()

void eRositaPhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 316 of file eRositaPhysicsList.cc.

317 {
318  //G4VUserPhysicsList::SetCutsWithDefault method sets
319  //the default cut value for all particle types
320  //
322 
323  // Set the secondary production cut lower than 990. eV
324  // Very important for processes at low energies
325 
326  G4double lowLimit = 250. * eV;
327  G4double highLimit = 100. * GeV;
329 
331 }
void SetEnergyRange(G4double lowedge, G4double highedge)
void DumpCutValuesTable(G4int flag=1)
static const double GeV
Definition: G4SIunits.hh:214
static G4ProductionCutsTable * GetProductionCutsTable()
static const double eV
Definition: G4SIunits.hh:212
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

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