Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4hSRIM2000p Class Reference

#include <G4hSRIM2000p.hh>

Inheritance diagram for G4hSRIM2000p:
Collaboration 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 ()
 

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 ( )

Definition at line 156 of file G4hSRIM2000p.cc.

157  protonMassAMU(1.007276)
158 {;}
G4hSRIM2000p::~G4hSRIM2000p ( )

Definition at line 162 of file G4hSRIM2000p.cc.

163 {;}

Member Function Documentation

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 }
int G4int
Definition: G4Types.hh:78
double G4double
Definition: G4Types.hh:76
static constexpr double keV
Definition: G4SIunits.hh:216

Here is the caller graph for this function:

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:186

Here is the call graph for this function:

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:623
G4double ElectronicStoppingPower(G4double z, G4double kineticEnergy) const
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:


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