Geant4-11
Public Member Functions | Private Member Functions | Private Attributes
G4hBetheBlochModel Class Reference

#include <G4hBetheBlochModel.hh>

Inheritance diagram for G4hBetheBlochModel:
G4VLowEnergyModel

Public Member Functions

 G4hBetheBlochModel (const G4String &name)
 
G4double HighEnergyLimit (const G4ParticleDefinition *aParticle) const
 
G4double HighEnergyLimit (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
G4bool IsInCharge (const G4DynamicParticle *particle, const G4Material *material) const
 
G4bool IsInCharge (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
G4double LowEnergyLimit (const G4ParticleDefinition *aParticle) const
 
G4double LowEnergyLimit (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
G4double TheValue (const G4DynamicParticle *particle, const G4Material *material)
 
G4double TheValue (const G4ParticleDefinition *aParticle, const G4Material *material, G4double kineticEnergy)
 
 ~G4hBetheBlochModel ()
 

Private Member Functions

G4double BetheBlochFormula (const G4Material *material, G4double kineticEnergy, G4double particleMass) const
 

Private Attributes

const G4double bg2lim
 
G4double highEnergyLimit
 
G4double lowEnergyLimit
 
const G4double taulim
 
const G4double twoln10
 

Detailed Description

Definition at line 59 of file G4hBetheBlochModel.hh.

Constructor & Destructor Documentation

◆ G4hBetheBlochModel()

G4hBetheBlochModel::G4hBetheBlochModel ( const G4String name)
explicit

Definition at line 63 of file G4hBetheBlochModel.cc.

65 twoln10(2.*std::log(10.)),
66 bg2lim(0.0169),
67 taulim(8.4146e-3),
70{;}
static constexpr double GeV
Definition: G4SIunits.hh:203
static constexpr double MeV
Definition: G4SIunits.hh:200
G4VLowEnergyModel(const G4String &name)
const char * name(G4int ptype)

◆ ~G4hBetheBlochModel()

G4hBetheBlochModel::~G4hBetheBlochModel ( )

Definition at line 74 of file G4hBetheBlochModel.cc.

75{;}

Member Function Documentation

◆ BetheBlochFormula()

G4double G4hBetheBlochModel::BetheBlochFormula ( const G4Material material,
G4double  kineticEnergy,
G4double  particleMass 
) const
private

Definition at line 156 of file G4hBetheBlochModel.cc.

160{
161 // This member function is applied normally to proton/antiproton
162 G4double ionloss ;
163
164 G4double rateMass = electron_mass_c2/particleMass ;
165
166 G4double taul = material->GetIonisation()->GetTaul() ;
167 G4double tau = kineticEnergy/particleMass ; // tau is relative energy
168
169 // It is not normal case for this function
170 // for low energy parametrisation have to be applied
171 if ( tau < taul ) tau = taul ;
172
173 // some local variables
174
175 G4double gamma,bg2,beta2,tmax,x,delta,sh ;
176 G4double electronDensity = material->GetElectronDensity();
177 G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy();
178 G4double eexc2 = eexc*eexc ;
179 G4double cden = material->GetIonisation()->GetCdensity();
180 G4double mden = material->GetIonisation()->GetMdensity();
181 G4double aden = material->GetIonisation()->GetAdensity();
182 G4double x0den = material->GetIonisation()->GetX0density();
183 G4double x1den = material->GetIonisation()->GetX1density();
184 G4double* shellCorrectionVector =
185 material->GetIonisation()->GetShellCorrectionVector();
186
187 gamma = tau + 1.0 ;
188 bg2 = tau*(tau+2.0) ;
189 beta2 = bg2/(gamma*gamma) ;
190 tmax = 2.*electron_mass_c2*bg2/(1.+2.*gamma*rateMass+rateMass*rateMass) ;
191
192 ionloss = std::log(2.0*electron_mass_c2*bg2*tmax/eexc2)-2.0*beta2 ;
193
194 // density correction
195 x = std::log(bg2)/twoln10 ;
196 if ( x < x0den ) {
197 delta = 0.0 ;
198
199 } else {
200 delta = twoln10*x - cden ;
201 if ( x < x1den ) delta += aden*std::pow((x1den-x),mden) ;
202 }
203
204 // shell correction
205 sh = 0.0 ;
206 x = 1.0 ;
207
208 if ( bg2 > bg2lim ) {
209 for (G4int k=0; k<=2; k++) {
210 x *= bg2 ;
211 sh += shellCorrectionVector[k]/x;
212 }
213
214 } else {
215 for (G4int k=0; k<=2; k++) {
216 x *= bg2lim ;
217 sh += shellCorrectionVector[k]/x;
218 }
219 sh *= std::log(tau/taul)/std::log(taulim/taul) ;
220 }
221
222 // now compute the total ionization loss
223
224 ionloss -= delta + sh ;
225 ionloss *= twopi_mc2_rcl2*electronDensity/beta2 ;
226
227 if ( ionloss < 0.0) ionloss = 0.0 ;
228
229 return ionloss;
230}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
string material
Definition: eplot.py:19
float electron_mass_c2
Definition: hepunit.py:273
int twopi_mc2_rcl2
Definition: hepunit.py:293

References bg2lim, source.hepunit::electron_mass_c2, eplot::material, taulim, twoln10, and source.hepunit::twopi_mc2_rcl2.

Referenced by TheValue().

◆ HighEnergyLimit() [1/2]

G4double G4hBetheBlochModel::HighEnergyLimit ( const G4ParticleDefinition aParticle) const
virtual

Implements G4VLowEnergyModel.

Definition at line 124 of file G4hBetheBlochModel.cc.

126{
127 return highEnergyLimit ;
128}

References highEnergyLimit.

◆ HighEnergyLimit() [2/2]

G4double G4hBetheBlochModel::HighEnergyLimit ( const G4ParticleDefinition aParticle,
const G4Material material 
) const
virtual

Implements G4VLowEnergyModel.

Definition at line 104 of file G4hBetheBlochModel.cc.

107{
108 return highEnergyLimit ;
109}

References highEnergyLimit.

◆ IsInCharge() [1/2]

G4bool G4hBetheBlochModel::IsInCharge ( const G4DynamicParticle particle,
const G4Material material 
) const
virtual

Implements G4VLowEnergyModel.

Definition at line 140 of file G4hBetheBlochModel.cc.

142{
143 return true ;
144}

◆ IsInCharge() [2/2]

G4bool G4hBetheBlochModel::IsInCharge ( const G4ParticleDefinition aParticle,
const G4Material material 
) const
virtual

Implements G4VLowEnergyModel.

Definition at line 148 of file G4hBetheBlochModel.cc.

150{
151 return true ;
152}

◆ LowEnergyLimit() [1/2]

G4double G4hBetheBlochModel::LowEnergyLimit ( const G4ParticleDefinition aParticle) const
virtual

Implements G4VLowEnergyModel.

Definition at line 132 of file G4hBetheBlochModel.cc.

134{
135 return lowEnergyLimit ;
136}

References lowEnergyLimit.

◆ LowEnergyLimit() [2/2]

G4double G4hBetheBlochModel::LowEnergyLimit ( const G4ParticleDefinition aParticle,
const G4Material material 
) const
virtual

Implements G4VLowEnergyModel.

Definition at line 113 of file G4hBetheBlochModel.cc.

116{
117 G4double taul = (material->GetIonisation()->GetTaul())*
118 (aParticle->GetPDGMass()) ;
119 return taul ;
120}

References G4ParticleDefinition::GetPDGMass(), and eplot::material.

◆ TheValue() [1/2]

G4double G4hBetheBlochModel::TheValue ( const G4DynamicParticle particle,
const G4Material material 
)
virtual

Implements G4VLowEnergyModel.

Definition at line 79 of file G4hBetheBlochModel.cc.

81{
82 G4double energy = particle->GetKineticEnergy() ;
83 G4double particleMass = particle->GetMass() ;
84
85 G4double eloss = BetheBlochFormula(material,energy,particleMass) ;
86
87 return eloss ;
88}
G4double GetMass() const
G4double GetKineticEnergy() const
G4double BetheBlochFormula(const G4Material *material, G4double kineticEnergy, G4double particleMass) const
G4double energy(const ThreeVector &p, const G4double m)

References BetheBlochFormula(), G4INCL::KinematicsUtils::energy(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMass(), and eplot::material.

◆ TheValue() [2/2]

G4double G4hBetheBlochModel::TheValue ( const G4ParticleDefinition aParticle,
const G4Material material,
G4double  kineticEnergy 
)
virtual

Implements G4VLowEnergyModel.

Definition at line 92 of file G4hBetheBlochModel.cc.

95{
96 G4double particleMass = aParticle->GetPDGMass() ;
97 G4double eloss = BetheBlochFormula(material,kineticEnergy,particleMass) ;
98
99 return eloss ;
100}

References BetheBlochFormula(), G4ParticleDefinition::GetPDGMass(), and eplot::material.

Field Documentation

◆ bg2lim

const G4double G4hBetheBlochModel::bg2lim
private

Definition at line 101 of file G4hBetheBlochModel.hh.

Referenced by BetheBlochFormula().

◆ highEnergyLimit

G4double G4hBetheBlochModel::highEnergyLimit
private

Definition at line 106 of file G4hBetheBlochModel.hh.

Referenced by HighEnergyLimit().

◆ lowEnergyLimit

G4double G4hBetheBlochModel::lowEnergyLimit
private

Definition at line 105 of file G4hBetheBlochModel.hh.

Referenced by LowEnergyLimit().

◆ taulim

const G4double G4hBetheBlochModel::taulim
private

Definition at line 102 of file G4hBetheBlochModel.hh.

Referenced by BetheBlochFormula().

◆ twoln10

const G4double G4hBetheBlochModel::twoln10
private

Definition at line 100 of file G4hBetheBlochModel.hh.

Referenced by BetheBlochFormula().


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