76 const G4double myNuleonRadius=1.36E-15;
84 pTarget = pTarget+pProjectile;
85 G4double E_cm = (pTarget.
mag()-targetMass-pProjectile.
m())/MeV;
86 if(E_cm <=
DBL_MIN) {
return result; }
88 G4double r_rms_p = 0.6 * myNuleonRadius *
89 std::pow(projectileAtomicNumber, 1./3.);
90 G4double r_rms_t = 0.6 * myNuleonRadius *
91 std::pow(targetAtomicNumber, 1./3.);
94 G4double r_p = 1.29*r_rms_p/nuleonRadius ;
95 G4double r_t = 1.29*r_rms_t/nuleonRadius;
99 1.2*(std::pow(targetAtomicNumber, 1./3.) +
100 std::pow(projectileAtomicNumber, 1./3.))/std::pow(E_cm, 1./3.);
103 G4double B = 1.44*nProjProtons*nTargetProtons/Radius;
104 if(E_cm <= B)
return result;
106 G4double Energy = kineticEnergy/projectileAtomicNumber;
118 if (nProjProtons==1 && projectileAtomicNumber==1)
122 else if (nProjProtons==2 && projectileAtomicNumber==4)
124 D = 2.77-(8.0E-3*targetAtomicNumber)+
125 (1.8E-5*targetAtomicNumber*targetAtomicNumber)
126 - 0.8/(1+std::exp((250.-Energy)/75.));
139 G4double C_E = D * (1-std::exp(-Energy/40.)) -
140 0.292*std::exp(-Energy/792.)*std::cos(0.229*std::pow(Energy, 0.453));
143 G4double S = std::pow(projectileAtomicNumber, 1./3.)*
144 std::pow(targetAtomicNumber, 1./3.)/
145 (std::pow(projectileAtomicNumber, 1./3.) +
146 std::pow(targetAtomicNumber, 1./3.));
149 G4double deltaE = 1.85*S + 0.16*S/std::pow(E_cm,1./3.) - C_E +
150 0.91*(targetAtomicNumber-2.*nTargetProtons)*nProjProtons/
151 (targetAtomicNumber*projectileAtomicNumber);
154 result = pi * nuleonRadius*nuleonRadius *
155 std::pow(( std::pow(targetAtomicNumber, 1./3.) +
156 std::pow(projectileAtomicNumber, 1./3.) + deltaE),2.) *
159 if(result < 0.) { result = 0.; }
G4ParticleDefinition * GetDefinition() const
G4LorentzVector Get4Momentum() const
G4double GetKineticEnergy() const
G4double GetIonMass(G4int Z, G4int A, G4int L=0) const
!! Only ground states are supported now
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
G4double GetPDGCharge() const
G4int GetBaryonNumber() const
static G4ParticleTable * GetParticleTable()
G4IonTable * GetIonTable()
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *)
virtual G4bool IsElementApplicable(const G4DynamicParticle *aPart, G4int Z, const G4Material *)
~G4TripathiCrossSection()