Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4IonisParamMat Class Reference

#include <G4IonisParamMat.hh>

Public Member Functions

 G4IonisParamMat (const G4Material *)
 
 ~G4IonisParamMat ()
 
G4double GetMeanExcitationEnergy () const
 
void SetMeanExcitationEnergy (G4double value)
 
G4double FindMeanExcitationEnergy (const G4Material *) const
 
G4double GetLogMeanExcEnergy () const
 
G4doubleGetShellCorrectionVector () const
 
G4double GetTaul () const
 
G4double GetPlasmaEnergy () const
 
G4double GetAdjustmentFactor () const
 
G4double GetCdensity () const
 
G4double GetMdensity () const
 
G4double GetAdensity () const
 
G4double GetX0density () const
 
G4double GetX1density () const
 
G4double GetD0density () const
 
G4double DensityCorrection (G4double x)
 
G4double GetF1fluct () const
 
G4double GetF2fluct () const
 
G4double GetEnergy1fluct () const
 
G4double GetLogEnergy1fluct () const
 
G4double GetEnergy2fluct () const
 
G4double GetLogEnergy2fluct () const
 
G4double GetEnergy0fluct () const
 
G4double GetRateionexcfluct () const
 
G4double GetZeffective () const
 
G4double GetFermiEnergy () const
 
G4double GetLFactor () const
 
G4double GetInvA23 () const
 
void SetBirksConstant (G4double value)
 
G4double GetBirksConstant () const
 
void SetMeanEnergyPerIonPair (G4double value)
 
G4double GetMeanEnergyPerIonPair () const
 
 G4IonisParamMat (__void__ &)
 

Static Public Member Functions

static G4DensityEffectDataGetDensityEffectData ()
 

Detailed Description

Definition at line 58 of file G4IonisParamMat.hh.

Constructor & Destructor Documentation

G4IonisParamMat::G4IonisParamMat ( const G4Material material)

Definition at line 56 of file G4IonisParamMat.cc.

57  : fMaterial(material)
58 {
59  fBirks = 0.;
60  fMeanEnergyPerIon = 0.0;
61  twoln10 = 2.*G4Pow::GetInstance()->logZ(10);
62 
63  // minimal set of default parameters for density effect
64  fCdensity = 0.0;
65  fD0density = 0.0;
66  fAdjustmentFactor = 1.0;
67  if(fDensityData == nullptr) { fDensityData = new G4DensityEffectData(); }
68 
69  // compute parameters
70  ComputeMeanParameters();
71  ComputeDensityEffect();
72  ComputeFluctModel();
73  ComputeIonParameters();
74 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double logZ(G4int Z) const
Definition: G4Pow.hh:166

Here is the call graph for this function:

G4IonisParamMat::~G4IonisParamMat ( )

Definition at line 116 of file G4IonisParamMat.cc.

117 {
118  if (fShellCorrectionVector) { delete [] fShellCorrectionVector; }
119  if (fDensityData) { delete fDensityData; }
120  fDensityData = nullptr;
121  fShellCorrectionVector = nullptr;
122 }
G4IonisParamMat::G4IonisParamMat ( __void__ &  )

Definition at line 81 of file G4IonisParamMat.cc.

82  : fMaterial(nullptr), fShellCorrectionVector(nullptr)
83 {
84  fMeanExcitationEnergy = 0.0;
85  fLogMeanExcEnergy = 0.0;
86  fTaul = 0.0;
87  fCdensity = 0.0;
88  fMdensity = 0.0;
89  fAdensity = 0.0;
90  fX0density = 0.0;
91  fX1density = 0.0;
92  fD0density = 0.0;
93  fPlasmaEnergy = 0.0;
94  fAdjustmentFactor = 0.0;
95  fF1fluct = 0.0;
96  fF2fluct = 0.0;
97  fEnergy1fluct = 0.0;
98  fLogEnergy1fluct = 0.0;
99  fEnergy2fluct = 0.0;
100  fLogEnergy2fluct = 0.0;
101  fEnergy0fluct = 0.0;
102  fRateionexcfluct = 0.0;
103  fZeff = 0.0;
104  fFermiEnergy = 0.0;
105  fLfactor = 0.0;
106  fInvA23 = 0.0;
107  fBirks = 0.0;
108  fMeanEnergyPerIon = 0.0;
109  twoln10 = 2.*G4Pow::GetInstance()->logZ(10);
110 
111  if(fDensityData == nullptr) { fDensityData = new G4DensityEffectData(); }
112 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double logZ(G4int Z) const
Definition: G4Pow.hh:166

Here is the call graph for this function:

Member Function Documentation

G4double G4IonisParamMat::DensityCorrection ( G4double  x)
inline

Definition at line 218 of file G4IonisParamMat.hh.

219 {
220  // x = log10(beta*gamma)
221  G4double y = 0.0;
222  if(x < fX0density) {
223  if(fD0density > 0.0) { y = fD0density*G4Exp(twoln10*(x - fX0density)); }
224  } else if(x >= fX1density) { y = twoln10*x - fCdensity; }
225  else {y = twoln10*x - fCdensity + fAdensity*G4Exp(G4Log(fX1density - x)*fMdensity);}
226  return y;
227 }
tuple x
Definition: test.py:50
G4double G4Log(G4double x)
Definition: G4Log.hh:230
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4IonisParamMat::FindMeanExcitationEnergy ( const G4Material mat) const

Definition at line 446 of file G4IonisParamMat.cc.

447 {
448  G4double res = 0.0;
449  // data from density effect data
450  if(fDensityData) {
451  G4int idx = fDensityData->GetIndex(mat->GetName());
452  if(idx >= 0) {
453  res = fDensityData->GetMeanIonisationPotential(idx);
454  }
455  }
456 
457  // The data on mean excitation energy for compaunds
458  // from "Stopping Powers for Electrons and Positrons"
459  // ICRU Report N#37, 1984 (energy in eV)
460  // this value overwrites Density effect data
461  G4String chFormula = mat->GetChemicalFormula();
462  if(chFormula != "") {
463 
464  static const size_t numberOfMolecula = 54;
465  static const G4String name[numberOfMolecula] = {
466  // gas 0 - 12
467  "NH_3", "C_4H_10", "CO_2", "C_2H_6", "C_7H_16-Gas",
468  // "G4_AMMONIA", "G4_BUTANE","G4_CARBON_DIOXIDE","G4_ETHANE", "G4_N-HEPTANE"
469  "C_6H_14-Gas", "CH_4", "NO", "N_2O", "C_8H_18-Gas",
470  // "G4_N-HEXANE" , "G4_METHANE", "x", "G4_NITROUS_OXIDE", "G4_OCTANE"
471  "C_5H_12-Gas", "C_3H_8", "H_2O-Gas",
472  // "G4_N-PENTANE", "G4_PROPANE", "G4_WATER_VAPOR"
473 
474  // liquid 13 - 39
475  "C_3H_6O", "C_6H_5NH_2", "C_6H_6", "C_4H_9OH", "CCl_4",
476  //"G4_ACETONE","G4_ANILINE","G4_BENZENE","G4_N-BUTYL_ALCOHOL","G4_CARBON_TETRACHLORIDE"
477  "C_6H_5Cl", "CHCl_3", "C_6H_12", "C_6H_4Cl_2", "C_4Cl_2H_8O",
478  //"G4_CHLOROBENZENE","G4_CHLOROFORM","G4_CYCLOHEXANE","G4_1,2-DICHLOROBENZENE",
479  //"G4_DICHLORODIETHYL_ETHER"
480  "C_2Cl_2H_4", "(C_2H_5)_2O", "C_2H_5OH", "C_3H_5(OH)_3","C_7H_16",
481  //"G4_1,2-DICHLOROETHANE","G4_DIETHYL_ETHER","G4_ETHYL_ALCOHOL","G4_GLYCEROL","G4_N-HEPTANE"
482  "C_6H_14", "CH_3OH", "C_6H_5NO_2","C_5H_12", "C_3H_7OH",
483  //"G4_N-HEXANE","G4_METHANOL","G4_NITROBENZENE","G4_N-PENTANE","G4_N-PROPYL_ALCOHOL",
484  "C_5H_5N", "C_8H_8", "C_2Cl_4", "C_7H_8", "C_2Cl_3H",
485  //"G4_PYRIDINE","G4_POLYSTYRENE","G4_TETRACHLOROETHYLENE","G4_TOLUENE","G4_TRICHLOROETHYLENE"
486  "H_2O", "C_8H_10",
487  // "G4_WATER", "G4_XYLENE"
488 
489  // solid 40 - 53
490  "C_5H_5N_5", "C_5H_5N_5O", "(C_6H_11NO)-nylon", "C_25H_52",
491  // "G4_ADENINE", "G4_GUANINE", "G4_NYLON-6-6", "G4_PARAFFIN"
492  "(C_2H_4)-Polyethylene", "(C_5H_8O_2)-Polymethil_Methacrylate",
493  // "G4_ETHYLENE", "G4_PLEXIGLASS"
494  "(C_8H_8)-Polystyrene", "A-150-tissue", "Al_2O_3", "CaF_2",
495  // "G4_POLYSTYRENE", "G4_A-150_TISSUE", "G4_ALUMINUM_OXIDE", "G4_CALCIUM_FLUORIDE"
496  "LiF", "Photo_Emulsion", "(C_2F_4)-Teflon", "SiO_2"
497  // "G4_LITHIUM_FLUORIDE", "G4_PHOTO_EMULSION", "G4_TEFLON", "G4_SILICON_DIOXIDE"
498  } ;
499 
500  static const G4double meanExcitation[numberOfMolecula] = {
501 
502  53.7, 48.3, 85.0, 45.4, 49.2,
503  49.1, 41.7, 87.8, 84.9, 49.5,
504  48.2, 47.1, 71.6,
505 
506  64.2, 66.2, 63.4, 59.9, 166.3,
507  89.1, 156.0, 56.4, 106.5, 103.3,
508  111.9, 60.0, 62.9, 72.6, 54.4,
509  54.0, 67.6, 75.8, 53.6, 61.1,
510  66.2, 64.0, 159.2, 62.5, 148.1,
511  75.0, 61.8,
512 
513  71.4, 75.0, 63.9, 48.3, 57.4,
514  74.0, 68.7, 65.1, 145.2, 166.,
515  94.0, 331.0, 99.1, 139.2
516  };
517 
518  for(size_t i=0; i<numberOfMolecula; i++) {
519  if(chFormula == name[i]) {
520  res = meanExcitation[i]*eV;
521  break;
522  }
523  }
524  }
525  return res;
526 }
G4int GetIndex(const G4String &matName) const
const XML_Char * name
Definition: expat.h:151
G4double GetMeanIonisationPotential(G4int idx) const
static const G4int numberOfMolecula
const G4String & GetChemicalFormula() const
Definition: G4Material.hh:179
const G4String & GetName() const
Definition: G4Material.hh:178
int G4int
Definition: G4Types.hh:78
static constexpr double eV
Definition: G4SIunits.hh:215
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4double G4IonisParamMat::GetAdensity ( ) const
inline

Definition at line 89 of file G4IonisParamMat.hh.

89 {return fAdensity;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetAdjustmentFactor ( ) const
inline

Definition at line 83 of file G4IonisParamMat.hh.

83 {return fAdjustmentFactor;};
G4double G4IonisParamMat::GetBirksConstant ( ) const
inline

Definition at line 135 of file G4IonisParamMat.hh.

135 {return fBirks;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetCdensity ( ) const
inline

Definition at line 85 of file G4IonisParamMat.hh.

85 {return fCdensity;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetD0density ( ) const
inline

Definition at line 95 of file G4IonisParamMat.hh.

95 {return fD0density;};
G4DensityEffectData * G4IonisParamMat::GetDensityEffectData ( )
static

Definition at line 171 of file G4IonisParamMat.cc.

172 {
173  return fDensityData;
174 }

Here is the caller graph for this function:

G4double G4IonisParamMat::GetEnergy0fluct ( ) const
inline

Definition at line 117 of file G4IonisParamMat.hh.

117 {return fEnergy0fluct;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetEnergy1fluct ( ) const
inline

Definition at line 109 of file G4IonisParamMat.hh.

109 {return fEnergy1fluct;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetEnergy2fluct ( ) const
inline

Definition at line 113 of file G4IonisParamMat.hh.

113 {return fEnergy2fluct;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetF1fluct ( ) const
inline

Definition at line 105 of file G4IonisParamMat.hh.

105 {return fF1fluct;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetF2fluct ( ) const
inline

Definition at line 107 of file G4IonisParamMat.hh.

107 {return fF2fluct;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetFermiEnergy ( ) const
inline

Definition at line 125 of file G4IonisParamMat.hh.

125 {return fFermiEnergy;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetInvA23 ( ) const
inline

Definition at line 129 of file G4IonisParamMat.hh.

129 {return fInvA23;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetLFactor ( ) const
inline

Definition at line 127 of file G4IonisParamMat.hh.

127 {return fLfactor;};
G4double G4IonisParamMat::GetLogEnergy1fluct ( ) const
inline

Definition at line 111 of file G4IonisParamMat.hh.

111 {return fLogEnergy1fluct;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetLogEnergy2fluct ( ) const
inline

Definition at line 115 of file G4IonisParamMat.hh.

115 {return fLogEnergy2fluct;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetLogMeanExcEnergy ( ) const
inline

Definition at line 73 of file G4IonisParamMat.hh.

73 {return fLogMeanExcEnergy;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetMdensity ( ) const
inline

Definition at line 87 of file G4IonisParamMat.hh.

87 {return fMdensity;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetMeanEnergyPerIonPair ( ) const
inline

Definition at line 141 of file G4IonisParamMat.hh.

141 {return fMeanEnergyPerIon;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetMeanExcitationEnergy ( ) const
inline

Definition at line 67 of file G4IonisParamMat.hh.

67 {return fMeanExcitationEnergy;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetPlasmaEnergy ( ) const
inline

Definition at line 81 of file G4IonisParamMat.hh.

81 {return fPlasmaEnergy;};
G4double G4IonisParamMat::GetRateionexcfluct ( ) const
inline

Definition at line 119 of file G4IonisParamMat.hh.

119 {return fRateionexcfluct;};

Here is the caller graph for this function:

G4double* G4IonisParamMat::GetShellCorrectionVector ( ) const
inline

Definition at line 75 of file G4IonisParamMat.hh.

75 {return fShellCorrectionVector;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetTaul ( ) const
inline

Definition at line 77 of file G4IonisParamMat.hh.

77 {return fTaul;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetX0density ( ) const
inline

Definition at line 91 of file G4IonisParamMat.hh.

91 {return fX0density;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetX1density ( ) const
inline

Definition at line 93 of file G4IonisParamMat.hh.

93 {return fX1density;};

Here is the caller graph for this function:

G4double G4IonisParamMat::GetZeffective ( ) const
inline

Definition at line 123 of file G4IonisParamMat.hh.

123 {return fZeff;};

Here is the caller graph for this function:

void G4IonisParamMat::SetBirksConstant ( G4double  value)
inline

Definition at line 133 of file G4IonisParamMat.hh.

133 {fBirks = value;};
const XML_Char int const XML_Char * value
Definition: expat.h:331

Here is the caller graph for this function:

void G4IonisParamMat::SetMeanEnergyPerIonPair ( G4double  value)
inline

Definition at line 139 of file G4IonisParamMat.hh.

139 {fMeanEnergyPerIon = value;};
const XML_Char int const XML_Char * value
Definition: expat.h:331

Here is the caller graph for this function:

void G4IonisParamMat::SetMeanExcitationEnergy ( G4double  value)

Definition at line 419 of file G4IonisParamMat.cc.

420 {
421  if(value == fMeanExcitationEnergy || value <= 0.0) { return; }
422  if (G4NistManager::Instance()->GetVerbose() > 1) {
423  G4cout << "G4Material: Mean excitation energy is changed for "
424  << fMaterial->GetName()
425  << " Iold= " << fMeanExcitationEnergy/eV
426  << "eV; Inew= " << value/eV << " eV;"
427  << G4endl;
428  }
429 
430  fMeanExcitationEnergy = value;
431 
432  // add corrections to density effect
433  G4double newlog = G4Log(value);
434  G4double corr = 2*(newlog - fLogMeanExcEnergy);
435  fCdensity += corr;
436  fX0density += corr/twoln10;
437  fX1density += corr/twoln10;
438 
439  // recompute parameters of fluctuation model
440  fLogMeanExcEnergy = newlog;
441  ComputeFluctModel();
442 }
const G4String & GetName() const
Definition: G4Material.hh:178
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
const XML_Char int const XML_Char * value
Definition: expat.h:331
static constexpr double eV
Definition: G4SIunits.hh:215
G4double G4Log(G4double x)
Definition: G4Log.hh:230
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:


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