69 if(kineticEnergy <= 0.0) {
return 0.0; }
72 if (kineticEnergy > thEnergy) { kineticEnergy = thEnergy; }
78 G4double alog10E = std::log10(kineticEnergy);
80 static const G4double nuleonRadius=1.36e-15;
87 G4double crossSection = 1.0E31*fac*fac2*(1. + 1./a13 - fac1);
90 crossSection *= (1 - 0.15*
G4Exp(-kineticEnergy))/(1.0 - 0.0007*a);
97 G4double ff4= 1.0 - (1.0/(1+
G4Exp(-8*ff1*(alog10E + 1.37*ff2))));
99 crossSection *= (1 + ff3*ff4);
103 ff1=1. - 1./a - 0.001*
a;
104 ff2=1.17 - 2.7/a - 0.0014*
a;
106 ff4=-8.*ff1*(alog10E + 2.0*ff2);
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
G4ProtonInelasticCrossSection()
G4double GetKineticEnergy() const
std::vector< ExP01TrackerHit * > a
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *)
~G4ProtonInelasticCrossSection()
G4ParticleDefinition * GetDefinition() const
static G4NistManager * Instance()
virtual G4bool IsElementApplicable(const G4DynamicParticle *aPart, G4int Z, const G4Material *)
static G4Proton * Proton()
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double GetAtomicMassAmu(const G4String &symb) const
static constexpr double GeV
static const G4double fac
static constexpr double pi
G4double GetProtonCrossSection(G4double kineticEnergy, G4int Z)
static constexpr double millibarn