Geant4 10.7.0
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)
 
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 50 of file G4ComponentGGHadronNucleusXsc.cc.

52 fTotalXsc(0.0),fElasticXsc(0.0),fInelasticXsc(0.0),fProductionXsc(0.0),
53 fDiffractionXsc(0.0),fAxsc2piR2(0.0),fModelInLog(0.0),fEnergy(0.0),
54 fParticle(nullptr),fZ(0),fA(0)
55{
56 theGamma = G4Gamma::Gamma();
57 theProton = G4Proton::Proton();
58 theNeutron = G4Neutron::Neutron();
59 theAProton = G4AntiProton::AntiProton();
60 theANeutron = G4AntiNeutron::AntiNeutron();
61 thePiPlus = G4PionPlus::PionPlus();
62 thePiMinus = G4PionMinus::PionMinus();
63 theKPlus = G4KaonPlus::KaonPlus();
64 theKMinus = G4KaonMinus::KaonMinus();
67
68 hnXsc = new G4HadronNucleonXsc();
69}
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 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 73 of file G4ComponentGGHadronNucleusXsc.cc.

74{
75 delete hnXsc;
76}

Member Function Documentation

◆ ComputeCrossSections()

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

Definition at line 179 of file G4ComponentGGHadronNucleusXsc.cc.

182{
183 // check cache
184 if(aParticle == fParticle && fZ == Z && fA == A && kinEnergy == fEnergy)
185 { return; }
186 fParticle = aParticle;
187 fZ = Z;
188 fA = A;
189 fEnergy = kinEnergy;
190
191 //
192 G4double cofInelastic = 2.4;
193 static const G4double cofTotal = 2.0;
194 G4double sigma(0.0), hpInXsc(0.0), hnInXsc(0.0), R(0.0);
195
196 G4int N = std::max(A - Z, 0); // number of neutrons
197
198 if( aParticle == theKPlus || aParticle == theKMinus ||
199 aParticle == theK0S || aParticle == theK0L)
200 {
201 sigma = (1 == Z)
202 ? hnXsc->KaonNucleonXscNS(aParticle, theProton, kinEnergy)
203 : Z*hnXsc->KaonNucleonXscGG(aParticle, theProton, kinEnergy);
204 hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
205
206 if(N > 0) {
207 sigma += N*hnXsc->KaonNucleonXscGG(aParticle, theNeutron, kinEnergy);
208 hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
209 }
211 cofInelastic = 2.2;
212 }
213 else
214 {
215 sigma = Z*hnXsc->HadronNucleonXsc(aParticle, theProton, kinEnergy);
216 hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
217
218 if(N > 0) {
219 sigma += N*hnXsc->HadronNucleonXsc(aParticle, theNeutron, kinEnergy);
220 hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
221 }
223 }
224
225 G4double nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
226 G4double ratio = sigma/nucleusSquare;
227 G4double difratio = ratio/(1.+ratio);
228 fDiffractionXsc = 0.5*nucleusSquare*( difratio - G4Log( 1. + difratio ) );
229
230 if( A > 1 )
231 {
232 fTotalXsc = nucleusSquare*G4Log( 1. + ratio )
233 *GetParticleBarCorTot(aParticle, Z);
234
235 // inelastic xsc
236 fAxsc2piR2 = cofInelastic*ratio;
237 fModelInLog = G4Log( 1. + fAxsc2piR2 );
238 fInelasticXsc = nucleusSquare*fModelInLog/cofInelastic;
239 G4double barcorr = GetParticleBarCorIn(aParticle, Z);
240 fInelasticXsc *= barcorr;
241 fElasticXsc = std::max(fTotalXsc - fInelasticXsc, 0.);
242
243 G4double xratio = (Z*hpInXsc + N*hnInXsc)/nucleusSquare;
244 fProductionXsc =
245 nucleusSquare*G4Log(1. + cofInelastic*xratio)*barcorr/cofInelastic;
246 fProductionXsc = std::min(fProductionXsc, fInelasticXsc);
247 }
248 else // H
249 {
250 fTotalXsc = sigma;
251 fInelasticXsc = hpInXsc;
252 fElasticXsc = std::max(fTotalXsc - fInelasticXsc, 0.);
253 fProductionXsc = fInelasticXsc;
254 fDiffractionXsc = 0.2*fInelasticXsc;
255 // G4double xratio = hpInXsc/nucleusSquare;
256 // fProductionXsc = nucleusSquare*G4Log(1. + cofInelastic*xratio)/cofInelastic;
257 // fProductionXsc = std::min(fProductionXsc, fInelasticXsc);
258 }
259 /*
260 G4cout << "GGXsc: Z= " << Z << " A= " << A << " E= " << kinEnergy
261 << " xtot(b)= " << fTotalXsc/barn
262 << " xel(b)= " << fElasticXsc/barn << " xinel(b)= " << fInelasticXsc/barn
263 << G4endl;
264 */
265}
double A(double temperature)
G4double G4Log(G4double x)
Definition: G4Log.hh:226
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
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)
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 140 of file G4ComponentGGHadronNucleusXsc.cc.

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

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

447{
448 outFile << "G4ComponentGGHadronNucleusXsc calculates total, inelastic and\n"
449 << "elastic cross sections for hadron-nucleus cross sections using\n"
450 << "the Glauber model with Gribov corrections. It is valid for all\n"
451 << "targets except hydrogen, and for incident p, pbar, n, sigma-,\n"
452 << "pi+, pi-, K+, K- and gammas with energies above 3 GeV. This is\n"
453 << "a cross section component which is to be used to build a cross\n"
454 << "data set.\n";
455}

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

123{
124 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
125 return fElasticXsc;
126}
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 130 of file G4ComponentGGHadronNucleusXsc.cc.

133{
134 ComputeCrossSections(aParticle, kinEnergy, Z, A);
135 return fElasticXsc;
136}

◆ GetHadronNucleonXsc() [1/2]

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

Definition at line 298 of file G4ComponentGGHadronNucleusXsc.cc.

300{
301 G4int At = G4lrint(anElement->GetN()); // number of nucleons
302 G4int Zt = anElement->GetZasInt(); // number of protons
303
304 return GetHadronNucleonXsc(aParticle, At, Zt);
305}
G4double GetHadronNucleonXsc(const G4DynamicParticle *, const G4Element *)
G4int GetZasInt() const
Definition: G4Element.hh:131
G4double GetN() const
Definition: G4Element.hh:134

Referenced by GetHadronNucleonXsc().

◆ GetHadronNucleonXsc() [2/2]

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

Definition at line 311 of file G4ComponentGGHadronNucleusXsc.cc.

313{
314 return hnXsc->HadronNucleonXscEL(aParticle->GetDefinition(), theProton,
315 aParticle->GetKineticEnergy());
316}
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 360 of file G4ComponentGGHadronNucleusXsc.cc.

362{
363 G4int At = G4lrint(anElement->GetN()); // number of nucleons
364 G4int Zt = anElement->GetZasInt(); // number of protons
365
366 return GetHadronNucleonXscNS(aParticle, At, Zt);
367}
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 374 of file G4ComponentGGHadronNucleusXsc.cc.

376{
377 G4double res = 0.0;
378 if(1 == At && 1 == Zt) {
379 res = hnXsc->HadronNucleonXscNS(aParticle->GetDefinition(), theProton,
380 aParticle->GetKineticEnergy());
381 } else if(1 == At && 0 == Zt) {
382 res = hnXsc->HadronNucleonXscNS(aParticle->GetDefinition(), theNeutron,
383 aParticle->GetKineticEnergy());
384 }
385 return res;
386}
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 323 of file G4ComponentGGHadronNucleusXsc.cc.

325{
326 G4int At = G4lrint(anElement->GetN()); // number of nucleons
327 G4int Zt = anElement->GetZasInt(); // number of protons
328
329 return GetHadronNucleonXscPDG(aParticle, At, Zt);
330}
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 337 of file G4ComponentGGHadronNucleusXsc.cc.

339{
340 G4double res = 0.0;
341 if(1 == At && 1 == Zt) {
342 res = hnXsc->HadronNucleonXscPDG(aParticle->GetDefinition(), theProton,
343 aParticle->GetKineticEnergy());
344 } else if(1 == At && 0 == Zt) {
345 res = hnXsc->HadronNucleonXscPDG(aParticle->GetDefinition(), theNeutron,
346 aParticle->GetKineticEnergy());
347 } else {
349 aParticle->GetKineticEnergy(), Zt, At);
350 res = fTotalXsc;
351 }
352 return res;
353}
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 393 of file G4ComponentGGHadronNucleusXsc.cc.

395{
396 G4int At = G4lrint(anElement->GetN()); // number of nucleons
397 G4int Zt = anElement->GetZasInt(); // number of protons
398
399 return GetHNinelasticXsc(aParticle, At, Zt);
400}
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 406 of file G4ComponentGGHadronNucleusXsc.cc.

408{
409 const G4ParticleDefinition* hadron = aParticle->GetDefinition();
410 G4double e = aParticle->GetKineticEnergy();
411 G4int Nt = std::max(At - Zt, 0);
412
413 hnXsc->HadronNucleonXscNS(hadron, theProton, e);
414 G4double sumInelastic = Zt*hnXsc->GetInelasticHadronNucleonXsc();
415 if(Nt > 0) {
416 hnXsc->HadronNucleonXscNS(hadron, theNeutron, e);
417 sumInelastic += Nt*hnXsc->GetInelasticHadronNucleonXsc();
418 }
419 return sumInelastic;
420}

◆ GetHNinelasticXscVU()

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

Definition at line 426 of file G4ComponentGGHadronNucleusXsc.cc.

428{
429 const G4ParticleDefinition* hadron = aParticle->GetDefinition();
430 G4double e = aParticle->GetKineticEnergy();
431 G4int Nt = std::max(At - Zt, 0);
432
433 hnXsc->HadronNucleonXscVU(hadron, theProton, e);
434 G4double sumInelastic = Zt*hnXsc->GetInelasticHadronNucleonXsc();
435 if(Nt > 0) {
436 hnXsc->HadronNucleonXscVU(hadron, theNeutron, e);
437 sumInelastic += Nt*hnXsc->GetInelasticHadronNucleonXsc();
438 }
439 return sumInelastic;
440}
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 100 of file G4ComponentGGHadronNucleusXsc.cc.

103{
104 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
105 return fInelasticXsc;
106}

◆ GetInelasticGlauberGribov()

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

113{
114 ComputeCrossSections(aParticle, kinEnergy, Z, A);
115 return fInelasticXsc;
116}

◆ 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 181 of file G4ComponentGGHadronNucleusXsc.hh.

186{
188 return fTotalXsc;
189}

◆ 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 232 of file G4ComponentGGHadronNucleusXsc.hh.

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

Referenced by ComputeCrossSections().

◆ GetParticleBarCorTot()

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

Definition at line 214 of file G4ComponentGGHadronNucleusXsc.hh.

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

Referenced by ComputeCrossSections().

◆ GetProductionElementCrossSection()

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

Definition at line 153 of file G4ComponentGGHadronNucleusXsc.cc.

156{
157 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
158 return fProductionXsc;
159}

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

166{
167 ComputeCrossSections(aParticle, kinEnergy, Z, A);
168 return fProductionXsc;
169}

◆ GetRatioQE()

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

Definition at line 284 of file G4ComponentGGHadronNucleusXsc.cc.

286{
288 aParticle->GetKineticEnergy(), Z, A);
289
290 return (fInelasticXsc > std::max(fProductionXsc, 0.))
291 ? 1.0 - fProductionXsc/fInelasticXsc : 0.0;
292}

◆ GetRatioSD()

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

Definition at line 271 of file G4ComponentGGHadronNucleusXsc.cc.

273{
275 aParticle->GetKineticEnergy(), Z, A);
276
277 return (fInelasticXsc > 0.0) ? fDiffractionXsc/fInelasticXsc : 0.0;
278}

◆ GetTotalElementCrossSection()

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

Implements G4VComponentCrossSection.

Definition at line 80 of file G4ComponentGGHadronNucleusXsc.cc.

83{
84 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
85 return fTotalXsc;
86}

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

93{
94 ComputeCrossSections(aParticle, kinEnergy, Z, A);
95 return fTotalXsc;
96}

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