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

#include <G4IonisParamMat.hh>

Public Member Functions

 G4IonisParamMat (G4Material *)
 
virtual ~G4IonisParamMat ()
 
G4double GetMeanExcitationEnergy () const
 
void SetMeanExcitationEnergy (G4double value)
 
G4double FindMeanExcitationEnergy (const G4String &chFormula)
 
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 (const G4IonisParamMat &)
 
G4IonisParamMatoperator= (const G4IonisParamMat &)
 
G4int operator== (const G4IonisParamMat &) const
 
G4int operator!= (const G4IonisParamMat &) const
 
 G4IonisParamMat (__void__ &)
 

Static Public Member Functions

static G4DensityEffectDataGetDensityEffectData ()
 

Detailed Description

Definition at line 56 of file G4IonisParamMat.hh.

Constructor & Destructor Documentation

G4IonisParamMat::G4IonisParamMat ( G4Material material)

Definition at line 58 of file G4IonisParamMat.cc.

References G4Pow::GetInstance(), and G4Pow::logZ().

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

Definition at line 116 of file G4IonisParamMat.cc.

117 {
118  if (fShellCorrectionVector) { delete [] fShellCorrectionVector; }
119  if (fDensityData) { delete fDensityData; }
120  fDensityData = 0;
121  fShellCorrectionVector = 0;
122 }
G4IonisParamMat::G4IonisParamMat ( const G4IonisParamMat right)

Definition at line 496 of file G4IonisParamMat.cc.

References right.

497 {
498  fShellCorrectionVector = 0;
499  fMaterial = 0;
500  *this = right;
501 }
G4IonisParamMat::G4IonisParamMat ( __void__ &  )

Definition at line 83 of file G4IonisParamMat.cc.

References G4Pow::GetInstance(), and G4Pow::logZ().

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

Member Function Documentation

G4double G4IonisParamMat::DensityCorrection ( G4double  x)
inline

Definition at line 192 of file G4IonisParamMat.hh.

Referenced by G4MollerBhabhaModel::ComputeDEDXPerVolume(), G4MuBetheBlochModel::ComputeDEDXPerVolume(), and G4BetheBlochModel::ComputeDEDXPerVolume().

193 {
194  // x = log10(beta*gamma)
195 
196  G4double y = 0.0;
197  if(x < fX0density) {
198  if(fD0density > 0.0) { y = fD0density*std::pow(10.,2*(x - fX0density)); }
199  } else if(x >= fX1density) { y = twoln10*x - fCdensity; }
200  else {y = twoln10*x - fCdensity + fAdensity*std::pow(fX1density - x, fMdensity);}
201  return y;
202 }
double G4double
Definition: G4Types.hh:76
G4double G4IonisParamMat::FindMeanExcitationEnergy ( const G4String chFormula)

Definition at line 424 of file G4IonisParamMat.cc.

References python.hepunit::eV, and test::x.

425 {
426  // The data on mean excitation energy for compaunds
427  // from "Stopping Powers for Electrons and Positrons"
428  // ICRU Report N#37, 1984 (energy in eV)
429 
430  size_t numberOfMolecula = 54;
431  static const G4String name[54] = {
432  // gas 0 - 12
433  "NH_3", "C_4H_10", "CO_2", "C_2H_6", "C_7H_16-Gas",
434  // "G4_AMMONIA", "G4_BUTANE","G4_CARBON_DIOXIDE","G4_ETHANE", "G4_N-HEPTANE"
435  "C_6H_14-Gas", "CH_4", "NO", "N_2O", "C_8H_18-Gas",
436  // "G4_N-HEXANE" , "G4_METHANE", "x", "G4_NITROUS_OXIDE", "G4_OCTANE"
437  "C_5H_12-Gas", "C_3H_8", "H_2O-Gas",
438  // "G4_N-PENTANE", "G4_PROPANE", "G4_WATER_VAPOR"
439 
440  // liquid 13 - 39
441  "C_3H_6O", "C_6H_5NH_2", "C_6H_6", "C_4H_9OH", "CCl_4",
442  //"G4_ACETONE","G4_ANILINE","G4_BENZENE","G4_N-BUTYL_ALCOHOL","G4_CARBON_TETRACHLORIDE"
443  "C_6H_5Cl", "CHCl_3", "C_6H_12", "C_6H_4Cl_2", "C_4Cl_2H_8O",
444  //"G4_CHLOROBENZENE","G4_CHLOROFORM","G4_CYCLOHEXANE","G4_1,2-DICHLOROBENZENE","G4_DICHLORODIETHYL_ETHER"
445  "C_2Cl_2H_4", "(C_2H_5)_2O", "C_2H_5OH", "C_3H_5(OH)_3","C_7H_16",
446  //"G4_1,2-DICHLOROETHANE","G4_DIETHYL_ETHER","G4_ETHYL_ALCOHOL","G4_GLYCEROL","G4_N-HEPTANE"
447  "C_6H_14", "CH_3OH", "C_6H_5NO_2","C_5H_12", "C_3H_7OH",
448  //"G4_N-HEXANE","G4_METHANOL","G4_NITROBENZENE","G4_N-PENTANE","G4_N-PROPYL_ALCOHOL",
449  "C_5H_5N", "C_8H_8", "C_2Cl_4", "C_7H_8", "C_2Cl_3H",
450  //"G4_PYRIDINE","G4_POLYSTYRENE","G4_TETRACHLOROETHYLENE","G4_TOLUENE","G4_TRICHLOROETHYLENE"
451  "H_2O", "C_8H_10",
452  // "G4_WATER", "G4_XYLENE"
453 
454  // solid 40 - 53
455  "C_5H_5N_5", "C_5H_5N_5O", "(C_6H_11NO)-nylon", "C_25H_52",
456  // "G4_ADENINE", "G4_GUANINE", "G4_NYLON-6-6", "G4_PARAFFIN"
457  "(C_2H_4)-Polyethylene", "(C_5H_8O_2)-Polymethil_Methacrylate",
458  // "G4_ETHYLENE", "G4_PLEXIGLASS"
459  "(C_8H_8)-Polystyrene", "A-150-tissue", "Al_2O_3", "CaF_2",
460  // "G4_POLYSTYRENE", "G4_A-150_TISSUE", "G4_ALUMINUM_OXIDE", "G4_CALCIUM_FLUORIDE"
461  "LiF", "Photo_Emulsion", "(C_2F_4)-Teflon", "SiO_2"
462  // "G4_LITHIUM_FLUORIDE", "G4_PHOTO_EMULSION", "G4_TEFLON", "G4_SILICON_DIOXIDE"
463  } ;
464 
465  static const G4double meanExcitation[54] = {
466 
467  53.7, 48.3, 85.0, 45.4, 49.2,
468  49.1, 41.7, 87.8, 84.9, 49.5,
469  48.2, 47.1, 71.6,
470 
471  64.2, 66.2, 63.4, 59.9, 166.3,
472  89.1, 156.0, 56.4, 106.5, 103.3,
473  111.9, 60.0, 62.9, 72.6, 54.4,
474  54.0, 67.6, 75.8, 53.6, 61.1,
475  66.2, 64.0, 159.2, 62.5, 148.1,
476  75.0, 61.8,
477 
478  71.4, 75.0, 63.9, 48.3, 57.4,
479  74.0, 68.7, 65.1, 145.2, 166.,
480  94.0, 331.0, 99.1, 139.2
481  };
482 
483  G4double x = fMeanExcitationEnergy;
484 
485  for(size_t i=0; i<numberOfMolecula; i++) {
486  if(chFormula == name[i]) {
487  x = meanExcitation[i]*eV;
488  break;
489  }
490  }
491  return x;
492 }
const XML_Char * name
double G4double
Definition: G4Types.hh:76
G4double G4IonisParamMat::GetAdensity ( ) const
inline

Definition at line 80 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

80 {return fAdensity;};
G4double G4IonisParamMat::GetAdjustmentFactor ( ) const
inline

Definition at line 77 of file G4IonisParamMat.hh.

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

Definition at line 108 of file G4IonisParamMat.hh.

Referenced by SteppingAction::BirksAttenuation().

108 {return fBirks;};
G4double G4IonisParamMat::GetCdensity ( ) const
inline

Definition at line 78 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

78 {return fCdensity;};
G4double G4IonisParamMat::GetD0density ( ) const
inline

Definition at line 83 of file G4IonisParamMat.hh.

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

Definition at line 173 of file G4IonisParamMat.cc.

Referenced by G4NistMessenger::SetNewValue().

174 {
175  return fDensityData;
176 }
G4double G4IonisParamMat::GetEnergy0fluct ( ) const
inline

Definition at line 97 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

97 {return fEnergy0fluct;};
G4double G4IonisParamMat::GetEnergy1fluct ( ) const
inline

Definition at line 93 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

93 {return fEnergy1fluct;};
G4double G4IonisParamMat::GetEnergy2fluct ( ) const
inline

Definition at line 95 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

95 {return fEnergy2fluct;};
G4double G4IonisParamMat::GetF1fluct ( ) const
inline

Definition at line 91 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

91 {return fF1fluct;};
G4double G4IonisParamMat::GetF2fluct ( ) const
inline

Definition at line 92 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

92 {return fF2fluct;};
G4double G4IonisParamMat::GetFermiEnergy ( ) const
inline

Definition at line 102 of file G4IonisParamMat.hh.

Referenced by G4ionEffectiveCharge::EffectiveCharge().

102 {return fFermiEnergy;};
G4double G4IonisParamMat::GetInvA23 ( ) const
inline
G4double G4IonisParamMat::GetLFactor ( ) const
inline

Definition at line 103 of file G4IonisParamMat.hh.

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

Definition at line 94 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

94 {return fLogEnergy1fluct;};
G4double G4IonisParamMat::GetLogEnergy2fluct ( ) const
inline

Definition at line 96 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

96 {return fLogEnergy2fluct;};
G4double G4IonisParamMat::GetLogMeanExcEnergy ( ) const
inline

Definition at line 71 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

71 {return fLogMeanExcEnergy;};
G4double G4IonisParamMat::GetMdensity ( ) const
inline

Definition at line 79 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

79 {return fMdensity;};
G4double G4IonisParamMat::GetMeanEnergyPerIonPair ( ) const
inline

Definition at line 112 of file G4IonisParamMat.hh.

Referenced by G4ElectronIonPair::DumpMeanEnergyPerIonPair(), and G4ElectronIonPair::MeanNumberOfIonsAlongStep().

112 {return fMeanEnergyPerIon;};
G4double G4IonisParamMat::GetMeanExcitationEnergy ( ) const
inline
G4double G4IonisParamMat::GetPlasmaEnergy ( ) const
inline

Definition at line 76 of file G4IonisParamMat.hh.

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

Definition at line 98 of file G4IonisParamMat.hh.

Referenced by G4RDVeLowEnergyLoss::GetLossWithFluct().

98 {return fRateionexcfluct;};
G4double* G4IonisParamMat::GetShellCorrectionVector ( ) const
inline

Definition at line 72 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::ShellCorrectionSTD().

72 {return fShellCorrectionVector;};
G4double G4IonisParamMat::GetTaul ( ) const
inline

Definition at line 73 of file G4IonisParamMat.hh.

Referenced by G4hBetheBlochModel::LowEnergyLimit(), and G4EmCorrections::ShellCorrectionSTD().

73 {return fTaul;};
G4double G4IonisParamMat::GetX0density ( ) const
inline

Definition at line 81 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

81 {return fX0density;};
G4double G4IonisParamMat::GetX1density ( ) const
inline

Definition at line 82 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

82 {return fX1density;};
G4double G4IonisParamMat::GetZeffective ( ) const
inline

Definition at line 101 of file G4IonisParamMat.hh.

Referenced by G4ionEffectiveCharge::EffectiveCharge().

101 {return fZeff;};
G4int G4IonisParamMat::operator!= ( const G4IonisParamMat right) const

Definition at line 555 of file G4IonisParamMat.cc.

556 {
557  return (this != (G4IonisParamMat*) &right);
558 }
G4IonisParamMat & G4IonisParamMat::operator= ( const G4IonisParamMat right)

Definition at line 505 of file G4IonisParamMat.cc.

506 {
507  if (this != &right)
508  {
509  fMaterial = right.fMaterial;
510  fMeanExcitationEnergy = right.fMeanExcitationEnergy;
511  fLogMeanExcEnergy = right.fLogMeanExcEnergy;
512  if(fShellCorrectionVector){ delete [] fShellCorrectionVector; }
513  fShellCorrectionVector = new G4double[3];
514  fShellCorrectionVector[0] = right.fShellCorrectionVector[0];
515  fShellCorrectionVector[1] = right.fShellCorrectionVector[1];
516  fShellCorrectionVector[2] = right.fShellCorrectionVector[2];
517  fTaul = right.fTaul;
518  fCdensity = right.fCdensity;
519  fMdensity = right.fMdensity;
520  fAdensity = right.fAdensity;
521  fX0density = right.fX0density;
522  fX1density = right.fX1density;
523  fD0density = right.fD0density;
524  fPlasmaEnergy = right.fPlasmaEnergy;
525  fAdjustmentFactor = right.fAdjustmentFactor;
526  fF1fluct = right.fF1fluct;
527  fF2fluct = right.fF2fluct;
528  fEnergy1fluct = right.fEnergy1fluct;
529  fLogEnergy1fluct = right.fLogEnergy1fluct;
530  fEnergy2fluct = right.fEnergy2fluct;
531  fLogEnergy2fluct = right.fLogEnergy2fluct;
532  fEnergy0fluct = right.fEnergy0fluct;
533  fRateionexcfluct = right.fRateionexcfluct;
534  fZeff = right.fZeff;
535  fFermiEnergy = right.fFermiEnergy;
536  fLfactor = right.fLfactor;
537  fInvA23 = right.fInvA23;
538  fBirks = right.fBirks;
539  fMeanEnergyPerIon = right.fMeanEnergyPerIon;
540  fDensityData = right.fDensityData;
541  twoln10 = right.twoln10;
542  }
543  return *this;
544 }
double G4double
Definition: G4Types.hh:76
G4int G4IonisParamMat::operator== ( const G4IonisParamMat right) const

Definition at line 548 of file G4IonisParamMat.cc.

549 {
550  return (this == (G4IonisParamMat*) &right);
551 }
void G4IonisParamMat::SetBirksConstant ( G4double  value)
inline

Definition at line 107 of file G4IonisParamMat.hh.

Referenced by OpNoviceDetectorConstruction::Construct().

107 {fBirks = value;};
const XML_Char int const XML_Char * value
void G4IonisParamMat::SetMeanEnergyPerIonPair ( G4double  value)
inline

Definition at line 111 of file G4IonisParamMat.hh.

Referenced by G4ElectronIonPair::FindG4MeanEnergyPerIonPair(), and DetectorConstruction::SetPairEnergy().

111 {fMeanEnergyPerIon = value;};
const XML_Char int const XML_Char * value
void G4IonisParamMat::SetMeanExcitationEnergy ( G4double  value)

Definition at line 397 of file G4IonisParamMat.cc.

References python.hepunit::eV, G4cout, G4endl, G4Log(), G4Material::GetName(), and G4NistManager::Instance().

Referenced by G4HumanPhantomMaterial::DefineMaterials(), BrachyMaterial::DefineMaterials(), G4tgbMaterialMgr::FindOrBuildG4Material(), and G4GDMLReadMaterials::MaterialRead().

398 {
399  if(value == fMeanExcitationEnergy || value <= 0.0) { return; }
400  if (G4NistManager::Instance()->GetVerbose() > 1) {
401  G4cout << "G4Material: Mean excitation energy is changed for "
402  << fMaterial->GetName()
403  << " Iold= " << fMeanExcitationEnergy/eV
404  << "eV; Inew= " << value/eV << " eV;"
405  << G4endl;
406  }
407 
408  fMeanExcitationEnergy = value;
409 
410  // add corrections to density effect
411  G4double newlog = G4Log(value);
412  G4double corr = 2*(newlog - fLogMeanExcEnergy);
413  fCdensity += corr;
414  fX0density += corr/twoln10;
415  fX1density += corr/twoln10;
416 
417  // recompute parameters of fluctuation model
418  fLogMeanExcEnergy = newlog;
419  ComputeFluctModel();
420 }
const G4String & GetName() const
Definition: G4Material.hh:176
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
G4double G4Log(G4double x)
Definition: G4Log.hh:227
const XML_Char int const XML_Char * value
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76

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