140 G4cout <<
"G4BGGPionElasticXS::GetElementCrossSection for "
143 <<
" in nucleus Z= " <<
Z <<
" A= " <<
theA[
Z]
144 <<
" XS(b)= " << cross/
barn
163 G4cout <<
"G4BGGPionElasticXS::GetIsoCrossSection for "
166 <<
" in nucleus Z= " <<
Z <<
" A= " <<
A
167 <<
" XS(b)= " << cross/
barn
177 if(
fPion) {
return; }
179 G4cout <<
"G4BGGPionElasticXS::BuildPhysicsTable for "
186 ed <<
"This BGG cross section is applicable only to pions and not to "
188 G4Exception(
"G4BGGPionElasticXS::BuildPhysicsTable",
"had001",
200#ifdef G4MULTITHREADED
205#ifdef G4MULTITHREADED
222 for(
G4int iz=2; iz<93; ++iz) {
233 for(
G4int iz=2; iz<93; ++iz) {
249 for(
G4int iz=2; iz<93; ++iz) {
254 for(
G4int iz=2; iz<93; ++iz) {
272 return (kinEnergy > 0.0) ?
280 return 1.0/std::sqrt(kinEnergy);
288 outFile <<
"The Barashenkov-Glauber-Gribov cross section handles elastic\n"
289 <<
"scattering of pions from nuclei at all energies. The\n"
290 <<
"Barashenkov parameterization is used below 91 GeV and the\n"
291 <<
"Glauber-Gribov parameterization is used above 91 GeV.\n";
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
static constexpr double barn
static constexpr double GeV
static constexpr double MeV
#define G4MUTEX_INITIALIZER
#define G4MUTEXLOCK(mutex)
#define G4MUTEXUNLOCK(mutex)
G4GLOB_DLL std::ostream G4cout
G4double CoulombFactorPiPlus(G4double kinEnergy, G4int Z)
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr) final
const G4ParticleDefinition * theProton
static G4double theGlauberFacPiPlus[93]
G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *) final
~G4BGGPionElasticXS() final
G4BGGPionElasticXS(const G4ParticleDefinition *)
const G4ParticleDefinition * thePiPlus
static G4double theCoulombFacPiMinus[93]
G4UPiNuclearCrossSection * fPion
G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat) final
void CrossSectionDescription(std::ostream &) const final
G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm, const G4Material *mat) final
G4HadronNucleonXsc * fHadron
G4ComponentGGHadronNucleusXsc * fGlauber
void BuildPhysicsTable(const G4ParticleDefinition &) final
G4double FactorPiMinus(G4double kinEnergy)
static G4double theGlauberFacPiMinus[93]
static G4double theCoulombFacPiPlus[93]
G4double GetElasticGlauberGribov(const G4DynamicParticle *, G4int Z, G4int A)
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
void SetKineticEnergy(G4double aEnergy)
G4double GetElasticHadronNucleonXsc() const
G4double HadronNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
static G4HadronicParameters * Instance()
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
static G4double CoulombFactor(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
const G4String & GetParticleName() const
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
static G4Pow * GetInstance()
static G4Proton * Proton()
G4double GetElasticCrossSection(const G4DynamicParticle *aParticle, G4int Z, G4int A) const
void BuildPhysicsTable(const G4ParticleDefinition &) final
void SetMaxKinEnergy(G4double value)
void SetMinKinEnergy(G4double value)
void SetForAllAtomsAndEnergies(G4bool val)
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