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

#include <G4hZiegler1985p.hh>

Inheritance diagram for G4hZiegler1985p:
Collaboration 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
 
- Public Member Functions inherited from G4VhElectronicStoppingPower
 G4VhElectronicStoppingPower ()
 
virtual ~G4VhElectronicStoppingPower ()
 

Additional Inherited Members

- Protected Member Functions inherited from G4VhElectronicStoppingPower
G4double HeEffChargeSquare (const G4double z, const G4double kineticEnergyHe) const
 
G4double GetHeMassAMU () const
 

Detailed Description

Definition at line 59 of file G4hZiegler1985p.hh.

Constructor & Destructor Documentation

G4hZiegler1985p::G4hZiegler1985p ( )

Definition at line 168 of file G4hZiegler1985p.cc.

169  protonMassAMU(1.007276)
170 {;}
G4hZiegler1985p::~G4hZiegler1985p ( )

Definition at line 174 of file G4hZiegler1985p.cc.

175 {;}

Member Function Documentation

G4double G4hZiegler1985p::ElectronicStoppingPower ( G4double  z,
G4double  kineticEnergy 
) const
virtual

Implements G4VhElectronicStoppingPower.

Definition at line 203 of file G4hZiegler1985p.cc.

205 {
206  G4double ionloss ;
207  G4int i = G4int(z) - 1 ; // index of atom
208  if(i < 0) i = 0 ;
209  if(i > 91) i = 91 ;
210 
211  // The data and the fit from:
212  // J.F.Ziegler, J.P.Biersack, U.Littmark The Stoping and
213  // Range of Ions in Solids, Vol.1, Pergamon Press, 1985
214  // Proton kinetic energy for parametrisation in Ziegler's units (keV/amu)
215 
216  G4double T = kineticEnergy/(keV*protonMassAMU) ;
217 
218 
219 
220  G4double e = T ;
221  if ( T < 25.0 ) e = 25.0 ;
222 
223  // universal approximation
224  G4double slow = a[i][0] * std::pow(e, a[i][1]) + a[i][2] * std::pow(e, a[i][3]) ;
225  G4double shigh = std::log( a[i][6]/e + a[i][7]*e ) * a[i][4] / std::pow(e, a[i][5]) ;
226  ionloss = slow*shigh / (slow + shigh) ;
227 
228  // low energy region
229  if ( T < 25.0 ) {
230 
231  G4double sLocal = 0.45 ;
232  // light elements
233  if(6.5 > z) sLocal = 0.25 ;
234  // semiconductors
235  if(5 == i || 13 == i || 31 == i) sLocal = 0.375 ;
236 
237  ionloss *= std::pow(T/25.0, sLocal) ;
238  }
239 
240  if ( ionloss < 0.0) ionloss = 0.0 ;
241 
242  return ionloss;
243 }
int G4int
Definition: G4Types.hh:78
tuple z
Definition: test.py:28
double G4double
Definition: G4Types.hh:76
static constexpr double keV
Definition: G4SIunits.hh:216

Here is the caller graph for this function:

G4bool G4hZiegler1985p::HasMaterial ( const G4Material material)
virtual

Implements G4VhElectronicStoppingPower.

Definition at line 179 of file G4hZiegler1985p.cc.

180 {
181  if(1 == (material->GetNumberOfElements())) return true;
182  return false ;
183 }
size_t GetNumberOfElements() const
Definition: G4Material.hh:186

Here is the call graph for this function:

G4double G4hZiegler1985p::StoppingPower ( const G4Material material,
G4double  kineticEnergy 
)
virtual

Implements G4VhElectronicStoppingPower.

Definition at line 187 of file G4hZiegler1985p.cc.

189 {
190  G4double ionloss = 0.0 ;
191 
192  // pure material (normally not the case for this function)
193  if(1 == (material->GetNumberOfElements())) {
194  G4double z = material->GetZ() ;
195  ionloss = ElectronicStoppingPower( z, kineticEnergy ) ;
196  }
197 
198  return ionloss;
199 }
G4double GetZ() const
Definition: G4Material.cc:623
G4double ElectronicStoppingPower(G4double z, G4double kineticEnergy) const
tuple z
Definition: test.py:28
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:


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