60 fGlauberEnergy = 91.*GeV;
62 fSAIDHighEnergyLimit = 1.3*GeV;
63 for (
G4int i = 0; i < 93; ++i) {
64 theGlauberFac[i] = 0.0;
65 theCoulombFac[i] = 0.0;
75 isInitialized =
false;
102 return (1 == Z && 2 >= A);
119 if(Z > 92) { Z = 92; }
121 if(ekin <= fLowEnergy) {
122 cross = theCoulombFac[Z];
124 }
else if(ekin > fGlauberEnergy) {
132 G4cout <<
"G4BGGNucleonElasticXS::GetElementCrossSection for "
135 <<
" in nucleus Z= " << Z <<
" A= " << theA[Z]
136 <<
" XS(b)= " << cross/barn
156 if(ekin <= fSAIDHighEnergyLimit) {
168 G4cout <<
"G4BGGNucleonElasticXS::GetIsoCrossSection for "
171 <<
" in nucleus Z= " << Z <<
" A= " << A
172 <<
" XS(b)= " << cross/barn
186 G4cout <<
"### G4BGGNucleonElasticXS WARNING: is not applicable to "
190 "G4BGGNucleonElasticXS::BuildPhysicsTable is used for wrong particle");
194 if(isInitialized) {
return; }
195 isInitialized =
true;
204 if(particle == theProton) {
206 fSAIDHighEnergyLimit = 3*GeV;
219 G4cout <<
"### G4BGGNucleonElasticXS::Initialise for "
223 for(
G4int iz=2; iz<93; iz++) {
231 theGlauberFac[iz] = csdn/csup;
233 G4cout <<
"Z= " << iz <<
" A= " << A
234 <<
" factor= " << theGlauberFac[iz] <<
G4endl;
243 G4cout <<
"Z=1 A=1" <<
" CoulombFactor= " << theCoulombFac[1] <<
G4endl;
247 for(
G4int iz=2; iz<93; iz++) {
250 G4cout <<
"Z= " << iz <<
" A= " << theA[iz]
251 <<
" factor= " << theCoulombFac[iz] <<
G4endl;
260 outFile <<
"The Barashenkov-Glauber-Gribov cross section handles elastic\n"
261 <<
"scattering of protons and neutrons from nuclei using the\n"
262 <<
"Barashenkov parameterization below 91 GeV and the Glauber-Gribov\n"
263 <<
"parameterization above 91 GeV. n";
G4DLLIMPORT std::ostream G4cout
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat=0)
virtual void CrossSectionDescription(std::ostream &) const
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
G4BGGNucleonElasticXS(const G4ParticleDefinition *)
virtual ~G4BGGNucleonElasticXS()
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *mat=0)
virtual G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=0, const G4Material *mat=0)
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
static G4CrossSectionDataSetRegistry * Instance()
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
void SetKineticEnergy(G4double aEnergy)
static const char * Default_Name()
G4double GetElasticGlauberGribov(const G4DynamicParticle *, G4int Z, G4int A)
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4ParticleDefinition *)
G4double GetElasticHadronNucleonXsc()
static G4Neutron * Neutron()
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
G4double GetElasticCrossSection(const G4DynamicParticle *aParticle, G4int Z)
static const char * Default_Name()
const G4String & GetParticleName() const
static G4Proton * Proton()
virtual void BuildPhysicsTable(const G4ParticleDefinition &)