149{
153
159
161 if(z > 109) { z = 109; }
162
163 G4double gamma=1.0 + ep/atomic_mass_unit;
164 beta2=1.0-1.0/(gamma*gamma);
166
168
169 G4double f = domega2dx_constant*zp_eff*zp_eff*zt/at;
170
172 24.89 * g4calc->
powA(zt,1.2324)/(electron_mass*1e6 * beta2)*
173 G4Log( 2.0*electron_mass*1e6*beta2/(33.05*g4calc->
powA(zt,1.6364)));
174 cor = std::max(cor, 0.0 );
175
176
177 if(ep<tableE[0])ep = tableE[0];
178 G4double da = (
ap - element_atomic_weights[z])/element_atomic_weights[z];
179
180 G4double v3 = EnergyTable_interpolate(tableE,ep,ls_X_coefficients_a[z-1]);
181 G4double v4 = EnergyTable_interpolate(tableE,ep,ls_X_coefficients_ahi[z-1]);
184 X *= gamma*gamma;
185
187 if(ep<30.0){
188
189 G4double factor = 4.8184e-3*g4calc->
powA(zp+zt,8.0/3.0)/at;
190 sse = std::min(f*(X+cor), factor*beta2/fine_structure/fine_structure);
191 }else{
192
193 sse = f*X;
194 }
195
196 return sse*length/(cm)*mat->
GetDensity()/(g/cm3);
197}
G4double G4Log(G4double x)
void InitialiseMe(const G4ParticleDefinition *) override
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double GetZeffective() const
G4double GetDensity() const
G4IonisParamMat * GetIonisation() const
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
G4double GetPDGMass() const
G4double GetPDGCharge() const
G4double powA(G4double A, G4double y) const
G4double Z23(G4int Z) const