#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 |
Definition at line 58 of file G4hSRIM2000p.hh.
G4hSRIM2000p::G4hSRIM2000p | ( | ) |
Definition at line 156 of file G4hSRIM2000p.cc.
00156 :G4VhElectronicStoppingPower(), 00157 protonMassAMU(1.007276) 00158 {;}
G4hSRIM2000p::~G4hSRIM2000p | ( | ) |
G4double G4hSRIM2000p::ElectronicStoppingPower | ( | G4double | z, | |
G4double | kineticEnergy | |||
) | const [virtual] |
Implements G4VhElectronicStoppingPower.
Definition at line 191 of file G4hSRIM2000p.cc.
Referenced by StoppingPower().
00193 { 00194 G4double ionloss ; 00195 G4int i = G4int(z) - 1 ; // index of atom 00196 if(i < 0) i = 0 ; 00197 if(i > 91) i = 91 ; 00198 00199 // Proton kinetic energy for parametrisation in Ziegler's units (keV/amu) 00200 00201 G4double T = kineticEnergy/(keV*protonMassAMU) ; 00202 00203 00204 00205 G4double e = T ; 00206 if ( T < 25.0 ) e = 25.0 ; 00207 00208 // universal approximation 00209 G4double slow = a[i][0] * std::pow(e, a[i][1]) + a[i][2] * std::pow(e, a[i][3]) ; 00210 G4double shigh = std::log( a[i][6]/e + a[i][7]*e ) * a[i][4] / std::pow(e, a[i][5]) ; 00211 ionloss = slow*shigh / (slow + shigh) ; 00212 00213 // low energy region 00214 if ( T < 25.0 ) { 00215 00216 G4double sLocal = 0.45 ; 00217 // light elements 00218 if(6.5 > z) sLocal = 0.25 ; 00219 // semiconductors 00220 if(5 == i || 13 == i || 31 == i) sLocal = 0.375 ; 00221 00222 ionloss *= std::pow(T/25.0, sLocal) ; 00223 } 00224 00225 if ( ionloss < 0.0) ionloss = 0.0 ; 00226 00227 return ionloss; 00228 }
G4bool G4hSRIM2000p::HasMaterial | ( | const G4Material * | material | ) | [virtual] |
Implements G4VhElectronicStoppingPower.
Definition at line 167 of file G4hSRIM2000p.cc.
References G4Material::GetNumberOfElements().
00168 { 00169 if(1 == (material->GetNumberOfElements())) return true; 00170 return false ; 00171 }
G4double G4hSRIM2000p::StoppingPower | ( | const G4Material * | material, | |
G4double | kineticEnergy | |||
) | [virtual] |
Implements G4VhElectronicStoppingPower.
Definition at line 175 of file G4hSRIM2000p.cc.
References ElectronicStoppingPower(), G4Material::GetNumberOfElements(), and G4Material::GetZ().
00177 { 00178 G4double ionloss = 0.0 ; 00179 00180 // pure material (normally not the case for this function) 00181 if(1 == (material->GetNumberOfElements())) { 00182 G4double z = material->GetZ() ; 00183 ionloss = ElectronicStoppingPower( z, kineticEnergy ) ; 00184 } 00185 00186 return ionloss; 00187 }