NestAlg.h
Go to the documentation of this file.
1 #ifndef NESTALG_H
2 #define NESTALG_H
3 
4 #include "Geant4/G4Types.hh"
5 #include "Geant4/G4VParticleChange.hh"
6 #include <map>
7 
8 class G4MaterialPropertiesTable;
9 class G4Step;
10 class G4Track;
11 
12 namespace CLHEP { class HepRandomEngine; }
13 
14 class NestAlg {
15 
16  public :
17 
18  NestAlg(CLHEP::HepRandomEngine& engine);
19  NestAlg(double yieldFactor, CLHEP::HepRandomEngine& engine);
20 
21  const G4VParticleChange& CalculateIonizationAndScintillation(G4Track const& aTrack,
22  G4Step const& aStep);
23 
24  void SetScintillationYieldFactor(double const& yf) { fYieldFactor = yf; }
25  void SetScintillationExcitationRatio(double const& er) { fExcitationRatio = er; }
26  int NumberScintillationPhotons() const { return fNumScintPhotons; }
27  int NumberIonizationElectrons() const { return fNumIonElectrons; }
28  double EnergyDeposition() const { return fEnergyDep; }
29 
30  private:
31 
32  G4double GetGasElectronDriftSpeed(G4double efieldinput,G4double density);
33  G4double GetLiquidElectronDriftSpeed(double T, double F, G4bool M, G4int Z);
34  G4double CalculateElectronLET ( G4double E, G4int Z );
35  G4double UnivScreenFunc ( G4double E, G4double Z, G4double A );
36  G4int BinomFluct(G4int N0, G4double prob); //function for doing fluctuations
37  void InitMatPropValues ( G4MaterialPropertiesTable* nobleElementMat, int z );
38 
39  double fYieldFactor; ///< turns scint. on/off
40  double fExcitationRatio; ///< N_ex/N_i, the dimensionless ratio of initial
41  ///< excitons to ions
42  int fNumScintPhotons; ///< number of photons produced by the step
43  int fNumIonElectrons; ///< number of ionization electrons produced by step
44  double fEnergyDep; ///< energy deposited by the step
45  G4VParticleChange fParticleChange; ///< pointer to G4VParticleChange
46  std::map<int,bool> fElementPropInit; ///< map of noble element z to flag
47  ///< for whether that element's material
48  ///< properties table has been initialized
49  CLHEP::HepRandomEngine& fEngine; ///< random engine
50 };
51 
52 #endif //NESTALG_H
G4double GetGasElectronDriftSpeed(G4double efieldinput, G4double density)
Definition: G4S2Light.cc:315
int NumberScintillationPhotons() const
Definition: NestAlg.h:26
G4double UnivScreenFunc(G4double E, G4double Z, G4double A)
Definition: G4S1Light.cc:1300
void SetScintillationYieldFactor(double const &yf)
Definition: NestAlg.h:24
double fYieldFactor
turns scint. on/off
Definition: NestAlg.h:39
G4VParticleChange fParticleChange
pointer to G4VParticleChange
Definition: NestAlg.h:45
int fNumIonElectrons
number of ionization electrons produced by step
Definition: NestAlg.h:43
void InitMatPropValues(G4MaterialPropertiesTable *nobleElementMat)
Definition: G4S1Light.cc:1265
int fNumScintPhotons
number of photons produced by the step
Definition: NestAlg.h:42
G4int BinomFluct(G4int N0, G4double prob)
Definition: G4S1Light.cc:1245
int NumberIonizationElectrons() const
Definition: NestAlg.h:27
G4double CalculateElectronLET(G4double E, G4int Z)
Definition: G4S1Light.cc:1218
CLHEP::HepRandomEngine & fEngine
random engine
Definition: NestAlg.h:49
std::map< int, bool > fElementPropInit
Definition: NestAlg.h:46
void SetScintillationExcitationRatio(double const &er)
Definition: NestAlg.h:25
double EnergyDeposition() const
Definition: NestAlg.h:28
double fExcitationRatio
Definition: NestAlg.h:40
G4double GetLiquidElectronDriftSpeed(double T, double F, G4bool M, G4int Z)
double fEnergyDep
energy deposited by the step
Definition: NestAlg.h:44