Geant4  10.02.p03
G4hBetheBlochModel Class Reference

#include <G4hBetheBlochModel.hh>

Inheritance diagram for G4hBetheBlochModel:
Collaboration diagram for G4hBetheBlochModel:

Public Member Functions

 G4hBetheBlochModel (const G4String &name)
 
 ~G4hBetheBlochModel ()
 
G4double TheValue (const G4DynamicParticle *particle, const G4Material *material)
 
G4double TheValue (const G4ParticleDefinition *aParticle, const G4Material *material, G4double kineticEnergy)
 
G4double HighEnergyLimit (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
G4double LowEnergyLimit (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
G4double HighEnergyLimit (const G4ParticleDefinition *aParticle) const
 
G4double LowEnergyLimit (const G4ParticleDefinition *aParticle) const
 
G4bool IsInCharge (const G4DynamicParticle *particle, const G4Material *material) const
 
G4bool IsInCharge (const G4ParticleDefinition *aParticle, const G4Material *material) const
 
- Public Member Functions inherited from G4VLowEnergyModel
 G4VLowEnergyModel (const G4String &name)
 
virtual ~G4VLowEnergyModel ()
 

Private Member Functions

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

Private Attributes

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

Detailed Description

Definition at line 59 of file G4hBetheBlochModel.hh.

Constructor & Destructor Documentation

◆ G4hBetheBlochModel()

G4hBetheBlochModel::G4hBetheBlochModel ( const G4String name)

Definition at line 63 of file G4hBetheBlochModel.cc.

64  : G4VLowEnergyModel(name),
65  lowEnergyLimit(1.*MeV),
66  highEnergyLimit(100.*GeV),
67  twoln10(2.*std::log(10.)),
68  bg2lim(0.0169),
69  taulim(8.4146e-3)
70 {;}
static const double MeV
Definition: G4SIunits.hh:211
static const double GeV
Definition: G4SIunits.hh:214
G4VLowEnergyModel(const G4String &name)

◆ ~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 =
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 }
G4IonisParamMat * GetIonisation() const
Definition: G4Material.hh:226
int twopi_mc2_rcl2
Definition: hepunit.py:294
G4double GetAdensity() const
int G4int
Definition: G4Types.hh:78
G4double GetMeanExcitationEnergy() const
G4double * GetShellCorrectionVector() const
G4double GetCdensity() const
float electron_mass_c2
Definition: hepunit.py:274
G4double GetTaul() const
G4double GetX1density() const
G4double GetElectronDensity() const
Definition: G4Material.hh:217
double G4double
Definition: G4Types.hh:76
G4double GetMdensity() const
G4double GetX0density() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HighEnergyLimit() [1/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 }

◆ HighEnergyLimit() [2/2]

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

Implements G4VLowEnergyModel.

Definition at line 124 of file G4hBetheBlochModel.cc.

126 {
127  return highEnergyLimit ;
128 }

◆ 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 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 }
G4IonisParamMat * GetIonisation() const
Definition: G4Material.hh:226
G4double GetTaul() const
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

◆ LowEnergyLimit() [2/2]

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

Implements G4VLowEnergyModel.

Definition at line 132 of file G4hBetheBlochModel.cc.

134 {
135  return lowEnergyLimit ;
136 }

◆ 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 BetheBlochFormula(const G4Material *material, G4double kineticEnergy, G4double particleMass) const
G4double GetKineticEnergy() const
double energy
Definition: plottest35.C:25
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

◆ 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 }
G4double BetheBlochFormula(const G4Material *material, G4double kineticEnergy, G4double particleMass) const
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

Member Data Documentation

◆ bg2lim

const G4double G4hBetheBlochModel::bg2lim
private

Definition at line 106 of file G4hBetheBlochModel.hh.

◆ highEnergyLimit

G4double G4hBetheBlochModel::highEnergyLimit
private

Definition at line 101 of file G4hBetheBlochModel.hh.

◆ lowEnergyLimit

G4double G4hBetheBlochModel::lowEnergyLimit
private

Definition at line 100 of file G4hBetheBlochModel.hh.

◆ taulim

const G4double G4hBetheBlochModel::taulim
private

Definition at line 107 of file G4hBetheBlochModel.hh.

◆ twoln10

const G4double G4hBetheBlochModel::twoln10
private

Definition at line 105 of file G4hBetheBlochModel.hh.


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