Geant4  10.02.p03
G4ComponentGGHadronNucleusXsc Class Reference

#include <G4ComponentGGHadronNucleusXsc.hh>

Inheritance diagram for G4ComponentGGHadronNucleusXsc:
Collaboration diagram for G4ComponentGGHadronNucleusXsc:

Public Member Functions

 G4ComponentGGHadronNucleusXsc ()
 
virtual ~G4ComponentGGHadronNucleusXsc ()
 
virtual G4double GetTotalIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
virtual G4double GetTotalElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
 
virtual G4double GetInelasticIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
virtual G4double GetProductionIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
virtual G4double GetInelasticElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
 
virtual G4double GetProductionElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
 
virtual G4double GetElasticElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
 
virtual G4double GetElasticIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
virtual G4double ComputeQuasiElasticRatio (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
G4bool IsIsoApplicable (const G4DynamicParticle *aDP, G4int Z, G4int A, const G4Element *elm=0, const G4Material *mat=0)
 
G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
 
G4double GetRatioSD (const G4DynamicParticle *, G4int At, G4int Zt)
 
G4double GetRatioQE (const G4DynamicParticle *, G4int At, G4int Zt)
 
G4double GetHadronNucleonXsc (const G4DynamicParticle *, const G4Element *)
 
G4double GetHadronNucleonXsc (const G4DynamicParticle *, G4int At, G4int Zt)
 
G4double GetHadronNucleonXscPDG (const G4DynamicParticle *, const G4Element *)
 
G4double GetHadronNucleonXscPDG (const G4DynamicParticle *, G4int At, G4int Zt)
 
G4double GetHadronNucleonXscNS (const G4DynamicParticle *, const G4Element *)
 
G4double GetHadronNucleonXscNS (const G4DynamicParticle *, G4int At, G4int Zt)
 
G4double GetHNinelasticXsc (const G4DynamicParticle *, const G4Element *)
 
G4double GetHNinelasticXsc (const G4DynamicParticle *, G4int At, G4int Zt)
 
G4double GetHNinelasticXscVU (const G4DynamicParticle *, G4int At, G4int Zt)
 
G4double CalculateEcmValue (const G4double, const G4double, const G4double)
 
G4double CalcMandelstamS (const G4double, const G4double, const G4double)
 
G4double GetNucleusRadius (const G4DynamicParticle *, const G4Element *)
 
G4double GetNucleusRadius (G4int At)
 
virtual void CrossSectionDescription (std::ostream &) const
 
G4double GetElasticGlauberGribov (const G4DynamicParticle *, G4int Z, G4int A)
 
G4double GetInelasticGlauberGribov (const G4DynamicParticle *, G4int Z, G4int A)
 
G4double GetTotalGlauberGribovXsc ()
 
G4double GetElasticGlauberGribovXsc ()
 
G4double GetInelasticGlauberGribovXsc ()
 
G4double GetProductionGlauberGribovXsc ()
 
G4double GetDiffractionGlauberGribovXsc ()
 
G4double GetRadiusConst ()
 
G4double GetParticleBarCorTot (const G4ParticleDefinition *theParticle, G4int Z)
 
G4double GetParticleBarCorIn (const G4ParticleDefinition *theParticle, G4int Z)
 
void SetEnergyLowerLimit (G4double E)
 
- Public Member Functions inherited from G4VComponentCrossSection
 G4VComponentCrossSection (const G4String &nam="")
 
virtual ~G4VComponentCrossSection ()
 
G4double GetTotalElementCrossSection (const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
 
G4double GetInelasticElementCrossSection (const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
 
G4double GetElasticElementCrossSection (const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
virtual void Description () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
G4double GetMinKinEnergy () const
 
void SetMinKinEnergy (G4double value)
 
G4double GetMaxKinEnergy () const
 
void SetMaxKinEnergy (G4double value)
 
const G4StringGetName () const
 

Static Public Member Functions

static const char * Default_Name ()
 

Private Attributes

G4double fLowerLimit
 
const G4double fRadiusConst
 
G4double fTotalXsc
 
G4double fElasticXsc
 
G4double fInelasticXsc
 
G4double fProductionXsc
 
G4double fDiffractionXsc
 
G4ParticleDefinitiontheGamma
 
G4ParticleDefinitiontheProton
 
G4ParticleDefinitiontheNeutron
 
G4ParticleDefinitiontheAProton
 
G4ParticleDefinitiontheANeutron
 
G4ParticleDefinitionthePiPlus
 
G4ParticleDefinitionthePiMinus
 
G4ParticleDefinitionthePiZero
 
G4ParticleDefinitiontheKPlus
 
G4ParticleDefinitiontheKMinus
 
G4ParticleDefinitiontheK0S
 
G4ParticleDefinitiontheK0L
 
G4ParticleDefinitiontheL
 
G4ParticleDefinitiontheAntiL
 
G4ParticleDefinitiontheSPlus
 
G4ParticleDefinitiontheASPlus
 
G4ParticleDefinitiontheSMinus
 
G4ParticleDefinitiontheASMinus
 
G4ParticleDefinitiontheS0
 
G4ParticleDefinitiontheAS0
 
G4ParticleDefinitiontheXiMinus
 
G4ParticleDefinitiontheXi0
 
G4ParticleDefinitiontheAXiMinus
 
G4ParticleDefinitiontheAXi0
 
G4ParticleDefinitiontheOmega
 
G4ParticleDefinitiontheAOmega
 
G4ParticleDefinitiontheD
 
G4ParticleDefinitiontheT
 
G4ParticleDefinitiontheA
 
G4ParticleDefinitiontheHe3
 
G4HadronNucleonXschnXsc
 

Static Private Attributes

static const G4double fNeutronBarCorrectionTot [93]
 
static const G4double fNeutronBarCorrectionIn [93]
 
static const G4double fProtonBarCorrectionTot [93]
 
static const G4double fProtonBarCorrectionIn [93]
 
static const G4double fPionPlusBarCorrectionTot [93]
 
static const G4double fPionPlusBarCorrectionIn [93]
 
static const G4double fPionMinusBarCorrectionTot [93]
 
static const G4double fPionMinusBarCorrectionIn [93]
 

Detailed Description

Definition at line 51 of file G4ComponentGGHadronNucleusXsc.hh.

Constructor & Destructor Documentation

◆ G4ComponentGGHadronNucleusXsc()

G4ComponentGGHadronNucleusXsc::G4ComponentGGHadronNucleusXsc ( )

Definition at line 46 of file G4ComponentGGHadronNucleusXsc.cc.

48 // fUpperLimit(100000*GeV),
49  fLowerLimit(10.*MeV),// fLowerLimit(3*GeV),
50  fRadiusConst(1.08*fermi), // 1.1, 1.3 ?
51  fTotalXsc(0.0), fElasticXsc(0.0), fInelasticXsc(0.0), fProductionXsc(0.0),
52  fDiffractionXsc(0.0)
53 // , fHadronNucleonXsc(0.0)
54 {
83  theA = G4Alpha::Alpha();
84  theHe3 = G4He3::He3();
85 
86  hnXsc = new G4HadronNucleonXsc();
87 }
static const double MeV
Definition: G4SIunits.hh:211
static G4AntiOmegaMinus * AntiOmegaMinus()
static G4OmegaMinus * OmegaMinus()
static G4KaonZeroLong * KaonZeroLong()
static G4AntiSigmaPlus * AntiSigmaPlus()
static G4SigmaZero * SigmaZero()
Definition: G4SigmaZero.cc:102
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:113
static G4AntiSigmaMinus * AntiSigmaMinus()
static G4XiZero * XiZero()
Definition: G4XiZero.cc:106
static G4KaonZeroShort * KaonZeroShort()
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:93
static G4XiMinus * XiMinus()
Definition: G4XiMinus.cc:106
static G4AntiXiMinus * AntiXiMinus()
static G4Triton * Triton()
Definition: G4Triton.cc:95
static G4Proton * Proton()
Definition: G4Proton.cc:93
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:98
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
static G4Gamma * Gamma()
Definition: G4Gamma.cc:86
static G4PionZero * PionZero()
Definition: G4PionZero.cc:108
static G4Deuteron * Deuteron()
Definition: G4Deuteron.cc:94
static G4SigmaMinus * SigmaMinus()
static G4AntiLambda * AntiLambda()
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:98
static G4AntiSigmaZero * AntiSigmaZero()
G4VComponentCrossSection(const G4String &nam="")
static G4AntiXiZero * AntiXiZero()
static G4Alpha * Alpha()
Definition: G4Alpha.cc:89
static G4SigmaPlus * SigmaPlus()
Definition: G4SigmaPlus.cc:108
static G4Lambda * Lambda()
Definition: G4Lambda.cc:108
static G4KaonPlus * KaonPlus()
Definition: G4KaonPlus.cc:113
static G4He3 * He3()
Definition: G4He3.cc:94
static const double fermi
Definition: G4SIunits.hh:102
static G4AntiNeutron * AntiNeutron()
Here is the call graph for this function:

◆ ~G4ComponentGGHadronNucleusXsc()

G4ComponentGGHadronNucleusXsc::~G4ComponentGGHadronNucleusXsc ( )
virtual

Definition at line 93 of file G4ComponentGGHadronNucleusXsc.cc.

94 {
95  if (hnXsc) delete hnXsc;
96 }

Member Function Documentation

◆ CalcMandelstamS()

G4double G4ComponentGGHadronNucleusXsc::CalcMandelstamS ( const G4double  mp,
const G4double  mt,
const G4double  Plab 
)

Definition at line 1509 of file G4ComponentGGHadronNucleusXsc.cc.

1512 {
1513  G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
1514  G4double sMand = mp*mp + mt*mt + 2*Elab*mt ;
1515 
1516  return sMand;
1517 }
double G4double
Definition: G4Types.hh:76
Here is the caller graph for this function:

◆ CalculateEcmValue()

G4double G4ComponentGGHadronNucleusXsc::CalculateEcmValue ( const G4double  mp,
const G4double  mt,
const G4double  Plab 
)

Definition at line 1493 of file G4ComponentGGHadronNucleusXsc.cc.

1496 {
1497  G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
1498  G4double Ecm = std::sqrt ( mp * mp + mt * mt + 2 * Elab * mt );
1499  // G4double Pcm = Plab * mt / Ecm;
1500  // G4double KEcm = std::sqrt ( Pcm * Pcm + mp * mp ) - mp;
1501 
1502  return Ecm ; // KEcm;
1503 }
double G4double
Definition: G4Types.hh:76
Here is the caller graph for this function:

◆ ComputeQuasiElasticRatio()

G4double G4ComponentGGHadronNucleusXsc::ComputeQuasiElasticRatio ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4int  A 
)
virtual

Reimplemented from G4VComponentCrossSection.

Definition at line 212 of file G4ComponentGGHadronNucleusXsc.cc.

215 {
216  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
217  kinEnergy);
218  fTotalXsc = GetIsoCrossSection(aDP, Z, A);
219  delete aDP;
220  G4double ratio = 0.;
221 
222  if(fInelasticXsc > 0.)
223  {
225  if(ratio < 0.) ratio = 0.;
226  }
227  return ratio;
228 }
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
double G4double
Definition: G4Types.hh:76
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ CrossSectionDescription()

void G4ComponentGGHadronNucleusXsc::CrossSectionDescription ( std::ostream &  outFile) const
virtual

Definition at line 1523 of file G4ComponentGGHadronNucleusXsc.cc.

1524 {
1525  outFile << "G4ComponentGGHadronNucleusXsc calculates total, inelastic and\n"
1526  << "elastic cross sections for hadron-nucleus cross sections using\n"
1527  << "the Glauber model with Gribov corrections. It is valid for all\n"
1528  << "targets except hydrogen, and for incident p, pbar, n, sigma-,\n"
1529  << "pi+, pi-, K+, K- and gammas with energies above 3 GeV. This is\n"
1530  << "a cross section component which is to be used to build a cross\n"
1531  << "data set.\n";
1532 }
Here is the caller graph for this function:

◆ Default_Name()

static const char* G4ComponentGGHadronNucleusXsc::Default_Name ( )
inlinestatic

Definition at line 58 of file G4ComponentGGHadronNucleusXsc.hh.

58 { return "Glauber-Gribov"; }
Here is the call graph for this function:

◆ GetDiffractionGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetDiffractionGlauberGribovXsc ( )
inline

Definition at line 152 of file G4ComponentGGHadronNucleusXsc.hh.

Here is the caller graph for this function:

◆ GetElasticElementCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetElasticElementCrossSection ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4double  A 
)
virtual

Implements G4VComponentCrossSection.

Definition at line 184 of file G4ComponentGGHadronNucleusXsc.cc.

187 {
188  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
189  kinEnergy);
191  delete aDP;
192 
193  return fElasticXsc;
194 }
int G4int
Definition: G4Types.hh:78
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetElasticGlauberGribov()

G4double G4ComponentGGHadronNucleusXsc::GetElasticGlauberGribov ( const G4DynamicParticle dp,
G4int  Z,
G4int  A 
)
inline

Definition at line 222 of file G4ComponentGGHadronNucleusXsc.hh.

224 {
225  GetIsoCrossSection(dp, Z, A);
226  return fElasticXsc;
227 }
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetElasticGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetElasticGlauberGribovXsc ( )
inline

Definition at line 149 of file G4ComponentGGHadronNucleusXsc.hh.

Here is the caller graph for this function:

◆ GetElasticIsotopeCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetElasticIsotopeCrossSection ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4int  A 
)
virtual

Implements G4VComponentCrossSection.

Definition at line 198 of file G4ComponentGGHadronNucleusXsc.cc.

201 {
202  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
203  kinEnergy);
204  fTotalXsc = GetIsoCrossSection(aDP, Z, A);
205  delete aDP;
206 
207  return fElasticXsc;
208 }
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHadronNucleonXsc() [1/2]

G4double G4ComponentGGHadronNucleusXsc::GetHadronNucleonXsc ( const G4DynamicParticle aParticle,
const G4Element anElement 
)

Definition at line 521 of file G4ComponentGGHadronNucleusXsc.cc.

523 {
524  G4int At = G4lrint(anElement->GetN()); // number of nucleons
525  G4int Zt = G4lrint(anElement->GetZ()); // number of protons
526 
527  return GetHadronNucleonXsc(aParticle, At, Zt);
528 }
int G4int
Definition: G4Types.hh:78
G4double GetN() const
Definition: G4Element.hh:134
G4double GetHadronNucleonXsc(const G4DynamicParticle *, const G4Element *)
int G4lrint(double ad)
Definition: templates.hh:163
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHadronNucleonXsc() [2/2]

G4double G4ComponentGGHadronNucleusXsc::GetHadronNucleonXsc ( const G4DynamicParticle aParticle,
G4int  At,
G4int  Zt 
)

Definition at line 538 of file G4ComponentGGHadronNucleusXsc.cc.

540 {
541  G4double xsection;
542 
543  //G4double targ_mass = G4NucleiProperties::GetNuclearMass(At, Zt);
544 
545  G4double targ_mass = 0.939*GeV; // ~mean neutron and proton ???
546 
547  G4double proj_mass = aParticle->GetMass();
548  G4double proj_momentum = aParticle->GetMomentum().mag();
549  G4double sMand = CalcMandelstamS ( proj_mass , targ_mass , proj_momentum );
550 
551  sMand /= GeV*GeV; // in GeV for parametrisation
552  proj_momentum /= GeV;
553 
554  const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
555 
556  G4double aa = At;
557 
558  if(theParticle == theGamma)
559  {
560  xsection = aa*(0.0677*G4Pow::GetInstance()->powA(sMand,0.0808) + 0.129*G4Pow::GetInstance()->powA(sMand,-0.4525));
561  }
562  else if(theParticle == theNeutron) // as proton ???
563  {
564  xsection = aa*(21.70*G4Pow::GetInstance()->powA(sMand,0.0808) + 56.08*G4Pow::GetInstance()->powA(sMand,-0.4525));
565  }
566  else if(theParticle == theProton)
567  {
568  xsection = aa*(21.70*G4Pow::GetInstance()->powA(sMand,0.0808) + 56.08*G4Pow::GetInstance()->powA(sMand,-0.4525));
569  // xsection = At*( 49.51*G4Pow::GetInstance()->powA(sMand,-0.097) + 0.314*G4Log(sMand)*G4Log(sMand) );
570  // xsection = At*( 38.4 + 0.85*std::abs(G4Pow::GetInstance()->powA(log(sMand),1.47)) );
571  }
572  else if(theParticle == theAProton)
573  {
574  xsection = aa*( 21.70*G4Pow::GetInstance()->powA(sMand,0.0808) + 98.39*G4Pow::GetInstance()->powA(sMand,-0.4525));
575  }
576  else if(theParticle == thePiPlus)
577  {
578  xsection = aa*(13.63*G4Pow::GetInstance()->powA(sMand,0.0808) + 27.56*G4Pow::GetInstance()->powA(sMand,-0.4525));
579  }
580  else if(theParticle == thePiMinus)
581  {
582  // xsection = At*( 55.2*G4Pow::GetInstance()->powA(sMand,-0.255) + 0.346*G4Log(sMand)*G4Log(sMand) );
583  xsection = aa*(13.63*G4Pow::GetInstance()->powA(sMand,0.0808) + 36.02*G4Pow::GetInstance()->powA(sMand,-0.4525));
584  }
585  else if(theParticle == theKPlus)
586  {
587  xsection = aa*(11.82*G4Pow::GetInstance()->powA(sMand,0.0808) + 8.15*G4Pow::GetInstance()->powA(sMand,-0.4525));
588  }
589  else if(theParticle == theKMinus)
590  {
591  xsection = aa*(11.82*G4Pow::GetInstance()->powA(sMand,0.0808) + 26.36*G4Pow::GetInstance()->powA(sMand,-0.4525));
592  }
593  else // as proton ???
594  {
595  xsection = aa*(21.70*G4Pow::GetInstance()->powA(sMand,0.0808) + 56.08*G4Pow::GetInstance()->powA(sMand,-0.4525));
596  }
597  xsection *= millibarn;
598  return xsection;
599 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double GetMass() const
G4double CalcMandelstamS(const G4double, const G4double, const G4double)
G4ThreeVector GetMomentum() const
double mag() const
static const double GeV
Definition: G4SIunits.hh:214
static const double millibarn
Definition: G4SIunits.hh:105
G4ParticleDefinition * GetDefinition() const
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

◆ GetHadronNucleonXscNS() [1/2]

G4double G4ComponentGGHadronNucleusXsc::GetHadronNucleonXscNS ( const G4DynamicParticle aParticle,
const G4Element anElement 
)

Definition at line 742 of file G4ComponentGGHadronNucleusXsc.cc.

744 {
745  G4int At = G4lrint(anElement->GetN()); // number of nucleons
746  G4int Zt = G4lrint(anElement->GetZ()); // number of protons
747 
748  return GetHadronNucleonXscNS(aParticle, At, Zt);
749 }
int G4int
Definition: G4Types.hh:78
G4double GetN() const
Definition: G4Element.hh:134
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4Element *)
int G4lrint(double ad)
Definition: templates.hh:163
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHadronNucleonXscNS() [2/2]

G4double G4ComponentGGHadronNucleusXsc::GetHadronNucleonXscNS ( const G4DynamicParticle aParticle,
G4int  At,
G4int  Zt 
)

Definition at line 760 of file G4ComponentGGHadronNucleusXsc.cc.

762 {
763  G4double xsection(0);
764  // G4double Delta; DHW 19 May 2011: variable set but not used
765  G4double A0, B0;
766  G4double hpXscv(0);
767  G4double hnXscv(0);
768 
769  G4int Nt = At-Zt; // number of neutrons
770  if (Nt < 0) Nt = 0;
771 
772  G4double aa = At;
773  G4double zz = Zt;
774  G4double nn = Nt;
775 
777  GetIonTable()->GetIonMass(Zt, At);
778 
779  targ_mass = 0.939*GeV; // ~mean neutron and proton ???
780 
781  G4double proj_mass = aParticle->GetMass();
782  G4double proj_energy = aParticle->GetTotalEnergy();
783  G4double proj_momentum = aParticle->GetMomentum().mag();
784 
785  G4double sMand = CalcMandelstamS ( proj_mass , targ_mass , proj_momentum );
786 
787  sMand /= GeV*GeV; // in GeV for parametrisation
788  proj_momentum /= GeV;
789  proj_energy /= GeV;
790  proj_mass /= GeV;
791 
792  // General PDG fit constants
793 
794  G4double s0 = 5.38*5.38; // in Gev^2
795  G4double eta1 = 0.458;
796  G4double eta2 = 0.458;
797  G4double B = 0.308;
798 
799 
800  const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
801 
802 
803  if(theParticle == theNeutron)
804  {
805  if( proj_momentum >= 373.)
806  {
807  return GetHadronNucleonXscPDG(aParticle,At,Zt);
808  }
809  else if( proj_momentum >= 10.)
810  // if( proj_momentum >= 2.)
811  {
812  // Delta = 1.; // DHW 19 May 2011: variable set but not used
813  // if( proj_energy < 40. ) Delta = 0.916+0.0021*proj_energy;
814 
815  if(proj_momentum >= 10.)
816  {
817  B0 = 7.5;
818  A0 = 100. - B0*G4Log(3.0e7);
819 
820  xsection = A0 + B0*G4Log(proj_energy) - 11
821  + 103*G4Pow::GetInstance()->powA(2*0.93827*proj_energy + proj_mass*proj_mass+
822  0.93827*0.93827,-0.165); // mb
823  }
824  xsection *= zz + nn;
825  }
826  else
827  {
828  // nn to be pp
829 
830  if( proj_momentum < 0.73 )
831  {
832  hnXscv = 23 + 50*( G4Pow::GetInstance()->powA( G4Log(0.73/proj_momentum), 3.5 ) );
833  }
834  else if( proj_momentum < 1.05 )
835  {
836  hnXscv = 23 + 40*(G4Log(proj_momentum/0.73))*
837  (G4Log(proj_momentum/0.73));
838  }
839  else // if( proj_momentum < 10. )
840  {
841  hnXscv = 39.0+
842  75*(proj_momentum - 1.2)/(G4Pow::GetInstance()->powA(proj_momentum,3.0) + 0.15);
843  }
844  // pn to be np
845 
846  if( proj_momentum < 0.8 )
847  {
848  hpXscv = 33+30*G4Pow::GetInstance()->powA(G4Log(proj_momentum/1.3),4.0);
849  }
850  else if( proj_momentum < 1.4 )
851  {
852  hpXscv = 33+30*G4Pow::GetInstance()->powA(G4Log(proj_momentum/0.95),2.0);
853  }
854  else // if( proj_momentum < 10. )
855  {
856  hpXscv = 33.3+
857  20.8*(G4Pow::GetInstance()->powA(proj_momentum,2.0)-1.35)/
858  (G4Pow::GetInstance()->powA(proj_momentum,2.50)+0.95);
859  }
860  xsection = hpXscv*zz + hnXscv*nn;
861  }
862  }
863  else if(theParticle == theProton)
864  {
865  if( proj_momentum >= 373.)
866  {
867  return GetHadronNucleonXscPDG(aParticle,At,Zt);
868  }
869  else if( proj_momentum >= 10.)
870  // if( proj_momentum >= 2.)
871  {
872  // Delta = 1.; DHW 19 May 2011: variable set but not used
873  // if( proj_energy < 40. ) Delta = 0.916+0.0021*proj_energy;
874 
875  if(proj_momentum >= 10.)
876  {
877  B0 = 7.5;
878  A0 = 100. - B0*G4Log(3.0e7);
879 
880  xsection = A0 + B0*G4Log(proj_energy) - 11
881  + 103*G4Pow::GetInstance()->powA(2*0.93827*proj_energy + proj_mass*proj_mass+
882  0.93827*0.93827,-0.165); // mb
883  }
884  xsection *= zz + nn;
885  }
886  else
887  {
888  // pp
889 
890  if( proj_momentum < 0.73 )
891  {
892  hpXscv = 23 + 50*( G4Pow::GetInstance()->powA( G4Log(0.73/proj_momentum), 3.5 ) );
893  }
894  else if( proj_momentum < 1.05 )
895  {
896  hpXscv = 23 + 40*(G4Log(proj_momentum/0.73))*
897  (G4Log(proj_momentum/0.73));
898  }
899  else // if( proj_momentum < 10. )
900  {
901  hpXscv = 39.0+
902  75*(proj_momentum - 1.2)/(G4Pow::GetInstance()->powA(proj_momentum,3.0) + 0.15);
903  }
904  // pn to be np
905 
906  if( proj_momentum < 0.8 )
907  {
908  hnXscv = 33+30*G4Pow::GetInstance()->powA(G4Log(proj_momentum/1.3),4.0);
909  }
910  else if( proj_momentum < 1.4 )
911  {
912  hnXscv = 33+30*G4Pow::GetInstance()->powA(G4Log(proj_momentum/0.95),2.0);
913  }
914  else // if( proj_momentum < 10. )
915  {
916  hnXscv = 33.3+
917  20.8*(G4Pow::GetInstance()->powA(proj_momentum,2.0)-1.35)/
918  (G4Pow::GetInstance()->powA(proj_momentum,2.50)+0.95);
919  }
920  xsection = hpXscv*zz + hnXscv*nn;
921  // xsection = hpXscv*(Zt + Nt);
922  // xsection = hnXscv*(Zt + Nt);
923  }
924  // xsection *= 0.95;
925  }
926  else if( theParticle == theAProton )
927  {
928  // xsection = Zt*( 35.45 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
929  // + 42.53*G4Pow::GetInstance()->powA(sMand,-eta1) + 33.34*G4Pow::GetInstance()->powA(sMand,-eta2));
930 
931  // xsection += Nt*( 35.80 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
932  // + 40.15*G4Pow::GetInstance()->powA(sMand,-eta1) + 30.*G4Pow::GetInstance()->powA(sMand,-eta2));
933 
934  G4double logP = G4Log(proj_momentum);
935 
936  if( proj_momentum <= 1.0 )
937  {
938  xsection = zz*(65.55 + 53.84/(proj_momentum+1.e-6) );
939  }
940  else
941  {
942  xsection = zz*( 41.1 + 77.2*G4Pow::GetInstance()->powA( proj_momentum, -0.68)
943  + 0.293*logP*logP - 1.82*logP );
944  }
945  if ( nn > 0.)
946  {
947  xsection += nn*( 41.9 + 96.2*G4Pow::GetInstance()->powA( proj_momentum, -0.99) - 0.154*logP);
948  }
949  else // H
950  {
951  fInelasticXsc = 38.0 + 38.0*G4Pow::GetInstance()->powA( proj_momentum, -0.96)
952  - 0.169*logP*logP;
954  }
955  }
956  else if( theParticle == thePiPlus )
957  {
958  if(proj_momentum < 0.4)
959  {
960  G4double Ex3 = 180*G4Exp(-(proj_momentum-0.29)*(proj_momentum-0.29)/0.085/0.085);
961  hpXscv = Ex3+20.0;
962  }
963  else if( proj_momentum < 1.15 )
964  {
965  G4double Ex4 = 88*(G4Log(proj_momentum/0.75))*(G4Log(proj_momentum/0.75));
966  hpXscv = Ex4+14.0;
967  }
968  else if(proj_momentum < 3.5)
969  {
970  G4double Ex1 = 3.2*G4Exp(-(proj_momentum-2.55)*(proj_momentum-2.55)/0.55/0.55);
971  G4double Ex2 = 12*G4Exp(-(proj_momentum-1.47)*(proj_momentum-1.47)/0.225/0.225);
972  hpXscv = Ex1+Ex2+27.5;
973  }
974  else // if(proj_momentum > 3.5) // mb
975  {
976  hpXscv = 10.6+2.*G4Log(proj_energy)+25*G4Pow::GetInstance()->powA(proj_energy,-0.43);
977  }
978  // pi+n = pi-p??
979 
980  if(proj_momentum < 0.37)
981  {
982  hnXscv = 28.0 + 40*G4Exp(-(proj_momentum-0.29)*(proj_momentum-0.29)/0.07/0.07);
983  }
984  else if(proj_momentum<0.65)
985  {
986  hnXscv = 26+110*(G4Log(proj_momentum/0.48))*(G4Log(proj_momentum/0.48));
987  }
988  else if(proj_momentum<1.3)
989  {
990  hnXscv = 36.1+
991  10*G4Exp(-(proj_momentum-0.72)*(proj_momentum-0.72)/0.06/0.06)+
992  24*G4Exp(-(proj_momentum-1.015)*(proj_momentum-1.015)/0.075/0.075);
993  }
994  else if(proj_momentum<3.0)
995  {
996  hnXscv = 36.1+0.079-4.313*G4Log(proj_momentum)+
997  3*G4Exp(-(proj_momentum-2.1)*(proj_momentum-2.1)/0.4/0.4)+
998  1.5*G4Exp(-(proj_momentum-1.4)*(proj_momentum-1.4)/0.12/0.12);
999  }
1000  else // mb
1001  {
1002  hnXscv = 10.6+2*G4Log(proj_energy)+30*G4Pow::GetInstance()->powA(proj_energy,-0.43);
1003  }
1004  xsection = hpXscv*zz + hnXscv*nn;
1005  }
1006  else if(theParticle == thePiMinus)
1007  {
1008  // pi-n = pi+p??
1009 
1010  if(proj_momentum < 0.4)
1011  {
1012  G4double Ex3 = 180*G4Exp(-(proj_momentum-0.29)*(proj_momentum-0.29)/0.085/0.085);
1013  hnXscv = Ex3+20.0;
1014  }
1015  else if(proj_momentum < 1.15)
1016  {
1017  G4double Ex4 = 88*(G4Log(proj_momentum/0.75))*(G4Log(proj_momentum/0.75));
1018  hnXscv = Ex4+14.0;
1019  }
1020  else if(proj_momentum < 3.5)
1021  {
1022  G4double Ex1 = 3.2*G4Exp(-(proj_momentum-2.55)*(proj_momentum-2.55)/0.55/0.55);
1023  G4double Ex2 = 12*G4Exp(-(proj_momentum-1.47)*(proj_momentum-1.47)/0.225/0.225);
1024  hnXscv = Ex1+Ex2+27.5;
1025  }
1026  else // if(proj_momentum > 3.5) // mb
1027  {
1028  hnXscv = 10.6+2.*G4Log(proj_energy)+25*G4Pow::GetInstance()->powA(proj_energy,-0.43);
1029  }
1030  // pi-p
1031 
1032  if(proj_momentum < 0.37)
1033  {
1034  hpXscv = 28.0 + 40*G4Exp(-(proj_momentum-0.29)*(proj_momentum-0.29)/0.07/0.07);
1035  }
1036  else if(proj_momentum<0.65)
1037  {
1038  hpXscv = 26+110*(G4Log(proj_momentum/0.48))*(G4Log(proj_momentum/0.48));
1039  }
1040  else if(proj_momentum<1.3)
1041  {
1042  hpXscv = 36.1+
1043  10*G4Exp(-(proj_momentum-0.72)*(proj_momentum-0.72)/0.06/0.06)+
1044  24*G4Exp(-(proj_momentum-1.015)*(proj_momentum-1.015)/0.075/0.075);
1045  }
1046  else if(proj_momentum<3.0)
1047  {
1048  hpXscv = 36.1+0.079-4.313*G4Log(proj_momentum)+
1049  3*G4Exp(-(proj_momentum-2.1)*(proj_momentum-2.1)/0.4/0.4)+
1050  1.5*G4Exp(-(proj_momentum-1.4)*(proj_momentum-1.4)/0.12/0.12);
1051  }
1052  else // mb
1053  {
1054  hpXscv = 10.6+2*G4Log(proj_energy)+30*G4Pow::GetInstance()->powA(proj_energy,-0.43);
1055  }
1056  xsection = hpXscv*zz + hnXscv*nn;
1057  }
1058  else if(theParticle == theKPlus)
1059  {
1060  xsection = zz*( 17.91 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
1061  + 7.14*G4Pow::GetInstance()->powA(sMand,-eta1) - 13.45*G4Pow::GetInstance()->powA(sMand,-eta2));
1062 
1063  xsection += nn*( 17.87 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
1064  + 5.17*G4Pow::GetInstance()->powA(sMand,-eta1) - 7.23*G4Pow::GetInstance()->powA(sMand,-eta2));
1065  }
1066  else if(theParticle == theKMinus)
1067  {
1068  xsection = zz*( 17.91 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
1069  + 7.14*G4Pow::GetInstance()->powA(sMand,-eta1) + 13.45*G4Pow::GetInstance()->powA(sMand,-eta2));
1070 
1071  xsection += nn*( 17.87 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
1072  + 5.17*G4Pow::GetInstance()->powA(sMand,-eta1) + 7.23*G4Pow::GetInstance()->powA(sMand,-eta2));
1073  }
1074  else if(theParticle == theSMinus)
1075  {
1076  xsection = aa*( 35.20 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
1077  - 199.*G4Pow::GetInstance()->powA(sMand,-eta1) + 264.*G4Pow::GetInstance()->powA(sMand,-eta2));
1078  }
1079  else if(theParticle == theGamma) // modify later on
1080  {
1081  xsection = aa*( 0.0 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
1082  + 0.032*G4Pow::GetInstance()->powA(sMand,-eta1) - 0.0*G4Pow::GetInstance()->powA(sMand,-eta2));
1083 
1084  }
1085  else // as proton ???
1086  {
1087  xsection = zz*( 35.45 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
1088  + 42.53*G4Pow::GetInstance()->powA(sMand,-eta1) - 33.34*G4Pow::GetInstance()->powA(sMand,-eta2));
1089 
1090  xsection += nn*( 35.80 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
1091  + 40.15*G4Pow::GetInstance()->powA(sMand,-eta1) - 30.*G4Pow::GetInstance()->powA(sMand,-eta2));
1092  }
1093  xsection *= millibarn; // parametrised in mb
1094  return xsection;
1095 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double GetMass() const
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4Element *)
G4double CalcMandelstamS(const G4double, const G4double, const G4double)
int G4int
Definition: G4Types.hh:78
G4double GetTotalEnergy() const
G4ThreeVector GetMomentum() const
double mag() const
static const double GeV
Definition: G4SIunits.hh:214
G4double G4Log(G4double x)
Definition: G4Log.hh:230
Double_t zz
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
static G4ParticleTable * GetParticleTable()
static const double millibarn
Definition: G4SIunits.hh:105
G4ParticleDefinition * GetDefinition() const
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

◆ GetHadronNucleonXscPDG() [1/2]

G4double G4ComponentGGHadronNucleusXsc::GetHadronNucleonXscPDG ( const G4DynamicParticle aParticle,
const G4Element anElement 
)

Definition at line 608 of file G4ComponentGGHadronNucleusXsc.cc.

610 {
611  G4int At = G4lrint(anElement->GetN()); // number of nucleons
612  G4int Zt = G4lrint(anElement->GetZ()); // number of protons
613 
614  return GetHadronNucleonXscPDG(aParticle, At, Zt);
615 }
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4Element *)
int G4int
Definition: G4Types.hh:78
G4double GetN() const
Definition: G4Element.hh:134
int G4lrint(double ad)
Definition: templates.hh:163
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHadronNucleonXscPDG() [2/2]

G4double G4ComponentGGHadronNucleusXsc::GetHadronNucleonXscPDG ( const G4DynamicParticle aParticle,
G4int  At,
G4int  Zt 
)

Definition at line 627 of file G4ComponentGGHadronNucleusXsc.cc.

629 {
630  G4double xsection;
631 
632  G4int Nt = At-Zt; // number of neutrons
633  if (Nt < 0) Nt = 0;
634 
635  G4double zz = Zt;
636  G4double aa = At;
637  G4double nn = Nt;
638 
640  GetIonTable()->GetIonMass(Zt, At);
641 
642  targ_mass = 0.939*GeV; // ~mean neutron and proton ???
643 
644  G4double proj_mass = aParticle->GetMass();
645  G4double proj_momentum = aParticle->GetMomentum().mag();
646 
647  G4double sMand = CalcMandelstamS ( proj_mass , targ_mass , proj_momentum );
648 
649  sMand /= GeV*GeV; // in GeV for parametrisation
650 
651  // General PDG fit constants
652 
653  G4double s0 = 5.38*5.38; // in Gev^2
654  G4double eta1 = 0.458;
655  G4double eta2 = 0.458;
656  G4double B = 0.308;
657 
658 
659  const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
660 
661 
662  if(theParticle == theNeutron) // proton-neutron fit
663  {
664  xsection = zz*( 35.80 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
665  + 40.15*G4Pow::GetInstance()->powA(sMand,-eta1) - 30.*G4Pow::GetInstance()->powA(sMand,-eta2));
666  xsection += nn*( 35.45 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
667  + 42.53*G4Pow::GetInstance()->powA(sMand,-eta1) - 33.34*G4Pow::GetInstance()->powA(sMand,-eta2)); // pp for nn
668  }
669  else if(theParticle == theProton)
670  {
671 
672  xsection = zz*( 35.45 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
673  + 42.53*G4Pow::GetInstance()->powA(sMand,-eta1) - 33.34*G4Pow::GetInstance()->powA(sMand,-eta2));
674 
675  xsection += nn*( 35.80 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
676  + 40.15*G4Pow::GetInstance()->powA(sMand,-eta1) - 30.*G4Pow::GetInstance()->powA(sMand,-eta2));
677  }
678  else if(theParticle == theAProton)
679  {
680  xsection = zz*( 35.45 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
681  + 42.53*G4Pow::GetInstance()->powA(sMand,-eta1) + 33.34*G4Pow::GetInstance()->powA(sMand,-eta2));
682 
683  xsection += nn*( 35.80 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
684  + 40.15*G4Pow::GetInstance()->powA(sMand,-eta1) + 30.*G4Pow::GetInstance()->powA(sMand,-eta2));
685  }
686  else if(theParticle == thePiPlus)
687  {
688  xsection = aa*( 20.86 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
689  + 19.24*G4Pow::GetInstance()->powA(sMand,-eta1) - 6.03*G4Pow::GetInstance()->powA(sMand,-eta2));
690  }
691  else if(theParticle == thePiMinus)
692  {
693  xsection = aa*( 20.86 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
694  + 19.24*G4Pow::GetInstance()->powA(sMand,-eta1) + 6.03*G4Pow::GetInstance()->powA(sMand,-eta2));
695  }
696  else if(theParticle == theKPlus || theParticle == theK0L )
697  {
698  xsection = zz*( 17.91 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
699  + 7.14*G4Pow::GetInstance()->powA(sMand,-eta1) - 13.45*G4Pow::GetInstance()->powA(sMand,-eta2));
700 
701  xsection += nn*( 17.87 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
702  + 5.17*G4Pow::GetInstance()->powA(sMand,-eta1) - 7.23*G4Pow::GetInstance()->powA(sMand,-eta2));
703  }
704  else if(theParticle == theKMinus || theParticle == theK0S )
705  {
706  xsection = zz*( 17.91 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
707  + 7.14*G4Pow::GetInstance()->powA(sMand,-eta1) + 13.45*G4Pow::GetInstance()->powA(sMand,-eta2));
708 
709  xsection += nn*( 17.87 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
710  + 5.17*G4Pow::GetInstance()->powA(sMand,-eta1) + 7.23*G4Pow::GetInstance()->powA(sMand,-eta2));
711  }
712  else if(theParticle == theSMinus)
713  {
714  xsection = aa*( 35.20 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
715  - 199.*G4Pow::GetInstance()->powA(sMand,-eta1) + 264.*G4Pow::GetInstance()->powA(sMand,-eta2));
716  }
717  else if(theParticle == theGamma) // modify later on
718  {
719  xsection = aa*( 0.0 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
720  + 0.032*G4Pow::GetInstance()->powA(sMand,-eta1) - 0.0*G4Pow::GetInstance()->powA(sMand,-eta2));
721 
722  }
723  else // as proton ???
724  {
725  xsection = zz*( 35.45 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
726  + 42.53*G4Pow::GetInstance()->powA(sMand,-eta1) - 33.34*G4Pow::GetInstance()->powA(sMand,-eta2));
727 
728  xsection += nn*( 35.80 + B*G4Pow::GetInstance()->powA(G4Log(sMand/s0),2.)
729  + 40.15*G4Pow::GetInstance()->powA(sMand,-eta1) - 30.*G4Pow::GetInstance()->powA(sMand,-eta2));
730  }
731  xsection *= millibarn; // parametrised in mb
732  return xsection;
733 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double GetMass() const
G4double CalcMandelstamS(const G4double, const G4double, const G4double)
int G4int
Definition: G4Types.hh:78
G4ThreeVector GetMomentum() const
double mag() const
static const double GeV
Definition: G4SIunits.hh:214
G4double G4Log(G4double x)
Definition: G4Log.hh:230
Double_t zz
static G4ParticleTable * GetParticleTable()
static const double millibarn
Definition: G4SIunits.hh:105
G4ParticleDefinition * GetDefinition() const
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

◆ GetHNinelasticXsc() [1/2]

G4double G4ComponentGGHadronNucleusXsc::GetHNinelasticXsc ( const G4DynamicParticle aParticle,
const G4Element anElement 
)

Definition at line 1139 of file G4ComponentGGHadronNucleusXsc.cc.

1141 {
1142  G4int At = G4lrint(anElement->GetN()); // number of nucleons
1143  G4int Zt = G4lrint(anElement->GetZ()); // number of protons
1144 
1145  return GetHNinelasticXsc(aParticle, At, Zt);
1146 }
int G4int
Definition: G4Types.hh:78
G4double GetN() const
Definition: G4Element.hh:134
G4double GetHNinelasticXsc(const G4DynamicParticle *, const G4Element *)
int G4lrint(double ad)
Definition: templates.hh:163
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHNinelasticXsc() [2/2]

G4double G4ComponentGGHadronNucleusXsc::GetHNinelasticXsc ( const G4DynamicParticle aParticle,
G4int  At,
G4int  Zt 
)

Definition at line 1153 of file G4ComponentGGHadronNucleusXsc.cc.

1155 {
1156  const G4ParticleDefinition* hadron = aParticle->GetDefinition();
1157  G4double sumInelastic;
1158  G4int Nt = At - Zt;
1159  if(Nt < 0) Nt = 0;
1160 
1161  if( hadron == theKPlus )
1162  {
1163  sumInelastic = GetHNinelasticXscVU(aParticle, At, Zt);
1164  }
1165  else
1166  {
1167  //sumInelastic = Zt*GetHadronNucleonXscMK(aParticle, theProton);
1168  // sumInelastic += Nt*GetHadronNucleonXscMK(aParticle, theNeutron);
1169  sumInelastic = G4double(Zt)*GetHadronNucleonXscNS(aParticle, 1, 1);
1170  sumInelastic += G4double(Nt)*GetHadronNucleonXscNS(aParticle, 1, 0);
1171  }
1172  return sumInelastic;
1173 }
int G4int
Definition: G4Types.hh:78
G4double GetHNinelasticXscVU(const G4DynamicParticle *, G4int At, G4int Zt)
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4Element *)
G4ParticleDefinition * GetDefinition() const
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

◆ GetHNinelasticXscVU()

G4double G4ComponentGGHadronNucleusXsc::GetHNinelasticXscVU ( const G4DynamicParticle aParticle,
G4int  At,
G4int  Zt 
)

Definition at line 1181 of file G4ComponentGGHadronNucleusXsc.cc.

1183 {
1184  G4int PDGcode = aParticle->GetDefinition()->GetPDGEncoding();
1185  G4int absPDGcode = std::abs(PDGcode);
1186 
1187  G4double Elab = aParticle->GetTotalEnergy();
1188  // (s - 2*0.88*GeV*GeV)/(2*0.939*GeV)/GeV;
1189  G4double Plab = aParticle->GetMomentum().mag();
1190  // std::sqrt(Elab * Elab - 0.88);
1191 
1192  Elab /= GeV;
1193  Plab /= GeV;
1194 
1195  G4double LogPlab = G4Log( Plab );
1196  G4double sqrLogPlab = LogPlab * LogPlab;
1197 
1198  //G4cout<<"Plab = "<<Plab<<G4endl;
1199 
1200  G4double NumberOfTargetProtons = G4double(Zt);
1201  G4double NumberOfTargetNucleons = G4double(At);
1202  G4double NumberOfTargetNeutrons = NumberOfTargetNucleons - NumberOfTargetProtons;
1203 
1204  if(NumberOfTargetNeutrons < 0.0) NumberOfTargetNeutrons = 0.0;
1205 
1206  G4double Xtotal, Xelastic, Xinelastic;
1207 
1208  if( absPDGcode > 1000 ) //------Projectile is baryon --------
1209  {
1210  G4double XtotPP = 48.0 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1211  0.522*sqrLogPlab - 4.51*LogPlab;
1212 
1213  G4double XtotPN = 47.3 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1214  0.513*sqrLogPlab - 4.27*LogPlab;
1215 
1216  G4double XelPP = 11.9 + 26.9*G4Pow::GetInstance()->powA(Plab,-1.21) +
1217  0.169*sqrLogPlab - 1.85*LogPlab;
1218 
1219  G4double XelPN = 11.9 + 26.9*G4Pow::GetInstance()->powA(Plab,-1.21) +
1220  0.169*sqrLogPlab - 1.85*LogPlab;
1221 
1222  Xtotal = (NumberOfTargetProtons * XtotPP +
1223  NumberOfTargetNeutrons * XtotPN);
1224 
1225  Xelastic = (NumberOfTargetProtons * XelPP +
1226  NumberOfTargetNeutrons * XelPN);
1227  }
1228  else if( PDGcode == 211 ) //------Projectile is PionPlus -------
1229  {
1230  G4double XtotPiP = 16.4 + 19.3 *G4Pow::GetInstance()->powA(Plab,-0.42) +
1231  0.19 *sqrLogPlab - 0.0 *LogPlab;
1232 
1233  G4double XtotPiN = 33.0 + 14.0 *G4Pow::GetInstance()->powA(Plab,-1.36) +
1234  0.456*sqrLogPlab - 4.03*LogPlab;
1235 
1236  G4double XelPiP = 0.0 + 11.4*G4Pow::GetInstance()->powA(Plab,-0.40) +
1237  0.079*sqrLogPlab - 0.0 *LogPlab;
1238 
1239  G4double XelPiN = 1.76 + 11.2*G4Pow::GetInstance()->powA(Plab,-0.64) +
1240  0.043*sqrLogPlab - 0.0 *LogPlab;
1241 
1242  Xtotal = ( NumberOfTargetProtons * XtotPiP +
1243  NumberOfTargetNeutrons * XtotPiN );
1244 
1245  Xelastic = ( NumberOfTargetProtons * XelPiP +
1246  NumberOfTargetNeutrons * XelPiN );
1247  }
1248  else if( PDGcode == -211 ) //------Projectile is PionMinus -------
1249  {
1250  G4double XtotPiP = 33.0 + 14.0 *G4Pow::GetInstance()->powA(Plab,-1.36) +
1251  0.456*sqrLogPlab - 4.03*LogPlab;
1252 
1253  G4double XtotPiN = 16.4 + 19.3 *G4Pow::GetInstance()->powA(Plab,-0.42) +
1254  0.19 *sqrLogPlab - 0.0 *LogPlab;
1255 
1256  G4double XelPiP = 1.76 + 11.2*G4Pow::GetInstance()->powA(Plab,-0.64) +
1257  0.043*sqrLogPlab - 0.0 *LogPlab;
1258 
1259  G4double XelPiN = 0.0 + 11.4*G4Pow::GetInstance()->powA(Plab,-0.40) +
1260  0.079*sqrLogPlab - 0.0 *LogPlab;
1261 
1262  Xtotal = ( NumberOfTargetProtons * XtotPiP +
1263  NumberOfTargetNeutrons * XtotPiN );
1264 
1265  Xelastic = ( NumberOfTargetProtons * XelPiP +
1266  NumberOfTargetNeutrons * XelPiN );
1267  }
1268  else if( PDGcode == 111 ) //------Projectile is PionZero -------
1269  {
1270  G4double XtotPiP =(16.4 + 19.3 *G4Pow::GetInstance()->powA(Plab,-0.42) +
1271  0.19 *sqrLogPlab - 0.0 *LogPlab + //Pi+
1272  33.0 + 14.0 *G4Pow::GetInstance()->powA(Plab,-1.36) +
1273  0.456*sqrLogPlab - 4.03*LogPlab)/2; //Pi-
1274 
1275  G4double XtotPiN =(33.0 + 14.0 *G4Pow::GetInstance()->powA(Plab,-1.36) +
1276  0.456*sqrLogPlab - 4.03*LogPlab + //Pi+
1277  16.4 + 19.3 *G4Pow::GetInstance()->powA(Plab,-0.42) +
1278  0.19 *sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
1279 
1280  G4double XelPiP =( 0.0 + 11.4*G4Pow::GetInstance()->powA(Plab,-0.40) +
1281  0.079*sqrLogPlab - 0.0 *LogPlab + //Pi+
1282  1.76 + 11.2*G4Pow::GetInstance()->powA(Plab,-0.64) +
1283  0.043*sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
1284 
1285  G4double XelPiN =( 1.76 + 11.2*G4Pow::GetInstance()->powA(Plab,-0.64) +
1286  0.043*sqrLogPlab - 0.0 *LogPlab + //Pi+
1287  0.0 + 11.4*G4Pow::GetInstance()->powA(Plab,-0.40) +
1288  0.079*sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
1289 
1290  Xtotal = ( NumberOfTargetProtons * XtotPiP +
1291  NumberOfTargetNeutrons * XtotPiN );
1292 
1293  Xelastic = ( NumberOfTargetProtons * XelPiP +
1294  NumberOfTargetNeutrons * XelPiN );
1295  }
1296  else if( PDGcode == 321 ) //------Projectile is KaonPlus -------
1297  {
1298  G4double XtotKP = 18.1 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1299  0.26 *sqrLogPlab - 1.0 *LogPlab;
1300  G4double XtotKN = 18.7 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1301  0.21 *sqrLogPlab - 0.89*LogPlab;
1302 
1303  G4double XelKP = 5.0 + 8.1*G4Pow::GetInstance()->powA(Plab,-1.8 ) +
1304  0.16 *sqrLogPlab - 1.3 *LogPlab;
1305 
1306  G4double XelKN = 7.3 + 0. *G4Pow::GetInstance()->powA(Plab,-0. ) +
1307  0.29 *sqrLogPlab - 2.4 *LogPlab;
1308 
1309  Xtotal = ( NumberOfTargetProtons * XtotKP +
1310  NumberOfTargetNeutrons * XtotKN );
1311 
1312  Xelastic = ( NumberOfTargetProtons * XelKP +
1313  NumberOfTargetNeutrons * XelKN );
1314  }
1315  else if( PDGcode ==-321 ) //------Projectile is KaonMinus ------
1316  {
1317  G4double XtotKP = 32.1 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1318  0.66 *sqrLogPlab - 5.6 *LogPlab;
1319  G4double XtotKN = 25.2 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1320  0.38 *sqrLogPlab - 2.9 *LogPlab;
1321 
1322  G4double XelKP = 7.3 + 0. *G4Pow::GetInstance()->powA(Plab,-0. ) +
1323  0.29 *sqrLogPlab - 2.4 *LogPlab;
1324 
1325  G4double XelKN = 5.0 + 8.1*G4Pow::GetInstance()->powA(Plab,-1.8 ) +
1326  0.16 *sqrLogPlab - 1.3 *LogPlab;
1327 
1328  Xtotal = ( NumberOfTargetProtons * XtotKP +
1329  NumberOfTargetNeutrons * XtotKN );
1330 
1331  Xelastic = ( NumberOfTargetProtons * XelKP +
1332  NumberOfTargetNeutrons * XelKN );
1333  }
1334  else if( PDGcode == 311 ) //------Projectile is KaonZero ------
1335  {
1336  G4double XtotKP = ( 18.1 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1337  0.26 *sqrLogPlab - 1.0 *LogPlab + //K+
1338  32.1 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1339  0.66 *sqrLogPlab - 5.6 *LogPlab)/2; //K-
1340 
1341  G4double XtotKN = ( 18.7 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1342  0.21 *sqrLogPlab - 0.89*LogPlab + //K+
1343  25.2 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1344  0.38 *sqrLogPlab - 2.9 *LogPlab)/2; //K-
1345 
1346  G4double XelKP = ( 5.0 + 8.1*G4Pow::GetInstance()->powA(Plab,-1.8 )
1347  + 0.16 *sqrLogPlab - 1.3 *LogPlab + //K+
1348  7.3 + 0. *G4Pow::GetInstance()->powA(Plab,-0. ) +
1349  0.29 *sqrLogPlab - 2.4 *LogPlab)/2; //K-
1350 
1351  G4double XelKN = ( 7.3 + 0. *G4Pow::GetInstance()->powA(Plab,-0. ) +
1352  0.29 *sqrLogPlab - 2.4 *LogPlab + //K+
1353  5.0 + 8.1*G4Pow::GetInstance()->powA(Plab,-1.8 ) +
1354  0.16 *sqrLogPlab - 1.3 *LogPlab)/2; //K-
1355 
1356  Xtotal = ( NumberOfTargetProtons * XtotKP +
1357  NumberOfTargetNeutrons * XtotKN );
1358 
1359  Xelastic = ( NumberOfTargetProtons * XelKP +
1360  NumberOfTargetNeutrons * XelKN );
1361  }
1362  else //------Projectile is undefined, Nucleon assumed
1363  {
1364  G4double XtotPP = 48.0 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1365  0.522*sqrLogPlab - 4.51*LogPlab;
1366 
1367  G4double XtotPN = 47.3 + 0. *G4Pow::GetInstance()->powA(Plab, 0. ) +
1368  0.513*sqrLogPlab - 4.27*LogPlab;
1369 
1370  G4double XelPP = 11.9 + 26.9*G4Pow::GetInstance()->powA(Plab,-1.21) +
1371  0.169*sqrLogPlab - 1.85*LogPlab;
1372  G4double XelPN = 11.9 + 26.9*G4Pow::GetInstance()->powA(Plab,-1.21) +
1373  0.169*sqrLogPlab - 1.85*LogPlab;
1374 
1375  Xtotal = ( NumberOfTargetProtons * XtotPP +
1376  NumberOfTargetNeutrons * XtotPN );
1377 
1378  Xelastic = ( NumberOfTargetProtons * XelPP +
1379  NumberOfTargetNeutrons * XelPN );
1380  }
1381  Xinelastic = Xtotal - Xelastic;
1382 
1383  if( Xinelastic < 0.) Xinelastic = 0.;
1384 
1385  return Xinelastic*= millibarn;
1386 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
int G4int
Definition: G4Types.hh:78
G4double GetTotalEnergy() const
G4ThreeVector GetMomentum() const
double mag() const
static const double GeV
Definition: G4SIunits.hh:214
G4double G4Log(G4double x)
Definition: G4Log.hh:230
static const double millibarn
Definition: G4SIunits.hh:105
G4ParticleDefinition * GetDefinition() const
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetInelasticElementCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetInelasticElementCrossSection ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4double  A 
)
virtual

Implements G4VComponentCrossSection.

Definition at line 156 of file G4ComponentGGHadronNucleusXsc.cc.

159 {
160  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
161  kinEnergy);
163  delete aDP;
164 
165  return fInelasticXsc;
166 }
int G4int
Definition: G4Types.hh:78
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetInelasticGlauberGribov()

G4double G4ComponentGGHadronNucleusXsc::GetInelasticGlauberGribov ( const G4DynamicParticle dp,
G4int  Z,
G4int  A 
)
inline

Definition at line 233 of file G4ComponentGGHadronNucleusXsc.hh.

235 {
236  GetIsoCrossSection(dp, Z, A);
237  return fInelasticXsc;
238 }
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetInelasticGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetInelasticGlauberGribovXsc ( )
inline

Definition at line 150 of file G4ComponentGGHadronNucleusXsc.hh.

Here is the caller graph for this function:

◆ GetInelasticIsotopeCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetInelasticIsotopeCrossSection ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4int  A 
)
virtual

Implements G4VComponentCrossSection.

Definition at line 128 of file G4ComponentGGHadronNucleusXsc.cc.

131 {
132  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
133  kinEnergy);
134  fTotalXsc = GetIsoCrossSection(aDP, Z, A);
135  delete aDP;
136 
137  return fInelasticXsc;
138 }
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetIsoCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetIsoCrossSection ( const G4DynamicParticle aParticle,
G4int  Z,
G4int  A,
const G4Isotope iso = 0,
const G4Element elm = 0,
const G4Material mat = 0 
)

Definition at line 294 of file G4ComponentGGHadronNucleusXsc.cc.

299 {
300  G4double xsection, sigma, cofInelastic, cofTotal, nucleusSquare, ratio;
301  G4double hpInXsc(0.), hnInXsc(0.);
303 
304  G4int N = A - Z; // number of neutrons
305  if (N < 0) N = 0;
306 
307  const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
308 
309  if( theParticle == theProton ||
310  theParticle == theNeutron ||
311  theParticle == thePiPlus ||
312  theParticle == thePiMinus )
313  {
314  // sigma = GetHadronNucleonXscNS(aParticle, A, Z);
315 
316  sigma = Z*hnXsc->GetHadronNucleonXscNS(aParticle, theProton);
317 
318  hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
319 
320  sigma += N*hnXsc->GetHadronNucleonXscNS(aParticle, theNeutron);
321 
322  hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
323 
324  cofInelastic = 2.4;
325  cofTotal = 2.0;
326  }
327  else if( theParticle == theKPlus ||
328  theParticle == theKMinus ||
329  theParticle == theK0S ||
330  theParticle == theK0L )
331  {
332  // sigma = GetKaonNucleonXscVector(aParticle, A, Z);
333 
334  sigma = Z*hnXsc->GetKaonNucleonXscGG(aParticle, theProton);
335 
336  hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
337 
338  sigma += N*hnXsc->GetKaonNucleonXscGG(aParticle, theNeutron);
339 
340  hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
341 
342  cofInelastic = 2.2;
343  cofTotal = 2.0;
344  R = 1.3*fermi;
345  R *= G4Pow::GetInstance()->powA(G4double(A), 0.3333);
346  }
347  else
348  {
349  sigma = GetHadronNucleonXscNS(aParticle, A, Z);
350  cofInelastic = 2.2;
351  cofTotal = 2.0;
352  }
353  // cofInelastic = 2.0;
354 
355  if( A > 1 )
356  {
357  nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
358  ratio = sigma/nucleusSquare;
359 
360  xsection = nucleusSquare*G4Log( 1. + ratio );
361 
362  xsection *= GetParticleBarCorTot(theParticle, Z);
363 
364  fTotalXsc = xsection;
365 
366 
367 
368  fInelasticXsc = nucleusSquare*G4Log( 1. + cofInelastic*ratio )/cofInelastic;
369 
370  fInelasticXsc *= GetParticleBarCorIn(theParticle, Z);
371 
373 
374  if(fElasticXsc < 0.) fElasticXsc = 0.;
375 
376  G4double difratio = ratio/(1.+ratio);
377 
378  fDiffractionXsc = 0.5*nucleusSquare*( difratio - G4Log( 1. + difratio ) );
379 
380 
381  // sigma = GetHNinelasticXsc(aParticle, A, Z);
382 
383  sigma = Z*hpInXsc + N*hnInXsc;
384 
385  ratio = sigma/nucleusSquare;
386 
387  fProductionXsc = nucleusSquare*G4Log( 1. + cofInelastic*ratio )/cofInelastic;
388 
389  fProductionXsc *= GetParticleBarCorIn(theParticle, Z);
390 
391  if (fElasticXsc < 0.) fElasticXsc = 0.;
392  }
393  else // H
394  {
395  fTotalXsc = sigma;
396  xsection = sigma;
397 
398  fInelasticXsc = hnXsc->GetInelasticHadronNucleonXsc();
399 
400  if ( theParticle != theAProton )
401  {
403 
404  // sigma = GetHNinelasticXsc(aParticle, A, Z);
405  // fInelasticXsc = sigma;
406  // fElasticXsc = fTotalXsc - fInelasticXsc;
407  }
408  else if( theParticle == theKPlus ||
409  theParticle == theKMinus ||
410  theParticle == theK0S ||
411  theParticle == theK0L )
412  {
413  fInelasticXsc = hpInXsc;
415  }
416  else
417  {
418  fInelasticXsc = hpInXsc;
420  }
421  if (fElasticXsc < 0.) fElasticXsc = 0.;
422 
423  }
424  return xsection;
425 }
G4double GetElasticHadronNucleonXsc()
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double GetNucleusRadius(const G4DynamicParticle *, const G4Element *)
int G4int
Definition: G4Types.hh:78
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4ParticleDefinition *)
double A(double temperature)
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4Element *)
G4double GetKaonNucleonXscGG(const G4DynamicParticle *, const G4ParticleDefinition *)
Float_t Z
G4double GetParticleBarCorIn(const G4ParticleDefinition *theParticle, G4int Z)
G4double G4Log(G4double x)
Definition: G4Log.hh:230
static const double pi
Definition: G4SIunits.hh:74
G4ParticleDefinition * GetDefinition() const
**D E S C R I P T I O N
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
double G4double
Definition: G4Types.hh:76
static const double fermi
Definition: G4SIunits.hh:102
G4double GetParticleBarCorTot(const G4ParticleDefinition *theParticle, G4int Z)
G4double GetInelasticHadronNucleonXsc()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNucleusRadius() [1/2]

G4double G4ComponentGGHadronNucleusXsc::GetNucleusRadius ( const G4DynamicParticle ,
const G4Element anElement 
)

Definition at line 1393 of file G4ComponentGGHadronNucleusXsc.cc.

1395 {
1396  G4int At = G4lrint(anElement->GetN());
1397  G4double oneThird = 1.0/3.0;
1398  G4double cubicrAt = G4Pow::GetInstance()->powA(G4double(At), oneThird);
1399 
1400  G4double R; // = fRadiusConst*cubicrAt;
1401  /*
1402  G4double tmp = G4Pow::GetInstance()->powA( cubicrAt-1., 3.);
1403  tmp += At;
1404  tmp *= 0.5;
1405 
1406  if (At > 20.) // 20.
1407  {
1408  R = fRadiusConst*G4Pow::GetInstance()->powA (tmp, oneThird);
1409  }
1410  else
1411  {
1412  R = fRadiusConst*cubicrAt;
1413  }
1414  */
1415 
1416  R = fRadiusConst*cubicrAt;
1417 
1418  G4double meanA = 21.;
1419 
1420  G4double tauA1 = 40.;
1421  G4double tauA2 = 10.;
1422  G4double tauA3 = 5.;
1423 
1424  G4double a1 = 0.85;
1425  G4double b1 = 1. - a1;
1426 
1427  G4double b2 = 0.3;
1428  G4double b3 = 4.;
1429 
1430  if (At > 20) // 20.
1431  {
1432  R *= ( a1 + b1*G4Exp( -(At - meanA)/tauA1) );
1433  }
1434  else if (At > 3)
1435  {
1436  R *= ( 1.0 + b2*( 1. - G4Exp( (At - meanA)/tauA2) ) );
1437  }
1438  else
1439  {
1440  R *= ( 1.0 + b3*( 1. - G4Exp( (At - meanA)/tauA3) ) );
1441  }
1442  return R;
1443 
1444 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
static const G4double a1
int G4int
Definition: G4Types.hh:78
G4double GetN() const
Definition: G4Element.hh:134
static const G4double b3
static const G4double b2
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
int G4lrint(double ad)
Definition: templates.hh:163
static const G4double b1
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
double G4double
Definition: G4Types.hh:76
const G4double oneThird
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNucleusRadius() [2/2]

G4double G4ComponentGGHadronNucleusXsc::GetNucleusRadius ( G4int  At)

Definition at line 1450 of file G4ComponentGGHadronNucleusXsc.cc.

1451 {
1452  G4double oneThird = 1.0/3.0;
1453  G4double cubicrAt = G4Pow::GetInstance()->powA(G4double(At), oneThird);
1454 
1455  G4double R; // = fRadiusConst*cubicrAt;
1456 
1457  /*
1458  G4double tmp = G4Pow::GetInstance()->powA( cubicrAt-1., 3.);
1459  tmp += At;
1460  tmp *= 0.5;
1461 
1462  if (At > 20.)
1463  {
1464  R = fRadiusConst*G4Pow::GetInstance()->powA (tmp, oneThird);
1465  }
1466  else
1467  {
1468  R = fRadiusConst*cubicrAt;
1469  }
1470  */
1471 
1472  R = fRadiusConst*cubicrAt;
1473 
1474  G4double meanA = 20.;
1475  G4double tauA = 20.;
1476 
1477  if (At > 20) // 20.
1478  {
1479  R *= ( 0.8 + 0.2*G4Exp( -(G4double(At) - meanA)/tauA) );
1480  }
1481  else
1482  {
1483  R *= ( 1.0 + 0.1*( 1. - G4Exp( (G4double(At) - meanA)/tauA) ) );
1484  }
1485 
1486  return R;
1487 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
double G4double
Definition: G4Types.hh:76
const G4double oneThird
Here is the call graph for this function:

◆ GetParticleBarCorIn()

G4double G4ComponentGGHadronNucleusXsc::GetParticleBarCorIn ( const G4ParticleDefinition theParticle,
G4int  Z 
)
inline

Definition at line 266 of file G4ComponentGGHadronNucleusXsc.hh.

268 {
269  if(Z >= 2 && Z <= 92)
270  {
271  if( theParticle == theProton ) return fProtonBarCorrectionIn[Z];
272  else if( theParticle == theNeutron) return fNeutronBarCorrectionIn[Z];
273  else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionIn[Z];
274  else if( theParticle == thePiMinus) return fPionMinusBarCorrectionIn[Z];
275  else return 1.0;
276  }
277  else return 1.0;
278 }
static const G4double fNeutronBarCorrectionIn[93]
Float_t Z
static const G4double fPionPlusBarCorrectionIn[93]
static const G4double fProtonBarCorrectionIn[93]
static const G4double fPionMinusBarCorrectionIn[93]
Here is the caller graph for this function:

◆ GetParticleBarCorTot()

G4double G4ComponentGGHadronNucleusXsc::GetParticleBarCorTot ( const G4ParticleDefinition theParticle,
G4int  Z 
)
inline

Definition at line 246 of file G4ComponentGGHadronNucleusXsc.hh.

248 {
249  if(Z >= 2 && Z <= 92)
250  {
251  if( theParticle == theProton ) return fProtonBarCorrectionTot[Z];
252  else if( theParticle == theNeutron) return fNeutronBarCorrectionTot[Z];
253  else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionTot[Z];
254  else if( theParticle == thePiMinus) return fPionMinusBarCorrectionTot[Z];
255  else return 1.0;
256  }
257  else return 1.0;
258 }
static const G4double fPionMinusBarCorrectionTot[93]
Float_t Z
static const G4double fPionPlusBarCorrectionTot[93]
static const G4double fProtonBarCorrectionTot[93]
static const G4double fNeutronBarCorrectionTot[93]
Here is the caller graph for this function:

◆ GetProductionElementCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetProductionElementCrossSection ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4double  A 
)
virtual

Definition at line 170 of file G4ComponentGGHadronNucleusXsc.cc.

173 {
174  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
175  kinEnergy);
177  delete aDP;
178 
179  return fProductionXsc;
180 }
int G4int
Definition: G4Types.hh:78
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetProductionGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetProductionGlauberGribovXsc ( )
inline

◆ GetProductionIsotopeCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetProductionIsotopeCrossSection ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4int  A 
)
virtual

Definition at line 142 of file G4ComponentGGHadronNucleusXsc.cc.

145 {
146  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
147  kinEnergy);
148  fTotalXsc = GetIsoCrossSection(aDP, Z, A);
149  delete aDP;
150 
151  return fProductionXsc;
152 }
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetRadiusConst()

G4double G4ComponentGGHadronNucleusXsc::GetRadiusConst ( )
inline

Definition at line 153 of file G4ComponentGGHadronNucleusXsc.hh.

Here is the call graph for this function:

◆ GetRatioQE()

G4double G4ComponentGGHadronNucleusXsc::GetRatioQE ( const G4DynamicParticle aParticle,
G4int  At,
G4int  Zt 
)

Definition at line 474 of file G4ComponentGGHadronNucleusXsc.cc.

475 {
476  G4double sigma, cofInelastic, cofTotal, nucleusSquare, ratio;
478 
479  const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
480 
481  if( theParticle == theProton ||
482  theParticle == theNeutron ||
483  theParticle == thePiPlus ||
484  theParticle == thePiMinus )
485  {
486  sigma = GetHadronNucleonXscNS(aParticle, A, Z);
487  cofInelastic = 2.4;
488  cofTotal = 2.0;
489  }
490  else
491  {
492  sigma = GetHadronNucleonXscNS(aParticle, A, Z);
493  cofInelastic = 2.2;
494  cofTotal = 2.0;
495  }
496  nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
497  ratio = sigma/nucleusSquare;
498 
499  fInelasticXsc = nucleusSquare*G4Log( 1. + cofInelastic*ratio )/cofInelastic;
500 
501  sigma = GetHNinelasticXsc(aParticle, A, Z);
502  ratio = sigma/nucleusSquare;
503 
504  fProductionXsc = nucleusSquare*G4Log( 1. + cofInelastic*ratio )/cofInelastic;
505 
507  else ratio = 0.;
508  if ( ratio < 0. ) ratio = 0.;
509 
510  return ratio;
511 }
G4double GetNucleusRadius(const G4DynamicParticle *, const G4Element *)
double A(double temperature)
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4Element *)
Float_t Z
G4double GetHNinelasticXsc(const G4DynamicParticle *, const G4Element *)
G4double G4Log(G4double x)
Definition: G4Log.hh:230
static const double pi
Definition: G4SIunits.hh:74
G4ParticleDefinition * GetDefinition() const
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetRatioSD()

G4double G4ComponentGGHadronNucleusXsc::GetRatioSD ( const G4DynamicParticle aParticle,
G4int  At,
G4int  Zt 
)

Definition at line 432 of file G4ComponentGGHadronNucleusXsc.cc.

433 {
434  G4double sigma, cofInelastic, cofTotal, nucleusSquare, ratio;
436 
437  const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
438 
439  if( theParticle == theProton ||
440  theParticle == theNeutron ||
441  theParticle == thePiPlus ||
442  theParticle == thePiMinus )
443  {
444  sigma = GetHadronNucleonXscNS(aParticle, A, Z);
445  cofInelastic = 2.4;
446  cofTotal = 2.0;
447  }
448  else
449  {
450  sigma = GetHadronNucleonXscNS(aParticle, A, Z);
451  cofInelastic = 2.2;
452  cofTotal = 2.0;
453  }
454  nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
455  ratio = sigma/nucleusSquare;
456 
457  fInelasticXsc = nucleusSquare*G4Log( 1. + cofInelastic*ratio )/cofInelastic;
458 
459  G4double difratio = ratio/(1.+ratio);
460 
461  fDiffractionXsc = 0.5*nucleusSquare*( difratio - G4Log( 1. + difratio ) );
462 
463  if (fInelasticXsc > 0.) ratio = fDiffractionXsc/fInelasticXsc;
464  else ratio = 0.;
465 
466  return ratio;
467 }
G4double GetNucleusRadius(const G4DynamicParticle *, const G4Element *)
double A(double temperature)
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4Element *)
Float_t Z
G4double G4Log(G4double x)
Definition: G4Log.hh:230
static const double pi
Definition: G4SIunits.hh:74
G4ParticleDefinition * GetDefinition() const
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetTotalElementCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetTotalElementCrossSection ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4double  A 
)
virtual

Implements G4VComponentCrossSection.

Definition at line 114 of file G4ComponentGGHadronNucleusXsc.cc.

117 {
118  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
119  kinEnergy);
121  delete aDP;
122 
123  return fTotalXsc;
124 }
int G4int
Definition: G4Types.hh:78
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetTotalGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetTotalGlauberGribovXsc ( )
inline

Definition at line 148 of file G4ComponentGGHadronNucleusXsc.hh.

◆ GetTotalIsotopeCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetTotalIsotopeCrossSection ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4int  A 
)
virtual

Implements G4VComponentCrossSection.

Definition at line 100 of file G4ComponentGGHadronNucleusXsc.cc.

103 {
104  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
105  kinEnergy);
106  fTotalXsc = GetIsoCrossSection(aDP, Z, A);
107  delete aDP;
108 
109  return fTotalXsc;
110 }
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
double A(double temperature)
Float_t Z
G4ThreeVector G4ParticleMomentum
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsIsoApplicable()

G4bool G4ComponentGGHadronNucleusXsc::IsIsoApplicable ( const G4DynamicParticle aDP,
G4int  Z,
G4int  A,
const G4Element elm = 0,
const G4Material mat = 0 
)

Definition at line 236 of file G4ComponentGGHadronNucleusXsc.cc.

240 {
241  G4bool applicable = false;
242  // G4int baryonNumber = aDP->GetDefinition()->GetBaryonNumber();
243  G4double kineticEnergy = aDP->GetKineticEnergy();
244 
245  const G4ParticleDefinition* theParticle = aDP->GetDefinition();
246 
247  if (
248  Z >= 1 // >= H for kaons
249  &&
250  (
251  kineticEnergy >= fLowerLimit
252  &&
253  // Z > 1 && // >= He
254  (
255  theParticle == theAProton ||
256  theParticle == theGamma ||
257  theParticle == theSMinus ||
258  theParticle == theProton ||
259  theParticle == theNeutron ||
260  theParticle == thePiPlus ||
261  theParticle == thePiMinus
262  )
263  )
264  )
265  applicable = true;
266 
267  if (
268  Z >= 1 // >= H for kaons
269  &&
270  (
271  kineticEnergy >= 0.01*fLowerLimit
272  &&
273  (
274  theParticle == theKPlus ||
275  theParticle == theKMinus ||
276  theParticle == theK0L ||
277  theParticle == theK0S
278  )
279  )
280  )
281  applicable = true;
282 
283  return applicable;
284 }
G4double GetKineticEnergy() const
Float_t Z
bool G4bool
Definition: G4Types.hh:79
G4ParticleDefinition * GetDefinition() const
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetEnergyLowerLimit()

void G4ComponentGGHadronNucleusXsc::SetEnergyLowerLimit ( G4double  E)
inline

Member Data Documentation

◆ fDiffractionXsc

G4double G4ComponentGGHadronNucleusXsc::fDiffractionXsc
private

Definition at line 178 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fElasticXsc

G4double G4ComponentGGHadronNucleusXsc::fElasticXsc
private

Definition at line 178 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fInelasticXsc

G4double G4ComponentGGHadronNucleusXsc::fInelasticXsc
private

Definition at line 178 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fLowerLimit

G4double G4ComponentGGHadronNucleusXsc::fLowerLimit
private

Definition at line 158 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fNeutronBarCorrectionIn

const G4double G4ComponentGGHadronNucleusXsc::fNeutronBarCorrectionIn
staticprivate
Initial value:
= {
1.0, 1.0, 1.167421e+00, 1.156250e+00, 1.205364e+00, 1.154225e+00, 1.120391e+00,
1.124632e+00, 1.129460e+00, 1.107863e+00, 1.102152e+00, 1.104593e+00, 1.100285e+00,
1.098450e+00, 1.092677e+00, 1.101124e+00, 1.106461e+00, 1.115049e+00, 1.123903e+00,
1.126661e+00, 1.131259e+00, 1.133949e+00, 1.134185e+00, 1.133767e+00, 1.132813e+00,
1.131515e+00, 1.144338e+00,
1.134171e+00, 1.139206e+00, 1.148474e+00,
1.142189e+00,
1.140725e+00, 1.140100e+00, 1.139848e+00, 1.137674e+00, 1.138645e+00, 1.136339e+00,
1.136439e+00, 1.135946e+00, 1.136431e+00, 1.135702e+00, 1.135703e+00, 1.134113e+00,
1.131935e+00, 1.128381e+00, 1.126373e+00, 1.122453e+00, 1.120908e+00, 1.115953e+00,
1.115947e+00, 1.114426e+00, 1.111749e+00, 1.106207e+00, 1.107494e+00, 1.103622e+00,
1.102576e+00, 1.098816e+00, 1.097889e+00, 1.097306e+00, 1.097130e+00, 1.094578e+00,
1.094552e+00, 1.090222e+00, 1.089358e+00, 1.085409e+00, 1.084560e+00, 1.082182e+00,
1.080773e+00, 1.079464e+00, 1.078724e+00, 1.076121e+00, 1.075235e+00, 1.073159e+00,
1.071920e+00, 1.070395e+00, 1.069503e+00, 1.067525e+00, 1.066919e+00, 1.065779e+00,
1.065319e+00, 1.063730e+00, 1.062092e+00, 1.061085e+00, 1.059908e+00, 1.059815e+00,
1.059109e+00, 1.051920e+00, 1.051258e+00, 1.049473e+00, 1.048823e+00, 1.045984e+00,
1.046435e+00, 1.042614e+00
}

Definition at line 167 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fNeutronBarCorrectionTot

const G4double G4ComponentGGHadronNucleusXsc::fNeutronBarCorrectionTot
staticprivate
Initial value:
= {
1.0, 1.0, 1.42517e+00,
1.082002e+00, 1.116171e+00, 1.078747e+00, 1.061315e+00,
1.058205e+00, 1.082663e+00, 1.068500e+00, 1.076912e+00, 1.083475e+00, 1.079117e+00,
1.071856e+00, 1.071990e+00, 1.073774e+00, 1.079356e+00, 1.081314e+00, 1.082056e+00,
1.090772e+00, 1.096776e+00, 1.095828e+00, 1.097678e+00, 1.099157e+00, 1.103677e+00,
1.105132e+00, 1.109806e+00, 1.110816e+00, 1.117378e+00, 1.115165e+00, 1.115710e+00,
1.111855e+00, 1.110482e+00, 1.110112e+00, 1.106676e+00, 1.108706e+00, 1.105549e+00,
1.106318e+00, 1.106242e+00, 1.107672e+00, 1.107342e+00, 1.108119e+00, 1.106655e+00,
1.102588e+00, 1.096657e+00, 1.092920e+00, 1.086629e+00, 1.083592e+00, 1.076030e+00,
1.083777e+00, 1.089460e+00, 1.086545e+00, 1.079924e+00, 1.082218e+00, 1.077798e+00,
1.077062e+00, 1.072825e+00, 1.072241e+00, 1.072104e+00, 1.072490e+00, 1.069829e+00,
1.070398e+00, 1.065458e+00, 1.064968e+00, 1.060524e+00, 1.060048e+00, 1.057620e+00,
1.056428e+00, 1.055366e+00, 1.055017e+00, 1.052304e+00, 1.051767e+00, 1.049728e+00,
1.048745e+00, 1.047399e+00, 1.045876e+00, 1.042972e+00, 1.041824e+00, 1.039993e+00,
1.039021e+00, 1.036627e+00, 1.034176e+00, 1.032526e+00, 1.033633e+00, 1.036107e+00,
1.037803e+00, 1.031266e+00, 1.032991e+00, 1.033284e+00, 1.035015e+00, 1.033945e+00,
1.037075e+00, 1.034721e+00
}

Definition at line 166 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fPionMinusBarCorrectionIn

const G4double G4ComponentGGHadronNucleusXsc::fPionMinusBarCorrectionIn
staticprivate
Initial value:
= {
1.0, 1.0,
1.463e+00, 1.100898e+00, 1.106773e+00, 1.070289e+00, 1.040514e+00, 1.062628e+00,
1.047992e+00, 1.038041e+00, 1.035862e+00, 1.043679e+00, 1.052466e+00, 1.065780e+00,
1.070551e+00, 1.078869e+00, 1.081541e+00, 1.090455e+00, 1.100847e+00, 1.098511e+00,
1.102226e+00, 1.118865e+00, 1.123143e+00, 1.126904e+00, 1.127785e+00, 1.130444e+00,
1.148502e+00, 1.127678e+00, 1.127244e+00, 1.123634e+00, 1.118347e+00, 1.118988e+00,
1.118957e+00, 1.118696e+00, 1.118074e+00, 1.117722e+00, 1.116717e+00, 1.116111e+00,
1.115311e+00, 1.114745e+00, 1.113814e+00, 1.113069e+00, 1.113141e+00, 1.113660e+00,
1.112249e+00, 1.111343e+00, 1.109718e+00, 1.108942e+00, 1.108310e+00, 1.109549e+00,
1.110227e+00, 1.108846e+00, 1.106183e+00, 1.106354e+00, 1.104388e+00, 1.103583e+00,
1.101632e+00, 1.100896e+00, 1.100296e+00, 1.099873e+00, 1.098420e+00, 1.098082e+00,
1.095892e+00, 1.095162e+00, 1.093144e+00, 1.092438e+00, 1.091083e+00, 1.090142e+00,
1.089236e+00, 1.088604e+00, 1.087159e+00, 1.086465e+00, 1.085239e+00, 1.084388e+00,
1.083473e+00, 1.078373e+00, 1.077136e+00, 1.076450e+00, 1.075561e+00, 1.074973e+00,
1.073898e+00, 1.072806e+00, 1.067706e+00, 1.068684e+00, 1.068618e+00, 1.068294e+00,
1.065241e+00, 1.064939e+00, 1.064166e+00, 1.063872e+00, 1.062659e+00, 1.062828e+00,
1.062699e+00
}

Definition at line 176 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fPionMinusBarCorrectionTot

const G4double G4ComponentGGHadronNucleusXsc::fPionMinusBarCorrectionTot
staticprivate
Initial value:
= {
1.0, 1.0,
1.3956e+00, 1.077959e+00, 1.129145e+00, 1.102088e+00, 1.089765e+00, 1.083542e+00,
1.089995e+00, 1.104895e+00, 1.097154e+00, 1.127663e+00, 1.133063e+00, 1.137425e+00,
1.136724e+00, 1.133859e+00, 1.132498e+00, 1.130276e+00, 1.127896e+00, 1.127656e+00,
1.127905e+00, 1.164210e+00, 1.162259e+00, 1.160075e+00, 1.158978e+00, 1.156649e+00,
1.194157e+00, 1.199177e+00, 1.198983e+00, 1.202325e+00, 1.221967e+00, 1.217548e+00,
1.214389e+00, 1.211760e+00, 1.207335e+00, 1.206081e+00, 1.201766e+00, 1.199779e+00,
1.197283e+00, 1.195706e+00, 1.193071e+00, 1.191115e+00, 1.208838e+00, 1.212681e+00,
1.209235e+00, 1.207163e+00, 1.203451e+00, 1.201807e+00, 1.203283e+00, 1.203388e+00,
1.202244e+00, 1.216509e+00, 1.211066e+00, 1.211504e+00, 1.207539e+00, 1.205991e+00,
1.202143e+00, 1.200724e+00, 1.199595e+00, 1.198815e+00, 1.196025e+00, 1.195390e+00,
1.191137e+00, 1.189791e+00, 1.185888e+00, 1.184575e+00, 1.181996e+00, 1.180229e+00,
1.178545e+00, 1.177355e+00, 1.174616e+00, 1.173312e+00, 1.171016e+00, 1.169424e+00,
1.184120e+00, 1.181478e+00, 1.179085e+00, 1.177817e+00, 1.176124e+00, 1.175003e+00,
1.172947e+00, 1.170858e+00, 1.168170e+00, 1.169397e+00, 1.169304e+00, 1.168706e+00,
1.162774e+00, 1.162217e+00, 1.160740e+00, 1.160196e+00, 1.157857e+00, 1.158220e+00,
1.157267e+00
}

Definition at line 175 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fPionPlusBarCorrectionIn

const G4double G4ComponentGGHadronNucleusXsc::fPionPlusBarCorrectionIn
staticprivate
Initial value:
= {
1.0, 1.0,
1.140246e+00, 1.097872e+00, 1.104301e+00, 1.068722e+00, 1.056495e+00, 1.062622e+00,
1.047987e+00, 1.037032e+00, 1.035686e+00, 1.042870e+00, 1.052222e+00, 1.075100e+00,
1.084480e+00, 1.078286e+00, 1.081488e+00, 1.089713e+00, 1.099105e+00, 1.098003e+00,
1.102175e+00, 1.117707e+00, 1.121734e+00, 1.125229e+00, 1.126457e+00, 1.128905e+00,
1.163312e+00, 1.126263e+00, 1.126459e+00, 1.135191e+00, 1.116986e+00, 1.117184e+00,
1.117037e+00, 1.116777e+00, 1.115858e+00, 1.115745e+00, 1.114489e+00, 1.113993e+00,
1.113226e+00, 1.112818e+00, 1.111890e+00, 1.111238e+00, 1.111209e+00, 1.111775e+00,
1.110256e+00, 1.109414e+00, 1.107647e+00, 1.106980e+00, 1.106096e+00, 1.107331e+00,
1.107849e+00, 1.106407e+00, 1.103426e+00, 1.103896e+00, 1.101756e+00, 1.101031e+00,
1.098915e+00, 1.098260e+00, 1.097768e+00, 1.097487e+00, 1.095964e+00, 1.095773e+00,
1.093348e+00, 1.092687e+00, 1.090465e+00, 1.089821e+00, 1.088394e+00, 1.087462e+00,
1.086571e+00, 1.085997e+00, 1.084451e+00, 1.083798e+00, 1.082513e+00, 1.081670e+00,
1.080735e+00, 1.075659e+00, 1.074341e+00, 1.073689e+00, 1.072787e+00, 1.072237e+00,
1.071107e+00, 1.069955e+00, 1.074856e+00, 1.065873e+00, 1.065938e+00, 1.065694e+00,
1.062192e+00, 1.061967e+00, 1.061180e+00, 1.060960e+00, 1.059646e+00, 1.059975e+00,
1.059658e+00
}

Definition at line 173 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fPionPlusBarCorrectionTot

const G4double G4ComponentGGHadronNucleusXsc::fPionPlusBarCorrectionTot
staticprivate
Initial value:
= {
1.0, 1.0,
1.075927e+00, 1.074407e+00, 1.126098e+00, 1.100127e+00, 1.089742e+00, 1.083536e+00,
1.089988e+00, 1.103566e+00, 1.096922e+00, 1.126573e+00, 1.132734e+00, 1.136512e+00,
1.136629e+00, 1.133086e+00, 1.132428e+00, 1.129299e+00, 1.125622e+00, 1.126992e+00,
1.127840e+00, 1.162670e+00, 1.160392e+00, 1.157864e+00, 1.157227e+00, 1.154627e+00,
1.192555e+00, 1.197243e+00, 1.197911e+00, 1.200326e+00, 1.220053e+00, 1.215019e+00,
1.211703e+00, 1.209080e+00, 1.204248e+00, 1.203328e+00, 1.198671e+00, 1.196840e+00,
1.194392e+00, 1.193037e+00, 1.190408e+00, 1.188583e+00, 1.206127e+00, 1.210028e+00,
1.206434e+00, 1.204456e+00, 1.200547e+00, 1.199058e+00, 1.200174e+00, 1.200276e+00,
1.198912e+00, 1.213048e+00, 1.207160e+00, 1.208020e+00, 1.203814e+00, 1.202380e+00,
1.198306e+00, 1.197002e+00, 1.196027e+00, 1.195449e+00, 1.192563e+00, 1.192135e+00,
1.187556e+00, 1.186308e+00, 1.182124e+00, 1.180900e+00, 1.178224e+00, 1.176471e+00,
1.174811e+00, 1.173702e+00, 1.170827e+00, 1.169581e+00, 1.167205e+00, 1.165626e+00,
1.180244e+00, 1.177626e+00, 1.175121e+00, 1.173903e+00, 1.172192e+00, 1.171128e+00,
1.168997e+00, 1.166826e+00, 1.164130e+00, 1.165412e+00, 1.165504e+00, 1.165020e+00,
1.158462e+00, 1.158014e+00, 1.156519e+00, 1.156081e+00, 1.153602e+00, 1.154190e+00,
1.152974e+00
}

Definition at line 172 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fProductionXsc

G4double G4ComponentGGHadronNucleusXsc::fProductionXsc
private

Definition at line 178 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fProtonBarCorrectionIn

const G4double G4ComponentGGHadronNucleusXsc::fProtonBarCorrectionIn
staticprivate
Initial value:
= {
1.0, 1.0,
1.147419e+00,
1.156248e+00, 1.205362e+00, 1.154224e+00, 1.120390e+00, 1.124630e+00,
1.129459e+00, 1.107861e+00, 1.102151e+00, 1.104591e+00, 1.100284e+00, 1.098449e+00,
1.092675e+00, 1.101122e+00, 1.106460e+00, 1.115048e+00, 1.123902e+00, 1.126659e+00,
1.131258e+00, 1.133948e+00, 1.134183e+00, 1.133766e+00, 1.132812e+00, 1.131514e+00,
1.140337e+00,
1.134170e+00, 1.139205e+00, 1.151472e+00,
1.142188e+00, 1.140724e+00,
1.140099e+00, 1.139847e+00, 1.137672e+00, 1.138644e+00, 1.136338e+00, 1.136438e+00,
1.135945e+00, 1.136429e+00, 1.135701e+00, 1.135702e+00, 1.134112e+00, 1.131934e+00,
1.128380e+00, 1.126371e+00, 1.122452e+00, 1.120907e+00, 1.115952e+00, 1.115946e+00,
1.114425e+00, 1.111748e+00, 1.106205e+00, 1.107493e+00, 1.103621e+00, 1.102575e+00,
1.098815e+00, 1.097888e+00, 1.097305e+00, 1.097129e+00, 1.094577e+00, 1.094551e+00,
1.090221e+00, 1.089357e+00, 1.085408e+00, 1.084559e+00, 1.082181e+00, 1.080772e+00,
1.079463e+00, 1.078723e+00, 1.076120e+00, 1.075234e+00, 1.073158e+00, 1.071919e+00,
1.070394e+00, 1.069502e+00, 1.067524e+00, 1.066918e+00, 1.065778e+00, 1.065318e+00,
1.063729e+00, 1.062091e+00, 1.061084e+00, 1.059907e+00, 1.059814e+00, 1.059108e+00,
1.051919e+00, 1.051257e+00, 1.049472e+00, 1.048822e+00, 1.045983e+00, 1.046434e+00,
1.042613e+00
}

Definition at line 170 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fProtonBarCorrectionTot

const G4double G4ComponentGGHadronNucleusXsc::fProtonBarCorrectionTot
staticprivate
Initial value:
= {
1.0, 1.0,
1.118515e+00, 1.082000e+00, 1.116169e+00, 1.078745e+00, 1.061313e+00, 1.058203e+00,
1.082661e+00, 1.068498e+00, 1.076910e+00, 1.083474e+00, 1.079115e+00, 1.071854e+00,
1.071988e+00, 1.073772e+00, 1.079355e+00, 1.081312e+00, 1.082054e+00, 1.090770e+00,
1.096774e+00, 1.095827e+00, 1.097677e+00, 1.099156e+00, 1.103676e+00, 1.105130e+00,
1.109805e+00, 1.110814e+00, 1.117377e+00, 1.115163e+00, 1.115708e+00, 1.111853e+00,
1.110480e+00, 1.110111e+00, 1.106674e+00, 1.108705e+00, 1.105548e+00, 1.106317e+00,
1.106241e+00, 1.107671e+00, 1.107341e+00, 1.108118e+00, 1.106654e+00, 1.102586e+00,
1.096655e+00, 1.092918e+00, 1.086628e+00, 1.083590e+00, 1.076028e+00, 1.083776e+00,
1.089458e+00, 1.086543e+00, 1.079923e+00, 1.082216e+00, 1.077797e+00, 1.077061e+00,
1.072824e+00, 1.072239e+00, 1.072103e+00, 1.072488e+00, 1.069828e+00, 1.070396e+00,
1.065456e+00, 1.064966e+00, 1.060523e+00, 1.060047e+00, 1.057618e+00, 1.056427e+00,
1.055365e+00, 1.055016e+00, 1.052303e+00, 1.051766e+00, 1.049727e+00, 1.048743e+00,
1.047397e+00, 1.045875e+00, 1.042971e+00, 1.041823e+00, 1.039992e+00, 1.039019e+00,
1.036626e+00, 1.034175e+00, 1.032525e+00, 1.033632e+00, 1.036106e+00, 1.037802e+00,
1.031265e+00, 1.032990e+00, 1.033283e+00, 1.035014e+00, 1.033944e+00, 1.037074e+00,
1.034720e+00
}

Definition at line 169 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fRadiusConst

const G4double G4ComponentGGHadronNucleusXsc::fRadiusConst
private

Definition at line 164 of file G4ComponentGGHadronNucleusXsc.hh.

◆ fTotalXsc

G4double G4ComponentGGHadronNucleusXsc::fTotalXsc
private

Definition at line 178 of file G4ComponentGGHadronNucleusXsc.hh.

◆ hnXsc

G4HadronNucleonXsc* G4ComponentGGHadronNucleusXsc::hnXsc
private

Definition at line 212 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theA

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theA
private

Definition at line 209 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theANeutron

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theANeutron
private

Definition at line 185 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theAntiL

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theAntiL
private

Definition at line 194 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theAOmega

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theAOmega
private

Definition at line 206 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theAProton

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theAProton
private

Definition at line 184 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theAS0

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theAS0
private

Definition at line 200 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theASMinus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theASMinus
private

Definition at line 198 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theASPlus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theASPlus
private

Definition at line 196 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theAXi0

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theAXi0
private

Definition at line 204 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theAXiMinus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theAXiMinus
private

Definition at line 203 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theD

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theD
private

Definition at line 207 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theGamma

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theGamma
private

Definition at line 181 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theHe3

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theHe3
private

Definition at line 210 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theK0L

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theK0L
private

Definition at line 192 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theK0S

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theK0S
private

Definition at line 191 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theKMinus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theKMinus
private

Definition at line 190 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theKPlus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theKPlus
private

Definition at line 189 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theL

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theL
private

Definition at line 193 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theNeutron

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theNeutron
private

Definition at line 183 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theOmega

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theOmega
private

Definition at line 205 of file G4ComponentGGHadronNucleusXsc.hh.

◆ thePiMinus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::thePiMinus
private

Definition at line 187 of file G4ComponentGGHadronNucleusXsc.hh.

◆ thePiPlus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::thePiPlus
private

Definition at line 186 of file G4ComponentGGHadronNucleusXsc.hh.

◆ thePiZero

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::thePiZero
private

Definition at line 188 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theProton

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theProton
private

Definition at line 182 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theS0

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theS0
private

Definition at line 199 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theSMinus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theSMinus
private

Definition at line 197 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theSPlus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theSPlus
private

Definition at line 195 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theT

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theT
private

Definition at line 208 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theXi0

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theXi0
private

Definition at line 202 of file G4ComponentGGHadronNucleusXsc.hh.

◆ theXiMinus

G4ParticleDefinition* G4ComponentGGHadronNucleusXsc::theXiMinus
private

Definition at line 201 of file G4ComponentGGHadronNucleusXsc.hh.


The documentation for this class was generated from the following files: