#include <G4hZiegler1985p.hh>
Inheritance diagram for G4hZiegler1985p:
Public Member Functions | |
G4hZiegler1985p () | |
~G4hZiegler1985p () | |
G4bool | HasMaterial (const G4Material *material) |
G4double | StoppingPower (const G4Material *material, G4double kineticEnergy) |
G4double | ElectronicStoppingPower (G4double z, G4double kineticEnergy) const |
Definition at line 59 of file G4hZiegler1985p.hh.
G4hZiegler1985p::G4hZiegler1985p | ( | ) |
Definition at line 168 of file G4hZiegler1985p.cc.
00168 :G4VhElectronicStoppingPower(), 00169 protonMassAMU(1.007276) 00170 {;}
G4hZiegler1985p::~G4hZiegler1985p | ( | ) |
G4double G4hZiegler1985p::ElectronicStoppingPower | ( | G4double | z, | |
G4double | kineticEnergy | |||
) | const [virtual] |
Implements G4VhElectronicStoppingPower.
Definition at line 203 of file G4hZiegler1985p.cc.
Referenced by StoppingPower().
00205 { 00206 G4double ionloss ; 00207 G4int i = G4int(z) - 1 ; // index of atom 00208 if(i < 0) i = 0 ; 00209 if(i > 91) i = 91 ; 00210 00211 // The data and the fit from: 00212 // J.F.Ziegler, J.P.Biersack, U.Littmark The Stoping and 00213 // Range of Ions in Solids, Vol.1, Pergamon Press, 1985 00214 // Proton kinetic energy for parametrisation in Ziegler's units (keV/amu) 00215 00216 G4double T = kineticEnergy/(keV*protonMassAMU) ; 00217 00218 00219 00220 G4double e = T ; 00221 if ( T < 25.0 ) e = 25.0 ; 00222 00223 // universal approximation 00224 G4double slow = a[i][0] * std::pow(e, a[i][1]) + a[i][2] * std::pow(e, a[i][3]) ; 00225 G4double shigh = std::log( a[i][6]/e + a[i][7]*e ) * a[i][4] / std::pow(e, a[i][5]) ; 00226 ionloss = slow*shigh / (slow + shigh) ; 00227 00228 // low energy region 00229 if ( T < 25.0 ) { 00230 00231 G4double sLocal = 0.45 ; 00232 // light elements 00233 if(6.5 > z) sLocal = 0.25 ; 00234 // semiconductors 00235 if(5 == i || 13 == i || 31 == i) sLocal = 0.375 ; 00236 00237 ionloss *= std::pow(T/25.0, sLocal) ; 00238 } 00239 00240 if ( ionloss < 0.0) ionloss = 0.0 ; 00241 00242 return ionloss; 00243 }
G4bool G4hZiegler1985p::HasMaterial | ( | const G4Material * | material | ) | [virtual] |
Implements G4VhElectronicStoppingPower.
Definition at line 179 of file G4hZiegler1985p.cc.
References G4Material::GetNumberOfElements().
00180 { 00181 if(1 == (material->GetNumberOfElements())) return true; 00182 return false ; 00183 }
G4double G4hZiegler1985p::StoppingPower | ( | const G4Material * | material, | |
G4double | kineticEnergy | |||
) | [virtual] |
Implements G4VhElectronicStoppingPower.
Definition at line 187 of file G4hZiegler1985p.cc.
References ElectronicStoppingPower(), G4Material::GetNumberOfElements(), and G4Material::GetZ().
00189 { 00190 G4double ionloss = 0.0 ; 00191 00192 // pure material (normally not the case for this function) 00193 if(1 == (material->GetNumberOfElements())) { 00194 G4double z = material->GetZ() ; 00195 ionloss = ElectronicStoppingPower( z, kineticEnergy ) ; 00196 } 00197 00198 return ionloss; 00199 }