70 theZieglerFactor =
eV*
cm2*1.0e-15;
89 std::vector<G4DynamicParticle*>*,
105 if(kinEnergy <= 0.0) {
return nloss; }
121 for (
G4int iel=0; iel<numberOfElements; iel++) {
122 const G4Element* element = (*theElementVector)[iel] ;
125 nloss += (NuclearStoppingPower(kinEnergy, z1, z2, mass1, mass2))
128 nloss *= theZieglerFactor;
135 G4ICRU49NuclearStoppingModel::NuclearStoppingPower(
G4double kineticEnergy,
146 if(iz1 > 1) { rm = (mass1 + mass2)*(g4calc->
Z23(iz1) + g4calc->
Z23(iz2)); }
147 else { rm = (mass1 + mass2)*g4calc->
Z13(iz2); }
149 G4double er = 32.536 * mass2 * energy / ( z12 * rm ) ;
151 static const G4double nuca[104][2] = {
270 if (er >= nuca[0][0]) { nloss = nuca[0][1]; }
273 for (
G4int i=102; i>=0; --i) {
279 nloss = (ai - ai1)*(er - edi1)/(edi - edi1) + ai1;
287 G4double sig = 4.0 * mass1 * mass2 / ((mass1 + mass2)*(mass1 + mass2)*
288 (4.0 + 0.197/(er*er) + 6.584/er));
291 lossFlucFlag =
false;
294 nloss *= 8.462 * z12 * mass1 / rm;
static G4Pow * GetInstance()
ThreeVector shoot(const G4int Ap, const G4int Af)
std::vector< G4Element * > G4ElementVector
static constexpr double proton_mass_c2
static constexpr double cm2
const G4ElementVector * GetElementVector() const
virtual ~G4ICRU49NuclearStoppingModel()
G4double Z13(G4int Z) const
static constexpr double eplus
static constexpr double eV
static constexpr double amu_c2
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double, G4double) final
const G4double * GetAtomicNumDensityVector() const
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX) final
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) final
G4double GetPDGMass() const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double energy(const ThreeVector &p, const G4double m)
G4double Z23(G4int Z) const
static constexpr double MeV
size_t GetNumberOfElements() const
G4double GetPDGCharge() const
G4ICRU49NuclearStoppingModel(const G4String &nam="ICRU49NucStopping")
static constexpr double keV