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

#include <G4ComponentGGHadronNucleusXsc.hh>

+ Inheritance diagram for G4ComponentGGHadronNucleusXsc:

Public Member Functions

 G4ComponentGGHadronNucleusXsc ()
 
 ~G4ComponentGGHadronNucleusXsc () final
 
G4double GetTotalElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A) final
 
G4double GetTotalIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A) final
 
G4double GetInelasticElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A) final
 
G4double GetInelasticIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A) final
 
G4double GetElasticElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A) final
 
G4double GetElasticIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A) final
 
G4double ComputeQuasiElasticRatio (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A) final
 
void ComputeCrossSections (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A, G4int nL=0)
 
G4double GetProductionElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
 
G4double GetProductionIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
 
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)
 
void Description (std::ostream &) const final
 
G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
G4double GetElasticGlauberGribov (const G4DynamicParticle *, G4int Z, G4int A)
 
G4double GetInelasticGlauberGribov (const G4DynamicParticle *, G4int Z, G4int A)
 
G4double GetAxsc2piR2 () const
 
G4double GetModelInLog () const
 
G4double GetTotalGlauberGribovXsc () const
 
G4double GetElasticGlauberGribovXsc () const
 
G4double GetInelasticGlauberGribovXsc () const
 
G4double GetProductionGlauberGribovXsc () const
 
G4double GetDiffractionGlauberGribovXsc () const
 
G4double GetParticleBarCorTot (const G4ParticleDefinition *theParticle, G4int Z)
 
G4double GetParticleBarCorIn (const G4ParticleDefinition *theParticle, G4int Z)
 
- 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 (std::ostream &) 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 ()
 

Detailed Description

Definition at line 51 of file G4ComponentGGHadronNucleusXsc.hh.

Constructor & Destructor Documentation

◆ G4ComponentGGHadronNucleusXsc()

G4ComponentGGHadronNucleusXsc::G4ComponentGGHadronNucleusXsc ( )
explicit

Definition at line 52 of file G4ComponentGGHadronNucleusXsc.cc.

54 fTotalXsc(0.0),fElasticXsc(0.0),fInelasticXsc(0.0),fProductionXsc(0.0),
55 fDiffractionXsc(0.0),fAxsc2piR2(0.0),fModelInLog(0.0),fEnergy(0.0),
56 fParticle(nullptr),fZ(0),fA(0), fL(0)
57{
58 theGamma = G4Gamma::Gamma();
59 theProton = G4Proton::Proton();
60 theNeutron = G4Neutron::Neutron();
61 theAProton = G4AntiProton::AntiProton();
62 theANeutron = G4AntiNeutron::AntiNeutron();
63 thePiPlus = G4PionPlus::PionPlus();
64 thePiMinus = G4PionMinus::PionMinus();
65 theKPlus = G4KaonPlus::KaonPlus();
66 theKMinus = G4KaonMinus::KaonMinus();
69 theLambda = G4Lambda::Lambda();
70
71 hnXsc = new G4HadronNucleonXsc();
72}
static G4AntiNeutron * AntiNeutron()
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:92
static G4Gamma * Gamma()
Definition: G4Gamma.cc:85
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:112
static G4KaonPlus * KaonPlus()
Definition: G4KaonPlus.cc:112
static G4KaonZeroLong * KaonZeroLong()
static G4KaonZeroShort * KaonZeroShort()
static G4Lambda * Lambda()
Definition: G4Lambda.cc:107
static G4Neutron * Neutron()
Definition: G4Neutron.cc:103
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
static G4Proton * Proton()
Definition: G4Proton.cc:92

◆ ~G4ComponentGGHadronNucleusXsc()

G4ComponentGGHadronNucleusXsc::~G4ComponentGGHadronNucleusXsc ( )
final

Definition at line 76 of file G4ComponentGGHadronNucleusXsc.cc.

77{
78 delete hnXsc;
79}

Member Function Documentation

◆ ComputeCrossSections()

void G4ComponentGGHadronNucleusXsc::ComputeCrossSections ( const G4ParticleDefinition aParticle,
G4double  kinEnergy,
G4int  Z,
G4int  A,
G4int  nL = 0 
)

Definition at line 182 of file G4ComponentGGHadronNucleusXsc.cc.

185{
186 // check cache
187 if(aParticle == fParticle && fZ == Z && fA == A && fL == nL && kinEnergy == fEnergy)
188 { return; }
189 fParticle = aParticle;
190 fZ = Z;
191 fA = A;
192 fL = nL;
193 fEnergy = kinEnergy;
194 G4Pow* pG4Pow=G4Pow::GetInstance();
195 //
196 G4double cofInelastic = 2.4;
197 static const G4double cofTotal = 2.0;
198 G4double sigma(0.0), hpInXsc(0.0), hnInXsc(0.0), R(0.0);
199
200 G4int N = std::max(A - Z, 0); // number of neutrons
201
202 if( aParticle == theKPlus || aParticle == theKMinus ||
203 aParticle == theK0S || aParticle == theK0L)
204 {
205 sigma = (1 == Z)
206 ? hnXsc->KaonNucleonXscNS(aParticle, theProton, kinEnergy)
207 : Z*hnXsc->KaonNucleonXscGG(aParticle, theProton, kinEnergy);
208 hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
209
210 if(N > 0) {
211 sigma += N*hnXsc->KaonNucleonXscGG(aParticle, theNeutron, kinEnergy);
212 hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
213 }
215 cofInelastic = 2.2;
216 }
217 else
218 {
219 sigma = Z*hnXsc->HadronNucleonXsc(aParticle, theProton, kinEnergy);
220 hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
221
222 if(N > 0) {
223 sigma += N*hnXsc->HadronNucleonXsc(aParticle, theNeutron, kinEnergy);
224 hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
225 }
227 if( nL > 0 ) {
228 G4double mp = theProton->GetPDGMass();
229 G4double ml = theLambda->GetPDGMass();
230 G4double kinCof = ml/mp; // moving hyperon - rest nucleon
231 G4double cHN(0.88);
232 sigma += nL*hnXsc->HadronNucleonXsc(theLambda, theProton, kinEnergy*kinCof);
233 R *= std::sqrt( pG4Pow->Z23( A - nL ) + cHN*pG4Pow->Z23( nL ) )/pG4Pow->Z13(A);
234 }
235 }
236
237 G4double nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
238 G4double ratio = sigma/nucleusSquare;
239 G4double difratio = ratio/(1.+ratio);
240 fDiffractionXsc = 0.5*nucleusSquare*( difratio - G4Log( 1. + difratio ) );
241
242 if( A > 1 )
243 {
244 fTotalXsc = nucleusSquare*G4Log( 1. + ratio )
245 *GetParticleBarCorTot(aParticle, Z);
246
247 // inelastic xsc
248 fAxsc2piR2 = cofInelastic*ratio;
249 fModelInLog = G4Log( 1. + fAxsc2piR2 );
250 fInelasticXsc = nucleusSquare*fModelInLog/cofInelastic;
251 G4double barcorr = GetParticleBarCorIn(aParticle, Z);
252 fInelasticXsc *= barcorr;
253 fElasticXsc = std::max(fTotalXsc - fInelasticXsc, 0.);
254
255 G4double xratio = (Z*hpInXsc + N*hnInXsc)/nucleusSquare;
256 fProductionXsc =
257 nucleusSquare*G4Log(1. + cofInelastic*xratio)*barcorr/cofInelastic;
258 fProductionXsc = std::min(fProductionXsc, fInelasticXsc);
259 }
260 else // H
261 {
262 fTotalXsc = sigma;
263 fInelasticXsc = hpInXsc;
264 fElasticXsc = std::max(fTotalXsc - fInelasticXsc, 0.);
265 fProductionXsc = fInelasticXsc;
266 fDiffractionXsc = 0.2*fInelasticXsc;
267 // G4double xratio = hpInXsc/nucleusSquare;
268 // fProductionXsc = nucleusSquare*G4Log(1. + cofInelastic*xratio)/cofInelastic;
269 // fProductionXsc = std::min(fProductionXsc, fInelasticXsc);
270 }
271 /*
272 G4cout << "GGXsc: Z= " << Z << " A= " << A << " E= " << kinEnergy
273 << " xtot(b)= " << fTotalXsc/barn
274 << " xel(b)= " << fElasticXsc/barn << " xinel(b)= " << fInelasticXsc/barn
275 << G4endl;
276 */
277}
G4double G4Log(G4double x)
Definition: G4Log.hh:227
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
G4double GetParticleBarCorTot(const G4ParticleDefinition *theParticle, G4int Z)
G4double GetParticleBarCorIn(const G4ParticleDefinition *theParticle, G4int Z)
G4double KaonNucleonXscGG(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double KaonNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double HadronNucleonXsc(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double GetInelasticHadronNucleonXsc() const
static G4double RadiusHNGG(G4int A)
static G4double RadiusKNGG(G4int A)
Definition: G4Pow.hh:49
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double Z13(G4int Z) const
Definition: G4Pow.hh:123
G4double Z23(G4int Z) const
Definition: G4Pow.hh:125
#define N
Definition: crc32.c:56
const G4double pi

Referenced by ComputeQuasiElasticRatio(), GetElasticElementCrossSection(), GetElasticGlauberGribov(), GetElasticIsotopeCrossSection(), GetHadronNucleonXscPDG(), GetInelasticElementCrossSection(), GetInelasticGlauberGribov(), GetInelasticIsotopeCrossSection(), GetIsoCrossSection(), GetProductionElementCrossSection(), GetProductionIsotopeCrossSection(), GetRatioQE(), GetRatioSD(), GetTotalElementCrossSection(), and GetTotalIsotopeCrossSection().

◆ ComputeQuasiElasticRatio()

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

Reimplemented from G4VComponentCrossSection.

Definition at line 143 of file G4ComponentGGHadronNucleusXsc.cc.

146{
147 ComputeCrossSections(aParticle, kinEnergy, Z, A);
148 G4double ratio = (fInelasticXsc > 0.)
149 ? (fInelasticXsc - fProductionXsc)/fInelasticXsc : 0.;
150 ratio = std::max(ratio, 0.);
151 return ratio;
152}
void ComputeCrossSections(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A, G4int nL=0)

◆ Default_Name()

static const char * G4ComponentGGHadronNucleusXsc::Default_Name ( )
inlinestatic

Definition at line 58 of file G4ComponentGGHadronNucleusXsc.hh.

58{ return "Glauber-Gribov"; }

◆ Description()

void G4ComponentGGHadronNucleusXsc::Description ( std::ostream &  outFile) const
finalvirtual

Reimplemented from G4VComponentCrossSection.

Definition at line 458 of file G4ComponentGGHadronNucleusXsc.cc.

459{
460 outFile << "G4ComponentGGHadronNucleusXsc calculates total, inelastic and\n"
461 << "elastic cross sections for hadron-nucleus cross sections using\n"
462 << "the Glauber model with Gribov corrections. It is valid for all\n"
463 << "targets except hydrogen, and for incident p, pbar, n, sigma-,\n"
464 << "pi+, pi-, K+, K- and gammas with energies above 3 GeV. This is\n"
465 << "a cross section component which is to be used to build a cross\n"
466 << "data set.\n";
467}

◆ GetAxsc2piR2()

G4double G4ComponentGGHadronNucleusXsc::GetAxsc2piR2 ( ) const
inline

Definition at line 127 of file G4ComponentGGHadronNucleusXsc.hh.

127{ return fAxsc2piR2; };

◆ GetDiffractionGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetDiffractionGlauberGribovXsc ( ) const
inline

Definition at line 133 of file G4ComponentGGHadronNucleusXsc.hh.

133{ return fDiffractionXsc; };

Referenced by G4DiffElasticRatio::ComputeRatio().

◆ GetElasticElementCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 123 of file G4ComponentGGHadronNucleusXsc.cc.

126{
127 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
128 return fElasticXsc;
129}
int G4lrint(double ad)
Definition: templates.hh:134

Referenced by G4DiffElasticRatio::ComputeRatio().

◆ GetElasticGlauberGribov()

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

◆ GetElasticGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetElasticGlauberGribovXsc ( ) const
inline

Definition at line 130 of file G4ComponentGGHadronNucleusXsc.hh.

130{ return fElasticXsc; };

◆ GetElasticIsotopeCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 133 of file G4ComponentGGHadronNucleusXsc.cc.

136{
137 ComputeCrossSections(aParticle, kinEnergy, Z, A);
138 return fElasticXsc;
139}

◆ GetHadronNucleonXsc() [1/2]

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

Definition at line 310 of file G4ComponentGGHadronNucleusXsc.cc.

312{
313 G4int At = G4lrint(anElement->GetN()); // number of nucleons
314 G4int Zt = anElement->GetZasInt(); // number of protons
315
316 return GetHadronNucleonXsc(aParticle, At, Zt);
317}
G4double GetHadronNucleonXsc(const G4DynamicParticle *, const G4Element *)
G4int GetZasInt() const
Definition: G4Element.hh:132
G4double GetN() const
Definition: G4Element.hh:135

Referenced by GetHadronNucleonXsc().

◆ GetHadronNucleonXsc() [2/2]

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

Definition at line 323 of file G4ComponentGGHadronNucleusXsc.cc.

325{
326 return hnXsc->HadronNucleonXscEL(aParticle->GetDefinition(), theProton,
327 aParticle->GetKineticEnergy());
328}
G4double HadronNucleonXscEL(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)

◆ GetHadronNucleonXscNS() [1/2]

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

Definition at line 372 of file G4ComponentGGHadronNucleusXsc.cc.

374{
375 G4int At = G4lrint(anElement->GetN()); // number of nucleons
376 G4int Zt = anElement->GetZasInt(); // number of protons
377
378 return GetHadronNucleonXscNS(aParticle, At, Zt);
379}
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4Element *)

Referenced by GetHadronNucleonXscNS().

◆ GetHadronNucleonXscNS() [2/2]

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

Definition at line 386 of file G4ComponentGGHadronNucleusXsc.cc.

388{
389 G4double res = 0.0;
390 if(1 == At && 1 == Zt) {
391 res = hnXsc->HadronNucleonXscNS(aParticle->GetDefinition(), theProton,
392 aParticle->GetKineticEnergy());
393 } else if(1 == At && 0 == Zt) {
394 res = hnXsc->HadronNucleonXscNS(aParticle->GetDefinition(), theNeutron,
395 aParticle->GetKineticEnergy());
396 }
397 return res;
398}
G4double HadronNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)

◆ GetHadronNucleonXscPDG() [1/2]

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

Definition at line 335 of file G4ComponentGGHadronNucleusXsc.cc.

337{
338 G4int At = G4lrint(anElement->GetN()); // number of nucleons
339 G4int Zt = anElement->GetZasInt(); // number of protons
340
341 return GetHadronNucleonXscPDG(aParticle, At, Zt);
342}
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4Element *)

Referenced by GetHadronNucleonXscPDG().

◆ GetHadronNucleonXscPDG() [2/2]

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

Definition at line 349 of file G4ComponentGGHadronNucleusXsc.cc.

351{
352 G4double res = 0.0;
353 if(1 == At && 1 == Zt) {
354 res = hnXsc->HadronNucleonXscPDG(aParticle->GetDefinition(), theProton,
355 aParticle->GetKineticEnergy());
356 } else if(1 == At && 0 == Zt) {
357 res = hnXsc->HadronNucleonXscPDG(aParticle->GetDefinition(), theNeutron,
358 aParticle->GetKineticEnergy());
359 } else {
361 aParticle->GetKineticEnergy(), Zt, At);
362 res = fTotalXsc;
363 }
364 return res;
365}
G4double HadronNucleonXscPDG(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)

◆ GetHNinelasticXsc() [1/2]

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

Definition at line 405 of file G4ComponentGGHadronNucleusXsc.cc.

407{
408 G4int At = G4lrint(anElement->GetN()); // number of nucleons
409 G4int Zt = anElement->GetZasInt(); // number of protons
410
411 return GetHNinelasticXsc(aParticle, At, Zt);
412}
G4double GetHNinelasticXsc(const G4DynamicParticle *, const G4Element *)

Referenced by GetHNinelasticXsc().

◆ GetHNinelasticXsc() [2/2]

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

Definition at line 418 of file G4ComponentGGHadronNucleusXsc.cc.

420{
421 const G4ParticleDefinition* hadron = aParticle->GetDefinition();
422 G4double e = aParticle->GetKineticEnergy();
423 G4int Nt = std::max(At - Zt, 0);
424
425 hnXsc->HadronNucleonXscNS(hadron, theProton, e);
426 G4double sumInelastic = Zt*hnXsc->GetInelasticHadronNucleonXsc();
427 if(Nt > 0) {
428 hnXsc->HadronNucleonXscNS(hadron, theNeutron, e);
429 sumInelastic += Nt*hnXsc->GetInelasticHadronNucleonXsc();
430 }
431 return sumInelastic;
432}

◆ GetHNinelasticXscVU()

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

Definition at line 438 of file G4ComponentGGHadronNucleusXsc.cc.

440{
441 const G4ParticleDefinition* hadron = aParticle->GetDefinition();
442 G4double e = aParticle->GetKineticEnergy();
443 G4int Nt = std::max(At - Zt, 0);
444
445 hnXsc->HadronNucleonXscVU(hadron, theProton, e);
446 G4double sumInelastic = Zt*hnXsc->GetInelasticHadronNucleonXsc();
447 if(Nt > 0) {
448 hnXsc->HadronNucleonXscVU(hadron, theNeutron, e);
449 sumInelastic += Nt*hnXsc->GetInelasticHadronNucleonXsc();
450 }
451 return sumInelastic;
452}
G4double HadronNucleonXscVU(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)

◆ GetInelasticElementCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 103 of file G4ComponentGGHadronNucleusXsc.cc.

106{
107 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
108 return fInelasticXsc;
109}

◆ GetInelasticGlauberGribov()

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

◆ GetInelasticGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetInelasticGlauberGribovXsc ( ) const
inline

Definition at line 131 of file G4ComponentGGHadronNucleusXsc.hh.

131{ return fInelasticXsc; };

◆ GetInelasticIsotopeCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 113 of file G4ComponentGGHadronNucleusXsc.cc.

116{
117 ComputeCrossSections(aParticle, kinEnergy, Z, A);
118 return fInelasticXsc;
119}

◆ GetIsoCrossSection()

G4double G4ComponentGGHadronNucleusXsc::GetIsoCrossSection ( const G4DynamicParticle dp,
G4int  Z,
G4int  A,
const G4Isotope iso = nullptr,
const G4Element elm = nullptr,
const G4Material mat = nullptr 
)
inline

Definition at line 182 of file G4ComponentGGHadronNucleusXsc.hh.

187{
189 return fTotalXsc;
190}

◆ GetModelInLog()

G4double G4ComponentGGHadronNucleusXsc::GetModelInLog ( ) const
inline

Definition at line 128 of file G4ComponentGGHadronNucleusXsc.hh.

128{ return fModelInLog; };

◆ GetParticleBarCorIn()

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

Definition at line 233 of file G4ComponentGGHadronNucleusXsc.hh.

235{
236 G4double cor = 1.0;
237 G4int z = std::min(92, std::max(ZZ, 1));
238 if( theParticle == theProton ) cor = fProtonBarCorrectionIn[z];
239 else if( theParticle == theNeutron) cor = fNeutronBarCorrectionIn[z];
240 else if( theParticle == thePiPlus ) cor = fPionPlusBarCorrectionIn[z];
241 else if( theParticle == thePiMinus) cor = fPionMinusBarCorrectionIn[z];
242 return cor;
243}

Referenced by ComputeCrossSections().

◆ GetParticleBarCorTot()

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

Definition at line 215 of file G4ComponentGGHadronNucleusXsc.hh.

217{
218 G4double cor = 1.0;
219 G4int z = std::min(92, std::max(ZZ, 1));
220 if( theParticle == theProton ) cor = fProtonBarCorrectionTot[z];
221 else if( theParticle == theNeutron) cor = fNeutronBarCorrectionTot[z];
222 else if( theParticle == thePiPlus ) cor = fPionPlusBarCorrectionTot[z];
223 else if( theParticle == thePiMinus) cor = fPionMinusBarCorrectionTot[z];
224 return cor;
225}

Referenced by ComputeCrossSections().

◆ GetProductionElementCrossSection()

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

Definition at line 156 of file G4ComponentGGHadronNucleusXsc.cc.

159{
160 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
161 return fProductionXsc;
162}

◆ GetProductionGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetProductionGlauberGribovXsc ( ) const
inline

Definition at line 132 of file G4ComponentGGHadronNucleusXsc.hh.

132{ return fProductionXsc; };

◆ GetProductionIsotopeCrossSection()

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

Definition at line 166 of file G4ComponentGGHadronNucleusXsc.cc.

169{
170 ComputeCrossSections(aParticle, kinEnergy, Z, A);
171 return fProductionXsc;
172}

◆ GetRatioQE()

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

Definition at line 296 of file G4ComponentGGHadronNucleusXsc.cc.

298{
300 aParticle->GetKineticEnergy(), Z, A);
301
302 return (fInelasticXsc > std::max(fProductionXsc, 0.))
303 ? 1.0 - fProductionXsc/fInelasticXsc : 0.0;
304}

◆ GetRatioSD()

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

Definition at line 283 of file G4ComponentGGHadronNucleusXsc.cc.

285{
287 aParticle->GetKineticEnergy(), Z, A);
288
289 return (fInelasticXsc > 0.0) ? fDiffractionXsc/fInelasticXsc : 0.0;
290}

◆ GetTotalElementCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 83 of file G4ComponentGGHadronNucleusXsc.cc.

86{
87 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
88 return fTotalXsc;
89}

◆ GetTotalGlauberGribovXsc()

G4double G4ComponentGGHadronNucleusXsc::GetTotalGlauberGribovXsc ( ) const
inline

Definition at line 129 of file G4ComponentGGHadronNucleusXsc.hh.

129{ return fTotalXsc; };

◆ GetTotalIsotopeCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 93 of file G4ComponentGGHadronNucleusXsc.cc.

96{
97 ComputeCrossSections(aParticle, kinEnergy, Z, A);
98 return fTotalXsc;
99}

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