93 std::vector<G4DynamicParticle*>*,
109 if(kinEnergy <= 0.0) {
return nloss; }
115 if(kinEnergy*proton_mass_c2/mass1 > z1*z1*
MeV) {
return nloss; }
125 for (
G4int iel=0; iel<numberOfElements; iel++) {
126 const G4Element* element = (*theElementVector)[iel] ;
151 else { rm = (mass1 + mass2)*
g4pow->
Z13(iz2); }
153 G4double er = 32.536 * mass2 * energy / ( z12 * rm ) ;
155 if (er >=
ed[0]) { nloss =
ad[0]; }
158 for (
G4int i=102; i>=0; --i)
161 nloss = (
ad[i] -
ad[i+1])*(er -
ed[i+1])/(
ed[i] -
ed[i+1]) +
ad[i+1];
171 G4double sig = 4.0 * mass1 * mass2 / ((mass1 + mass2)*(mass1 + mass2)*
172 (4.0 + 0.197/(er*er) + 6.584/er));
178 nloss *= 8.462 * z12 * mass1 / rm;
180 if ( nloss < 0.0) { nloss = 0.0; }
308 for(
G4int i=0; i<104; ++i) {
G4double NuclearStoppingPower(G4double kineticEnergy, G4double Z1, G4double Z2, G4double A1, G4double A2)
static G4Pow * GetInstance()
ThreeVector shoot(const G4int Ap, const G4int Af)
std::vector< G4Element * > G4ElementVector
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double, G4double)
const G4ElementVector * GetElementVector() const
virtual ~G4ICRU49NuclearStoppingModel()
G4double Z13(G4int Z) const
const G4double * GetAtomicNumDensityVector() const
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
G4double theZieglerFactor
G4double GetPDGMass() const
G4double energy(const ThreeVector &p, const G4double m)
G4double Z23(G4int Z) const
size_t GetNumberOfElements() const
static const double eplus
G4double GetPDGCharge() const
G4ICRU49NuclearStoppingModel(const G4String &nam="ICRU49NucStopping")
void InitialiseNuclearStopping()