65G4double G4ICRU49NuclearStoppingModel::Z23[] = {0.0};
75 theZieglerFactor = eV*cm2*1.0e-15;
92void G4ICRU49NuclearStoppingModel::InitialiseArray()
94 if(0.0 != Z23[1]) {
return; }
97 for(
G4int i=2; i<100; ++i) {
98 Z23[i] = g4calc->
powZ(i, 0.23);
109 std::vector<G4DynamicParticle*>*,
125 if(kinEnergy <= 0.0) {
return nloss; }
131 if(kinEnergy*proton_mass_c2/mass1 > z1*z1*MeV) {
return nloss; }
141 for (std::size_t iel=0; iel<numberOfElements; ++iel) {
142 const G4Element* element = (*theElementVector)[iel] ;
145 nloss += (NuclearStoppingPower(kinEnergy, z1, z2, mass1, mass2))
148 nloss *= theZieglerFactor;
156G4ICRU49NuclearStoppingModel::NuclearStoppingPower(
G4double kineticEnergy,
160 G4double energy = kineticEnergy/keV ;
168 rm = (mass1 + mass2)*(Z23[iz1] + Z23[iz2]);
170 rm = (mass1 + mass2)*g4calc->
Z13(
G4lrint(z2));
177 static const G4double nuca[104][2] = {
296 if (er >= nuca[0][0]) { nloss = nuca[0][1]; }
299 for (
G4int i=102; i>=0; --i) {
305 nloss = (ai - ai1)*(er - edi1)/(edi - edi1) + ai1;
313 G4double sig = 4.0 * mass1 * mass2 / ((mass1 + mass2)*(mass1 + mass2)*
314 (4.0 + 0.197/(er*er) + 6.584/er));
316 nloss *= G4RandGauss::shoot(1.0,sig);
319 nloss *= 8.462 * z12 * mass1 / rm;
321 nloss = std::max(nloss, 0.0);
std::vector< const G4Element * > G4ElementVector
#define G4MUTEX_INITIALIZER
void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double, G4double) final
void Initialise(const G4ParticleDefinition *, const G4DataVector &) final
G4ICRU49NuclearStoppingModel(const G4String &nam="ICRU49NucStopping")
~G4ICRU49NuclearStoppingModel() override
G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX) final
const G4ElementVector * GetElementVector() const
size_t GetNumberOfElements() const
const G4double * GetAtomicNumDensityVector() const
G4double GetPDGMass() const
G4double GetPDGCharge() const
static G4Pow * GetInstance()
G4double powZ(G4int Z, G4double y) const
G4double Z13(G4int Z) const
G4double energy(const ThreeVector &p, const G4double m)