Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4HadronNucleonXsc.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// Calculation of the total, elastic and inelastic cross-sections
27// based on parametrisations of (proton, pion, kaon, photon) nucleon
28// cross-sections and the hadron-nucleous cross-section model in
29// the framework of Glauber-Gribov approach
30//
31// 14.03.07 V. Grichine - first implementation
32// 04.11.11 V. Grichine - update for kaon-(p,n) xsc, vector spline
33// 21.02.12 V. Grichine - update for pion-(p,n) xsc, NS fit++, vector spline
34// 30.07.18 V. Ivanchenko - general clean-up
35// 30.09.18 V. Grichine hyperon-nucleon xsc first implementation
36// 09.04.19 V. Grichine hyperon-nucleon xsc for c- and b- hyperons (and s-)
37// 12.04.19 V. Grichine meson-nucleon xsc for c- and b- hyperons (and s-)
38// 09.05.20 V. Ivanchenko general code clean-up
39
40
41#ifndef G4HadronNucleonXsc_h
42#define G4HadronNucleonXsc_h
43
44#include "globals.hh"
46#include "G4DynamicParticle.hh"
47
48class G4Pow;
49class G4Element;
50
52{
53public:
54
55 explicit G4HadronNucleonXsc ();
57
58 // Xsc parametrisations return total x-section
60 const G4ParticleDefinition* nucleon, G4double ekin);
61
63 const G4ParticleDefinition* nucleon, G4double ekin);
64
66 const G4ParticleDefinition* nucleon, G4double ekin);
67
69 const G4ParticleDefinition* nucleon, G4double ekin);
70
72 const G4ParticleDefinition* nucleon, G4double ekin);
73
75 const G4ParticleDefinition* nucleon, G4double ekin);
76
78 const G4ParticleDefinition* nucleon, G4double ekin);
79
81 const G4ParticleDefinition* nucleon, G4double ekin );
82
84 const G4ParticleDefinition* nucleon, G4double ekin);
85
87 const G4ParticleDefinition* nucleon, G4double ekin);
88
90 const G4ParticleDefinition* nucleon, G4double ekin);
91
92 // Xsc for G4DynamicParticle projectile
94 const G4ParticleDefinition* p)
95 { return HadronNucleonXscEL(dp->GetDefinition(), p, dp->GetKineticEnergy()); }
96
98 const G4ParticleDefinition* p)
99 { return HadronNucleonXscPDG(dp->GetDefinition(), p, dp->GetKineticEnergy()); }
100
102 const G4ParticleDefinition* p)
103 { return HadronNucleonXscNS(dp->GetDefinition(), p, dp->GetKineticEnergy()); }
104
106 const G4ParticleDefinition* p)
107 { return KaonNucleonXscGG(dp->GetDefinition(), p, dp->GetKineticEnergy()); }
108
110 const G4ParticleDefinition* p)
111 { return HyperonNucleonXscNS(dp->GetDefinition(), p, dp->GetKineticEnergy()); }
112
114 const G4ParticleDefinition* p)
115 { return HadronNucleonXscVU(dp->GetDefinition(), p, dp->GetKineticEnergy()); }
116
118 const G4ParticleDefinition* p)
119 { return CoulombBarrier(dp->GetDefinition(), p, dp->GetKineticEnergy()); }
120
121 // Xsc access
122 inline G4double GetTotalHadronNucleonXsc() const { return fTotalXsc; };
123 inline G4double GetElasticHadronNucleonXsc() const { return fElasticXsc; };
124 inline G4double GetInelasticHadronNucleonXsc() const { return fInelasticXsc; };
125
126 void CrossSectionDescription(std::ostream&) const;
127
128private:
129
130 inline G4double CalcMandelstamS(G4double ekin1, G4double mass1, G4double mass2)
131 { return mass1*mass1 + mass2*mass2 + 2*mass2*(ekin1 + mass1); }
132
133 inline G4double CalculateEcmValue(G4double ekin1, G4double mass1, G4double mass2)
134 { return std::sqrt(CalcMandelstamS(ekin1, mass1, mass2)); };
135
136 G4double fTotalXsc, fElasticXsc, fInelasticXsc;
137 G4Pow* g4calc;
138
139 const G4ParticleDefinition* theProton;
140 const G4ParticleDefinition* theNeutron;
141 const G4ParticleDefinition* thePiPlus;
142 // strange
143 const G4ParticleDefinition* theKPlus;
144 const G4ParticleDefinition* theKMinus;
145 const G4ParticleDefinition* theK0S;
146 const G4ParticleDefinition* theK0L;
147};
148
149#endif
double G4double
Definition: G4Types.hh:83
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double GetCoulombBarrier(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
G4double CoulombBarrier(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double HadronNucleonXscEL(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double KaonNucleonXscGG(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double GetTotalHadronNucleonXsc() const
G4double KaonNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double SCBMesonNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
void CrossSectionDescription(std::ostream &) const
G4double HadronNucleonXscVU(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double HadronNucleonXsc(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double GetHyperonNucleonXscNS(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
G4double GetKaonNucleonXscGG(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
G4double GetElasticHadronNucleonXsc() const
G4double GetHadronNucleonXscVU(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
G4double KaonNucleonXscVG(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double GetHadronNucleonXscEL(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
G4double GetHadronNucleonXscNS(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
G4double HyperonNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double HadronNucleonXscPDG(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double GetInelasticHadronNucleonXsc() const
G4double HadronNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
Definition: G4Pow.hh:49