Geant4-11
G4IonisParamMat.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
27
28// 09-07-98, data moved from G4Material, M.Maire
29// 18-07-98, bug corrected in ComputeDensityEffect() for gas
30// 16-01-01, bug corrected in ComputeDensityEffect() E100eV (L.Urban)
31// 08-02-01, fShellCorrectionVector correctly handled (mma)
32// 28-10-02, add setMeanExcitationEnergy (V.Ivanchenko)
33// 06-09-04, factor 2 to shell correction term (V.Ivanchenko)
34// 10-05-05, add a missing coma in FindMeanExcitationEnergy() - Bug#746 (mma)
35// 27-09-07, add computation of parameters for ions (V.Ivanchenko)
36// 04-03-08, remove reference to G4NistManager. Add fBirks constant (mma)
37// 30-10-09, add G4DensityEffectData class and density effect computation (VI)
38
39//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
40
41#include "G4IonisParamMat.hh"
42#include "G4Material.hh"
45#include "G4AtomicShells.hh"
46#include "G4NistManager.hh"
47#include "G4Pow.hh"
49#include "G4SystemOfUnits.hh"
50
52
53#ifdef G4MULTITHREADED
54 G4Mutex G4IonisParamMat::ionisMutex = G4MUTEX_INITIALIZER;
55#endif
56
57//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
58
60 : fMaterial(material)
61{
62 fBirks = 0.;
65
66 // minimal set of default parameters for density effect
67 fCdensity = 0.0;
68 fD0density = 0.0;
70 if(fDensityData == nullptr) { fDensityData = new G4DensityEffectData(); }
71 fDensityEffectCalc = nullptr;
72
73 // compute parameters
78}
79
80//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
81
82// Fake default constructor - sets only member data and allocates memory
83// for usage restricted to object persistency
84
86 : fMaterial(nullptr), fShellCorrectionVector(nullptr)
87{
90 fTaul = 0.0;
91 fCdensity = 0.0;
92 fMdensity = 0.0;
93 fAdensity = 0.0;
94 fX0density = 0.0;
95 fX1density = 0.0;
96 fD0density = 0.0;
97 fPlasmaEnergy = 0.0;
99 fF1fluct = 0.0;
100 fF2fluct = 0.0;
101 fEnergy1fluct = 0.0;
102 fLogEnergy1fluct = 0.0;
103 fEnergy2fluct = 0.0;
104 fLogEnergy2fluct = 0.0;
105 fEnergy0fluct = 0.0;
106 fRateionexcfluct = 0.0;
107 fZeff = 0.0;
108 fFermiEnergy = 0.0;
109 fLfactor = 0.0;
110 fInvA23 = 0.0;
111 fBirks = 0.0;
112 fMeanEnergyPerIon = 0.0;
113 twoln10 = 2.*G4Pow::GetInstance()->logZ(10);
114
115 fDensityEffectCalc = nullptr;
116 if(fDensityData == nullptr) { fDensityData = new G4DensityEffectData(); }
117}
118
119//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
120
122{
123 delete fDensityEffectCalc;
124 delete [] fShellCorrectionVector;
125 delete fDensityData;
126 fDensityData = nullptr;
127 fShellCorrectionVector = nullptr;
128 fDensityEffectCalc = nullptr;
129}
130
131//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
132
134{
135 // compute mean excitation energy and shell correction vector
136 fTaul = (*(fMaterial->GetElementVector()))[0]->GetIonisation()->GetTaul();
137
140
141 size_t nElements = fMaterial->GetNumberOfElements();
142 const G4ElementVector* elmVector = fMaterial->GetElementVector();
143 const G4double* nAtomsPerVolume = fMaterial->GetVecNbOfAtomsPerVolume();
144
146
147 // Chemical formula defines mean excitation energy
148 if(fMeanExcitationEnergy > 0.0) {
150
151 // Compute average
152 } else {
153 for (size_t i=0; i < nElements; i++) {
154 const G4Element* elm = (*elmVector)[i];
155 fLogMeanExcEnergy += nAtomsPerVolume[i]*elm->GetZ()
157 }
160 }
161
163
164 for (G4int j=0; j<=2; j++)
165 {
167
168 for (size_t k=0; k<nElements; k++) {
169 fShellCorrectionVector[j] += nAtomsPerVolume[k]
170 *(((*elmVector)[k])->GetIonisation()->GetShellCorrectionVector())[j];
171 }
173 }
174}
175
176//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
177
179{
180 return fDensityData;
181}
182
183//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
184
186{
187 return (nullptr == fDensityEffectCalc) ? GetDensityCorrection(x)
189}
190
191//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
192
194{
196
197 // Check if density effect data exist in the table
198 // R.M. Sternheimer, Atomic Data and Nuclear Data Tables, 30: 261 (1984)
199 // or is assign to one of data set in this table
202 G4int Z0 = ((*(fMaterial->GetElementVector()))[0])->GetZasInt();
203 const G4Material* bmat = fMaterial->GetBaseMaterial();
205
206 // arbitrary empirical limits
207 // parameterisation with very different density is not applicable
208 static const G4double corrmax = 1.;
209 static const G4double massfracmax = 0.9;
210
211 // for simple non-NIST materials
212 G4double corr = 0.0;
213
214 if(idx < 0 && 1 == nelm) {
215 G4int z = (1 == Z0 && State == kStateLiquid) ? 0 : Z0;
217
218 // Correction for base material or for non-nominal density
219 // Except cases of very different density defined in user code
220 if(idx >= 0 && 0 < z) {
221 G4double dens = nist->GetNominalDensity(Z0);
222 if(dens <= 0.0) { idx = -1; }
223 else {
224 corr = G4Log(dens/fMaterial->GetDensity());
225 }
226 if(std::abs(corr) > corrmax) { idx = -1; }
227 }
228 }
229 // for base material case
230 if(idx < 0 && nullptr != bmat) {
231 idx = fDensityData->GetIndex(bmat->GetName());
232 if(idx >= 0) {
233 corr = G4Log(bmat->GetDensity()/fMaterial->GetDensity());
234 if(std::abs(corr) > corrmax) { idx = -1; }
235 }
236 }
237
238 // for compound non-NIST materials with one element dominating
239 if(idx < 0 && 1 < nelm) {
241 for(G4int i=0; i<nelm; ++i) {
242 const G4double frac = fMaterial->GetVecNbOfAtomsPerVolume()[i]/tot;
243 if(frac > massfracmax) {
244 Z0 = ((*(fMaterial->GetElementVector()))[i])->GetZasInt();
246 G4double dens = nist->GetNominalDensity(Z0);
247 if(idx >= 0 && dens > 0.0) {
248 corr = G4Log(dens/fMaterial->GetDensity());
249 if(std::abs(corr) > corrmax) { idx = -1; }
250 else { break; }
251 }
252 }
253 }
254 }
255 //G4cout<<"DensityEffect for "<<fMaterial->GetName()<<" "<< idx << G4endl;
256
257 if(idx >= 0) {
258
259 // Take parameters for the density effect correction from
260 // R.M. Sternheimer et al. Density Effect For The Ionization Loss
261 // of Charged Particles in Various Substances.
262 // Atom. Data Nucl. Data Tabl. 30 (1984) 261-271.
263
272
273 // parameter C is computed and not taken from Sternheimer tables
274 //fCdensity = 1. + 2*G4Log(fMeanExcitationEnergy/fPlasmaEnergy);
275 //G4cout << "IonisParamMat: " << fMaterial->GetName()
276 // << " Cst= " << Cdensity << " C= " << fCdensity << G4endl;
277
278 // correction on nominal density
279 fCdensity += corr;
280 fX0density += corr/twoln10;
281 fX1density += corr/twoln10;
282
283 } else {
284
287
288 // Compute parameters for the density effect correction in DE/Dx formula.
289 // The parametrization is from R.M. Sternheimer, Phys. Rev.B,3:3681 (1971)
290 G4int icase;
291
293 //
294 // condensed materials
295 //
296 if ((State == kStateSolid) || (State == kStateLiquid)) {
297
298 static const G4double E100eV = 100.*CLHEP::eV;
299 static const G4double ClimiS[] = {3.681 , 5.215 };
300 static const G4double X0valS[] = {1.0 , 1.5 };
301 static const G4double X1valS[] = {2.0 , 3.0 };
302
303 if(fMeanExcitationEnergy < E100eV) { icase = 0; }
304 else { icase = 1; }
305
306 if(fCdensity < ClimiS[icase]) { fX0density = 0.2; }
307 else { fX0density = 0.326*fCdensity - X0valS[icase]; }
308
309 fX1density = X1valS[icase]; fMdensity = 3.0;
310
311 //special: Hydrogen
312 if (1 == nelm && 1 == Z0) {
313 fX0density = 0.425; fX1density = 2.0; fMdensity = 5.949;
314 }
315 } else {
316 //
317 // gases
318 //
319 fMdensity = 3.;
320 fX1density = 4.0;
321
322 if(fCdensity <= 10.) {
323 fX0density = 1.6;
324 } else if(fCdensity <= 10.5) {
325 fX0density = 1.7;
326 } else if(fCdensity <= 11.0) {
327 fX0density = 1.8;
328 } else if(fCdensity <= 11.5) {
329 fX0density = 1.9;
330 } else if(fCdensity <= 12.25) {
331 fX0density = 2.0;
332 } else if(fCdensity <= 13.804) {
333 fX0density = 2.0;
334 fX1density = 5.0;
335 } else {
336 fX0density = 0.326*fCdensity-2.5;
337 fX1density = 5.0;
338 }
339
340 //special: Hydrogen
341 if (1 == nelm && 1 == Z0) {
342 fX0density = 1.837; fX1density = 3.0; fMdensity = 4.754;
343 }
344
345 //special: Helium
346 if (1 == nelm && 2 == Z0) {
347 fX0density = 2.191; fX1density = 3.0; fMdensity = 3.297;
348 }
349 }
350 }
351
352 // change parameters if the gas is not in STP.
353 // For the correction the density(STP) is needed.
354 // Density(STP) is calculated here :
355
356 if (State == kStateGas) {
357 G4double Density = fMaterial->GetDensity();
358 G4double Pressure = fMaterial->GetPressure();
360
361 G4double DensitySTP = Density*STP_Pressure*Temp/(Pressure*NTP_Temperature);
362
363 G4double ParCorr = G4Log(Density/DensitySTP);
364
365 fCdensity -= ParCorr;
366 fX0density -= ParCorr/twoln10;
367 fX1density -= ParCorr/twoln10;
368 }
369
370 // fAdensity parameter can be fixed for not conductive materials
371 if(0.0 == fD0density) {
374 /std::pow((fX1density-fX0density),fMdensity);
375 }
376 /*
377 G4cout << "G4IonisParamMat: density effect data for <"
378 << fMaterial->GetName()
379 << "> " << G4endl;
380 G4cout << "Eplasma(eV)= " << fPlasmaEnergy/eV
381 << " rho= " << fAdjustmentFactor
382 << " -C= " << fCdensity
383 << " x0= " << fX0density
384 << " x1= " << fX1density
385 << " a= " << fAdensity
386 << " m= " << fMdensity
387 << G4endl;
388 */
389}
390
391//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
392
394{
395 // compute parameters for the energy loss fluctuation model
396 // needs an 'effective Z'
397 G4double Zeff = 0.;
398 for (size_t i=0; i<fMaterial->GetNumberOfElements(); ++i) {
399 Zeff += (fMaterial->GetFractionVector())[i]
400 *((*(fMaterial->GetElementVector()))[i]->GetZ());
401 }
402 fF2fluct = (Zeff > 2.) ? 2./Zeff : 0.0;
403
404 fF1fluct = 1. - fF2fluct;
405 fEnergy2fluct = 10.*Zeff*Zeff*CLHEP::eV;
408 /fF1fluct;
411 fRateionexcfluct = 0.4;
412}
413
414//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
415
417{
418 // get elements in the actual material,
419 const G4ElementVector* theElementVector = fMaterial->GetElementVector() ;
420 const G4double* theAtomicNumDensityVector =
422 const G4int NumberOfElements = fMaterial->GetNumberOfElements() ;
423
424 // loop for the elements in the material
425 // to find out average values Z, vF, lF
426 G4double z(0.0), vF(0.0), lF(0.0), a23(0.0);
427
428 G4Pow* g4pow = G4Pow::GetInstance();
429 if( 1 == NumberOfElements ) {
430 const G4Element* element = (*theElementVector)[0];
431 z = element->GetZ();
432 vF= element->GetIonisation()->GetFermiVelocity();
433 lF= element->GetIonisation()->GetLFactor();
434 a23 = 1.0/g4pow->A23(element->GetN());
435
436 } else {
437 G4double norm(0.0);
438 for (G4int iel=0; iel<NumberOfElements; ++iel) {
439 const G4Element* element = (*theElementVector)[iel];
440 const G4double weight = theAtomicNumDensityVector[iel];
441 norm += weight;
442 z += element->GetZ() * weight;
443 vF += element->GetIonisation()->GetFermiVelocity() * weight;
444 lF += element->GetIonisation()->GetLFactor() * weight;
445 a23 += weight/g4pow->A23(element->GetN());
446 }
447 z /= norm;
448 vF /= norm;
449 lF /= norm;
450 a23 /= norm;
451 }
452 fZeff = z;
453 fLfactor = lF;
454 fFermiEnergy = 25.*CLHEP::keV*vF*vF;
455 fInvA23 = a23;
456}
457
458//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
459
461{
462 if(value == fMeanExcitationEnergy || value <= 0.0) { return; }
463 if (G4NistManager::Instance()->GetVerbose() > 1) {
464 G4cout << "G4Material: Mean excitation energy is changed for "
465 << fMaterial->GetName()
466 << " Iold= " << fMeanExcitationEnergy/CLHEP::eV
467 << "eV; Inew= " << value/eV << " eV;"
468 << G4endl;
469 }
470
471 fMeanExcitationEnergy = value;
472
473 // add corrections to density effect
474 G4double newlog = G4Log(value);
475 G4double corr = 2*(newlog - fLogMeanExcEnergy);
476 fCdensity += corr;
477 fX0density += corr/twoln10;
478 fX1density += corr/twoln10;
479
480 // recompute parameters of fluctuation model
481 fLogMeanExcEnergy = newlog;
483}
484
485//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
486
488 G4double ad, G4double x0,
489 G4double x1, G4double d0)
490{
491 // no check on consistence of user parameters
492#ifdef G4MULTITHREADED
493 G4MUTEXLOCK(&ionisMutex);
494#endif
495 fCdensity = cd;
496 fMdensity = md;
497 fAdensity = ad;
498 fX0density = x0;
499 fX1density = x1;
500 fD0density = d0;
501#ifdef G4MULTITHREADED
502 G4MUTEXUNLOCK(&ionisMutex);
503#endif
504}
505
506//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
507
509{
510#ifdef G4MULTITHREADED
511 G4MUTEXLOCK(&ionisMutex);
512#endif
513 const G4IonisParamMat* ipm = bmat->GetIonisation();
514 fCdensity = ipm->GetCdensity();
515 fMdensity = ipm->GetMdensity();
516 fAdensity = ipm->GetAdensity();
517 fX0density = ipm->GetX0density();
518 fX1density = ipm->GetX1density();
519 fD0density = ipm->GetD0density();
520
521 G4double corr = G4Log(bmat->GetDensity()/fMaterial->GetDensity());
522 fCdensity += corr;
523 fX0density += corr/twoln10;
524 fX1density += corr/twoln10;
525#ifdef G4MULTITHREADED
526 G4MUTEXUNLOCK(&ionisMutex);
527#endif
528}
529
530//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
531
533{
534 if(val) {
535 if(nullptr == fDensityEffectCalc) {
536 G4int n = 0;
537 for(size_t i=0; i<fMaterial->GetNumberOfElements(); ++i) {
538 const G4int Z = fMaterial->GetElement(i)->GetZasInt();
540 }
541 // The last level is the conduction level. If this is *not* a conductor,
542 // make a dummy conductor level with zero electrons in it.
544 }
545 } else {
546 delete fDensityEffectCalc;
547 fDensityEffectCalc = nullptr;
548 }
549}
550
551//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
552
554{
555 G4double res = 0.0;
556 // data from density effect data
557 if(fDensityData) {
558 G4int idx = fDensityData->GetIndex(mat->GetName());
559 if(idx >= 0) {
561 }
562 }
563
564 // The data on mean excitation energy for compaunds
565 // from "Stopping Powers for Electrons and Positrons"
566 // ICRU Report N#37, 1984 (energy in eV)
567 // this value overwrites Density effect data
568 G4String chFormula = mat->GetChemicalFormula();
569 if(chFormula != "") {
570
571 static const size_t numberOfMolecula = 54;
572 static const G4String name[numberOfMolecula] = {
573 // gas 0 - 12
574 "NH_3", "C_4H_10", "CO_2", "C_2H_6", "C_7H_16-Gas",
575 // "G4_AMMONIA", "G4_BUTANE","G4_CARBON_DIOXIDE","G4_ETHANE", "G4_N-HEPTANE"
576 "C_6H_14-Gas", "CH_4", "NO", "N_2O", "C_8H_18-Gas",
577 // "G4_N-HEXANE" , "G4_METHANE", "x", "G4_NITROUS_OXIDE", "G4_OCTANE"
578 "C_5H_12-Gas", "C_3H_8", "H_2O-Gas",
579 // "G4_N-PENTANE", "G4_PROPANE", "G4_WATER_VAPOR"
580
581 // liquid 13 - 39
582 "C_3H_6O", "C_6H_5NH_2", "C_6H_6", "C_4H_9OH", "CCl_4",
583 //"G4_ACETONE","G4_ANILINE","G4_BENZENE","G4_N-BUTYL_ALCOHOL","G4_CARBON_TETRACHLORIDE"
584 "C_6H_5Cl", "CHCl_3", "C_6H_12", "C_6H_4Cl_2", "C_4Cl_2H_8O",
585 //"G4_CHLOROBENZENE","G4_CHLOROFORM","G4_CYCLOHEXANE","G4_1,2-DICHLOROBENZENE",
586 //"G4_DICHLORODIETHYL_ETHER"
587 "C_2Cl_2H_4", "(C_2H_5)_2O", "C_2H_5OH", "C_3H_5(OH)_3","C_7H_16",
588 //"G4_1,2-DICHLOROETHANE","G4_DIETHYL_ETHER","G4_ETHYL_ALCOHOL","G4_GLYCEROL","G4_N-HEPTANE"
589 "C_6H_14", "CH_3OH", "C_6H_5NO_2","C_5H_12", "C_3H_7OH",
590 //"G4_N-HEXANE","G4_METHANOL","G4_NITROBENZENE","G4_N-PENTANE","G4_N-PROPYL_ALCOHOL",
591 "C_5H_5N", "C_8H_8", "C_2Cl_4", "C_7H_8", "C_2Cl_3H",
592 //"G4_PYRIDINE","G4_POLYSTYRENE","G4_TETRACHLOROETHYLENE","G4_TOLUENE","G4_TRICHLOROETHYLENE"
593 "H_2O", "C_8H_10",
594 // "G4_WATER", "G4_XYLENE"
595
596 // solid 40 - 53
597 "C_5H_5N_5", "C_5H_5N_5O", "(C_6H_11NO)-nylon", "C_25H_52",
598 // "G4_ADENINE", "G4_GUANINE", "G4_NYLON-6-6", "G4_PARAFFIN"
599 "(C_2H_4)-Polyethylene", "(C_5H_8O_2)-Polymethil_Methacrylate",
600 // "G4_ETHYLENE", "G4_PLEXIGLASS"
601 "(C_8H_8)-Polystyrene", "A-150-tissue", "Al_2O_3", "CaF_2",
602 // "G4_POLYSTYRENE", "G4_A-150_TISSUE", "G4_ALUMINUM_OXIDE", "G4_CALCIUM_FLUORIDE"
603 "LiF", "Photo_Emulsion", "(C_2F_4)-Teflon", "SiO_2"
604 // "G4_LITHIUM_FLUORIDE", "G4_PHOTO_EMULSION", "G4_TEFLON", "G4_SILICON_DIOXIDE"
605 } ;
606
607 static const G4double meanExcitation[numberOfMolecula] = {
608
609 53.7, 48.3, 85.0, 45.4, 49.2,
610 49.1, 41.7, 87.8, 84.9, 49.5,
611 48.2, 47.1, 71.6,
612
613 64.2, 66.2, 63.4, 59.9, 166.3,
614 89.1, 156.0, 56.4, 106.5, 103.3,
615 111.9, 60.0, 62.9, 72.6, 54.4,
616 54.0, 67.6, 75.8, 53.6, 61.1,
617 66.2, 64.0, 159.2, 62.5, 148.1,
618 75.0, 61.8,
619
620 71.4, 75.0, 63.9, 48.3, 57.4,
621 74.0, 68.7, 65.1, 145.2, 166.,
622 94.0, 331.0, 99.1, 139.2
623 };
624
625 for(size_t i=0; i<numberOfMolecula; i++) {
626 if(chFormula == name[i]) {
627 res = meanExcitation[i]*eV;
628 break;
629 }
630 }
631 }
632 return res;
633}
634
635//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
636
static const G4double cd
std::vector< const G4Element * > G4ElementVector
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
#define State(X)
G4double G4Log(G4double x)
Definition: G4Log.hh:226
G4State
Definition: G4Material.hh:111
@ kStateSolid
Definition: G4Material.hh:111
@ kStateLiquid
Definition: G4Material.hh:111
@ kStateGas
Definition: G4Material.hh:111
static const G4double NTP_Temperature
Definition: G4Material.hh:113
static const G4int numberOfMolecula
static constexpr double eV
Definition: G4SIunits.hh:201
#define G4MUTEX_INITIALIZER
Definition: G4Threading.hh:85
#define G4MUTEXLOCK(mutex)
Definition: G4Threading.hh:251
#define G4MUTEXUNLOCK(mutex)
Definition: G4Threading.hh:254
std::mutex G4Mutex
Definition: G4Threading.hh:81
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4int GetNumberOfShells(G4int Z)
G4double ComputeDensityCorrection(G4double x)
G4double GetAdjustmentFactor(G4int idx) const
G4double GetCdensity(G4int idx) const
G4double GetMdensity(G4int idx) const
G4double GetDelta0density(G4int idx) const
G4double GetPlasmaEnergy(G4int idx) const
G4int GetElementIndex(G4int Z, G4State st=kStateUndefined) const
G4double GetMeanIonisationPotential(G4int idx) const
G4double GetX1density(G4int idx) const
G4double GetAdensity(G4int idx) const
G4int GetIndex(const G4String &matName) const
G4double GetX0density(G4int idx) const
G4double GetZ() const
Definition: G4Element.hh:131
G4IonisParamElm * GetIonisation() const
Definition: G4Element.hh:199
G4int GetZasInt() const
Definition: G4Element.hh:132
G4double GetN() const
Definition: G4Element.hh:135
G4double GetFermiVelocity() const
G4double GetLFactor() const
G4double GetMeanExcitationEnergy() const
G4double * fShellCorrectionVector
G4double GetMdensity() const
G4DensityEffectCalculator * fDensityEffectCalc
G4double GetX1density() const
G4double GetX0density() const
G4double GetCdensity() const
G4double GetDensityCorrection(G4double x)
void SetDensityEffectParameters(G4double cd, G4double md, G4double ad, G4double x0, G4double x1, G4double d0)
static G4DensityEffectData * fDensityData
static G4DensityEffectData * GetDensityEffectData()
G4double fLogMeanExcEnergy
G4double DensityCorrection(G4double x)
G4double FindMeanExcitationEnergy(const G4Material *) const
void ComputeDensityEffectOnFly(G4bool)
void ComputeMeanParameters()
G4double fMeanExcitationEnergy
G4double GetD0density() const
G4IonisParamMat(const G4Material *)
G4double GetAdensity() const
void ComputeDensityEffectParameters()
G4double fLogEnergy2fluct
void SetMeanExcitationEnergy(G4double value)
G4double fAdjustmentFactor
G4double fRateionexcfluct
G4double fMeanEnergyPerIon
G4double fLogEnergy1fluct
const G4Material * fMaterial
G4double GetPressure() const
Definition: G4Material.hh:179
G4double GetDensity() const
Definition: G4Material.hh:176
const G4String & GetChemicalFormula() const
Definition: G4Material.hh:174
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:186
const G4Material * GetBaseMaterial() const
Definition: G4Material.hh:229
G4double GetTotNbOfAtomsPerVolume() const
Definition: G4Material.hh:205
G4State GetState() const
Definition: G4Material.hh:177
G4double GetTemperature() const
Definition: G4Material.hh:178
const G4Element * GetElement(G4int iel) const
Definition: G4Material.hh:198
const G4double * GetFractionVector() const
Definition: G4Material.hh:190
G4double GetTotNbOfElectPerVolume() const
Definition: G4Material.hh:208
G4IonisParamMat * GetIonisation() const
Definition: G4Material.hh:222
size_t GetNumberOfElements() const
Definition: G4Material.hh:182
const G4double * GetAtomicNumDensityVector() const
Definition: G4Material.hh:212
const G4double * GetVecNbOfAtomsPerVolume() const
Definition: G4Material.hh:202
const G4String & GetName() const
Definition: G4Material.hh:173
static G4NistManager * Instance()
G4double GetNominalDensity(G4int Z) const
Definition: G4Pow.hh:49
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double logZ(G4int Z) const
Definition: G4Pow.hh:137
G4double A23(G4double A) const
Definition: G4Pow.hh:131
static constexpr double keV
static constexpr double classic_electr_radius
static constexpr double eV
static constexpr double hbarc_squared
static constexpr double pi
Definition: SystemOfUnits.h:55
const char * name(G4int ptype)
string material
Definition: eplot.py:19
int STP_Pressure
Definition: hepunit.py:302