60   fMeanEnergyPerIon = 0.0;
 
   66   fAdjustmentFactor = 1.0;
 
   70   ComputeMeanParameters();
 
   71   ComputeDensityEffect();
 
   73   ComputeIonParameters();
 
   82   : fMaterial(nullptr), fShellCorrectionVector(nullptr)
 
   84   fMeanExcitationEnergy = 0.0;
 
   85   fLogMeanExcEnergy = 0.0;
 
   94   fAdjustmentFactor = 0.0;
 
   98   fLogEnergy1fluct = 0.0;
 
  100   fLogEnergy2fluct = 0.0;
 
  102   fRateionexcfluct = 0.0;
 
  108   fMeanEnergyPerIon = 0.0;
 
  118   if (fShellCorrectionVector) { 
delete [] fShellCorrectionVector; }
 
  119   if (fDensityData) { 
delete fDensityData; }
 
  120   fDensityData = 
nullptr;
 
  121   fShellCorrectionVector = 
nullptr;
 
  126 void G4IonisParamMat::ComputeMeanParameters()
 
  131   fMeanExcitationEnergy = 0.;
 
  132   fLogMeanExcEnergy = 0.;
 
  141   if(fMeanExcitationEnergy > 0.0) {
 
  142     fLogMeanExcEnergy = 
G4Log(fMeanExcitationEnergy);
 
  146     for (
size_t i=0; i < nElements; i++) {
 
  148       fLogMeanExcEnergy += nAtomsPerVolume[i]*elm->
GetZ()
 
  152     fMeanExcitationEnergy = 
G4Exp(fLogMeanExcEnergy);
 
  155   fShellCorrectionVector = 
new G4double[3]; 
 
  157   for (
G4int j=0; j<=2; j++)
 
  159     fShellCorrectionVector[j] = 0.;
 
  161     for (
size_t k=0; k<nElements; k++) {
 
  162       fShellCorrectionVector[j] += nAtomsPerVolume[k]
 
  163     *(((*elmVector)[k])->GetIonisation()->GetShellCorrectionVector())[j];
 
  178 void G4IonisParamMat::ComputeDensityEffect()
 
  190   if(idx < 0 && 1 == nelm) {
 
  201     if(dens <= 0.0) { idx = -1; }
 
  208       if(std::abs(corr) > 1.0) { idx = -1; }
 
  237     fX0density += corr/twoln10;
 
  238     fX1density += corr/twoln10;
 
  249     fCdensity = 1. + 2*
G4Log(fMeanExcitationEnergy/fPlasmaEnergy);
 
  256       static const G4double ClimiS[] = {3.681 , 5.215 };
 
  257       static const G4double X0valS[] = {1.0   , 1.5   };
 
  258       static const G4double X1valS[] = {2.0   , 3.0   };
 
  260       if(fMeanExcitationEnergy < E100eV) { icase = 0; }
 
  263       if(fCdensity < ClimiS[icase])    { fX0density = 0.2; }
 
  264       else { fX0density = 0.326*fCdensity - X0valS[icase]; }
 
  266       fX1density = X1valS[icase]; fMdensity = 3.0;
 
  269       if (1 == nelm && 1 == Z0) {
 
  270          fX0density = 0.425; fX1density = 2.0; fMdensity = 5.949;
 
  284       if(fCdensity < 10.) {
 
  286       } 
else if(fCdensity < 11.5) { 
 
  287     fX0density = 1.6 + 0.2*(fCdensity - 10.); 
 
  288       } 
else if(fCdensity < 12.25) { 
 
  289     fX0density = 1.9 + (fCdensity - 11.5)/7.5; 
 
  290       } 
else if(fCdensity < 13.804) { 
 
  292     fX1density = 4.0 + (fCdensity - 12.25)/1.554;
 
  294     fX0density = 0.326*fCdensity-2.5; fX1density = 5.0; 
 
  298       if (1 == nelm && 1 == Z0) {
 
  299          fX0density = 1.837; fX1density = 3.0; fMdensity = 4.754;
 
  303       if (1 == nelm && 2 == Z0) {
 
  304          fX0density = 2.191; fX1density = 3.0; fMdensity = 3.297;
 
  323     fCdensity  -= ParCorr;
 
  324     fX0density -= ParCorr/twoln10;
 
  325     fX1density -= ParCorr/twoln10;
 
  329   if(0.0 == fD0density) {
 
  331     fAdensity = twoln10*(Xa-fX0density)
 
  332       /std::pow((fX1density-fX0density),fMdensity);
 
  351 void G4IonisParamMat::ComputeFluctModel()
 
  360   if (Zeff > 2.) { fF2fluct = 2./Zeff; }
 
  361   else           { fF2fluct = 0.; }
 
  363   fF1fluct         = 1. - fF2fluct;
 
  364   fEnergy2fluct    = 10.*Zeff*Zeff*
eV;
 
  365   fLogEnergy2fluct = 
G4Log(fEnergy2fluct);
 
  366   fLogEnergy1fluct = (fLogMeanExcEnergy - fF2fluct*fLogEnergy2fluct)
 
  368   fEnergy1fluct    = 
G4Exp(fLogEnergy1fluct);
 
  369   fEnergy0fluct    = 10.*
eV;
 
  370   fRateionexcfluct = 0.4;
 
  375 void G4IonisParamMat::ComputeIonParameters()
 
  379   const G4double* theAtomicNumDensityVector =
 
  385   G4double z(0.0), vF(0.0), lF(0.0), norm(0.0), a23(0.0);
 
  388   if( 1 == NumberOfElements ) {
 
  389     const G4Element* element = (*theElementVector)[0];
 
  393     a23 = 1.0/g4pow->
A23(element->
GetN());
 
  396     for (
G4int iel=0; iel<NumberOfElements; iel++)
 
  398         const G4Element* element = (*theElementVector)[iel];
 
  399         const G4double weight = theAtomicNumDensityVector[iel];
 
  401         z    += element->
GetZ() * weight;
 
  404     a23  += weight/g4pow->
A23(element->
GetN());
 
  413   fFermiEnergy = 25.*
keV*vF*vF;
 
  421   if(value == fMeanExcitationEnergy || value <= 0.0) { 
return; }
 
  423     G4cout << 
"G4Material: Mean excitation energy is changed for " 
  425            << 
" Iold= " << fMeanExcitationEnergy/
eV 
  426            << 
"eV; Inew= " << value/
eV << 
" eV;" 
  430   fMeanExcitationEnergy = 
value;
 
  434   G4double corr = 2*(newlog - fLogMeanExcEnergy);
 
  436   fX0density += corr/twoln10;
 
  437   fX1density += corr/twoln10;
 
  440   fLogMeanExcEnergy = newlog;
 
  462   if(chFormula != 
"") { 
 
  467       "NH_3",       
"C_4H_10",     
"CO_2",      
"C_2H_6",      
"C_7H_16-Gas",
 
  469       "C_6H_14-Gas",   
"CH_4",     
"NO",        
"N_2O",        
"C_8H_18-Gas",      
 
  471       "C_5H_12-Gas",   
"C_3H_8",   
"H_2O-Gas",                        
 
  475       "C_3H_6O",    
"C_6H_5NH_2",  
"C_6H_6",    
"C_4H_9OH",    
"CCl_4", 
 
  477       "C_6H_5Cl",   
"CHCl_3",      
"C_6H_12",   
"C_6H_4Cl_2",  
"C_4Cl_2H_8O",
 
  480       "C_2Cl_2H_4", 
"(C_2H_5)_2O", 
"C_2H_5OH",  
"C_3H_5(OH)_3",
"C_7H_16",
 
  482       "C_6H_14",    
"CH_3OH",      
"C_6H_5NO_2",
"C_5H_12",     
"C_3H_7OH",
 
  484       "C_5H_5N",    
"C_8H_8",      
"C_2Cl_4",   
"C_7H_8",      
"C_2Cl_3H",
 
  490       "C_5H_5N_5",  
"C_5H_5N_5O",  
"(C_6H_11NO)-nylon",  
"C_25H_52",
 
  492       "(C_2H_4)-Polyethylene",     
"(C_5H_8O_2)-Polymethil_Methacrylate",
 
  494       "(C_8H_8)-Polystyrene",      
"A-150-tissue",       
"Al_2O_3",  
"CaF_2",
 
  496       "LiF",        
"Photo_Emulsion",  
"(C_2F_4)-Teflon",  
"SiO_2" 
  502       53.7,   48.3,  85.0,  45.4,  49.2,
 
  503       49.1,   41.7,  87.8,  84.9,  49.5,
 
  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,  
 
  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 
 
  519       if(chFormula == name[i]) {
 
  520     res = meanExcitation[i]*
eV;
 
G4double GetPressure() const 
 
G4int GetIndex(const G4String &matName) const 
 
static G4Pow * GetInstance()
 
G4double GetX0density(G4int idx) const 
 
G4double GetTotNbOfElectPerVolume() const 
 
std::vector< G4Element * > G4ElementVector
 
G4double GetMeanIonisationPotential(G4int idx) const 
 
G4double GetX1density(G4int idx) const 
 
G4double GetPlasmaEnergy(G4int idx) const 
 
static const G4int numberOfMolecula
 
const G4String & GetChemicalFormula() const 
 
G4double GetCdensity(G4int idx) const 
 
void SetMeanExcitationEnergy(G4double value)
 
const G4String & GetName() const 
 
G4int GetElementIndex(G4int Z, G4State mState) const 
 
G4double GetDensity() const 
 
G4IonisParamMat(const G4Material *)
 
G4double GetLFactor() const 
 
const G4ElementVector * GetElementVector() const 
 
static G4NistManager * Instance()
 
G4double GetDelta0density(G4int idx) const 
 
G4double FindMeanExcitationEnergy(const G4Material *) const 
 
G4double logZ(G4int Z) const 
 
G4double GetFermiVelocity() const 
 
const G4double * GetVecNbOfAtomsPerVolume() const 
 
G4double GetMeanExcitationEnergy() const 
 
G4double A23(G4double A) const 
 
G4GLOB_DLL std::ostream G4cout
 
const XML_Char int const XML_Char * value
 
static constexpr double eV
 
const G4double * GetAtomicNumDensityVector() const 
 
static G4DensityEffectData * GetDensityEffectData()
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
G4double GetAdensity(G4int idx) const 
 
G4double GetAdjustmentFactor(G4int idx) const 
 
G4double GetMdensity(G4int idx) const 
 
G4IonisParamElm * GetIonisation() const 
 
const G4Material * GetBaseMaterial() const 
 
static const G4double NTP_Temperature
 
G4double GetTemperature() const 
 
static constexpr double pi
 
size_t GetNumberOfElements() const 
 
G4double GetNominalDensity(G4int Z) const 
 
const G4double * GetFractionVector() const 
 
static constexpr double keV