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  ) 

Definition at line 56 of file G4IonisParamMat.cc.

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

00057   : fMaterial(material)
00058 {
00059   fBirks = 0.;
00060   fMeanEnergyPerIon = 0.0;
00061   twoln10 = 2.*G4Pow::GetInstance()->logZ(10);
00062 
00063   // minimal set of default parameters for density effect
00064   fCdensity = 0.0;
00065   fD0density = 0.0;
00066   fAdjustmentFactor = 1.0;
00067   if(!fDensityData) { fDensityData = new G4DensityEffectData(); }
00068 
00069   // compute parameters
00070   ComputeMeanParameters();
00071   ComputeDensityEffect();
00072   ComputeFluctModel();
00073   ComputeIonParameters();
00074 }

G4IonisParamMat::~G4IonisParamMat (  )  [virtual]

Definition at line 114 of file G4IonisParamMat.cc.

00115 {
00116   if (fShellCorrectionVector) { delete [] fShellCorrectionVector; }
00117   if (fDensityData) { delete fDensityData; }
00118   fDensityData = 0;
00119   fShellCorrectionVector = 0;
00120 }

G4IonisParamMat::G4IonisParamMat ( const G4IonisParamMat  ) 

Definition at line 471 of file G4IonisParamMat.cc.

00472 {
00473   fShellCorrectionVector = 0;
00474   fMaterial = 0;
00475   *this = right;
00476 }

G4IonisParamMat::G4IonisParamMat ( __void__ &   ) 

Definition at line 81 of file G4IonisParamMat.cc.

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

00082   : fMaterial(0), fShellCorrectionVector(0)
00083 {
00084   fMeanExcitationEnergy = 0.0;
00085   fLogMeanExcEnergy = 0.0;
00086   fTaul = 0.0;
00087   fCdensity = 0.0;
00088   fMdensity = 0.0;
00089   fAdensity = 0.0;
00090   fX0density = 0.0;
00091   fX1density = 0.0;
00092   fD0density = 0.0;
00093   fPlasmaEnergy = 0.0;
00094   fAdjustmentFactor = 0.0;
00095   fF1fluct = 0.0;          
00096   fF2fluct = 0.0;                       
00097   fEnergy1fluct = 0.0;
00098   fLogEnergy1fluct = 0.0;
00099   fEnergy2fluct = 0.0;
00100   fLogEnergy2fluct = 0.0;
00101   fEnergy0fluct = 0.0;
00102   fRateionexcfluct = 0.0;
00103   fZeff = 0.0;
00104   fFermiEnergy = 0.0;
00105   fLfactor = 0.0;
00106   fInvA23 = 0.0;
00107   fBirks = 0.0;
00108   fMeanEnergyPerIon = 0.0;
00109   twoln10 = 2.*G4Pow::GetInstance()->logZ(10);
00110 }


Member Function Documentation

G4double G4IonisParamMat::DensityCorrection ( G4double  x  )  [inline]

Definition at line 192 of file G4IonisParamMat.hh.

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

00193 {
00194   // x = log10(beta*gamma)  
00195 
00196   G4double y = 0.0;
00197   if(x < fX0density) {
00198     if(fD0density > 0.0) { y = fD0density*std::pow(10.,2*(x - fX0density)); }
00199   } else if(x >= fX1density) { y = twoln10*x - fCdensity; }
00200   else {y = twoln10*x - fCdensity + fAdensity*std::pow(fX1density - x, fMdensity);}
00201   return y;
00202 }

G4double G4IonisParamMat::FindMeanExcitationEnergy ( const G4String chFormula  ) 

Definition at line 412 of file G4IonisParamMat.cc.

00413 {
00414   // The data on mean excitation energy for compaunds
00415   // from "Stopping Powers for Electrons and Positrons"
00416   // ICRU Report N#37, 1984  (energy in eV)
00417 
00418   const size_t numberOfMolecula = 54; 
00419   static G4String name[numberOfMolecula] = {
00420     // gas 0 - 12
00421     "NH_3",       "C_4H_10",    "CO_2",       "C_2H_6",      "C_7H_16",
00422     "C_6H_14",    "CH_4",       "NO",         "N_2O",        "C_8H_18",
00423     "C_5H_12",    "C_3H_8",     "H_2O-Gas", 
00424 
00425     // liquid 13 - 39
00426     "C_3H_6O",    "C_6H_5NH_2",  "C_6H_6",    "C_4H_9OH",    "CCl_4",    
00427     "C_6H_5Cl",   "CHCl_3",      "C_6H_12",   "C_6H_4Cl_2",  "C_4Cl_2H_8O", 
00428     "C_2Cl_2H_4", "(C_2H_5)_2O", "C_2H_5OH",  "C_3H_5(OH)_3","C_7H_16",     
00429     "C_6H_14",    "CH_3OH",      "C_6H_5NO_2","C_5H_12",     "C_3H_7OH",    
00430     "C_5H_5N",    "C_8H_8",      "C_2Cl_4",   "C_7H_8",      "C_2Cl_3H",    
00431     "H_2O",       "C_8H_10",
00432 
00433     // solid 40 - 53
00434     "C_5H_5N_5",  "C_5H_5N_5O",  "(C_6H_11NO)-nylon",  "C_25H_52", 
00435     "(C_2H_4)-Polyethylene",     "(C_5H_8O-2)-Polymethil_Methacrylate",   
00436     "(C_8H_8)-Polystyrene",      "A-150-tissue",       "Al_2O_3",  "CaF_2", 
00437     "LiF",        "Photo_Emulsion",  "(C_2F_4)-Teflon",  "SiO_2"     
00438   };
00439     
00440   static G4double meanExcitation[numberOfMolecula] = {
00441 
00442     53.7,   48.3,  85.0,  45.4,  49.2,
00443     49.1,   41.7,  87.8,  84.9,  49.5,
00444     48.2,   47.1,  71.6,
00445 
00446     64.2,   66.2,  63.4,  59.9,  166.3,
00447     89.1,  156.0,  56.4, 106.5,  103.3, 
00448    111.9,   60.0,  62.9,  72.6,   54.4,  
00449     54.0,  67.6,   75.8,  53.6,   61.1,  
00450     66.2,  64.0,  159.2,  62.5,  148.1,  
00451     75.0,  61.8,
00452 
00453     71.4,  75.0,   63.9,  48.3,   57.4,
00454     74.0,  68.7,   65.1, 145.2,  166.,
00455     94.0, 331.0,   99.1, 139.2 
00456   };
00457 
00458   G4double x = fMeanExcitationEnergy;
00459 
00460   for(size_t i=0; i<numberOfMolecula; i++) {
00461     if(chFormula == name[i]) {
00462       x = meanExcitation[i]*eV;
00463       break;
00464     }
00465   }
00466   return x;
00467 }

G4double G4IonisParamMat::GetAdensity (  )  const [inline]

Definition at line 80 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

00080 {return fAdensity;};

G4double G4IonisParamMat::GetAdjustmentFactor (  )  const [inline]

Definition at line 77 of file G4IonisParamMat.hh.

00077 {return fAdjustmentFactor;};

G4double G4IonisParamMat::GetBirksConstant (  )  const [inline]

Definition at line 108 of file G4IonisParamMat.hh.

00108 {return fBirks;};

G4double G4IonisParamMat::GetCdensity (  )  const [inline]

Definition at line 78 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

00078 {return fCdensity;};

G4double G4IonisParamMat::GetD0density (  )  const [inline]

Definition at line 83 of file G4IonisParamMat.hh.

00083 {return fD0density;};

G4DensityEffectData * G4IonisParamMat::GetDensityEffectData (  )  [static]

Definition at line 171 of file G4IonisParamMat.cc.

Referenced by G4NistMessenger::SetNewValue().

00172 {
00173   return fDensityData;
00174 }

G4double G4IonisParamMat::GetEnergy0fluct (  )  const [inline]

Definition at line 97 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

00097 {return fEnergy0fluct;};

G4double G4IonisParamMat::GetEnergy1fluct (  )  const [inline]

Definition at line 93 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

00093 {return fEnergy1fluct;};

G4double G4IonisParamMat::GetEnergy2fluct (  )  const [inline]

Definition at line 95 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

00095 {return fEnergy2fluct;};

G4double G4IonisParamMat::GetF1fluct (  )  const [inline]

Definition at line 91 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

00091 {return fF1fluct;};

G4double G4IonisParamMat::GetF2fluct (  )  const [inline]

Definition at line 92 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

00092 {return fF2fluct;};

G4double G4IonisParamMat::GetFermiEnergy (  )  const [inline]

Definition at line 102 of file G4IonisParamMat.hh.

Referenced by G4ionEffectiveCharge::EffectiveCharge().

00102 {return fFermiEnergy;};

G4double G4IonisParamMat::GetInvA23 (  )  const [inline]

Definition at line 104 of file G4IonisParamMat.hh.

Referenced by G4CoulombScattering::MinPrimaryEnergy(), G4WentzelVIRelXSection::SetupKinematic(), and G4WentzelOKandVIxSection::SetupKinematic().

00104 {return fInvA23;};

G4double G4IonisParamMat::GetLFactor (  )  const [inline]

Definition at line 103 of file G4IonisParamMat.hh.

00103 {return fLfactor;};

G4double G4IonisParamMat::GetLogEnergy1fluct (  )  const [inline]

Definition at line 94 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

00094 {return fLogEnergy1fluct;};

G4double G4IonisParamMat::GetLogEnergy2fluct (  )  const [inline]

Definition at line 96 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

00096 {return fLogEnergy2fluct;};

G4double G4IonisParamMat::GetLogMeanExcEnergy (  )  const [inline]

Definition at line 71 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), and G4UniversalFluctuation::SampleFluctuations().

00071 {return fLogMeanExcEnergy;};

G4double G4IonisParamMat::GetMdensity (  )  const [inline]

Definition at line 79 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

00079 {return fMdensity;};

G4double G4IonisParamMat::GetMeanEnergyPerIonPair (  )  const [inline]

Definition at line 112 of file G4IonisParamMat.hh.

Referenced by G4ElectronIonPair::MeanNumberOfIonsAlongStep().

00112 {return fMeanEnergyPerIon;};

G4double G4IonisParamMat::GetMeanExcitationEnergy (  )  const [inline]

Definition at line 68 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::Bethe(), G4hImpactIonisation::BuildPhysicsTable(), G4MuBetheBlochModel::ComputeDEDXPerVolume(), G4MollerBhabhaModel::ComputeDEDXPerVolume(), G4BetheBlochModel::ComputeDEDXPerVolume(), G4tgbGeometryDumper::DumpMaterial(), G4VEnergyLoss::GetLossWithFluct(), G4VeLowEnergyLoss::GetLossWithFluct(), G4GDMLWriteMaterials::MaterialWrite(), G4MuBetheBlochModel::MinEnergyCut(), operator<<(), G4hImpactIonisation::PrintInfoDefinition(), and G4UniversalFluctuation::SampleFluctuations().

00068 {return fMeanExcitationEnergy;};

G4double G4IonisParamMat::GetPlasmaEnergy (  )  const [inline]

Definition at line 76 of file G4IonisParamMat.hh.

00076 {return fPlasmaEnergy;};

G4double G4IonisParamMat::GetRateionexcfluct (  )  const [inline]

Definition at line 98 of file G4IonisParamMat.hh.

Referenced by G4VEnergyLoss::GetLossWithFluct(), and G4VeLowEnergyLoss::GetLossWithFluct().

00098 {return fRateionexcfluct;};

G4double* G4IonisParamMat::GetShellCorrectionVector (  )  const [inline]

Definition at line 72 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::ShellCorrectionSTD().

00072 {return fShellCorrectionVector;};

G4double G4IonisParamMat::GetTaul (  )  const [inline]

Definition at line 73 of file G4IonisParamMat.hh.

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

00073 {return fTaul;};

G4double G4IonisParamMat::GetX0density (  )  const [inline]

Definition at line 81 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

00081 {return fX0density;};

G4double G4IonisParamMat::GetX1density (  )  const [inline]

Definition at line 82 of file G4IonisParamMat.hh.

Referenced by G4EmCorrections::DensityCorrection().

00082 {return fX1density;};

G4double G4IonisParamMat::GetZeffective (  )  const [inline]

Definition at line 101 of file G4IonisParamMat.hh.

Referenced by G4ionEffectiveCharge::EffectiveCharge().

00101 {return fZeff;};

G4int G4IonisParamMat::operator!= ( const G4IonisParamMat  )  const

Definition at line 530 of file G4IonisParamMat.cc.

00531 {
00532   return (this != (G4IonisParamMat*) &right);
00533 }

G4IonisParamMat & G4IonisParamMat::operator= ( const G4IonisParamMat  ) 

Definition at line 480 of file G4IonisParamMat.cc.

References fAdensity, fAdjustmentFactor, fBirks, fCdensity, fD0density, fDensityData, fEnergy0fluct, fEnergy1fluct, fEnergy2fluct, fF1fluct, fF2fluct, fFermiEnergy, fInvA23, fLfactor, fLogEnergy1fluct, fLogEnergy2fluct, fLogMeanExcEnergy, fMaterial, fMdensity, fMeanEnergyPerIon, fMeanExcitationEnergy, fPlasmaEnergy, fRateionexcfluct, fShellCorrectionVector, fTaul, fX0density, fX1density, fZeff, and twoln10.

00481 {
00482   if (this != &right)
00483     {
00484       fMaterial                 = right.fMaterial;
00485       fMeanExcitationEnergy     = right.fMeanExcitationEnergy;
00486       fLogMeanExcEnergy         = right.fLogMeanExcEnergy;
00487       if(fShellCorrectionVector){ delete [] fShellCorrectionVector; }      
00488       fShellCorrectionVector    = new G4double[3];             
00489       fShellCorrectionVector[0] = right.fShellCorrectionVector[0];
00490       fShellCorrectionVector[1] = right.fShellCorrectionVector[1];
00491       fShellCorrectionVector[2] = right.fShellCorrectionVector[2];
00492       fTaul                     = right.fTaul;
00493       fCdensity                 = right.fCdensity;
00494       fMdensity                 = right.fMdensity;
00495       fAdensity                 = right.fAdensity;
00496       fX0density                = right.fX0density;
00497       fX1density                = right.fX1density;
00498       fD0density                = right.fD0density;
00499       fPlasmaEnergy             = right.fPlasmaEnergy;
00500       fAdjustmentFactor         = right.fAdjustmentFactor;
00501       fF1fluct                  = right.fF1fluct;
00502       fF2fluct                  = right.fF2fluct;
00503       fEnergy1fluct             = right.fEnergy1fluct;
00504       fLogEnergy1fluct          = right.fLogEnergy1fluct;      
00505       fEnergy2fluct             = right.fEnergy2fluct;
00506       fLogEnergy2fluct          = right.fLogEnergy2fluct;      
00507       fEnergy0fluct             = right.fEnergy0fluct;
00508       fRateionexcfluct          = right.fRateionexcfluct;
00509       fZeff                     = right.fZeff;
00510       fFermiEnergy              = right.fFermiEnergy;
00511       fLfactor                  = right.fLfactor;
00512       fInvA23                   = right.fInvA23;
00513       fBirks                    = right.fBirks;
00514       fMeanEnergyPerIon         = right.fMeanEnergyPerIon;
00515       fDensityData              = right.fDensityData;
00516       twoln10                   = right.twoln10;
00517     } 
00518   return *this;
00519 }

G4int G4IonisParamMat::operator== ( const G4IonisParamMat  )  const

Definition at line 523 of file G4IonisParamMat.cc.

00524 {
00525   return (this == (G4IonisParamMat*) &right);
00526 }

void G4IonisParamMat::SetBirksConstant ( G4double  value  )  [inline]

Definition at line 107 of file G4IonisParamMat.hh.

00107 {fBirks = value;}; 

void G4IonisParamMat::SetMeanEnergyPerIonPair ( G4double  value  )  [inline]

Definition at line 111 of file G4IonisParamMat.hh.

Referenced by G4ElectronIonPair::FindG4MeanEnergyPerIonPair().

00111 {fMeanEnergyPerIon = value;}; 

void G4IonisParamMat::SetMeanExcitationEnergy ( G4double  value  ) 

Definition at line 385 of file G4IonisParamMat.cc.

References G4cout, G4endl, G4Material::GetName(), and G4NistManager::Instance().

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

00386 {
00387   if(value == fMeanExcitationEnergy || value <= 0.0) { return; }
00388   if (G4NistManager::Instance()->GetVerbose() > 1) {
00389     G4cout << "G4Material: Mean excitation energy is changed for "
00390            << fMaterial->GetName()
00391            << " Iold= " << fMeanExcitationEnergy/eV
00392            << "eV; Inew= " << value/eV << " eV;"
00393            << G4endl;
00394   }
00395   
00396   fMeanExcitationEnergy = value;
00397 
00398   // add corrections to density effect
00399   G4double newlog = std::log(value);
00400   G4double corr = 2*(newlog - fLogMeanExcEnergy);
00401   fCdensity  += corr;
00402   fX0density += corr/twoln10;
00403   fX1density += corr/twoln10;
00404 
00405   // recompute parameters of fluctuation model
00406   fLogMeanExcEnergy = newlog;
00407   ComputeFluctModel();
00408 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:18 2013 for Geant4 by  doxygen 1.4.7