Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ComponentGGHadronNucleusXsc Class Reference

#include <G4ComponentGGHadronNucleusXsc.hh>

+ Inheritance 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 GetInelasticElementCrossSection (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 GetKaonNucleonXscVector (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 *)
 
virtual G4double GetTotalElementCrossSection (const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)=0
 
virtual G4double GetTotalIsotopeCrossSection (const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
 
G4double GetInelasticElementCrossSection (const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
 
virtual G4double GetInelasticElementCrossSection (const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)=0
 
virtual G4double GetInelasticIsotopeCrossSection (const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
 
G4double GetElasticElementCrossSection (const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
 
virtual G4double GetElasticElementCrossSection (const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)=0
 
virtual G4double GetElasticIsotopeCrossSection (const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
 
virtual G4double ComputeQuasiElasticRatio (const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)
 
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
 

Detailed Description

Definition at line 51 of file G4ComponentGGHadronNucleusXsc.hh.

Constructor & Destructor Documentation

◆ G4ComponentGGHadronNucleusXsc()

G4ComponentGGHadronNucleusXsc::G4ComponentGGHadronNucleusXsc ( )

Definition at line 44 of file G4ComponentGGHadronNucleusXsc.cc.

45 : G4VComponentCrossSection("Glauber-Gribov"),
46 fUpperLimit(100000*GeV), fLowerLimit(10.*MeV),// fLowerLimit(3*GeV),
47 fRadiusConst(1.08*fermi), // 1.1, 1.3 ?
48 fTotalXsc(0.0), fElasticXsc(0.0), fInelasticXsc(0.0), fProductionXsc(0.0),
49 fDiffractionXsc(0.0), fHadronNucleonXsc(0.0)
50{
51 theGamma = G4Gamma::Gamma();
52 theProton = G4Proton::Proton();
53 theNeutron = G4Neutron::Neutron();
54 theAProton = G4AntiProton::AntiProton();
55 theANeutron = G4AntiNeutron::AntiNeutron();
56 thePiPlus = G4PionPlus::PionPlus();
57 thePiMinus = G4PionMinus::PionMinus();
58 thePiZero = G4PionZero::PionZero();
59 theKPlus = G4KaonPlus::KaonPlus();
60 theKMinus = G4KaonMinus::KaonMinus();
63 theL = G4Lambda::Lambda();
64 theAntiL = G4AntiLambda::AntiLambda();
65 theSPlus = G4SigmaPlus::SigmaPlus();
67 theSMinus = G4SigmaMinus::SigmaMinus();
69 theS0 = G4SigmaZero::SigmaZero();
71 theXiMinus = G4XiMinus::XiMinus();
72 theXi0 = G4XiZero::XiZero();
73 theAXiMinus = G4AntiXiMinus::AntiXiMinus();
74 theAXi0 = G4AntiXiZero::AntiXiZero();
75 theOmega = G4OmegaMinus::OmegaMinus();
77 theD = G4Deuteron::Deuteron();
78 theT = G4Triton::Triton();
79 theA = G4Alpha::Alpha();
80 theHe3 = G4He3::He3();
81
82 hnXsc = new G4HadronNucleonXsc();
83}
static G4Alpha * Alpha()
Definition: G4Alpha.cc:89
static G4AntiLambda * AntiLambda()
static G4AntiNeutron * AntiNeutron()
static G4AntiOmegaMinus * AntiOmegaMinus()
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:93
static G4AntiSigmaMinus * AntiSigmaMinus()
static G4AntiSigmaPlus * AntiSigmaPlus()
static G4AntiSigmaZero * AntiSigmaZero()
static G4AntiXiMinus * AntiXiMinus()
static G4AntiXiZero * AntiXiZero()
static G4Deuteron * Deuteron()
Definition: G4Deuteron.cc:94
static G4Gamma * Gamma()
Definition: G4Gamma.cc:86
static G4He3 * He3()
Definition: G4He3.cc:94
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:113
static G4KaonPlus * KaonPlus()
Definition: G4KaonPlus.cc:113
static G4KaonZeroLong * KaonZeroLong()
static G4KaonZeroShort * KaonZeroShort()
static G4Lambda * Lambda()
Definition: G4Lambda.cc:108
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
static G4OmegaMinus * OmegaMinus()
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:98
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:98
static G4PionZero * PionZero()
Definition: G4PionZero.cc:104
static G4Proton * Proton()
Definition: G4Proton.cc:93
static G4SigmaMinus * SigmaMinus()
static G4SigmaPlus * SigmaPlus()
Definition: G4SigmaPlus.cc:108
static G4SigmaZero * SigmaZero()
Definition: G4SigmaZero.cc:99
static G4Triton * Triton()
Definition: G4Triton.cc:95
static G4XiMinus * XiMinus()
Definition: G4XiMinus.cc:106
static G4XiZero * XiZero()
Definition: G4XiZero.cc:106

◆ ~G4ComponentGGHadronNucleusXsc()

G4ComponentGGHadronNucleusXsc::~G4ComponentGGHadronNucleusXsc ( )
virtual

Definition at line 89 of file G4ComponentGGHadronNucleusXsc.cc.

90{
91 if (hnXsc) delete hnXsc;
92}

Member Function Documentation

◆ CalcMandelstamS()

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

Definition at line 1428 of file G4ComponentGGHadronNucleusXsc.cc.

1431{
1432 G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
1433 G4double sMand = mp*mp + mt*mt + 2*Elab*mt ;
1434
1435 return sMand;
1436}
double G4double
Definition: G4Types.hh:64

Referenced by GetHadronNucleonXsc(), GetHadronNucleonXscNS(), and GetHadronNucleonXscPDG().

◆ CalculateEcmValue()

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

Definition at line 1412 of file G4ComponentGGHadronNucleusXsc.cc.

1415{
1416 G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
1417 G4double Ecm = std::sqrt ( mp * mp + mt * mt + 2 * Elab * mt );
1418 // G4double Pcm = Plab * mt / Ecm;
1419 // G4double KEcm = std::sqrt ( Pcm * Pcm + mp * mp ) - mp;
1420
1421 return Ecm ; // KEcm;
1422}

◆ ComputeQuasiElasticRatio()

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

Reimplemented from G4VComponentCrossSection.

Definition at line 180 of file G4ComponentGGHadronNucleusXsc.cc.

183{
184 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
185 kinEnergy);
186 fTotalXsc = GetIsoCrossSection(aDP, Z, A);
187 delete aDP;
188 G4double ratio = 0.;
189
190 if(fInelasticXsc > 0.)
191 {
192 ratio = (fInelasticXsc - fProductionXsc)/fInelasticXsc;
193 if(ratio < 0.) ratio = 0.;
194 }
195 return ratio;
196}
G4ThreeVector G4ParticleMomentum
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)

◆ CrossSectionDescription()

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

Definition at line 1442 of file G4ComponentGGHadronNucleusXsc.cc.

1443{
1444 outFile << "G4ComponentGGHadronNucleusXsc calculates total, inelastic and\n"
1445 << "elastic cross sections for hadron-nucleus cross sections using\n"
1446 << "the Glauber model with Gribov corrections. It is valid for all\n"
1447 << "targets except hydrogen, and for incident p, pbar, n, sigma-,\n"
1448 << "pi+, pi-, K+, K- and gammas with energies above 3 GeV. This is\n"
1449 << "a cross section component which is to be used to build a cross\n"
1450 << "data set.\n";
1451}

◆ GetDiffractionGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetDiffractionGlauberGribovXsc ( )
inline

Definition at line 141 of file G4ComponentGGHadronNucleusXsc.hh.

141{ return fDiffractionXsc; };

◆ GetElasticElementCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 152 of file G4ComponentGGHadronNucleusXsc.cc.

155{
156 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
157 kinEnergy);
158 fTotalXsc = GetIsoCrossSection(aDP, Z, G4int(A));
159 delete aDP;
160
161 return fElasticXsc;
162}
int G4int
Definition: G4Types.hh:66

◆ GetElasticGlauberGribov()

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

Definition at line 211 of file G4ComponentGGHadronNucleusXsc.hh.

213{
214 GetIsoCrossSection(dp, Z, A);
215 return fElasticXsc;
216}

◆ GetElasticGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetElasticGlauberGribovXsc ( )
inline

Definition at line 138 of file G4ComponentGGHadronNucleusXsc.hh.

138{ return fElasticXsc; };

◆ GetElasticIsotopeCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 166 of file G4ComponentGGHadronNucleusXsc.cc.

169{
170 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
171 kinEnergy);
172 fTotalXsc = GetIsoCrossSection(aDP, Z, A);
173 delete aDP;
174
175 return fElasticXsc;
176}

◆ GetHadronNucleonXsc() [1/2]

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

Definition at line 443 of file G4ComponentGGHadronNucleusXsc.cc.

445{
446 G4int At = G4lrint(anElement->GetN()); // number of nucleons
447 G4int Zt = G4lrint(anElement->GetZ()); // number of protons
448
449 return GetHadronNucleonXsc(aParticle, At, Zt);
450}
G4double GetHadronNucleonXsc(const G4DynamicParticle *, const G4Element *)
G4double GetZ() const
Definition: G4Element.hh:131
G4double GetN() const
Definition: G4Element.hh:134
int G4lrint(double ad)
Definition: templates.hh:163

Referenced by GetHadronNucleonXsc().

◆ GetHadronNucleonXsc() [2/2]

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

Definition at line 460 of file G4ComponentGGHadronNucleusXsc.cc.

462{
463 G4double xsection;
464
465 //G4double targ_mass = G4NucleiProperties::GetNuclearMass(At, Zt);
466
467 G4double targ_mass = 0.939*GeV; // ~mean neutron and proton ???
468
469 G4double proj_mass = aParticle->GetMass();
470 G4double proj_momentum = aParticle->GetMomentum().mag();
471 G4double sMand = CalcMandelstamS ( proj_mass , targ_mass , proj_momentum );
472
473 sMand /= GeV*GeV; // in GeV for parametrisation
474 proj_momentum /= GeV;
475
476 const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
477
478 G4double aa = At;
479
480 if(theParticle == theGamma)
481 {
482 xsection = aa*(0.0677*std::pow(sMand,0.0808) + 0.129*std::pow(sMand,-0.4525));
483 }
484 else if(theParticle == theNeutron) // as proton ???
485 {
486 xsection = aa*(21.70*std::pow(sMand,0.0808) + 56.08*std::pow(sMand,-0.4525));
487 }
488 else if(theParticle == theProton)
489 {
490 xsection = aa*(21.70*std::pow(sMand,0.0808) + 56.08*std::pow(sMand,-0.4525));
491 // xsection = At*( 49.51*std::pow(sMand,-0.097) + 0.314*std::log(sMand)*std::log(sMand) );
492 // xsection = At*( 38.4 + 0.85*std::abs(std::pow(log(sMand),1.47)) );
493 }
494 else if(theParticle == theAProton)
495 {
496 xsection = aa*( 21.70*std::pow(sMand,0.0808) + 98.39*std::pow(sMand,-0.4525));
497 }
498 else if(theParticle == thePiPlus)
499 {
500 xsection = aa*(13.63*std::pow(sMand,0.0808) + 27.56*std::pow(sMand,-0.4525));
501 }
502 else if(theParticle == thePiMinus)
503 {
504 // xsection = At*( 55.2*std::pow(sMand,-0.255) + 0.346*std::log(sMand)*std::log(sMand) );
505 xsection = aa*(13.63*std::pow(sMand,0.0808) + 36.02*std::pow(sMand,-0.4525));
506 }
507 else if(theParticle == theKPlus)
508 {
509 xsection = aa*(11.82*std::pow(sMand,0.0808) + 8.15*std::pow(sMand,-0.4525));
510 }
511 else if(theParticle == theKMinus)
512 {
513 xsection = aa*(11.82*std::pow(sMand,0.0808) + 26.36*std::pow(sMand,-0.4525));
514 }
515 else // as proton ???
516 {
517 xsection = aa*(21.70*std::pow(sMand,0.0808) + 56.08*std::pow(sMand,-0.4525));
518 }
519 xsection *= millibarn;
520 return xsection;
521}
double mag() const
G4double CalcMandelstamS(const G4double, const G4double, const G4double)
G4double GetMass() const
G4ParticleDefinition * GetDefinition() const
G4ThreeVector GetMomentum() const

◆ GetHadronNucleonXscNS() [1/2]

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

Definition at line 664 of file G4ComponentGGHadronNucleusXsc.cc.

666{
667 G4int At = G4lrint(anElement->GetN()); // number of nucleons
668 G4int Zt = G4lrint(anElement->GetZ()); // number of protons
669
670 return GetHadronNucleonXscNS(aParticle, At, Zt);
671}
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4Element *)

Referenced by GetHadronNucleonXscNS(), GetHNinelasticXsc(), GetIsoCrossSection(), GetRatioQE(), and GetRatioSD().

◆ GetHadronNucleonXscNS() [2/2]

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

Definition at line 682 of file G4ComponentGGHadronNucleusXsc.cc.

684{
685 G4double xsection(0);
686 // G4double Delta; DHW 19 May 2011: variable set but not used
687 G4double A0, B0;
688 G4double hpXscv(0);
689 G4double hnXscv(0);
690
691 G4int Nt = At-Zt; // number of neutrons
692 if (Nt < 0) Nt = 0;
693
694 G4double aa = At;
695 G4double zz = Zt;
696 G4double nn = Nt;
697
699 GetIonTable()->GetIonMass(Zt, At);
700
701 targ_mass = 0.939*GeV; // ~mean neutron and proton ???
702
703 G4double proj_mass = aParticle->GetMass();
704 G4double proj_energy = aParticle->GetTotalEnergy();
705 G4double proj_momentum = aParticle->GetMomentum().mag();
706
707 G4double sMand = CalcMandelstamS ( proj_mass , targ_mass , proj_momentum );
708
709 sMand /= GeV*GeV; // in GeV for parametrisation
710 proj_momentum /= GeV;
711 proj_energy /= GeV;
712 proj_mass /= GeV;
713
714 // General PDG fit constants
715
716 G4double s0 = 5.38*5.38; // in Gev^2
717 G4double eta1 = 0.458;
718 G4double eta2 = 0.458;
719 G4double B = 0.308;
720
721
722 const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
723
724
725 if(theParticle == theNeutron)
726 {
727 if( proj_momentum >= 373.)
728 {
729 return GetHadronNucleonXscPDG(aParticle,At,Zt);
730 }
731 else if( proj_momentum >= 10.)
732 // if( proj_momentum >= 2.)
733 {
734 // Delta = 1.; // DHW 19 May 2011: variable set but not used
735 // if( proj_energy < 40. ) Delta = 0.916+0.0021*proj_energy;
736
737 if(proj_momentum >= 10.)
738 {
739 B0 = 7.5;
740 A0 = 100. - B0*std::log(3.0e7);
741
742 xsection = A0 + B0*std::log(proj_energy) - 11
743 + 103*std::pow(2*0.93827*proj_energy + proj_mass*proj_mass+
744 0.93827*0.93827,-0.165); // mb
745 }
746 xsection *= zz + nn;
747 }
748 else
749 {
750 // nn to be pp
751
752 if( proj_momentum < 0.73 )
753 {
754 hnXscv = 23 + 50*( std::pow( std::log(0.73/proj_momentum), 3.5 ) );
755 }
756 else if( proj_momentum < 1.05 )
757 {
758 hnXscv = 23 + 40*(std::log(proj_momentum/0.73))*
759 (std::log(proj_momentum/0.73));
760 }
761 else // if( proj_momentum < 10. )
762 {
763 hnXscv = 39.0+
764 75*(proj_momentum - 1.2)/(std::pow(proj_momentum,3.0) + 0.15);
765 }
766 // pn to be np
767
768 if( proj_momentum < 0.8 )
769 {
770 hpXscv = 33+30*std::pow(std::log(proj_momentum/1.3),4.0);
771 }
772 else if( proj_momentum < 1.4 )
773 {
774 hpXscv = 33+30*std::pow(std::log(proj_momentum/0.95),2.0);
775 }
776 else // if( proj_momentum < 10. )
777 {
778 hpXscv = 33.3+
779 20.8*(std::pow(proj_momentum,2.0)-1.35)/
780 (std::pow(proj_momentum,2.50)+0.95);
781 }
782 xsection = hpXscv*zz + hnXscv*nn;
783 }
784 }
785 else if(theParticle == theProton)
786 {
787 if( proj_momentum >= 373.)
788 {
789 return GetHadronNucleonXscPDG(aParticle,At,Zt);
790 }
791 else if( proj_momentum >= 10.)
792 // if( proj_momentum >= 2.)
793 {
794 // Delta = 1.; DHW 19 May 2011: variable set but not used
795 // if( proj_energy < 40. ) Delta = 0.916+0.0021*proj_energy;
796
797 if(proj_momentum >= 10.)
798 {
799 B0 = 7.5;
800 A0 = 100. - B0*std::log(3.0e7);
801
802 xsection = A0 + B0*std::log(proj_energy) - 11
803 + 103*std::pow(2*0.93827*proj_energy + proj_mass*proj_mass+
804 0.93827*0.93827,-0.165); // mb
805 }
806 xsection *= zz + nn;
807 }
808 else
809 {
810 // pp
811
812 if( proj_momentum < 0.73 )
813 {
814 hpXscv = 23 + 50*( std::pow( std::log(0.73/proj_momentum), 3.5 ) );
815 }
816 else if( proj_momentum < 1.05 )
817 {
818 hpXscv = 23 + 40*(std::log(proj_momentum/0.73))*
819 (std::log(proj_momentum/0.73));
820 }
821 else // if( proj_momentum < 10. )
822 {
823 hpXscv = 39.0+
824 75*(proj_momentum - 1.2)/(std::pow(proj_momentum,3.0) + 0.15);
825 }
826 // pn to be np
827
828 if( proj_momentum < 0.8 )
829 {
830 hnXscv = 33+30*std::pow(std::log(proj_momentum/1.3),4.0);
831 }
832 else if( proj_momentum < 1.4 )
833 {
834 hnXscv = 33+30*std::pow(std::log(proj_momentum/0.95),2.0);
835 }
836 else // if( proj_momentum < 10. )
837 {
838 hnXscv = 33.3+
839 20.8*(std::pow(proj_momentum,2.0)-1.35)/
840 (std::pow(proj_momentum,2.50)+0.95);
841 }
842 xsection = hpXscv*zz + hnXscv*nn;
843 // xsection = hpXscv*(Zt + Nt);
844 // xsection = hnXscv*(Zt + Nt);
845 }
846 // xsection *= 0.95;
847 }
848 else if( theParticle == theAProton )
849 {
850 // xsection = Zt*( 35.45 + B*std::pow(std::log(sMand/s0),2.)
851 // + 42.53*std::pow(sMand,-eta1) + 33.34*std::pow(sMand,-eta2));
852
853 // xsection += Nt*( 35.80 + B*std::pow(std::log(sMand/s0),2.)
854 // + 40.15*std::pow(sMand,-eta1) + 30.*std::pow(sMand,-eta2));
855
856 G4double logP = std::log(proj_momentum);
857
858 if( proj_momentum <= 1.0 )
859 {
860 xsection = zz*(65.55 + 53.84/(proj_momentum+1.e-6) );
861 }
862 else
863 {
864 xsection = zz*( 41.1 + 77.2*std::pow( proj_momentum, -0.68)
865 + 0.293*logP*logP - 1.82*logP );
866 }
867 if ( nn > 0.)
868 {
869 xsection += nn*( 41.9 + 96.2*std::pow( proj_momentum, -0.99) - 0.154*logP);
870 }
871 else // H
872 {
873 fInelasticXsc = 38.0 + 38.0*std::pow( proj_momentum, -0.96)
874 - 0.169*logP*logP;
875 fInelasticXsc *= millibarn;
876 }
877 }
878 else if( theParticle == thePiPlus )
879 {
880 if(proj_momentum < 0.4)
881 {
882 G4double Ex3 = 180*std::exp(-(proj_momentum-0.29)*(proj_momentum-0.29)/0.085/0.085);
883 hpXscv = Ex3+20.0;
884 }
885 else if( proj_momentum < 1.15 )
886 {
887 G4double Ex4 = 88*(std::log(proj_momentum/0.75))*(std::log(proj_momentum/0.75));
888 hpXscv = Ex4+14.0;
889 }
890 else if(proj_momentum < 3.5)
891 {
892 G4double Ex1 = 3.2*std::exp(-(proj_momentum-2.55)*(proj_momentum-2.55)/0.55/0.55);
893 G4double Ex2 = 12*std::exp(-(proj_momentum-1.47)*(proj_momentum-1.47)/0.225/0.225);
894 hpXscv = Ex1+Ex2+27.5;
895 }
896 else // if(proj_momentum > 3.5) // mb
897 {
898 hpXscv = 10.6+2.*std::log(proj_energy)+25*std::pow(proj_energy,-0.43);
899 }
900 // pi+n = pi-p??
901
902 if(proj_momentum < 0.37)
903 {
904 hnXscv = 28.0 + 40*std::exp(-(proj_momentum-0.29)*(proj_momentum-0.29)/0.07/0.07);
905 }
906 else if(proj_momentum<0.65)
907 {
908 hnXscv = 26+110*(std::log(proj_momentum/0.48))*(std::log(proj_momentum/0.48));
909 }
910 else if(proj_momentum<1.3)
911 {
912 hnXscv = 36.1+
913 10*std::exp(-(proj_momentum-0.72)*(proj_momentum-0.72)/0.06/0.06)+
914 24*std::exp(-(proj_momentum-1.015)*(proj_momentum-1.015)/0.075/0.075);
915 }
916 else if(proj_momentum<3.0)
917 {
918 hnXscv = 36.1+0.079-4.313*std::log(proj_momentum)+
919 3*std::exp(-(proj_momentum-2.1)*(proj_momentum-2.1)/0.4/0.4)+
920 1.5*std::exp(-(proj_momentum-1.4)*(proj_momentum-1.4)/0.12/0.12);
921 }
922 else // mb
923 {
924 hnXscv = 10.6+2*std::log(proj_energy)+30*std::pow(proj_energy,-0.43);
925 }
926 xsection = hpXscv*zz + hnXscv*nn;
927 }
928 else if(theParticle == thePiMinus)
929 {
930 // pi-n = pi+p??
931
932 if(proj_momentum < 0.4)
933 {
934 G4double Ex3 = 180*std::exp(-(proj_momentum-0.29)*(proj_momentum-0.29)/0.085/0.085);
935 hnXscv = Ex3+20.0;
936 }
937 else if(proj_momentum < 1.15)
938 {
939 G4double Ex4 = 88*(std::log(proj_momentum/0.75))*(std::log(proj_momentum/0.75));
940 hnXscv = Ex4+14.0;
941 }
942 else if(proj_momentum < 3.5)
943 {
944 G4double Ex1 = 3.2*std::exp(-(proj_momentum-2.55)*(proj_momentum-2.55)/0.55/0.55);
945 G4double Ex2 = 12*std::exp(-(proj_momentum-1.47)*(proj_momentum-1.47)/0.225/0.225);
946 hnXscv = Ex1+Ex2+27.5;
947 }
948 else // if(proj_momentum > 3.5) // mb
949 {
950 hnXscv = 10.6+2.*std::log(proj_energy)+25*std::pow(proj_energy,-0.43);
951 }
952 // pi-p
953
954 if(proj_momentum < 0.37)
955 {
956 hpXscv = 28.0 + 40*std::exp(-(proj_momentum-0.29)*(proj_momentum-0.29)/0.07/0.07);
957 }
958 else if(proj_momentum<0.65)
959 {
960 hpXscv = 26+110*(std::log(proj_momentum/0.48))*(std::log(proj_momentum/0.48));
961 }
962 else if(proj_momentum<1.3)
963 {
964 hpXscv = 36.1+
965 10*std::exp(-(proj_momentum-0.72)*(proj_momentum-0.72)/0.06/0.06)+
966 24*std::exp(-(proj_momentum-1.015)*(proj_momentum-1.015)/0.075/0.075);
967 }
968 else if(proj_momentum<3.0)
969 {
970 hpXscv = 36.1+0.079-4.313*std::log(proj_momentum)+
971 3*std::exp(-(proj_momentum-2.1)*(proj_momentum-2.1)/0.4/0.4)+
972 1.5*std::exp(-(proj_momentum-1.4)*(proj_momentum-1.4)/0.12/0.12);
973 }
974 else // mb
975 {
976 hpXscv = 10.6+2*std::log(proj_energy)+30*std::pow(proj_energy,-0.43);
977 }
978 xsection = hpXscv*zz + hnXscv*nn;
979 }
980 else if(theParticle == theKPlus)
981 {
982 xsection = zz*( 17.91 + B*std::pow(std::log(sMand/s0),2.)
983 + 7.14*std::pow(sMand,-eta1) - 13.45*std::pow(sMand,-eta2));
984
985 xsection += nn*( 17.87 + B*std::pow(std::log(sMand/s0),2.)
986 + 5.17*std::pow(sMand,-eta1) - 7.23*std::pow(sMand,-eta2));
987 }
988 else if(theParticle == theKMinus)
989 {
990 xsection = zz*( 17.91 + B*std::pow(std::log(sMand/s0),2.)
991 + 7.14*std::pow(sMand,-eta1) + 13.45*std::pow(sMand,-eta2));
992
993 xsection += nn*( 17.87 + B*std::pow(std::log(sMand/s0),2.)
994 + 5.17*std::pow(sMand,-eta1) + 7.23*std::pow(sMand,-eta2));
995 }
996 else if(theParticle == theSMinus)
997 {
998 xsection = aa*( 35.20 + B*std::pow(std::log(sMand/s0),2.)
999 - 199.*std::pow(sMand,-eta1) + 264.*std::pow(sMand,-eta2));
1000 }
1001 else if(theParticle == theGamma) // modify later on
1002 {
1003 xsection = aa*( 0.0 + B*std::pow(std::log(sMand/s0),2.)
1004 + 0.032*std::pow(sMand,-eta1) - 0.0*std::pow(sMand,-eta2));
1005
1006 }
1007 else // as proton ???
1008 {
1009 xsection = zz*( 35.45 + B*std::pow(std::log(sMand/s0),2.)
1010 + 42.53*std::pow(sMand,-eta1) - 33.34*std::pow(sMand,-eta2));
1011
1012 xsection += nn*( 35.80 + B*std::pow(std::log(sMand/s0),2.)
1013 + 40.15*std::pow(sMand,-eta1) - 30.*std::pow(sMand,-eta2));
1014 }
1015 xsection *= millibarn; // parametrised in mb
1016 return xsection;
1017}
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4Element *)
G4double GetTotalEnergy() const
static G4ParticleTable * GetParticleTable()

◆ GetHadronNucleonXscPDG() [1/2]

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

Definition at line 530 of file G4ComponentGGHadronNucleusXsc.cc.

532{
533 G4int At = G4lrint(anElement->GetN()); // number of nucleons
534 G4int Zt = G4lrint(anElement->GetZ()); // number of protons
535
536 return GetHadronNucleonXscPDG(aParticle, At, Zt);
537}

Referenced by GetHadronNucleonXscNS(), GetHadronNucleonXscPDG(), and GetKaonNucleonXscVector().

◆ GetHadronNucleonXscPDG() [2/2]

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

Definition at line 549 of file G4ComponentGGHadronNucleusXsc.cc.

551{
552 G4double xsection;
553
554 G4int Nt = At-Zt; // number of neutrons
555 if (Nt < 0) Nt = 0;
556
557 G4double zz = Zt;
558 G4double aa = At;
559 G4double nn = Nt;
560
562 GetIonTable()->GetIonMass(Zt, At);
563
564 targ_mass = 0.939*GeV; // ~mean neutron and proton ???
565
566 G4double proj_mass = aParticle->GetMass();
567 G4double proj_momentum = aParticle->GetMomentum().mag();
568
569 G4double sMand = CalcMandelstamS ( proj_mass , targ_mass , proj_momentum );
570
571 sMand /= GeV*GeV; // in GeV for parametrisation
572
573 // General PDG fit constants
574
575 G4double s0 = 5.38*5.38; // in Gev^2
576 G4double eta1 = 0.458;
577 G4double eta2 = 0.458;
578 G4double B = 0.308;
579
580
581 const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
582
583
584 if(theParticle == theNeutron) // proton-neutron fit
585 {
586 xsection = zz*( 35.80 + B*std::pow(std::log(sMand/s0),2.)
587 + 40.15*std::pow(sMand,-eta1) - 30.*std::pow(sMand,-eta2));
588 xsection += nn*( 35.45 + B*std::pow(std::log(sMand/s0),2.)
589 + 42.53*std::pow(sMand,-eta1) - 33.34*std::pow(sMand,-eta2)); // pp for nn
590 }
591 else if(theParticle == theProton)
592 {
593
594 xsection = zz*( 35.45 + B*std::pow(std::log(sMand/s0),2.)
595 + 42.53*std::pow(sMand,-eta1) - 33.34*std::pow(sMand,-eta2));
596
597 xsection += nn*( 35.80 + B*std::pow(std::log(sMand/s0),2.)
598 + 40.15*std::pow(sMand,-eta1) - 30.*std::pow(sMand,-eta2));
599 }
600 else if(theParticle == theAProton)
601 {
602 xsection = zz*( 35.45 + B*std::pow(std::log(sMand/s0),2.)
603 + 42.53*std::pow(sMand,-eta1) + 33.34*std::pow(sMand,-eta2));
604
605 xsection += nn*( 35.80 + B*std::pow(std::log(sMand/s0),2.)
606 + 40.15*std::pow(sMand,-eta1) + 30.*std::pow(sMand,-eta2));
607 }
608 else if(theParticle == thePiPlus)
609 {
610 xsection = aa*( 20.86 + B*std::pow(std::log(sMand/s0),2.)
611 + 19.24*std::pow(sMand,-eta1) - 6.03*std::pow(sMand,-eta2));
612 }
613 else if(theParticle == thePiMinus)
614 {
615 xsection = aa*( 20.86 + B*std::pow(std::log(sMand/s0),2.)
616 + 19.24*std::pow(sMand,-eta1) + 6.03*std::pow(sMand,-eta2));
617 }
618 else if(theParticle == theKPlus || theParticle == theK0L )
619 {
620 xsection = zz*( 17.91 + B*std::pow(std::log(sMand/s0),2.)
621 + 7.14*std::pow(sMand,-eta1) - 13.45*std::pow(sMand,-eta2));
622
623 xsection += nn*( 17.87 + B*std::pow(std::log(sMand/s0),2.)
624 + 5.17*std::pow(sMand,-eta1) - 7.23*std::pow(sMand,-eta2));
625 }
626 else if(theParticle == theKMinus || theParticle == theK0S )
627 {
628 xsection = zz*( 17.91 + B*std::pow(std::log(sMand/s0),2.)
629 + 7.14*std::pow(sMand,-eta1) + 13.45*std::pow(sMand,-eta2));
630
631 xsection += nn*( 17.87 + B*std::pow(std::log(sMand/s0),2.)
632 + 5.17*std::pow(sMand,-eta1) + 7.23*std::pow(sMand,-eta2));
633 }
634 else if(theParticle == theSMinus)
635 {
636 xsection = aa*( 35.20 + B*std::pow(std::log(sMand/s0),2.)
637 - 199.*std::pow(sMand,-eta1) + 264.*std::pow(sMand,-eta2));
638 }
639 else if(theParticle == theGamma) // modify later on
640 {
641 xsection = aa*( 0.0 + B*std::pow(std::log(sMand/s0),2.)
642 + 0.032*std::pow(sMand,-eta1) - 0.0*std::pow(sMand,-eta2));
643
644 }
645 else // as proton ???
646 {
647 xsection = zz*( 35.45 + B*std::pow(std::log(sMand/s0),2.)
648 + 42.53*std::pow(sMand,-eta1) - 33.34*std::pow(sMand,-eta2));
649
650 xsection += nn*( 35.80 + B*std::pow(std::log(sMand/s0),2.)
651 + 40.15*std::pow(sMand,-eta1) - 30.*std::pow(sMand,-eta2));
652 }
653 xsection *= millibarn; // parametrised in mb
654 return xsection;
655}

◆ GetHNinelasticXsc() [1/2]

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

Definition at line 1058 of file G4ComponentGGHadronNucleusXsc.cc.

1060{
1061 G4int At = G4lrint(anElement->GetN()); // number of nucleons
1062 G4int Zt = G4lrint(anElement->GetZ()); // number of protons
1063
1064 return GetHNinelasticXsc(aParticle, At, Zt);
1065}
G4double GetHNinelasticXsc(const G4DynamicParticle *, const G4Element *)

Referenced by GetHNinelasticXsc(), GetIsoCrossSection(), and GetRatioQE().

◆ GetHNinelasticXsc() [2/2]

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

Definition at line 1072 of file G4ComponentGGHadronNucleusXsc.cc.

1074{
1075 G4ParticleDefinition* hadron = aParticle->GetDefinition();
1076 G4double sumInelastic;
1077 G4int Nt = At - Zt;
1078 if(Nt < 0) Nt = 0;
1079
1080 if( hadron == theKPlus )
1081 {
1082 sumInelastic = GetHNinelasticXscVU(aParticle, At, Zt);
1083 }
1084 else
1085 {
1086 //sumInelastic = Zt*GetHadronNucleonXscMK(aParticle, theProton);
1087 // sumInelastic += Nt*GetHadronNucleonXscMK(aParticle, theNeutron);
1088 sumInelastic = G4double(Zt)*GetHadronNucleonXscNS(aParticle, 1, 1);
1089 sumInelastic += G4double(Nt)*GetHadronNucleonXscNS(aParticle, 1, 0);
1090 }
1091 return sumInelastic;
1092}
G4double GetHNinelasticXscVU(const G4DynamicParticle *, G4int At, G4int Zt)

◆ GetHNinelasticXscVU()

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

Definition at line 1100 of file G4ComponentGGHadronNucleusXsc.cc.

1102{
1103 G4int PDGcode = aParticle->GetDefinition()->GetPDGEncoding();
1104 G4int absPDGcode = std::abs(PDGcode);
1105
1106 G4double Elab = aParticle->GetTotalEnergy();
1107 // (s - 2*0.88*GeV*GeV)/(2*0.939*GeV)/GeV;
1108 G4double Plab = aParticle->GetMomentum().mag();
1109 // std::sqrt(Elab * Elab - 0.88);
1110
1111 Elab /= GeV;
1112 Plab /= GeV;
1113
1114 G4double LogPlab = std::log( Plab );
1115 G4double sqrLogPlab = LogPlab * LogPlab;
1116
1117 //G4cout<<"Plab = "<<Plab<<G4endl;
1118
1119 G4double NumberOfTargetProtons = G4double(Zt);
1120 G4double NumberOfTargetNucleons = G4double(At);
1121 G4double NumberOfTargetNeutrons = NumberOfTargetNucleons - NumberOfTargetProtons;
1122
1123 if(NumberOfTargetNeutrons < 0.0) NumberOfTargetNeutrons = 0.0;
1124
1125 G4double Xtotal, Xelastic, Xinelastic;
1126
1127 if( absPDGcode > 1000 ) //------Projectile is baryon --------
1128 {
1129 G4double XtotPP = 48.0 + 0. *std::pow(Plab, 0. ) +
1130 0.522*sqrLogPlab - 4.51*LogPlab;
1131
1132 G4double XtotPN = 47.3 + 0. *std::pow(Plab, 0. ) +
1133 0.513*sqrLogPlab - 4.27*LogPlab;
1134
1135 G4double XelPP = 11.9 + 26.9*std::pow(Plab,-1.21) +
1136 0.169*sqrLogPlab - 1.85*LogPlab;
1137
1138 G4double XelPN = 11.9 + 26.9*std::pow(Plab,-1.21) +
1139 0.169*sqrLogPlab - 1.85*LogPlab;
1140
1141 Xtotal = (NumberOfTargetProtons * XtotPP +
1142 NumberOfTargetNeutrons * XtotPN);
1143
1144 Xelastic = (NumberOfTargetProtons * XelPP +
1145 NumberOfTargetNeutrons * XelPN);
1146 }
1147 else if( PDGcode == 211 ) //------Projectile is PionPlus -------
1148 {
1149 G4double XtotPiP = 16.4 + 19.3 *std::pow(Plab,-0.42) +
1150 0.19 *sqrLogPlab - 0.0 *LogPlab;
1151
1152 G4double XtotPiN = 33.0 + 14.0 *std::pow(Plab,-1.36) +
1153 0.456*sqrLogPlab - 4.03*LogPlab;
1154
1155 G4double XelPiP = 0.0 + 11.4*std::pow(Plab,-0.40) +
1156 0.079*sqrLogPlab - 0.0 *LogPlab;
1157
1158 G4double XelPiN = 1.76 + 11.2*std::pow(Plab,-0.64) +
1159 0.043*sqrLogPlab - 0.0 *LogPlab;
1160
1161 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1162 NumberOfTargetNeutrons * XtotPiN );
1163
1164 Xelastic = ( NumberOfTargetProtons * XelPiP +
1165 NumberOfTargetNeutrons * XelPiN );
1166 }
1167 else if( PDGcode == -211 ) //------Projectile is PionMinus -------
1168 {
1169 G4double XtotPiP = 33.0 + 14.0 *std::pow(Plab,-1.36) +
1170 0.456*sqrLogPlab - 4.03*LogPlab;
1171
1172 G4double XtotPiN = 16.4 + 19.3 *std::pow(Plab,-0.42) +
1173 0.19 *sqrLogPlab - 0.0 *LogPlab;
1174
1175 G4double XelPiP = 1.76 + 11.2*std::pow(Plab,-0.64) +
1176 0.043*sqrLogPlab - 0.0 *LogPlab;
1177
1178 G4double XelPiN = 0.0 + 11.4*std::pow(Plab,-0.40) +
1179 0.079*sqrLogPlab - 0.0 *LogPlab;
1180
1181 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1182 NumberOfTargetNeutrons * XtotPiN );
1183
1184 Xelastic = ( NumberOfTargetProtons * XelPiP +
1185 NumberOfTargetNeutrons * XelPiN );
1186 }
1187 else if( PDGcode == 111 ) //------Projectile is PionZero -------
1188 {
1189 G4double XtotPiP =(16.4 + 19.3 *std::pow(Plab,-0.42) +
1190 0.19 *sqrLogPlab - 0.0 *LogPlab + //Pi+
1191 33.0 + 14.0 *std::pow(Plab,-1.36) +
1192 0.456*sqrLogPlab - 4.03*LogPlab)/2; //Pi-
1193
1194 G4double XtotPiN =(33.0 + 14.0 *std::pow(Plab,-1.36) +
1195 0.456*sqrLogPlab - 4.03*LogPlab + //Pi+
1196 16.4 + 19.3 *std::pow(Plab,-0.42) +
1197 0.19 *sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
1198
1199 G4double XelPiP =( 0.0 + 11.4*std::pow(Plab,-0.40) +
1200 0.079*sqrLogPlab - 0.0 *LogPlab + //Pi+
1201 1.76 + 11.2*std::pow(Plab,-0.64) +
1202 0.043*sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
1203
1204 G4double XelPiN =( 1.76 + 11.2*std::pow(Plab,-0.64) +
1205 0.043*sqrLogPlab - 0.0 *LogPlab + //Pi+
1206 0.0 + 11.4*std::pow(Plab,-0.40) +
1207 0.079*sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
1208
1209 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1210 NumberOfTargetNeutrons * XtotPiN );
1211
1212 Xelastic = ( NumberOfTargetProtons * XelPiP +
1213 NumberOfTargetNeutrons * XelPiN );
1214 }
1215 else if( PDGcode == 321 ) //------Projectile is KaonPlus -------
1216 {
1217 G4double XtotKP = 18.1 + 0. *std::pow(Plab, 0. ) +
1218 0.26 *sqrLogPlab - 1.0 *LogPlab;
1219 G4double XtotKN = 18.7 + 0. *std::pow(Plab, 0. ) +
1220 0.21 *sqrLogPlab - 0.89*LogPlab;
1221
1222 G4double XelKP = 5.0 + 8.1*std::pow(Plab,-1.8 ) +
1223 0.16 *sqrLogPlab - 1.3 *LogPlab;
1224
1225 G4double XelKN = 7.3 + 0. *std::pow(Plab,-0. ) +
1226 0.29 *sqrLogPlab - 2.4 *LogPlab;
1227
1228 Xtotal = ( NumberOfTargetProtons * XtotKP +
1229 NumberOfTargetNeutrons * XtotKN );
1230
1231 Xelastic = ( NumberOfTargetProtons * XelKP +
1232 NumberOfTargetNeutrons * XelKN );
1233 }
1234 else if( PDGcode ==-321 ) //------Projectile is KaonMinus ------
1235 {
1236 G4double XtotKP = 32.1 + 0. *std::pow(Plab, 0. ) +
1237 0.66 *sqrLogPlab - 5.6 *LogPlab;
1238 G4double XtotKN = 25.2 + 0. *std::pow(Plab, 0. ) +
1239 0.38 *sqrLogPlab - 2.9 *LogPlab;
1240
1241 G4double XelKP = 7.3 + 0. *std::pow(Plab,-0. ) +
1242 0.29 *sqrLogPlab - 2.4 *LogPlab;
1243
1244 G4double XelKN = 5.0 + 8.1*std::pow(Plab,-1.8 ) +
1245 0.16 *sqrLogPlab - 1.3 *LogPlab;
1246
1247 Xtotal = ( NumberOfTargetProtons * XtotKP +
1248 NumberOfTargetNeutrons * XtotKN );
1249
1250 Xelastic = ( NumberOfTargetProtons * XelKP +
1251 NumberOfTargetNeutrons * XelKN );
1252 }
1253 else if( PDGcode == 311 ) //------Projectile is KaonZero ------
1254 {
1255 G4double XtotKP = ( 18.1 + 0. *std::pow(Plab, 0. ) +
1256 0.26 *sqrLogPlab - 1.0 *LogPlab + //K+
1257 32.1 + 0. *std::pow(Plab, 0. ) +
1258 0.66 *sqrLogPlab - 5.6 *LogPlab)/2; //K-
1259
1260 G4double XtotKN = ( 18.7 + 0. *std::pow(Plab, 0. ) +
1261 0.21 *sqrLogPlab - 0.89*LogPlab + //K+
1262 25.2 + 0. *std::pow(Plab, 0. ) +
1263 0.38 *sqrLogPlab - 2.9 *LogPlab)/2; //K-
1264
1265 G4double XelKP = ( 5.0 + 8.1*std::pow(Plab,-1.8 )
1266 + 0.16 *sqrLogPlab - 1.3 *LogPlab + //K+
1267 7.3 + 0. *std::pow(Plab,-0. ) +
1268 0.29 *sqrLogPlab - 2.4 *LogPlab)/2; //K-
1269
1270 G4double XelKN = ( 7.3 + 0. *std::pow(Plab,-0. ) +
1271 0.29 *sqrLogPlab - 2.4 *LogPlab + //K+
1272 5.0 + 8.1*std::pow(Plab,-1.8 ) +
1273 0.16 *sqrLogPlab - 1.3 *LogPlab)/2; //K-
1274
1275 Xtotal = ( NumberOfTargetProtons * XtotKP +
1276 NumberOfTargetNeutrons * XtotKN );
1277
1278 Xelastic = ( NumberOfTargetProtons * XelKP +
1279 NumberOfTargetNeutrons * XelKN );
1280 }
1281 else //------Projectile is undefined, Nucleon assumed
1282 {
1283 G4double XtotPP = 48.0 + 0. *std::pow(Plab, 0. ) +
1284 0.522*sqrLogPlab - 4.51*LogPlab;
1285
1286 G4double XtotPN = 47.3 + 0. *std::pow(Plab, 0. ) +
1287 0.513*sqrLogPlab - 4.27*LogPlab;
1288
1289 G4double XelPP = 11.9 + 26.9*std::pow(Plab,-1.21) +
1290 0.169*sqrLogPlab - 1.85*LogPlab;
1291 G4double XelPN = 11.9 + 26.9*std::pow(Plab,-1.21) +
1292 0.169*sqrLogPlab - 1.85*LogPlab;
1293
1294 Xtotal = ( NumberOfTargetProtons * XtotPP +
1295 NumberOfTargetNeutrons * XtotPN );
1296
1297 Xelastic = ( NumberOfTargetProtons * XelPP +
1298 NumberOfTargetNeutrons * XelPN );
1299 }
1300 Xinelastic = Xtotal - Xelastic;
1301
1302 if( Xinelastic < 0.) Xinelastic = 0.;
1303
1304 return Xinelastic*= millibarn;
1305}

Referenced by GetHNinelasticXsc().

◆ GetInelasticElementCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 138 of file G4ComponentGGHadronNucleusXsc.cc.

141{
142 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
143 kinEnergy);
144 fTotalXsc = GetIsoCrossSection(aDP, Z, G4int(A));
145 delete aDP;
146
147 return fInelasticXsc;
148}

◆ GetInelasticGlauberGribov()

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

Definition at line 222 of file G4ComponentGGHadronNucleusXsc.hh.

224{
225 GetIsoCrossSection(dp, Z, A);
226 return fInelasticXsc;
227}

◆ GetInelasticGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetInelasticGlauberGribovXsc ( )
inline

Definition at line 139 of file G4ComponentGGHadronNucleusXsc.hh.

139{ return fInelasticXsc; };

◆ GetInelasticIsotopeCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 124 of file G4ComponentGGHadronNucleusXsc.cc.

127{
128 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
129 kinEnergy);
130 fTotalXsc = GetIsoCrossSection(aDP, Z, A);
131 delete aDP;
132
133 return fInelasticXsc;
134}

◆ 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 240 of file G4ComponentGGHadronNucleusXsc.cc.

245{
246 G4double xsection, sigma, cofInelastic, cofTotal, nucleusSquare, ratio;
247 G4double hpInXsc(0.), hnInXsc(0.);
249
250 G4int N = A - Z; // number of neutrons
251 if (N < 0) N = 0;
252
253 const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
254
255 if( theParticle == theProton ||
256 theParticle == theNeutron ||
257 theParticle == thePiPlus ||
258 theParticle == thePiMinus )
259 {
260 // sigma = GetHadronNucleonXscNS(aParticle, A, Z);
261
262 sigma = Z*hnXsc->GetHadronNucleonXscNS(aParticle, theProton);
263
264 hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
265
266 sigma += N*hnXsc->GetHadronNucleonXscNS(aParticle, theNeutron);
267
268 hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
269
270 cofInelastic = 2.4;
271 cofTotal = 2.0;
272 }
273 else if( theParticle == theKPlus ||
274 theParticle == theKMinus ||
275 theParticle == theK0S ||
276 theParticle == theK0L )
277 {
278 sigma = GetKaonNucleonXscVector(aParticle, A, Z);
279 cofInelastic = 2.2;
280 cofTotal = 2.0;
281 R = 1.3*fermi;
282 R *= std::pow(G4double(A), 0.3333);
283 }
284 else
285 {
286 sigma = GetHadronNucleonXscNS(aParticle, A, Z);
287 cofInelastic = 2.2;
288 cofTotal = 2.0;
289 }
290 // cofInelastic = 2.0;
291
292 if( A > 1 )
293 {
294 nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
295 ratio = sigma/nucleusSquare;
296
297 xsection = nucleusSquare*std::log( 1. + ratio );
298
299 xsection *= GetParticleBarCorTot(theParticle, Z);
300
301 fTotalXsc = xsection;
302
303
304
305 fInelasticXsc = nucleusSquare*std::log( 1. + cofInelastic*ratio )/cofInelastic;
306
307 fInelasticXsc *= GetParticleBarCorIn(theParticle, Z);
308
309 fElasticXsc = fTotalXsc - fInelasticXsc;
310
311 if(fElasticXsc < 0.) fElasticXsc = 0.;
312
313 G4double difratio = ratio/(1.+ratio);
314
315 fDiffractionXsc = 0.5*nucleusSquare*( difratio - std::log( 1. + difratio ) );
316
317
318 // sigma = GetHNinelasticXsc(aParticle, A, Z);
319
320 sigma = Z*hpInXsc + N*hnInXsc;
321
322 ratio = sigma/nucleusSquare;
323
324 fProductionXsc = nucleusSquare*std::log( 1. + cofInelastic*ratio )/cofInelastic;
325
326 if (fElasticXsc < 0.) fElasticXsc = 0.;
327 }
328 else // H
329 {
330 fTotalXsc = sigma;
331 xsection = sigma;
332
333 if ( theParticle != theAProton )
334 {
335 sigma = GetHNinelasticXsc(aParticle, A, Z);
336 fInelasticXsc = sigma;
337 fElasticXsc = fTotalXsc - fInelasticXsc;
338 }
339 else
340 {
341 fElasticXsc = fTotalXsc - fInelasticXsc;
342 }
343 if (fElasticXsc < 0.) fElasticXsc = 0.;
344
345 }
346 return xsection;
347}
G4double GetNucleusRadius(const G4DynamicParticle *, const G4Element *)
G4double GetParticleBarCorTot(const G4ParticleDefinition *theParticle, G4int Z)
G4double GetKaonNucleonXscVector(const G4DynamicParticle *, G4int At, G4int Zt)
G4double GetParticleBarCorIn(const G4ParticleDefinition *theParticle, G4int Z)
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4ParticleDefinition *)
G4double GetInelasticHadronNucleonXsc()
const G4double pi

Referenced by ComputeQuasiElasticRatio(), GetElasticElementCrossSection(), GetElasticGlauberGribov(), GetElasticIsotopeCrossSection(), GetInelasticElementCrossSection(), GetInelasticGlauberGribov(), GetInelasticIsotopeCrossSection(), GetTotalElementCrossSection(), and GetTotalIsotopeCrossSection().

◆ GetKaonNucleonXscVector()

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

Definition at line 1020 of file G4ComponentGGHadronNucleusXsc.cc.

1022{
1023 G4double Tkin, logTkin, xsc, xscP, xscN;
1024 const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
1025
1026 G4int Nt = At-Zt; // number of neutrons
1027 if (Nt < 0) Nt = 0;
1028
1029 Tkin = aParticle->GetKineticEnergy(); // Tkin in MeV
1030
1031 if( Tkin > 70*GeV ) return GetHadronNucleonXscPDG(aParticle,At,Zt);
1032
1033 logTkin = std::log(Tkin); // Tkin in MeV!!!
1034
1035 if( theParticle == theKPlus )
1036 {
1037 xscP = hnXsc->GetKpProtonTotXscVector(logTkin);
1038 xscN = hnXsc->GetKpNeutronTotXscVector(logTkin);
1039 }
1040 else if( theParticle == theKMinus )
1041 {
1042 xscP = hnXsc->GetKmProtonTotXscVector(logTkin);
1043 xscN = hnXsc->GetKmNeutronTotXscVector(logTkin);
1044 }
1045 else // K-zero as half of K+ and K-
1046 {
1047 xscP = (hnXsc->GetKpProtonTotXscVector(logTkin)+hnXsc->GetKmProtonTotXscVector(logTkin))*0.5;
1048 xscN = (hnXsc->GetKpNeutronTotXscVector(logTkin)+hnXsc->GetKmNeutronTotXscVector(logTkin))*0.5;
1049 }
1050 xsc = xscP*Zt + xscN*Nt;
1051 return xsc;
1052}
G4double GetKineticEnergy() const
G4double GetKmNeutronTotXscVector(G4double logEnergy)
G4double GetKmProtonTotXscVector(G4double logEnergy)
G4double GetKpNeutronTotXscVector(G4double logEnergy)
G4double GetKpProtonTotXscVector(G4double logEnergy)

Referenced by GetIsoCrossSection().

◆ GetNucleusRadius() [1/2]

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

Definition at line 1312 of file G4ComponentGGHadronNucleusXsc.cc.

1314{
1315 G4int At = G4lrint(anElement->GetN());
1316 G4double oneThird = 1.0/3.0;
1317 G4double cubicrAt = std::pow(G4double(At), oneThird);
1318
1319 G4double R; // = fRadiusConst*cubicrAt;
1320 /*
1321 G4double tmp = std::pow( cubicrAt-1., 3.);
1322 tmp += At;
1323 tmp *= 0.5;
1324
1325 if (At > 20.) // 20.
1326 {
1327 R = fRadiusConst*std::pow (tmp, oneThird);
1328 }
1329 else
1330 {
1331 R = fRadiusConst*cubicrAt;
1332 }
1333 */
1334
1335 R = fRadiusConst*cubicrAt;
1336
1337 G4double meanA = 21.;
1338
1339 G4double tauA1 = 40.;
1340 G4double tauA2 = 10.;
1341 G4double tauA3 = 5.;
1342
1343 G4double a1 = 0.85;
1344 G4double b1 = 1. - a1;
1345
1346 G4double b2 = 0.3;
1347 G4double b3 = 4.;
1348
1349 if (At > 20) // 20.
1350 {
1351 R *= ( a1 + b1*std::exp( -(At - meanA)/tauA1) );
1352 }
1353 else if (At > 3)
1354 {
1355 R *= ( 1.0 + b2*( 1. - std::exp( (At - meanA)/tauA2) ) );
1356 }
1357 else
1358 {
1359 R *= ( 1.0 + b3*( 1. - std::exp( (At - meanA)/tauA3) ) );
1360 }
1361 return R;
1362
1363}
const G4double oneThird

Referenced by GetIsoCrossSection(), GetRatioQE(), and GetRatioSD().

◆ GetNucleusRadius() [2/2]

G4double G4ComponentGGHadronNucleusXsc::GetNucleusRadius ( G4int  At)

Definition at line 1369 of file G4ComponentGGHadronNucleusXsc.cc.

1370{
1371 G4double oneThird = 1.0/3.0;
1372 G4double cubicrAt = std::pow(G4double(At), oneThird);
1373
1374 G4double R; // = fRadiusConst*cubicrAt;
1375
1376 /*
1377 G4double tmp = std::pow( cubicrAt-1., 3.);
1378 tmp += At;
1379 tmp *= 0.5;
1380
1381 if (At > 20.)
1382 {
1383 R = fRadiusConst*std::pow (tmp, oneThird);
1384 }
1385 else
1386 {
1387 R = fRadiusConst*cubicrAt;
1388 }
1389 */
1390
1391 R = fRadiusConst*cubicrAt;
1392
1393 G4double meanA = 20.;
1394 G4double tauA = 20.;
1395
1396 if (At > 20) // 20.
1397 {
1398 R *= ( 0.8 + 0.2*std::exp( -(G4double(At) - meanA)/tauA) );
1399 }
1400 else
1401 {
1402 R *= ( 1.0 + 0.1*( 1. - std::exp( (G4double(At) - meanA)/tauA) ) );
1403 }
1404
1405 return R;
1406}

◆ GetParticleBarCorIn()

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

Definition at line 255 of file G4ComponentGGHadronNucleusXsc.hh.

257{
258 if(Z >= 2 && Z <= 92)
259 {
260 if( theParticle == theProton ) return fProtonBarCorrectionIn[Z];
261 else if( theParticle == theNeutron) return fNeutronBarCorrectionIn[Z];
262 else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionIn[Z];
263 else if( theParticle == thePiMinus) return fPionMinusBarCorrectionIn[Z];
264 else return 1.0;
265 }
266 else return 1.0;
267}

Referenced by GetIsoCrossSection().

◆ GetParticleBarCorTot()

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

Definition at line 235 of file G4ComponentGGHadronNucleusXsc.hh.

237{
238 if(Z >= 2 && Z <= 92)
239 {
240 if( theParticle == theProton ) return fProtonBarCorrectionTot[Z];
241 else if( theParticle == theNeutron) return fNeutronBarCorrectionTot[Z];
242 else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionTot[Z];
243 else if( theParticle == thePiMinus) return fPionMinusBarCorrectionTot[Z];
244 else return 1.0;
245 }
246 else return 1.0;
247}

Referenced by GetIsoCrossSection().

◆ GetProductionGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetProductionGlauberGribovXsc ( )
inline

Definition at line 140 of file G4ComponentGGHadronNucleusXsc.hh.

140{ return fProductionXsc; };

◆ GetRadiusConst()

G4double G4ComponentGGHadronNucleusXsc::GetRadiusConst ( )
inline

Definition at line 142 of file G4ComponentGGHadronNucleusXsc.hh.

142{ return fRadiusConst; };

◆ GetRatioQE()

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

Definition at line 395 of file G4ComponentGGHadronNucleusXsc.cc.

397{
398 G4double sigma, cofInelastic, cofTotal, nucleusSquare, ratio;
400
401 const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
402
403 if( theParticle == theProton ||
404 theParticle == theNeutron ||
405 theParticle == thePiPlus ||
406 theParticle == thePiMinus )
407 {
408 sigma = GetHadronNucleonXscNS(aParticle, A, Z);
409 cofInelastic = 2.4;
410 cofTotal = 2.0;
411 }
412 else
413 {
414 sigma = GetHadronNucleonXscNS(aParticle, A, Z);
415 cofInelastic = 2.2;
416 cofTotal = 2.0;
417 }
418 nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
419 ratio = sigma/nucleusSquare;
420
421 fInelasticXsc = nucleusSquare*std::log( 1. + cofInelastic*ratio )/cofInelastic;
422
423 sigma = GetHNinelasticXsc(aParticle, A, Z);
424 ratio = sigma/nucleusSquare;
425
426 fProductionXsc = nucleusSquare*std::log( 1. + cofInelastic*ratio )/cofInelastic;
427
428 if (fInelasticXsc > fProductionXsc) ratio = (fInelasticXsc-fProductionXsc)/fInelasticXsc;
429 else ratio = 0.;
430 if ( ratio < 0. ) ratio = 0.;
431
432 return ratio;
433}

◆ GetRatioSD()

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

Definition at line 353 of file G4ComponentGGHadronNucleusXsc.cc.

355{
356 G4double sigma, cofInelastic, cofTotal, nucleusSquare, ratio;
358
359 const G4ParticleDefinition* theParticle = aParticle->GetDefinition();
360
361 if( theParticle == theProton ||
362 theParticle == theNeutron ||
363 theParticle == thePiPlus ||
364 theParticle == thePiMinus )
365 {
366 sigma = GetHadronNucleonXscNS(aParticle, A, Z);
367 cofInelastic = 2.4;
368 cofTotal = 2.0;
369 }
370 else
371 {
372 sigma = GetHadronNucleonXscNS(aParticle, A, Z);
373 cofInelastic = 2.2;
374 cofTotal = 2.0;
375 }
376 nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
377 ratio = sigma/nucleusSquare;
378
379 fInelasticXsc = nucleusSquare*std::log( 1. + cofInelastic*ratio )/cofInelastic;
380
381 G4double difratio = ratio/(1.+ratio);
382
383 fDiffractionXsc = 0.5*nucleusSquare*( difratio - std::log( 1. + difratio ) );
384
385 if (fInelasticXsc > 0.) ratio = fDiffractionXsc/fInelasticXsc;
386 else ratio = 0.;
387
388 return ratio;
389}

◆ GetTotalElementCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 110 of file G4ComponentGGHadronNucleusXsc.cc.

113{
114 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
115 kinEnergy);
116 fTotalXsc = GetIsoCrossSection(aDP, Z, G4int(A));
117 delete aDP;
118
119 return fTotalXsc;
120}

◆ GetTotalGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetTotalGlauberGribovXsc ( )
inline

Definition at line 137 of file G4ComponentGGHadronNucleusXsc.hh.

137{ return fTotalXsc; };

◆ GetTotalIsotopeCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 96 of file G4ComponentGGHadronNucleusXsc.cc.

99{
100 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
101 kinEnergy);
102 fTotalXsc = GetIsoCrossSection(aDP, Z, A);
103 delete aDP;
104
105 return fTotalXsc;
106}

◆ IsIsoApplicable()

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

Definition at line 204 of file G4ComponentGGHadronNucleusXsc.cc.

208{
209 G4bool applicable = false;
210 // G4int baryonNumber = aDP->GetDefinition()->GetBaryonNumber();
211 G4double kineticEnergy = aDP->GetKineticEnergy();
212
213 const G4ParticleDefinition* theParticle = aDP->GetDefinition();
214
215 if ( ( kineticEnergy >= fLowerLimit &&
216 Z > 1 && // >= He
217 ( theParticle == theAProton ||
218 theParticle == theGamma ||
219 theParticle == theKPlus ||
220 theParticle == theKMinus ||
221 theParticle == theK0L ||
222 theParticle == theK0S ||
223 theParticle == theSMinus ||
224 theParticle == theProton ||
225 theParticle == theNeutron ||
226 theParticle == thePiPlus ||
227 theParticle == thePiMinus ) ) ) applicable = true;
228
229 return applicable;
230}
bool G4bool
Definition: G4Types.hh:67

◆ SetEnergyLowerLimit()

void G4ComponentGGHadronNucleusXsc::SetEnergyLowerLimit ( G4double  E)
inline

Definition at line 147 of file G4ComponentGGHadronNucleusXsc.hh.

147{fLowerLimit=E;};

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