Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4hZiegler1985Nuclear Class Reference

#include <G4hZiegler1985Nuclear.hh>

Inheritance diagram for G4hZiegler1985Nuclear:
Collaboration diagram for G4hZiegler1985Nuclear:

Public Member Functions

 G4hZiegler1985Nuclear ()
 
 ~G4hZiegler1985Nuclear ()
 
G4double NuclearStoppingPower (G4double kineticEnergy, G4double z1, G4double z2, G4double m1, G4double m2) const
 
- Public Member Functions inherited from G4VhNuclearStoppingPower
 G4VhNuclearStoppingPower ()
 
virtual ~G4VhNuclearStoppingPower ()
 
void SetNuclearStoppingFluctuationsOn ()
 
void SetNuclearStoppingFluctuationsOff ()
 

Additional Inherited Members

- Protected Attributes inherited from G4VhNuclearStoppingPower
G4bool lossFlucFlag
 

Detailed Description

Definition at line 58 of file G4hZiegler1985Nuclear.hh.

Constructor & Destructor Documentation

G4hZiegler1985Nuclear::G4hZiegler1985Nuclear ( )

Definition at line 63 of file G4hZiegler1985Nuclear.cc.

G4hZiegler1985Nuclear::~G4hZiegler1985Nuclear ( )

Definition at line 68 of file G4hZiegler1985Nuclear.cc.

69 {;}

Member Function Documentation

G4double G4hZiegler1985Nuclear::NuclearStoppingPower ( G4double  kineticEnergy,
G4double  z1,
G4double  z2,
G4double  m1,
G4double  m2 
) const
virtual

Implements G4VhNuclearStoppingPower.

Definition at line 73 of file G4hZiegler1985Nuclear.cc.

76 {
77  G4double energy = kineticEnergy/keV ; // energy in keV
78  G4double ionloss ;
79 
80  G4double rm = (m1 + m2Local) * ( std::pow(z1, .23) + std::pow(z2, .23)) ;
81 
82  G4double er = 32.536 * m2Local * energy / ( z1 * z2 * rm ) ; // reduced energy
83 
84  if ( er <= 30 ) {
85  ionloss = 0.5*std::log(1+1.1383*er)/
86  (er+0.01312*std::pow(er,0.21226)+0.19593*std::sqrt(er)) ;
87 
88  } else {
89  ionloss = 0.5*std::log(er)/er ;
90  }
91 
92  // Stragling
93  if(lossFlucFlag) {
94  G4double sig = 4.0 * m1 * m2Local / ((m1 + m2Local)*(m1 + m2Local)*
95  (4.0 + 0.197*std::pow(er,-1.6991)+6.584*std::pow(er,-1.0494))) ;
96 
97 
98  ionloss *= G4RandGauss::shoot(1.0,sig) ;
99  }
100 
101  ionloss *= 8.462 * z1 * z2 * m1 / rm ; // Return to [ev/(10^15 atoms/cm^2]
102 
103  if ( ionloss < 0.0) ionloss = 0.0 ;
104 
105  return ionloss;
106 }
ThreeVector shoot(const G4int Ap, const G4int Af)
G4double energy(const ThreeVector &p, const G4double m)
double G4double
Definition: G4Types.hh:76
static constexpr double keV
Definition: G4SIunits.hh:216

Here is the call graph for this function:


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