Geant4-11
Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes
G4hZiegler1985p Class Reference

#include <G4hZiegler1985p.hh>

Inheritance diagram for G4hZiegler1985p:
G4VhElectronicStoppingPower

Public Member Functions

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

Protected Member Functions

G4double GetHeMassAMU () const
 
G4double HeEffChargeSquare (const G4double z, const G4double kineticEnergyHe) const
 

Private Attributes

const G4double protonMassAMU
 
const G4double theHeMassAMU
 

Static Private Attributes

static const G4double a [92][8]
 

Detailed Description

Definition at line 59 of file G4hZiegler1985p.hh.

Constructor & Destructor Documentation

◆ G4hZiegler1985p()

G4hZiegler1985p::G4hZiegler1985p ( )
explicit

Definition at line 168 of file G4hZiegler1985p.cc.

◆ ~G4hZiegler1985p()

G4hZiegler1985p::~G4hZiegler1985p ( )

Definition at line 174 of file G4hZiegler1985p.cc.

175{;}

Member Function Documentation

◆ ElectronicStoppingPower()

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

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}
static constexpr double keV
Definition: G4SIunits.hh:202
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
static const G4double a[92][8]

References a, keV, and protonMassAMU.

Referenced by StoppingPower().

◆ GetHeMassAMU()

G4double G4VhElectronicStoppingPower::GetHeMassAMU ( ) const
inlineprotectedinherited

◆ HasMaterial()

G4bool G4hZiegler1985p::HasMaterial ( const G4Material material)
overridevirtual

Implements G4VhElectronicStoppingPower.

Definition at line 179 of file G4hZiegler1985p.cc.

180{
181 if(1 == (material->GetNumberOfElements())) return true;
182 return false ;
183}
string material
Definition: eplot.py:19

References eplot::material.

◆ HeEffChargeSquare()

G4double G4VhElectronicStoppingPower::HeEffChargeSquare ( const G4double  z,
const G4double  kineticEnergyHe 
) const
protectedinherited

This method returns He effective charge square parametrised according to J.F.Ziegler, J.P. Biersack, U. Littmark The Stopping and Range of Ions in Matter, Vol.1, Pergamon Press, 1985

Definition at line 69 of file G4VhElectronicStoppingPower.cc.

72{
73 // The aproximation of He effective charge from:
74 // J.F.Ziegler, J.P. Biersack, U. Littmark
75 // The Stopping and Range of Ions in Matter,
76 // Vol.1, Pergamon Press, 1985
77
78 static const G4double c[6] = {0.2865, 0.1266, -0.001429,
79 0.02402,-0.01135, 0.001475} ;
80
81 G4double e = std::log( std::max( 1.0, kineticEnergyHe/(keV*GetHeMassAMU()))) ;
82 G4double x = c[0] ;
83 G4double y = 1.0 ;
84 for (G4int i=1; i<6; i++) {
85 y *= e ;
86 x += y * c[i] ;
87 }
88
89 G4double w = 7.6 - e ;
90 w = 1.0 + (0.007 + 0.00005*z) * G4Exp( -w*w ) ;
91 w = 4.0 * (1.0 - G4Exp(-x)) * w * w ;
92 return w;
93}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References G4Exp(), G4VhElectronicStoppingPower::GetHeMassAMU(), keV, and G4INCL::Math::max().

Referenced by G4hICRU49He::ElectronicStoppingPower(), and G4hICRU49He::StoppingPower().

◆ StoppingPower()

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

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 ElectronicStoppingPower(G4double z, G4double kineticEnergy) const override

References ElectronicStoppingPower(), and eplot::material.

Field Documentation

◆ a

const G4double G4hZiegler1985p::a
staticprivate

Definition at line 74 of file G4hZiegler1985p.hh.

Referenced by ElectronicStoppingPower().

◆ protonMassAMU

const G4double G4hZiegler1985p::protonMassAMU
private

Definition at line 75 of file G4hZiegler1985p.hh.

Referenced by ElectronicStoppingPower().

◆ theHeMassAMU

const G4double G4VhElectronicStoppingPower::theHeMassAMU
privateinherited

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