21#include <G4ParticleDefinition.hh>
22#include <G4ProcessTable.hh>
23#include <G4UImessenger.hh>
24#include <G4VProcess.hh>
41 "Cannot create two instances of singleton.");
112 (*fIsCutVector)[
kGamma] =
true;
115 (*fIsCutVector)[
kGamma] =
true;
118 (*fIsCutVector)[
kGamma] =
true;
141 (*fIsCutVector)[
kMuon] =
true;
157 (*fIsControlVector)[
kGamma] =
true;
161 (*fIsControlVector)[
kGamma] =
true;
165 (*fIsControlVector)[
kGamma] =
true;
169 (*fIsControlVector)[
kGamma] =
true;
174 (*fIsControlVector)[
kEplus] =
true;
176 (*fIsControlVector)[
kMuon] =
true;
180 (*fIsControlVector)[
kEplus] =
true;
185 (*fIsControlVector)[
kEplus] =
true;
186 (*fIsControlVector)[
kMuon] =
true;
195 (*fIsControlVector)[
kMuon] =
true;
199 (*fIsControlVector)[
kAny] =
true;
204 (*fIsControlVector)[
kEplus] =
true;
206 (*fIsControlVector)[
kMuon] =
true;
211 (*fIsControlVector)[
kEplus] =
true;
213 (*fIsControlVector)[
kMuon] =
true;
233 "PhysicsManager has been already locked.");
239 G4String name, G4double value,
TG4G3Cut& cut)
374 G4String name = particle->GetParticleName();
375 G4String pType = particle->GetParticleType();
377 if (name ==
"gamma") {
380 else if (name ==
"e-") {
383 else if (name ==
"e+") {
386 else if ((pType ==
"baryon" || pType ==
"meson" || pType ==
"nucleus" ||
388 if (particle->GetPDGCharge() == 0) {
394 else if (name ==
"mu-" || name ==
"mu+") {
408 switch (particleWSP) {
419 return "NeutralHadron";
422 return "ChargedHadron";
435 "TG4G3PhysicsManager",
"GetG3ParticleWSPName",
"Wrong particleWSP.");
Definition of the TG4G3ControlVector class.
Definition of the TG4G3CutVector class.
Definition of the TG4G3Defaults class.
Definition of the TG4G3PhysicsManager class.
Definition of the TG4G3Units class.
Vector of control process values with convenient set/get methods.
static TG4G3Control GetControl(const G4String &controlName)
G4bool SetControl(TG4G3Control control, TG4G3ControlValue controlValue, TG4G3CutVector &cuts)
static TG4G3ControlValue GetControlValue(G4int value, TG4G3Control control)
Vector of kinetic energy cut values with convenient set/get methods.
static TG4G3Cut GetCut(const G4String &cutName)
static G4double Tolerance()
static G4bool CheckCutValue(TG4G3Cut cut, G4double value)
void SetCut(TG4G3Cut cut, G4double cutValue)
Provides a Geant3 way control to Geant4 physics.
G4bool IsGlobalSpecialControls() const
void SwitchIsCutVector(TG4G3Cut cut)
G4bool CheckControlWithTheVector(G4String name, G4double value, TG4G3Control &control, TG4G3ControlValue &controlValue)
TG4G3ControlVector * fControlVector
TG4G3ControlVector.
void SwitchIsControlVector(TG4G3Control control)
G4String GetG3ParticleWSPName(G4int particleWSP) const
void SetCut(TG4G3Cut cut, G4double cutValue)
TG4boolVector * fIsControlVector
vector of booleans which controls are set
TG4boolVector * fIsCutVector
vector of booleans which cuts are set
G4bool fLock
if true: cut/control vectors cannot be modified
TG4G3ParticleWSP GetG3ParticleWSP(G4ParticleDefinition *particle) const
void SetG3DefaultControls()
void SetProcess(TG4G3Control control, TG4G3ControlValue controlValue)
G4bool IsSpecialCuts() const
static TG4G3PhysicsManager * fgInstance
this instance
G4bool IsSpecialControls() const
TG4G3CutVector * fCutVector
TG4G3CutVector.
G4bool CheckCutWithTheVector(G4String name, G4double value, TG4G3Cut &cut)
static void Exception(const TString &className, const TString &methodName, const TString &text)
TG4G3ControlValue
Enumeration for G3 processes control values.
TG4G3Cut
Enumeration for G3 types of kinetic energy cuts.
std::vector< G4bool > TG4boolVector
TG4G3Control
Enumeration for G3 types of physics processes controls.
@ kUnsetControlValue
value not set
@ kNoG3Cuts
Invalid value.
@ kNoG3Controls
No process control.
TG4G3ParticleWSP
The particles types which a special process (cuts, controls) is applicable for.
@ kNofParticlesWSP
not a particle with a special control
@ kGamma
kPAIR, kCOMP, kPHOT, kPHIS
@ kElectron
kDRAY, kBREM, kMULS, kG3LOSS
@ kEplus
kDRAY, kBREM, kMULS, kG3LOSS, kANNI
@ kMuon
kDRAY, kBREM, kMULS, kG3LOSS, kMUNU
@ kChargedHadron
kDRAY, kMULS, kG3LOSS, kHADR,