Geant4  10.02.p03
G4IonisParamMat Class Reference

#include <G4IonisParamMat.hh>

Collaboration diagram for G4IonisParamMat:

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 (__void__ &)
 

Static Public Member Functions

static G4DensityEffectDataGetDensityEffectData ()
 

Private Member Functions

void ComputeMeanParameters ()
 
void ComputeDensityEffect ()
 
void ComputeFluctModel ()
 
void ComputeIonParameters ()
 
G4IonisParamMatoperator= (const G4IonisParamMat &)
 
G4int operator== (const G4IonisParamMat &) const
 
G4int operator!= (const G4IonisParamMat &) const
 
 G4IonisParamMat (const G4IonisParamMat &)
 

Private Attributes

G4MaterialfMaterial
 
G4double fMeanExcitationEnergy
 
G4double fLogMeanExcEnergy
 
G4doublefShellCorrectionVector
 
G4double fTaul
 
G4double fCdensity
 
G4double fMdensity
 
G4double fAdensity
 
G4double fX0density
 
G4double fX1density
 
G4double fD0density
 
G4double fPlasmaEnergy
 
G4double fAdjustmentFactor
 
G4double fF1fluct
 
G4double fF2fluct
 
G4double fEnergy1fluct
 
G4double fLogEnergy1fluct
 
G4double fEnergy2fluct
 
G4double fLogEnergy2fluct
 
G4double fEnergy0fluct
 
G4double fRateionexcfluct
 
G4double fZeff
 
G4double fFermiEnergy
 
G4double fLfactor
 
G4double fInvA23
 
G4double fBirks
 
G4double fMeanEnergyPerIon
 
G4double twoln10
 

Static Private Attributes

static G4DensityEffectDatafDensityData = 0
 

Detailed Description

Definition at line 58 of file G4IonisParamMat.hh.

Constructor & Destructor Documentation

◆ G4IonisParamMat() [1/3]

G4IonisParamMat::G4IonisParamMat ( 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;
68 
69  // compute parameters
74 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double logZ(G4int Z) const
Definition: G4Pow.hh:166
G4double fAdjustmentFactor
G4double fMeanEnergyPerIon
G4Material * fMaterial
static G4DensityEffectData * fDensityData
void ComputeMeanParameters()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~G4IonisParamMat()

G4IonisParamMat::~G4IonisParamMat ( )
virtual

Definition at line 116 of file G4IonisParamMat.cc.

117 {
119  if (fDensityData) { delete fDensityData; }
120  fDensityData = 0;
122 }
G4double * fShellCorrectionVector
static G4DensityEffectData * fDensityData

◆ G4IonisParamMat() [2/3]

G4IonisParamMat::G4IonisParamMat ( __void__ &  )

Definition at line 81 of file G4IonisParamMat.cc.

83 {
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 
112 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double fLogEnergy2fluct
G4double logZ(G4int Z) const
Definition: G4Pow.hh:166
G4double fAdjustmentFactor
G4double fRateionexcfluct
G4double fLogMeanExcEnergy
G4double fMeanEnergyPerIon
G4double fLogEnergy1fluct
G4double fMeanExcitationEnergy
G4double * fShellCorrectionVector
G4Material * fMaterial
static G4DensityEffectData * fDensityData
Here is the call graph for this function:

◆ G4IonisParamMat() [3/3]

G4IonisParamMat::G4IonisParamMat ( const G4IonisParamMat )
private

Member Function Documentation

◆ ComputeDensityEffect()

void G4IonisParamMat::ComputeDensityEffect ( )
private

Definition at line 180 of file G4IonisParamMat.cc.

181 {
183 
184  // Check if density effect data exist in the table
185  // R.M. Sternheimer, Atomic Data and Nuclear Data Tables, 30: 261 (1984)
188  G4int Z0 = G4lrint((*(fMaterial->GetElementVector()))[0]->GetZ());
189 
190  // for simple non-NIST materials
191  G4double corr = 0.0;
192  if(idx < 0 && 1 == nelm) {
194 
195  // Correction for base material or for non-nominal density
196  // Except cases of very different density defined in user code
197  if(idx >= 0) {
198  const G4Material* bmat = fMaterial->GetBaseMaterial();
199  if(bmat) {
200  corr = G4Log(bmat->GetDensity()/fMaterial->GetDensity());
201  } else {
203  if(dens <= 0.0) { idx = -1; }
204  else {
205  corr = G4Log(dens/fMaterial->GetDensity());
206  }
207  }
208  // 1.0 is an arbitrary empirical limit
209  // parameterisation with very different density is not applicable
210  if(std::abs(corr) > 1.0) { idx = -1; }
211  }
212  }
213 
214  //G4cout<<"DensityEffect for "<<fMaterial->GetName()<<" "<< idx << G4endl;
215 
216  if(idx >= 0) {
217 
218  // Take parameters for the density effect correction from
219  // R.M. Sternheimer et al. Density Effect For The Ionization Loss
220  // of Charged Particles in Various Substances.
221  // Atom. Data Nucl. Data Tabl. 30 (1984) 261-271.
222 
224  //G4double Cdensity = fCdensity;
232 
233  // parameter C is computed and not taken from Sternheimer tables
234  //fCdensity = 1. + 2*G4Log(fMeanExcitationEnergy/fPlasmaEnergy);
235  //G4cout << "IonisParamMat: " << fMaterial->GetName()
236  // << " Cst= " << Cdensity << " C= " << fCdensity << G4endl;
237 
238  // correction on nominal density
239  fCdensity += corr;
240  fX0density += corr/twoln10;
241  fX1density += corr/twoln10;
242 
243  } else {
244 
245  static const G4double Cd2 = 4*pi*hbarc_squared*classic_electr_radius;
247 
248  // Compute parameters for the density effect correction in DE/Dx formula.
249  // The parametrization is from R.M. Sternheimer, Phys. Rev.B,3:3681 (1971)
250  G4int icase;
251 
253  //
254  // condensed materials
255  //
256  if ((State == kStateSolid)||(State == kStateLiquid)) {
257 
258  static const G4double E100eV = 100.*eV;
259  static const G4double ClimiS[] = {3.681 , 5.215 };
260  static const G4double X0valS[] = {1.0 , 1.5 };
261  static const G4double X1valS[] = {2.0 , 3.0 };
262 
263  if(fMeanExcitationEnergy < E100eV) { icase = 0; }
264  else { icase = 1; }
265 
266  if(fCdensity < ClimiS[icase]) { fX0density = 0.2; }
267  else { fX0density = 0.326*fCdensity - X0valS[icase]; }
268 
269  fX1density = X1valS[icase]; fMdensity = 3.0;
270 
271  //special: Hydrogen
272  if (1 == nelm && 1 == Z0) {
273  fX0density = 0.425; fX1density = 2.0; fMdensity = 5.949;
274  }
275  }
276  //
277  // gases
278  //
279  if (State == kStateGas) {
280 
281  fMdensity = 3.;
282  fX1density = 4.0;
283  //static const G4double ClimiG[] = {10.,10.5,11.,11.5,12.25,13.804};
284  //static const G4double X0valG[] = {1.6,1.7,1.8,1.9,2.0,2.0};
285  //static const G4double X1valG[] = {4.0,4.0,4.0,4.0,4.0,5.0};
286 
287  if(fCdensity < 10.) {
288  fX0density = 1.6;
289  } else if(fCdensity < 11.5) {
290  fX0density = 1.6 + 0.2*(fCdensity - 10.);
291  } else if(fCdensity < 12.25) {
292  fX0density = 1.9 + (fCdensity - 11.5)/7.5;
293  } else if(fCdensity < 13.804) {
294  fX0density = 2.0;
295  fX1density = 4.0 + (fCdensity - 12.25)/1.554;
296  } else {
297  fX0density = 0.326*fCdensity-2.5; fX1density = 5.0;
298  }
299 
300  //special: Hydrogen
301  if (1 == nelm && 1 == Z0) {
302  fX0density = 1.837; fX1density = 3.0; fMdensity = 4.754;
303  }
304 
305  //special: Helium
306  if (1 == nelm && 2 == Z0) {
307  fX0density = 2.191; fX1density = 3.0; fMdensity = 3.297;
308  }
309  }
310  }
311 
312  // change parameters if the gas is not in STP.
313  // For the correction the density(STP) is needed.
314  // Density(STP) is calculated here :
315 
316 
317  if (State == kStateGas) {
318  G4double Density = fMaterial->GetDensity();
319  G4double Pressure = fMaterial->GetPressure();
321 
322  G4double DensitySTP = Density*STP_Pressure*Temp/(Pressure*NTP_Temperature);
323 
324  G4double ParCorr = G4Log(Density/DensitySTP);
325 
326  fCdensity -= ParCorr;
327  fX0density -= ParCorr/twoln10;
328  fX1density -= ParCorr/twoln10;
329  }
330 
331  // fAdensity parameter can be fixed for not conductive materials
332  if(0.0 == fD0density) {
335  /std::pow((fX1density-fX0density),fMdensity);
336  }
337  /*
338  G4cout << "G4IonisParamMat: density effect data for <"
339  << fMaterial->GetName()
340  << "> " << G4endl;
341  G4cout << "Eplasma(eV)= " << fPlasmaEnergy/eV
342  << " rho= " << fAdjustmentFactor
343  << " -C= " << fCdensity
344  << " x0= " << fX0density
345  << " x1= " << fX1density
346  << " a= " << fAdensity
347  << " m= " << fMdensity
348  << G4endl;
349  */
350 }
float hbarc_squared
Definition: hepunit.py:266
G4State GetState() const
Definition: G4Material.hh:181
G4int GetElementIndex(G4int Z, G4State mState)
G4State
Definition: G4Material.hh:114
G4double fAdjustmentFactor
#define State(X)
G4double GetDensity() const
Definition: G4Material.hh:180
int G4int
Definition: G4Types.hh:78
static G4NistManager * Instance()
G4double GetX1density(G4int idx)
G4int GetIndex(const G4String &matName)
G4double GetPressure() const
Definition: G4Material.hh:183
G4double GetPlasmaEnergy(G4int idx)
G4double GetTemperature() const
Definition: G4Material.hh:182
G4double G4Log(G4double x)
Definition: G4Log.hh:230
G4double GetAdensity(G4int idx)
G4double fMeanExcitationEnergy
static const double eV
Definition: G4SIunits.hh:212
int classic_electr_radius
Definition: hepunit.py:288
static const double pi
Definition: G4SIunits.hh:74
int G4lrint(double ad)
Definition: templates.hh:163
G4Material * fMaterial
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
G4double GetCdensity(G4int idx)
static const G4double NTP_Temperature
Definition: G4Material.hh:116
G4double GetMdensity(G4int idx)
G4double GetNominalDensity(G4int Z) const
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:190
double G4double
Definition: G4Types.hh:76
G4double GetTotNbOfElectPerVolume() const
Definition: G4Material.hh:212
const G4String & GetName() const
Definition: G4Material.hh:178
G4double GetDelta0density(G4int idx)
const G4Material * GetBaseMaterial() const
Definition: G4Material.hh:233
G4double GetAdjustmentFactor(G4int idx)
G4double GetX0density(G4int idx)
static G4DensityEffectData * fDensityData
int STP_Pressure
Definition: hepunit.py:303
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeFluctModel()

void G4IonisParamMat::ComputeFluctModel ( )
private

Definition at line 354 of file G4IonisParamMat.cc.

355 {
356  // compute parameters for the energy loss fluctuation model
357  // needs an 'effective Z'
358  G4double Zeff = 0.;
359  for (size_t i=0;i<fMaterial->GetNumberOfElements();i++) {
360  Zeff += (fMaterial->GetFractionVector())[i]
361  *((*(fMaterial->GetElementVector()))[i]->GetZ());
362  }
363  if (Zeff > 2.) { fF2fluct = 2./Zeff; }
364  else { fF2fluct = 0.; }
365 
366  fF1fluct = 1. - fF2fluct;
367  fEnergy2fluct = 10.*Zeff*Zeff*eV;
370  /fF1fluct;
372  fEnergy0fluct = 10.*eV;
373  fRateionexcfluct = 0.4;
374 }
G4double fLogEnergy2fluct
const G4double * GetFractionVector() const
Definition: G4Material.hh:194
G4double fRateionexcfluct
G4double fLogMeanExcEnergy
G4double fLogEnergy1fluct
G4double G4Log(G4double x)
Definition: G4Log.hh:230
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
static const double eV
Definition: G4SIunits.hh:212
G4Material * fMaterial
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:190
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeIonParameters()

void G4IonisParamMat::ComputeIonParameters ( )
private

Definition at line 378 of file G4IonisParamMat.cc.

379 {
380  // get elements in the actual material,
381  const G4ElementVector* theElementVector = fMaterial->GetElementVector() ;
382  const G4double* theAtomicNumDensityVector =
384  const G4int NumberOfElements = fMaterial->GetNumberOfElements() ;
385 
386  // loop for the elements in the material
387  // to find out average values Z, vF, lF
388  G4double z(0.0), vF(0.0), lF(0.0), norm(0.0), a23(0.0);
389 
390  G4Pow* g4pow = G4Pow::GetInstance();
391  if( 1 == NumberOfElements ) {
392  const G4Element* element = (*theElementVector)[0];
393  z = element->GetZ();
394  vF= element->GetIonisation()->GetFermiVelocity();
395  lF= element->GetIonisation()->GetLFactor();
396  a23 = 1.0/g4pow->A23(element->GetN());
397 
398  } else {
399  for (G4int iel=0; iel<NumberOfElements; iel++)
400  {
401  const G4Element* element = (*theElementVector)[iel];
402  const G4double weight = theAtomicNumDensityVector[iel];
403  norm += weight ;
404  z += element->GetZ() * weight;
405  vF += element->GetIonisation()->GetFermiVelocity() * weight;
406  lF += element->GetIonisation()->GetLFactor() * weight;
407  a23 += weight/g4pow->A23(element->GetN());
408  }
409  z /= norm;
410  vF /= norm;
411  lF /= norm;
412  a23 /= norm;
413  }
414  fZeff = z;
415  fLfactor = lF;
416  fFermiEnergy = 25.*keV*vF*vF;
417  fInvA23 = a23;
418 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
std::vector< G4Element * > G4ElementVector
Definition: G4Pow.hh:56
Float_t norm
double weight
Definition: plottest35.C:25
int G4int
Definition: G4Types.hh:78
G4double A23(G4double A) const
Definition: G4Pow.hh:160
G4double GetN() const
Definition: G4Element.hh:134
const G4double * GetAtomicNumDensityVector() const
Definition: G4Material.hh:216
G4IonisParamElm * GetIonisation() const
Definition: G4Element.hh:198
G4double GetLFactor() const
G4double GetFermiVelocity() const
G4Material * fMaterial
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
static const double keV
Definition: G4SIunits.hh:213
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:190
double G4double
Definition: G4Types.hh:76
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeMeanParameters()

void G4IonisParamMat::ComputeMeanParameters ( )
private

Definition at line 126 of file G4IonisParamMat.cc.

127 {
128  // compute mean excitation energy and shell correction vector
129  fTaul = (*(fMaterial->GetElementVector()))[0]->GetIonisation()->GetTaul();
130 
132  fLogMeanExcEnergy = 0.;
133 
134  size_t nElements = fMaterial->GetNumberOfElements();
135  const G4ElementVector* elmVector = fMaterial->GetElementVector();
136  const G4double* nAtomsPerVolume = fMaterial->GetVecNbOfAtomsPerVolume();
137 
139 
140  if(ch != "") { fMeanExcitationEnergy = FindMeanExcitationEnergy(ch); }
141 
142  // Chemical formula defines mean excitation energy
143  if(fMeanExcitationEnergy > 0.0) {
145 
146  // Compute average
147  } else {
148  for (size_t i=0; i < nElements; i++) {
149  const G4Element* elm = (*elmVector)[i];
150  fLogMeanExcEnergy += nAtomsPerVolume[i]*elm->GetZ()
152  }
155  }
156 
158 
159  for (G4int j=0; j<=2; j++)
160  {
161  fShellCorrectionVector[j] = 0.;
162 
163  for (size_t k=0; k<nElements; k++) {
164  fShellCorrectionVector[j] += nAtomsPerVolume[k]
165  *(((*elmVector)[k])->GetIonisation()->GetShellCorrectionVector())[j];
166  }
168  }
169 }
std::vector< G4Element * > G4ElementVector
G4double FindMeanExcitationEnergy(const G4String &chFormula)
int G4int
Definition: G4Types.hh:78
const G4String & GetChemicalFormula() const
Definition: G4Material.hh:179
const G4double * GetVecNbOfAtomsPerVolume() const
Definition: G4Material.hh:206
G4IonisParamElm * GetIonisation() const
Definition: G4Element.hh:198
G4double fLogMeanExcEnergy
G4double G4Log(G4double x)
Definition: G4Log.hh:230
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
G4double fMeanExcitationEnergy
G4double GetMeanExcitationEnergy() const
G4double * fShellCorrectionVector
G4Material * fMaterial
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:190
double G4double
Definition: G4Types.hh:76
G4double GetTotNbOfElectPerVolume() const
Definition: G4Material.hh:212
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DensityCorrection()

G4double G4IonisParamMat::DensityCorrection ( G4double  x)
inline

Definition at line 222 of file G4IonisParamMat.hh.

223 {
224  // x = log10(beta*gamma)
225 
226  G4double y = 0.0;
227  if(x < fX0density) {
228  if(fD0density > 0.0) { y = fD0density*G4Exp(twoln10*(x - fX0density)); }
229  } else if(x >= fX1density) { y = twoln10*x - fCdensity; }
231  return y;
232 }
Double_t y
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:

◆ FindMeanExcitationEnergy()

G4double G4IonisParamMat::FindMeanExcitationEnergy ( const G4String chFormula)

Definition at line 449 of file G4IonisParamMat.cc.

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

◆ GetAdensity()

G4double G4IonisParamMat::GetAdensity ( ) const
inline

Definition at line 93 of file G4IonisParamMat.hh.

93 {return fAdensity;};
Here is the caller graph for this function:

◆ GetAdjustmentFactor()

G4double G4IonisParamMat::GetAdjustmentFactor ( ) const
inline

Definition at line 87 of file G4IonisParamMat.hh.

87 {return fAdjustmentFactor;};
G4double fAdjustmentFactor

◆ GetBirksConstant()

G4double G4IonisParamMat::GetBirksConstant ( ) const
inline

Definition at line 139 of file G4IonisParamMat.hh.

139 {return fBirks;};
Here is the caller graph for this function:

◆ GetCdensity()

G4double G4IonisParamMat::GetCdensity ( ) const
inline

Definition at line 89 of file G4IonisParamMat.hh.

89 {return fCdensity;};
Here is the caller graph for this function:

◆ GetD0density()

G4double G4IonisParamMat::GetD0density ( ) const
inline

Definition at line 99 of file G4IonisParamMat.hh.

99 {return fD0density;};
Here is the call graph for this function:

◆ GetDensityEffectData()

G4DensityEffectData * G4IonisParamMat::GetDensityEffectData ( )
static

Definition at line 173 of file G4IonisParamMat.cc.

174 {
175  return fDensityData;
176 }
static G4DensityEffectData * fDensityData
Here is the caller graph for this function:

◆ GetEnergy0fluct()

G4double G4IonisParamMat::GetEnergy0fluct ( ) const
inline

Definition at line 121 of file G4IonisParamMat.hh.

121 {return fEnergy0fluct;};
Here is the caller graph for this function:

◆ GetEnergy1fluct()

G4double G4IonisParamMat::GetEnergy1fluct ( ) const
inline

Definition at line 113 of file G4IonisParamMat.hh.

113 {return fEnergy1fluct;};
Here is the caller graph for this function:

◆ GetEnergy2fluct()

G4double G4IonisParamMat::GetEnergy2fluct ( ) const
inline

Definition at line 117 of file G4IonisParamMat.hh.

117 {return fEnergy2fluct;};
Here is the caller graph for this function:

◆ GetF1fluct()

G4double G4IonisParamMat::GetF1fluct ( ) const
inline

Definition at line 109 of file G4IonisParamMat.hh.

109 {return fF1fluct;};
Here is the caller graph for this function:

◆ GetF2fluct()

G4double G4IonisParamMat::GetF2fluct ( ) const
inline

Definition at line 111 of file G4IonisParamMat.hh.

111 {return fF2fluct;};
Here is the caller graph for this function:

◆ GetFermiEnergy()

G4double G4IonisParamMat::GetFermiEnergy ( ) const
inline

Definition at line 129 of file G4IonisParamMat.hh.

129 {return fFermiEnergy;};
Here is the caller graph for this function:

◆ GetInvA23()

G4double G4IonisParamMat::GetInvA23 ( ) const
inline

Definition at line 133 of file G4IonisParamMat.hh.

133 {return fInvA23;};
Here is the caller graph for this function:

◆ GetLFactor()

G4double G4IonisParamMat::GetLFactor ( ) const
inline

Definition at line 131 of file G4IonisParamMat.hh.

131 {return fLfactor;};

◆ GetLogEnergy1fluct()

G4double G4IonisParamMat::GetLogEnergy1fluct ( ) const
inline

Definition at line 115 of file G4IonisParamMat.hh.

115 {return fLogEnergy1fluct;};
G4double fLogEnergy1fluct
Here is the caller graph for this function:

◆ GetLogEnergy2fluct()

G4double G4IonisParamMat::GetLogEnergy2fluct ( ) const
inline

Definition at line 119 of file G4IonisParamMat.hh.

119 {return fLogEnergy2fluct;};
G4double fLogEnergy2fluct
Here is the caller graph for this function:

◆ GetLogMeanExcEnergy()

G4double G4IonisParamMat::GetLogMeanExcEnergy ( ) const
inline

Definition at line 77 of file G4IonisParamMat.hh.

77 {return fLogMeanExcEnergy;};
G4double fLogMeanExcEnergy
Here is the caller graph for this function:

◆ GetMdensity()

G4double G4IonisParamMat::GetMdensity ( ) const
inline

Definition at line 91 of file G4IonisParamMat.hh.

91 {return fMdensity;};
Here is the caller graph for this function:

◆ GetMeanEnergyPerIonPair()

G4double G4IonisParamMat::GetMeanEnergyPerIonPair ( ) const
inline

Definition at line 145 of file G4IonisParamMat.hh.

145 {return fMeanEnergyPerIon;};
G4double fMeanEnergyPerIon
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetMeanExcitationEnergy()

G4double G4IonisParamMat::GetMeanExcitationEnergy ( ) const
inline

Definition at line 71 of file G4IonisParamMat.hh.

71 {return fMeanExcitationEnergy;};
G4double fMeanExcitationEnergy
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPlasmaEnergy()

G4double G4IonisParamMat::GetPlasmaEnergy ( ) const
inline

Definition at line 85 of file G4IonisParamMat.hh.

85 {return fPlasmaEnergy;};

◆ GetRateionexcfluct()

G4double G4IonisParamMat::GetRateionexcfluct ( ) const
inline

Definition at line 123 of file G4IonisParamMat.hh.

123 {return fRateionexcfluct;};
G4double fRateionexcfluct
Here is the caller graph for this function:

◆ GetShellCorrectionVector()

G4double* G4IonisParamMat::GetShellCorrectionVector ( ) const
inline

Definition at line 79 of file G4IonisParamMat.hh.

79 {return fShellCorrectionVector;};
G4double * fShellCorrectionVector
Here is the caller graph for this function:

◆ GetTaul()

G4double G4IonisParamMat::GetTaul ( ) const
inline

Definition at line 81 of file G4IonisParamMat.hh.

81 {return fTaul;};
Here is the caller graph for this function:

◆ GetX0density()

G4double G4IonisParamMat::GetX0density ( ) const
inline

Definition at line 95 of file G4IonisParamMat.hh.

95 {return fX0density;};
Here is the caller graph for this function:

◆ GetX1density()

G4double G4IonisParamMat::GetX1density ( ) const
inline

Definition at line 97 of file G4IonisParamMat.hh.

97 {return fX1density;};
Here is the caller graph for this function:

◆ GetZeffective()

G4double G4IonisParamMat::GetZeffective ( ) const
inline

Definition at line 127 of file G4IonisParamMat.hh.

127 {return fZeff;};
Here is the caller graph for this function:

◆ operator!=()

G4int G4IonisParamMat::operator!= ( const G4IonisParamMat ) const
private
Here is the caller graph for this function:

◆ operator=()

G4IonisParamMat& G4IonisParamMat::operator= ( const G4IonisParamMat )
private
Here is the caller graph for this function:

◆ operator==()

G4int G4IonisParamMat::operator== ( const G4IonisParamMat ) const
private
Here is the caller graph for this function:

◆ SetBirksConstant()

void G4IonisParamMat::SetBirksConstant ( G4double  value)
inline

Definition at line 137 of file G4IonisParamMat.hh.

137 {fBirks = value;};
Here is the caller graph for this function:

◆ SetMeanEnergyPerIonPair()

void G4IonisParamMat::SetMeanEnergyPerIonPair ( G4double  value)
inline

Definition at line 143 of file G4IonisParamMat.hh.

143 {fMeanEnergyPerIon = value;};
G4double fMeanEnergyPerIon
Here is the caller graph for this function:

◆ SetMeanExcitationEnergy()

void G4IonisParamMat::SetMeanExcitationEnergy ( G4double  value)

Definition at line 422 of file G4IonisParamMat.cc.

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

Member Data Documentation

◆ fAdensity

G4double G4IonisParamMat::fAdensity
private

Definition at line 186 of file G4IonisParamMat.hh.

◆ fAdjustmentFactor

G4double G4IonisParamMat::fAdjustmentFactor
private

Definition at line 192 of file G4IonisParamMat.hh.

◆ fBirks

G4double G4IonisParamMat::fBirks
private

Definition at line 211 of file G4IonisParamMat.hh.

◆ fCdensity

G4double G4IonisParamMat::fCdensity
private

Definition at line 184 of file G4IonisParamMat.hh.

◆ fD0density

G4double G4IonisParamMat::fD0density
private

Definition at line 189 of file G4IonisParamMat.hh.

◆ fDensityData

G4DensityEffectData * G4IonisParamMat::fDensityData = 0
staticprivate

Definition at line 216 of file G4IonisParamMat.hh.

◆ fEnergy0fluct

G4double G4IonisParamMat::fEnergy0fluct
private

Definition at line 201 of file G4IonisParamMat.hh.

◆ fEnergy1fluct

G4double G4IonisParamMat::fEnergy1fluct
private

Definition at line 197 of file G4IonisParamMat.hh.

◆ fEnergy2fluct

G4double G4IonisParamMat::fEnergy2fluct
private

Definition at line 199 of file G4IonisParamMat.hh.

◆ fF1fluct

G4double G4IonisParamMat::fF1fluct
private

Definition at line 195 of file G4IonisParamMat.hh.

◆ fF2fluct

G4double G4IonisParamMat::fF2fluct
private

Definition at line 196 of file G4IonisParamMat.hh.

◆ fFermiEnergy

G4double G4IonisParamMat::fFermiEnergy
private

Definition at line 206 of file G4IonisParamMat.hh.

◆ fInvA23

G4double G4IonisParamMat::fInvA23
private

Definition at line 208 of file G4IonisParamMat.hh.

◆ fLfactor

G4double G4IonisParamMat::fLfactor
private

Definition at line 207 of file G4IonisParamMat.hh.

◆ fLogEnergy1fluct

G4double G4IonisParamMat::fLogEnergy1fluct
private

Definition at line 198 of file G4IonisParamMat.hh.

◆ fLogEnergy2fluct

G4double G4IonisParamMat::fLogEnergy2fluct
private

Definition at line 200 of file G4IonisParamMat.hh.

◆ fLogMeanExcEnergy

G4double G4IonisParamMat::fLogMeanExcEnergy
private

Definition at line 179 of file G4IonisParamMat.hh.

◆ fMaterial

G4Material* G4IonisParamMat::fMaterial
private

Definition at line 175 of file G4IonisParamMat.hh.

◆ fMdensity

G4double G4IonisParamMat::fMdensity
private

Definition at line 185 of file G4IonisParamMat.hh.

◆ fMeanEnergyPerIon

G4double G4IonisParamMat::fMeanEnergyPerIon
private

Definition at line 213 of file G4IonisParamMat.hh.

◆ fMeanExcitationEnergy

G4double G4IonisParamMat::fMeanExcitationEnergy
private

Definition at line 178 of file G4IonisParamMat.hh.

◆ fPlasmaEnergy

G4double G4IonisParamMat::fPlasmaEnergy
private

Definition at line 191 of file G4IonisParamMat.hh.

◆ fRateionexcfluct

G4double G4IonisParamMat::fRateionexcfluct
private

Definition at line 202 of file G4IonisParamMat.hh.

◆ fShellCorrectionVector

G4double* G4IonisParamMat::fShellCorrectionVector
private

Definition at line 180 of file G4IonisParamMat.hh.

◆ fTaul

G4double G4IonisParamMat::fTaul
private

Definition at line 181 of file G4IonisParamMat.hh.

◆ fX0density

G4double G4IonisParamMat::fX0density
private

Definition at line 187 of file G4IonisParamMat.hh.

◆ fX1density

G4double G4IonisParamMat::fX1density
private

Definition at line 188 of file G4IonisParamMat.hh.

◆ fZeff

G4double G4IonisParamMat::fZeff
private

Definition at line 205 of file G4IonisParamMat.hh.

◆ twoln10

G4double G4IonisParamMat::twoln10
private

Definition at line 217 of file G4IonisParamMat.hh.


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