Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4hSRIM2000p Class Reference

#include <G4hSRIM2000p.hh>

+ Inheritance diagram for G4hSRIM2000p:

Public Member Functions

 G4hSRIM2000p ()
 
 ~G4hSRIM2000p ()
 
G4bool HasMaterial (const G4Material *material)
 
G4double StoppingPower (const G4Material *material, G4double kineticEnergy)
 
G4double ElectronicStoppingPower (G4double z, G4double kineticEnergy) const
 
- Public Member Functions inherited from G4VhElectronicStoppingPower
 G4VhElectronicStoppingPower ()
 
virtual ~G4VhElectronicStoppingPower ()
 
virtual G4double StoppingPower (const G4Material *material, G4double kineticEnergy)=0
 
virtual G4bool HasMaterial (const G4Material *material)=0
 
virtual G4double ElectronicStoppingPower (G4double z, G4double kineticEnergy) const =0
 

Additional Inherited Members

- Protected Member Functions inherited from G4VhElectronicStoppingPower
G4double HeEffChargeSquare (const G4double z, const G4double kineticEnergyHe) const
 
G4double GetHeMassAMU () const
 

Detailed Description

Definition at line 58 of file G4hSRIM2000p.hh.

Constructor & Destructor Documentation

◆ G4hSRIM2000p()

G4hSRIM2000p::G4hSRIM2000p ( )

Definition at line 156 of file G4hSRIM2000p.cc.

157 protonMassAMU(1.007276)
158{;}

◆ ~G4hSRIM2000p()

G4hSRIM2000p::~G4hSRIM2000p ( )

Definition at line 162 of file G4hSRIM2000p.cc.

163{;}

Member Function Documentation

◆ ElectronicStoppingPower()

G4double G4hSRIM2000p::ElectronicStoppingPower ( G4double  z,
G4double  kineticEnergy 
) const
virtual

Implements G4VhElectronicStoppingPower.

Definition at line 191 of file G4hSRIM2000p.cc.

193{
194 G4double ionloss ;
195 G4int i = G4int(z) - 1 ; // index of atom
196 if(i < 0) i = 0 ;
197 if(i > 91) i = 91 ;
198
199 // Proton kinetic energy for parametrisation in Ziegler's units (keV/amu)
200
201 G4double T = kineticEnergy/(keV*protonMassAMU) ;
202
203
204
205 G4double e = T ;
206 if ( T < 25.0 ) e = 25.0 ;
207
208 // universal approximation
209 G4double slow = a[i][0] * std::pow(e, a[i][1]) + a[i][2] * std::pow(e, a[i][3]) ;
210 G4double shigh = std::log( a[i][6]/e + a[i][7]*e ) * a[i][4] / std::pow(e, a[i][5]) ;
211 ionloss = slow*shigh / (slow + shigh) ;
212
213 // low energy region
214 if ( T < 25.0 ) {
215
216 G4double sLocal = 0.45 ;
217 // light elements
218 if(6.5 > z) sLocal = 0.25 ;
219 // semiconductors
220 if(5 == i || 13 == i || 31 == i) sLocal = 0.375 ;
221
222 ionloss *= std::pow(T/25.0, sLocal) ;
223 }
224
225 if ( ionloss < 0.0) ionloss = 0.0 ;
226
227 return ionloss;
228}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85

Referenced by StoppingPower().

◆ HasMaterial()

G4bool G4hSRIM2000p::HasMaterial ( const G4Material material)
virtual

Implements G4VhElectronicStoppingPower.

Definition at line 167 of file G4hSRIM2000p.cc.

168{
169 if(1 == (material->GetNumberOfElements())) return true;
170 return false ;
171}
size_t GetNumberOfElements() const
Definition: G4Material.hh:184

◆ StoppingPower()

G4double G4hSRIM2000p::StoppingPower ( const G4Material material,
G4double  kineticEnergy 
)
virtual

Implements G4VhElectronicStoppingPower.

Definition at line 175 of file G4hSRIM2000p.cc.

177{
178 G4double ionloss = 0.0 ;
179
180 // pure material (normally not the case for this function)
181 if(1 == (material->GetNumberOfElements())) {
182 G4double z = material->GetZ() ;
183 ionloss = ElectronicStoppingPower( z, kineticEnergy ) ;
184 }
185
186 return ionloss;
187}
G4double GetZ() const
Definition: G4Material.cc:701
G4double ElectronicStoppingPower(G4double z, G4double kineticEnergy) const

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