64 fGlauberEnergy = 91.*
GeV;
67 fSAIDLowEnergyLimit = 1*
MeV;
68 fSAIDHighEnergyLimit = 1.3*
GeV;
70 for (
G4int i = 0; i < 93; ++i) {
71 theGlauberFac[i] = 0.0;
72 theCoulombFac[i] = 0.0;
82 isInitialized =
false;
128 if(Z > 92) { Z = 92; }
130 if(ekin <= fLowEnergy) {
131 cross = theCoulombFac[
Z]*CoulombFactor(ekin, Z);
133 }
else if(ekin > fGlauberEnergy) {
141 G4cout <<
"G4BGGNucleonElasticXS::GetElementCrossSection for "
144 <<
" in nucleus Z= " << Z <<
" A= " << theA[
Z]
145 <<
" XS(b)= " << cross/
barn
166 if(ekin <= fSAIDLowEnergyLimit) {
167 cross = theCoulombFac[0]*CoulombFactor(ekin, 1);
168 }
else if(ekin <= fSAIDHighEnergyLimit) {
170 }
else if(ekin <= fPDGEnergy) {
174 cross = cross1 + (cross2 - cross1)*(ekin - fSAIDHighEnergyLimit)
175 /(fPDGEnergy - fSAIDHighEnergyLimit);
183 G4cout <<
"G4BGGNucleonElasticXS::GetIsoCrossSection for "
186 <<
" in nucleus Z= " << Z <<
" A= " << A
187 <<
" XS(b)= " << cross/
barn
202 G4cout <<
"### G4BGGNucleonElasticXS WARNING: is not applicable to "
206 "G4BGGNucleonElasticXS::BuildPhysicsTable is used for wrong particle");
210 if(isInitialized) {
return; }
211 isInitialized =
true;
221 if(particle == theProton) {
223 fSAIDHighEnergyLimit = 3*
GeV;
235 G4cout <<
"### G4BGGNucleonElasticXS::Initialise for "
239 for(
G4int iz=2; iz<93; iz++) {
247 theGlauberFac[iz] = csdn/csup;
249 G4cout <<
"Z= " << iz <<
" A= " << A
250 <<
" factor= " << theGlauberFac[iz] <<
G4endl;
256 /CoulombFactor(fSAIDLowEnergyLimit, 1);
263 G4cout <<
"Z=1 A=1 " <<
" factor0= " << theCoulombFac[0]
264 <<
" factor1= " << theCoulombFac[1]
269 for(
G4int iz=2; iz<93; iz++) {
273 G4cout <<
"Z= " << iz <<
" A= " << theA[iz]
274 <<
" factor= " << theCoulombFac[iz] <<
G4endl;
288 if (Z <= 1) {
return kinEnergy*kinEnergy; }
295 G4double ff3 = 0.8 + 18./aa - 0.002*aa;
296 res = 1.0 + ff3*(1.0 - (1.0/(1+
G4Exp(-ff1*(elog + ff2)))));
298 ff1 = 8. - 8./aa - 0.008*aa;
299 ff2 = 2.34 - 5.4/aa - 0.0028*aa;
300 res /= (1.0 +
G4Exp(-ff1*(elog + ff2)));
310 outFile <<
"The Barashenkov-Glauber-Gribov cross section handles elastic\n"
311 <<
"scattering of protons and neutrons from nuclei using the\n"
312 <<
"Barashenkov parameterization below 91 GeV and the Glauber-Gribov\n"
313 <<
"parameterization above 91 GeV. n";
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
G4double GetElasticHadronNucleonXsc()
G4double GetKineticEnergy() const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)
virtual ~G4BGGNucleonElasticXS()
G4ParticleDefinition * GetDefinition() const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
static G4NistManager * Instance()
const G4String & GetParticleName() const
G4double GetElasticCrossSection(const G4DynamicParticle *aParticle, G4int Z)
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
static G4CrossSectionDataSetRegistry * Instance()
static G4Proton * Proton()
G4BGGNucleonElasticXS(const G4ParticleDefinition *)
static G4Neutron * Neutron()
void SetKineticEnergy(G4double aEnergy)
G4double GetElasticGlauberGribov(const G4DynamicParticle *, G4int Z, G4int A)
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *mat=0)
static constexpr double GeV
virtual G4double GetElementCrossSection(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)
G4double GetAtomicMassAmu(const G4String &symb) const
static constexpr double GeV
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4ParticleDefinition *)
static constexpr double MeV
virtual void CrossSectionDescription(std::ostream &) const
static const char * Default_Name()
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
static constexpr double barn
static constexpr double millibarn