95 G4MUTEXLOCK(&G4ICRU49NuclearStoppingModel::ICRU49NuclearMutex);
98 for(
G4int i=2; i<100; ++i) {
102#ifdef G4MULTITHREADED
104 G4MUTEXUNLOCK(&G4ICRU49NuclearStoppingModel::ICRU49NuclearMutex);
113 std::vector<G4DynamicParticle*>*,
129 if(kinEnergy <= 0.0) {
return nloss; }
145 for (
G4int iel=0; iel<numberOfElements; ++iel) {
146 const G4Element* element = (*theElementVector)[iel] ;
172 rm = (mass1 + mass2)*(
Z23[iz1] +
Z23[iz2]);
181 static const G4double nuca[104][2] = {
300 if (er >= nuca[0][0]) { nloss = nuca[0][1]; }
303 for (
G4int i=102; i>=0; --i) {
309 nloss = (ai - ai1)*(er - edi1)/(edi - edi1) + ai1;
317 G4double sig = 4.0 * mass1 * mass2 / ((mass1 + mass2)*(mass1 + mass2)*
318 (4.0 + 0.197/(er*er) + 6.584/er));
323 nloss *= 8.462 * z12 * mass1 / rm;
std::vector< const G4Element * > G4ElementVector
static constexpr double cm2
static constexpr double eplus
static constexpr double keV
static constexpr double eV
static constexpr double MeV
#define G4MUTEX_INITIALIZER
#define G4MUTEXLOCK(mutex)
#define G4MUTEXUNLOCK(mutex)
void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double, G4double) final
void Initialise(const G4ParticleDefinition *, const G4DataVector &) final
G4double theZieglerFactor
G4ICRU49NuclearStoppingModel(const G4String &nam="ICRU49NucStopping")
~G4ICRU49NuclearStoppingModel() override
G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX) final
G4double NuclearStoppingPower(G4double kineticEnergy, G4double Z1, G4double Z2, G4double A1, G4double A2)
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
ThreeVector shoot(const G4int Ap, const G4int Af)
G4double energy(const ThreeVector &p, const G4double m)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments