#include <G4hZiegler1977Nuclear.hh>
Inheritance diagram for G4hZiegler1977Nuclear:
Public Member Functions | |
G4hZiegler1977Nuclear () | |
~G4hZiegler1977Nuclear () | |
G4double | NuclearStoppingPower (G4double kineticEnergy, G4double z1, G4double z2, G4double m1, G4double m2) const |
Definition at line 57 of file G4hZiegler1977Nuclear.hh.
G4hZiegler1977Nuclear::G4hZiegler1977Nuclear | ( | ) |
G4hZiegler1977Nuclear::~G4hZiegler1977Nuclear | ( | ) |
G4double G4hZiegler1977Nuclear::NuclearStoppingPower | ( | G4double | kineticEnergy, | |
G4double | z1, | |||
G4double | z2, | |||
G4double | m1, | |||
G4double | m2 | |||
) | const [virtual] |
Implements G4VhNuclearStoppingPower.
Definition at line 72 of file G4hZiegler1977Nuclear.cc.
References G4VhNuclearStoppingPower::lossFlucFlag.
00075 { 00076 G4double energy = kineticEnergy/keV ; // energy in keV 00077 G4double ionloss ; 00078 00079 G4double rm = (m1 + m2Local) * std::sqrt( std::pow(z1, 0.667) + std::pow(z2, 0.667) ) ; 00080 00081 G4double er = 32.53 * m2Local * energy / ( z1 * z2 * rm ) ; // reduced energy 00082 00083 if ( er < 0.01 ) { 00084 ionloss = std::sqrt(er) * 1.593 ; 00085 00086 } else if ( er < 10.0 ) { 00087 ionloss = 1.7 * std::sqrt(er) * std::log(er + std::exp(1.0)) / 00088 (1.0 + 6.8 * er + 3.4 * std::pow(er, 1.5)) ; 00089 00090 } else { 00091 ionloss = std::log(0.47 * er) * 0.5 / er ; 00092 } 00093 00094 // Stragling 00095 if(lossFlucFlag) { 00096 G4double sig = 4.0 * m1 * m2Local * std::sqrt( (std::pow(z1, 0.23) + std::pow(z2, 0.23)) / 00097 (std::pow(z1, 0.667) + std::pow(z2, 0.667)) ) 00098 / ((m1 +m2Local)*(m1 + m2Local)* 00099 (4.0 + 0.197*std::pow(er,-1.6991)+6.584*std::pow(er,-1.0494))) ; 00100 00101 ionloss *= G4RandGauss::shoot(1.0,sig) ; 00102 } 00103 00104 ionloss *= 8.462 * z1 * z2 * m1 / rm ; // Return to [ev/(10^15 atoms/cm^2] 00105 00106 if ( ionloss < 0.0) ionloss = 0.0 ; 00107 00108 return ionloss; 00109 }