G4hZiegler1985p Class Reference

#include <G4hZiegler1985p.hh>

Inheritance diagram for G4hZiegler1985p:

G4VhElectronicStoppingPower

Public Member Functions

 G4hZiegler1985p ()
 ~G4hZiegler1985p ()
G4bool HasMaterial (const G4Material *material)
G4double StoppingPower (const G4Material *material, G4double kineticEnergy)
G4double ElectronicStoppingPower (G4double z, G4double kineticEnergy) const

Detailed Description

Definition at line 59 of file G4hZiegler1985p.hh.


Constructor & Destructor Documentation

G4hZiegler1985p::G4hZiegler1985p (  ) 

Definition at line 168 of file G4hZiegler1985p.cc.

00168                                 :G4VhElectronicStoppingPower(), 
00169   protonMassAMU(1.007276)
00170 {;}

G4hZiegler1985p::~G4hZiegler1985p (  ) 

Definition at line 174 of file G4hZiegler1985p.cc.

00175 {;}


Member Function Documentation

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 }  


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