G4hZiegler1977Nuclear Class Reference

#include <G4hZiegler1977Nuclear.hh>

Inheritance diagram for G4hZiegler1977Nuclear:

G4VhNuclearStoppingPower

Public Member Functions

 G4hZiegler1977Nuclear ()
 ~G4hZiegler1977Nuclear ()
G4double NuclearStoppingPower (G4double kineticEnergy, G4double z1, G4double z2, G4double m1, G4double m2) const

Detailed Description

Definition at line 57 of file G4hZiegler1977Nuclear.hh.


Constructor & Destructor Documentation

G4hZiegler1977Nuclear::G4hZiegler1977Nuclear (  ) 

Definition at line 62 of file G4hZiegler1977Nuclear.cc.

00062                                             :G4VhNuclearStoppingPower()
00063 {;}

G4hZiegler1977Nuclear::~G4hZiegler1977Nuclear (  ) 

Definition at line 67 of file G4hZiegler1977Nuclear.cc.

00068 {;}


Member Function Documentation

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:14 2013 for Geant4 by  doxygen 1.4.7