116 if (verboseLevel >= 2)
119 G4cout <<
"In G4GeneralSpaceNNCrossSection::GetCrossSection" <<
G4endl;
120 G4cout <<
"Projectile A = " <<std::setw(8) <<AP
121 <<
" Z = " <<std::setw(8) <<ZP
124 G4cout <<
"Target Z = " <<std::setw(8) <<ZT
131 result = protonInelastic->
132 GetElementCrossSection(theProjectile, ZT, mat);
133 if (verboseLevel >= 2)
134 G4cout <<
"Selecting G4ProtonInelasticCrossSection" <<
G4endl;
138 result = TripathiLight->
139 GetElementCrossSection(theProjectile, ZT, mat);
140 if (verboseLevel >= 2)
141 G4cout <<
"Selecting G4TripathiLightCrossSection" <<
G4endl;
149 GetElementCrossSection(theProjectile, ZT, mat);
150 if (verboseLevel >= 2)
155 result = TripathiLight->
156 GetElementCrossSection(theProjectile, ZT, mat);
157 if (verboseLevel >= 2)
158 G4cout <<
"Selecting G4TripathiLightCrossSection" <<
G4endl;
163 if (TripathiLight->IsElementApplicable(theProjectile, ZT, mat))
165 result = TripathiLight->
166 GetElementCrossSection(theProjectile, ZT, mat);
167 if (verboseLevel >= 2)
168 G4cout <<
"Selecting G4TripathiLightCrossSection" <<
G4endl;
170 else if (TripathiGeneral->IsElementApplicable(theProjectile, ZT, mat))
172 result = TripathiGeneral->
173 GetElementCrossSection(theProjectile, ZT, mat);
174 if (verboseLevel >= 2)
177 else if (Shen->IsElementApplicable(theProjectile, ZT, mat))
180 GetElementCrossSection(theProjectile, ZT, mat);
181 if (verboseLevel >= 2)
185 if (verboseLevel >= 2)
199 outFile <<
"G4GeneralSpaceNNCrossSection calculates hadronic inelastic\n"
200 <<
"cross sections of interest in space science, by using the\n"
201 <<
"following cross sections:\n"
202 <<
"- G4ProtonInelasticCrossSection : for proton projectile\n"
203 <<
" on targets with Z > 5;\n"
204 <<
"- G4TripathiLightCrossSection : for proton projectile\n"
205 <<
" on targets with Z <= 5;\n"
206 <<
" for targets with Z = 1 and projectile Z <= 5;\n"
207 <<
" for neutron, or deuteron, or 3He, or alpha projectile\n"
208 <<
" with kinetic energy less than 10 GeV per nucleon,\n"
209 <<
" in any target;\n"
210 <<
" for 3He and 4He targets, for any projectile with\n"
211 <<
" kinetic energy less than 10 GeV per nucleon;\n"
212 <<
"- G4IonProtonCrossSection : for projectile with Z > 5\n"
213 <<
" on hydrogen target;\n"
214 <<
"- G4TripathiCrossSection : for any projectile with A >=3\n"
215 <<
" and kinetic energy less than 1 GeV per nucleon,\n"
216 <<
" for any target, if the previous cross section is\n"
217 <<
" not applicable;\n"
218 <<
"- G4IonsShenCrossSection : in all remaining cases, up to\n"
219 <<
" projectile kinetic energy of 1 TeV per nucleon.\n";
G4IonProtonCrossSection * ionProton
G4double GetPDGCharge() const
static G4Proton * Proton()
virtual G4double GetElementCrossSection(const G4DynamicParticle *theProjectile, G4int Z, const G4Material *)
static constexpr double millibarn
G4ParticleDefinition * GetDefinition() const
G4int GetBaryonNumber() const
~G4GeneralSpaceNNCrossSection()
virtual void CrossSectionDescription(std::ostream &outFile) const
G4ProtonInelasticCrossSection * protonInelastic
virtual G4bool IsElementApplicable(const G4DynamicParticle *theProjectile, G4int Z, const G4Material *)
G4double G4ParticleHPJENDLHEData::G4double result
static constexpr double eplus
G4GeneralSpaceNNCrossSection()
G4TripathiLightCrossSection * TripathiLight
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
G4TripathiCrossSection * TripathiGeneral
G4IonsShenCrossSection * Shen