Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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() [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;
67 if(!fDensityData) { fDensityData = new G4DensityEffectData(); }
68
69 // compute parameters
70 ComputeMeanParameters();
71 ComputeDensityEffect();
72 ComputeFluctModel();
73 ComputeIonParameters();
74}
static G4Pow * GetInstance()
Definition: G4Pow.cc:50
G4double logZ(G4int Z)
Definition: G4Pow.hh:146

◆ ~G4IonisParamMat()

G4IonisParamMat::~G4IonisParamMat ( )
virtual

Definition at line 114 of file G4IonisParamMat.cc.

115{
116 if (fShellCorrectionVector) { delete [] fShellCorrectionVector; }
117 if (fDensityData) { delete fDensityData; }
118 fDensityData = 0;
119 fShellCorrectionVector = 0;
120}

◆ G4IonisParamMat() [2/3]

G4IonisParamMat::G4IonisParamMat ( const G4IonisParamMat right)

Definition at line 471 of file G4IonisParamMat.cc.

472{
473 fShellCorrectionVector = 0;
474 fMaterial = 0;
475 *this = right;
476}

◆ G4IonisParamMat() [3/3]

G4IonisParamMat::G4IonisParamMat ( __void__ &  )

Definition at line 81 of file G4IonisParamMat.cc.

82 : fMaterial(0), fShellCorrectionVector(0)
83{
84 fMeanExcitationEnergy = 0.0;
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}

Member Function Documentation

◆ DensityCorrection()

G4double G4IonisParamMat::DensityCorrection ( G4double  x)
inline

Definition at line 192 of file G4IonisParamMat.hh.

193{
194 // x = log10(beta*gamma)
195
196 G4double y = 0.0;
197 if(x < fX0density) {
198 if(fD0density > 0.0) { y = fD0density*std::pow(10.,2*(x - fX0density)); }
199 } else if(x >= fX1density) { y = twoln10*x - fCdensity; }
200 else {y = twoln10*x - fCdensity + fAdensity*std::pow(fX1density - x, fMdensity);}
201 return y;
202}
double G4double
Definition: G4Types.hh:64

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

◆ FindMeanExcitationEnergy()

G4double G4IonisParamMat::FindMeanExcitationEnergy ( const G4String chFormula)

Definition at line 412 of file G4IonisParamMat.cc.

413{
414 // The data on mean excitation energy for compaunds
415 // from "Stopping Powers for Electrons and Positrons"
416 // ICRU Report N#37, 1984 (energy in eV)
417
418 const size_t numberOfMolecula = 54;
419 static G4String name[numberOfMolecula] = {
420 // gas 0 - 12
421 "NH_3", "C_4H_10", "CO_2", "C_2H_6", "C_7H_16",
422 "C_6H_14", "CH_4", "NO", "N_2O", "C_8H_18",
423 "C_5H_12", "C_3H_8", "H_2O-Gas",
424
425 // liquid 13 - 39
426 "C_3H_6O", "C_6H_5NH_2", "C_6H_6", "C_4H_9OH", "CCl_4",
427 "C_6H_5Cl", "CHCl_3", "C_6H_12", "C_6H_4Cl_2", "C_4Cl_2H_8O",
428 "C_2Cl_2H_4", "(C_2H_5)_2O", "C_2H_5OH", "C_3H_5(OH)_3","C_7H_16",
429 "C_6H_14", "CH_3OH", "C_6H_5NO_2","C_5H_12", "C_3H_7OH",
430 "C_5H_5N", "C_8H_8", "C_2Cl_4", "C_7H_8", "C_2Cl_3H",
431 "H_2O", "C_8H_10",
432
433 // solid 40 - 53
434 "C_5H_5N_5", "C_5H_5N_5O", "(C_6H_11NO)-nylon", "C_25H_52",
435 "(C_2H_4)-Polyethylene", "(C_5H_8O-2)-Polymethil_Methacrylate",
436 "(C_8H_8)-Polystyrene", "A-150-tissue", "Al_2O_3", "CaF_2",
437 "LiF", "Photo_Emulsion", "(C_2F_4)-Teflon", "SiO_2"
438 };
439
440 static G4double meanExcitation[numberOfMolecula] = {
441
442 53.7, 48.3, 85.0, 45.4, 49.2,
443 49.1, 41.7, 87.8, 84.9, 49.5,
444 48.2, 47.1, 71.6,
445
446 64.2, 66.2, 63.4, 59.9, 166.3,
447 89.1, 156.0, 56.4, 106.5, 103.3,
448 111.9, 60.0, 62.9, 72.6, 54.4,
449 54.0, 67.6, 75.8, 53.6, 61.1,
450 66.2, 64.0, 159.2, 62.5, 148.1,
451 75.0, 61.8,
452
453 71.4, 75.0, 63.9, 48.3, 57.4,
454 74.0, 68.7, 65.1, 145.2, 166.,
455 94.0, 331.0, 99.1, 139.2
456 };
457
458 G4double x = fMeanExcitationEnergy;
459
460 for(size_t i=0; i<numberOfMolecula; i++) {
461 if(chFormula == name[i]) {
462 x = meanExcitation[i]*eV;
463 break;
464 }
465 }
466 return x;
467}

◆ GetAdensity()

G4double G4IonisParamMat::GetAdensity ( ) const
inline

Definition at line 80 of file G4IonisParamMat.hh.

80{return fAdensity;};

Referenced by G4EmCorrections::DensityCorrection().

◆ GetAdjustmentFactor()

G4double G4IonisParamMat::GetAdjustmentFactor ( ) const
inline

Definition at line 77 of file G4IonisParamMat.hh.

77{return fAdjustmentFactor;};

◆ GetBirksConstant()

G4double G4IonisParamMat::GetBirksConstant ( ) const
inline

Definition at line 108 of file G4IonisParamMat.hh.

108{return fBirks;};

◆ GetCdensity()

G4double G4IonisParamMat::GetCdensity ( ) const
inline

Definition at line 78 of file G4IonisParamMat.hh.

78{return fCdensity;};

Referenced by G4EmCorrections::DensityCorrection().

◆ GetD0density()

G4double G4IonisParamMat::GetD0density ( ) const
inline

Definition at line 83 of file G4IonisParamMat.hh.

83{return fD0density;};

◆ GetDensityEffectData()

G4DensityEffectData * G4IonisParamMat::GetDensityEffectData ( )
static

Definition at line 171 of file G4IonisParamMat.cc.

172{
173 return fDensityData;
174}

Referenced by G4NistMessenger::SetNewValue().

◆ GetEnergy0fluct()

G4double G4IonisParamMat::GetEnergy0fluct ( ) const
inline

◆ GetEnergy1fluct()

G4double G4IonisParamMat::GetEnergy1fluct ( ) const
inline

◆ GetEnergy2fluct()

G4double G4IonisParamMat::GetEnergy2fluct ( ) const
inline

◆ GetF1fluct()

G4double G4IonisParamMat::GetF1fluct ( ) const
inline

◆ GetF2fluct()

G4double G4IonisParamMat::GetF2fluct ( ) const
inline

◆ GetFermiEnergy()

G4double G4IonisParamMat::GetFermiEnergy ( ) const
inline

Definition at line 102 of file G4IonisParamMat.hh.

102{return fFermiEnergy;};

Referenced by G4ionEffectiveCharge::EffectiveCharge().

◆ GetInvA23()

G4double G4IonisParamMat::GetInvA23 ( ) const
inline

◆ GetLFactor()

G4double G4IonisParamMat::GetLFactor ( ) const
inline

Definition at line 103 of file G4IonisParamMat.hh.

103{return fLfactor;};

◆ GetLogEnergy1fluct()

G4double G4IonisParamMat::GetLogEnergy1fluct ( ) const
inline

◆ GetLogEnergy2fluct()

G4double G4IonisParamMat::GetLogEnergy2fluct ( ) const
inline

◆ GetLogMeanExcEnergy()

G4double G4IonisParamMat::GetLogMeanExcEnergy ( ) const
inline

◆ GetMdensity()

G4double G4IonisParamMat::GetMdensity ( ) const
inline

Definition at line 79 of file G4IonisParamMat.hh.

79{return fMdensity;};

Referenced by G4EmCorrections::DensityCorrection().

◆ GetMeanEnergyPerIonPair()

G4double G4IonisParamMat::GetMeanEnergyPerIonPair ( ) const
inline

Definition at line 112 of file G4IonisParamMat.hh.

112{return fMeanEnergyPerIon;};

Referenced by G4ElectronIonPair::DumpMeanEnergyPerIonPair(), and G4ElectronIonPair::MeanNumberOfIonsAlongStep().

◆ GetMeanExcitationEnergy()

◆ GetPlasmaEnergy()

G4double G4IonisParamMat::GetPlasmaEnergy ( ) const
inline

Definition at line 76 of file G4IonisParamMat.hh.

76{return fPlasmaEnergy;};

◆ GetRateionexcfluct()

G4double G4IonisParamMat::GetRateionexcfluct ( ) const
inline

Definition at line 98 of file G4IonisParamMat.hh.

98{return fRateionexcfluct;};

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

◆ GetShellCorrectionVector()

G4double * G4IonisParamMat::GetShellCorrectionVector ( ) const
inline

Definition at line 72 of file G4IonisParamMat.hh.

72{return fShellCorrectionVector;};

Referenced by G4EmCorrections::ShellCorrectionSTD().

◆ GetTaul()

G4double G4IonisParamMat::GetTaul ( ) const
inline

Definition at line 73 of file G4IonisParamMat.hh.

73{return fTaul;};

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

◆ GetX0density()

G4double G4IonisParamMat::GetX0density ( ) const
inline

Definition at line 81 of file G4IonisParamMat.hh.

81{return fX0density;};

Referenced by G4EmCorrections::DensityCorrection().

◆ GetX1density()

G4double G4IonisParamMat::GetX1density ( ) const
inline

Definition at line 82 of file G4IonisParamMat.hh.

82{return fX1density;};

Referenced by G4EmCorrections::DensityCorrection().

◆ GetZeffective()

G4double G4IonisParamMat::GetZeffective ( ) const
inline

Definition at line 101 of file G4IonisParamMat.hh.

101{return fZeff;};

Referenced by G4ionEffectiveCharge::EffectiveCharge().

◆ operator!=()

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

Definition at line 530 of file G4IonisParamMat.cc.

531{
532 return (this != (G4IonisParamMat*) &right);
533}

◆ operator=()

G4IonisParamMat & G4IonisParamMat::operator= ( const G4IonisParamMat right)

Definition at line 480 of file G4IonisParamMat.cc.

481{
482 if (this != &right)
483 {
484 fMaterial = right.fMaterial;
485 fMeanExcitationEnergy = right.fMeanExcitationEnergy;
486 fLogMeanExcEnergy = right.fLogMeanExcEnergy;
487 if(fShellCorrectionVector){ delete [] fShellCorrectionVector; }
488 fShellCorrectionVector = new G4double[3];
489 fShellCorrectionVector[0] = right.fShellCorrectionVector[0];
490 fShellCorrectionVector[1] = right.fShellCorrectionVector[1];
491 fShellCorrectionVector[2] = right.fShellCorrectionVector[2];
492 fTaul = right.fTaul;
493 fCdensity = right.fCdensity;
494 fMdensity = right.fMdensity;
495 fAdensity = right.fAdensity;
496 fX0density = right.fX0density;
497 fX1density = right.fX1density;
498 fD0density = right.fD0density;
499 fPlasmaEnergy = right.fPlasmaEnergy;
500 fAdjustmentFactor = right.fAdjustmentFactor;
501 fF1fluct = right.fF1fluct;
502 fF2fluct = right.fF2fluct;
503 fEnergy1fluct = right.fEnergy1fluct;
504 fLogEnergy1fluct = right.fLogEnergy1fluct;
505 fEnergy2fluct = right.fEnergy2fluct;
506 fLogEnergy2fluct = right.fLogEnergy2fluct;
507 fEnergy0fluct = right.fEnergy0fluct;
508 fRateionexcfluct = right.fRateionexcfluct;
509 fZeff = right.fZeff;
510 fFermiEnergy = right.fFermiEnergy;
511 fLfactor = right.fLfactor;
512 fInvA23 = right.fInvA23;
513 fBirks = right.fBirks;
514 fMeanEnergyPerIon = right.fMeanEnergyPerIon;
515 fDensityData = right.fDensityData;
516 twoln10 = right.twoln10;
517 }
518 return *this;
519}

◆ operator==()

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

Definition at line 523 of file G4IonisParamMat.cc.

524{
525 return (this == (G4IonisParamMat*) &right);
526}

◆ SetBirksConstant()

void G4IonisParamMat::SetBirksConstant ( G4double  value)
inline

Definition at line 107 of file G4IonisParamMat.hh.

107{fBirks = value;};

◆ SetMeanEnergyPerIonPair()

void G4IonisParamMat::SetMeanEnergyPerIonPair ( G4double  value)
inline

Definition at line 111 of file G4IonisParamMat.hh.

111{fMeanEnergyPerIon = value;};

Referenced by G4ElectronIonPair::FindG4MeanEnergyPerIonPair().

◆ SetMeanExcitationEnergy()

void G4IonisParamMat::SetMeanExcitationEnergy ( G4double  value)

Definition at line 385 of file G4IonisParamMat.cc.

386{
387 if(value == fMeanExcitationEnergy || value <= 0.0) { return; }
388 if (G4NistManager::Instance()->GetVerbose() > 1) {
389 G4cout << "G4Material: Mean excitation energy is changed for "
390 << fMaterial->GetName()
391 << " Iold= " << fMeanExcitationEnergy/eV
392 << "eV; Inew= " << value/eV << " eV;"
393 << G4endl;
394 }
395
396 fMeanExcitationEnergy = value;
397
398 // add corrections to density effect
399 G4double newlog = std::log(value);
400 G4double corr = 2*(newlog - fLogMeanExcEnergy);
401 fCdensity += corr;
402 fX0density += corr/twoln10;
403 fX1density += corr/twoln10;
404
405 // recompute parameters of fluctuation model
406 fLogMeanExcEnergy = newlog;
407 ComputeFluctModel();
408}
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
const G4String & GetName() const
Definition: G4Material.hh:177
static G4NistManager * Instance()

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


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