Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4hZiegler1985p Class Reference

#include <G4hZiegler1985p.hh>

Inheritance diagram for G4hZiegler1985p:

Public Member Functions

 G4hZiegler1985p ()
 ~G4hZiegler1985p ()
G4bool HasMaterial (const G4Material *material) override
G4double StoppingPower (const G4Material *material, G4double kineticEnergy) override
G4double ElectronicStoppingPower (G4double z, G4double kineticEnergy) const override
Public Member Functions inherited from G4VhElectronicStoppingPower
 G4VhElectronicStoppingPower ()
virtual ~G4VhElectronicStoppingPower ()
 G4VhElectronicStoppingPower (G4VhElectronicStoppingPower &)=delete
G4VhElectronicStoppingPoweroperator= (const G4VhElectronicStoppingPower &right)=delete

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::G4hZiegler1985p ( )
explicit

Definition at line 168 of file G4hZiegler1985p.cc.

169 protonMassAMU(1.007276)
170{;}

◆ ~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}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85

Referenced by StoppingPower().

◆ 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}
std::size_t GetNumberOfElements() const

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

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