62   fMeanEnergyPerIon = 0.0;
 
   68   fAdjustmentFactor = 1.0;
 
   72   ComputeMeanParameters();
 
   73   ComputeDensityEffect();
 
   75   ComputeIonParameters();
 
   84   : fMaterial(0), fShellCorrectionVector(0)
 
   86   fMeanExcitationEnergy = 0.0;
 
   87   fLogMeanExcEnergy = 0.0;
 
   96   fAdjustmentFactor = 0.0;
 
  100   fLogEnergy1fluct = 0.0;
 
  102   fLogEnergy2fluct = 0.0;
 
  104   fRateionexcfluct = 0.0;
 
  110   fMeanEnergyPerIon = 0.0;
 
  118   if (fShellCorrectionVector) { 
delete [] fShellCorrectionVector; }
 
  119   if (fDensityData) { 
delete fDensityData; }
 
  121   fShellCorrectionVector = 0;
 
  126 void G4IonisParamMat::ComputeMeanParameters()
 
  131   fMeanExcitationEnergy = 0.;
 
  132   fLogMeanExcEnergy = 0.;
 
  143   if(fMeanExcitationEnergy > 0.0) {
 
  144     fLogMeanExcEnergy = 
G4Log(fMeanExcitationEnergy);
 
  148     for (
size_t i=0; i < nElements; i++) {
 
  150       fLogMeanExcEnergy += nAtomsPerVolume[i]*elm->
GetZ()
 
  154     fMeanExcitationEnergy = 
G4Exp(fLogMeanExcEnergy);
 
  157   fShellCorrectionVector = 
new G4double[3]; 
 
  159   for (
G4int j=0; j<=2; j++)
 
  161     fShellCorrectionVector[j] = 0.;
 
  163     for (
size_t k=0; k<nElements; k++) {
 
  164       fShellCorrectionVector[j] += nAtomsPerVolume[k]
 
  165     *(((*elmVector)[k])->GetIonisation()->GetShellCorrectionVector())[j];
 
  180 void G4IonisParamMat::ComputeDensityEffect()
 
  189   if(idx < 0 && 1 == nelm) {
 
  216       fX0density += corr/twoln10;
 
  217       fX1density += corr/twoln10;
 
  229     fCdensity = 1. + 2*
G4Log(fMeanExcitationEnergy/fPlasmaEnergy);
 
  236       static const G4double ClimiS[] = {3.681 , 5.215 };
 
  237       static const G4double X0valS[] = {1.0   , 1.5   };
 
  238       static const G4double X1valS[] = {2.0   , 3.0   };
 
  240       if(fMeanExcitationEnergy < E100eV) { icase = 0; }
 
  243       if(fCdensity < ClimiS[icase])    { fX0density = 0.2; }
 
  244       else { fX0density = 0.326*fCdensity - X0valS[icase]; }
 
  246       fX1density = X1valS[icase]; fMdensity = 3.0;
 
  249       if (1 == nelm && 1 == Z0) {
 
  250          fX0density = 0.425; fX1density = 2.0; fMdensity = 5.949;
 
  264       if(fCdensity < 10.) {
 
  266       } 
else if(fCdensity < 11.5) { 
 
  267     fX0density = 1.6 + 0.2*(fCdensity - 10.); 
 
  268       } 
else if(fCdensity < 12.25) { 
 
  269     fX0density = 1.9 + (fCdensity - 11.5)/7.5; 
 
  270       } 
else if(fCdensity < 13.804) { 
 
  272     fX1density = 4.0 + (fCdensity - 12.25)/1.554;
 
  274     fX0density = 0.326*fCdensity-2.5; fX1density = 5.0; 
 
  278       if (1 == nelm && 1 == Z0) {
 
  279          fX0density = 1.837; fX1density = 3.0; fMdensity = 4.754;
 
  283       if (1 == nelm && 2 == Z0) {
 
  284          fX0density = 2.191; fX1density = 3.0; fMdensity = 3.297;
 
  303     fCdensity  -= ParCorr;
 
  304     fX0density -= ParCorr/twoln10;
 
  305     fX1density -= ParCorr/twoln10;
 
  309   if(0.0 == fD0density) {
 
  311     fAdensity = twoln10*(Xa-fX0density)
 
  312       /std::pow((fX1density-fX0density),fMdensity);
 
  330 void G4IonisParamMat::ComputeFluctModel()
 
  339   if (Zeff > 2.) { fF2fluct = 2./Zeff; }
 
  340   else           { fF2fluct = 0.; }
 
  342   fF1fluct         = 1. - fF2fluct;
 
  343   fEnergy2fluct    = 10.*Zeff*Zeff*
eV;
 
  344   fLogEnergy2fluct = 
G4Log(fEnergy2fluct);
 
  345   fLogEnergy1fluct = (fLogMeanExcEnergy - fF2fluct*fLogEnergy2fluct)
 
  347   fEnergy1fluct    = 
G4Exp(fLogEnergy1fluct);
 
  348   fEnergy0fluct    = 10.*
eV;
 
  349   fRateionexcfluct = 0.4;
 
  354 void G4IonisParamMat::ComputeIonParameters()
 
  358   const G4double* theAtomicNumDensityVector =
 
  366   if( 1 == NumberOfElements ) {
 
  367     const G4Element* element = (*theElementVector)[0];
 
  374     for (
G4int iel=0; iel<NumberOfElements; iel++)
 
  376         const G4Element* element = (*theElementVector)[iel];
 
  391   fFermiEnergy = 25.*
keV*vF*vF;
 
  399   if(value == fMeanExcitationEnergy || value <= 0.0) { 
return; }
 
  401     G4cout << 
"G4Material: Mean excitation energy is changed for " 
  403            << 
" Iold= " << fMeanExcitationEnergy/
eV 
  404            << 
"eV; Inew= " << value/
eV << 
" eV;" 
  408   fMeanExcitationEnergy = 
value;
 
  412   G4double corr = 2*(newlog - fLogMeanExcEnergy);
 
  414   fX0density += corr/twoln10;
 
  415   fX1density += corr/twoln10;
 
  418   fLogMeanExcEnergy = newlog;
 
  430   size_t numberOfMolecula = 54; 
 
  433     "NH_3",       
"C_4H_10",     
"CO_2",      
"C_2H_6",      
"C_7H_16-Gas",
 
  435     "C_6H_14-Gas",   
"CH_4",     
"NO",        
"N_2O",        
"C_8H_18-Gas",      
 
  437     "C_5H_12-Gas",   
"C_3H_8",   
"H_2O-Gas",                        
 
  441     "C_3H_6O",    
"C_6H_5NH_2",  
"C_6H_6",    
"C_4H_9OH",    
"CCl_4", 
 
  443     "C_6H_5Cl",   
"CHCl_3",      
"C_6H_12",   
"C_6H_4Cl_2",  
"C_4Cl_2H_8O",
 
  445     "C_2Cl_2H_4", 
"(C_2H_5)_2O", 
"C_2H_5OH",  
"C_3H_5(OH)_3",
"C_7H_16",
 
  447     "C_6H_14",    
"CH_3OH",      
"C_6H_5NO_2",
"C_5H_12",     
"C_3H_7OH",
 
  449     "C_5H_5N",    
"C_8H_8",      
"C_2Cl_4",   
"C_7H_8",      
"C_2Cl_3H",
 
  455     "C_5H_5N_5",  
"C_5H_5N_5O",  
"(C_6H_11NO)-nylon",  
"C_25H_52",
 
  457     "(C_2H_4)-Polyethylene",     
"(C_5H_8O_2)-Polymethil_Methacrylate",
 
  459     "(C_8H_8)-Polystyrene",      
"A-150-tissue",       
"Al_2O_3",  
"CaF_2",
 
  461     "LiF",        
"Photo_Emulsion",  
"(C_2F_4)-Teflon",  
"SiO_2" 
  465   static const G4double meanExcitation[54] = {
 
  467     53.7,   48.3,  85.0,  45.4,  49.2,
 
  468     49.1,   41.7,  87.8,  84.9,  49.5,
 
  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,  
 
  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 
 
  485   for(
size_t i=0; i<numberOfMolecula; i++) {
 
  486     if(chFormula == name[i]) {
 
  487       x = meanExcitation[i]*
eV;
 
  498   fShellCorrectionVector = 0;
 
  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];
 
  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;
 
  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;
 
G4double GetPressure() const 
 
static G4Pow * GetInstance()
 
G4IonisParamMat & operator=(const G4IonisParamMat &)
 
G4double GetTotNbOfElectPerVolume() const 
 
std::vector< G4Element * > G4ElementVector
 
G4int GetElementIndex(G4int Z, G4State mState)
 
G4double FindMeanExcitationEnergy(const G4String &chFormula)
 
const G4String & GetChemicalFormula() const 
 
void SetMeanExcitationEnergy(G4double value)
 
const G4String & GetName() const 
 
G4double GetDensity() const 
 
G4double GetLFactor() const 
 
const G4ElementVector * GetElementVector() const 
 
static G4NistManager * Instance()
 
G4double logZ(G4int Z) const 
 
G4double GetFermiVelocity() const 
 
const G4double * GetVecNbOfAtomsPerVolume() const 
 
G4double GetMeanExcitationEnergy() const 
 
G4GLOB_DLL std::ostream G4cout
 
G4double GetX1density(G4int idx)
 
G4int GetIndex(const G4String &matName)
 
virtual ~G4IonisParamMat()
 
G4double GetPlasmaEnergy(G4int idx)
 
const G4double * GetAtomicNumDensityVector() const 
 
static G4DensityEffectData * GetDensityEffectData()
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
G4double GetAdensity(G4int idx)
 
G4IonisParamMat(G4Material *)
 
G4IonisParamElm * GetIonisation() const 
 
const G4Material * GetBaseMaterial() const 
 
G4double Z23(G4int Z) const 
 
G4int operator!=(const G4IonisParamMat &) const 
 
G4double GetCdensity(G4int idx)
 
G4double GetTemperature() const 
 
const XML_Char int const XML_Char * value
 
G4double GetMdensity(G4int idx)
 
size_t GetNumberOfElements() const 
 
G4double GetDelta0density(G4int idx)
 
const G4double * GetFractionVector() const 
 
G4int operator==(const G4IonisParamMat &) const 
 
G4double GetAdjustmentFactor(G4int idx)
 
G4double GetX0density(G4int idx)