56 outFile <<
"G4IonsShenCrossSection calculates the total reaction cross\n"
57 <<
"section for nucleus-nucleus scattering using the Shen\n"
58 <<
"parameterization. It is valid for projectiles and targets of\n"
59 <<
"all Z, and projectile energies up to 1 TeV/n. Above 10 GeV/n"
60 <<
"the cross section is constant. Below 10 MeV/n zero cross\n"
91 if ( ke_per_N > upperLimit ) { ke_per_N = upperLimit; }
101 G4double Rt = 1.12 * cubicrAt - 0.94 * ( 1.0 / cubicrAt );
102 G4double Rp = 1.12 * cubicrAp - 0.94 * ( 1.0 / cubicrAp );
111 G4double Ecm = calEcmValue (proj_mass, targ_mass, proj_momentum);
113 G4double B = 1.44 * Zt * Zp / r - b * Rt * Rp / ( Rt + Rp );
114 if(Ecm <= B) {
return xsection; }
118 G4double R1 = r0 * (cubicrAt + cubicrAp + 1.85*cubicrAt*cubicrAp/(cubicrAt + cubicrAp) - c);
120 G4double R2 = 1.0 * ( At - 2 * Zt ) * Zp / ( Ap * At );
123 G4double R3 = (0.176 / g4pow->
A13(Ecm)) * cubicrAt * cubicrAp /(cubicrAt + cubicrAp);
127 xsection = 10 *
pi * R * R * ( 1 - B / Ecm );
137 G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
138 G4double Ecm = std::sqrt ( mp * mp + mt * mt + 2 * Elab * mt );
140 G4double KEcm = std::sqrt ( Pcm * Pcm + mp * mp ) - mp;
155 G4double log10_ke = std::log10 ( ke );
static G4Pow * GetInstance()
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double GetKineticEnergy() const
virtual void CrossSectionDescription(std::ostream &) const
virtual ~G4IonsShenCrossSection()
G4ParticleDefinition * GetDefinition() const
static G4NistManager * Instance()
G4double Z13(G4int Z) const
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *)
G4double A13(G4double A) const
virtual G4bool IsElementApplicable(const G4DynamicParticle *aDP, G4int Z, const G4Material *)
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
G4double GetPDGCharge() const
G4ThreeVector GetMomentum() const
G4int GetBaryonNumber() const