Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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//
32//
33// 14.03.07 V. Grichine - first implementation
34// 04.11.11 V. Grichine - update for kaon-(p,n) xsc, vector spline
35// 21.02.12 V. Grichine - update for pion-(p,n) xsc, NS fit++, vector spline
36//
37//
38
39#ifndef G4HadronNucleonXsc_h
40#define G4HadronNucleonXsc_h
41
42#include "globals.hh"
43#include "G4Proton.hh"
44#include "G4Nucleus.hh"
46
47
50
52{
53public:
54
56 virtual ~G4HadronNucleonXsc ();
57
58 virtual
60
61 virtual
63
64 virtual
66 {G4cout << "G4HadronNucleonXsc: uses parametrisation"<<G4endl;}
67
68 void CrossSectionDescription(std::ostream&) const;
69
70 // Xsc parametrisations
71
73
75
77
79
80 // kinematics and set/get
81
82 G4double CalculateEcmValue ( const G4double , const G4double , const G4double );
83
84 G4double CalcMandelstamS( const G4double , const G4double , const G4double );
85
86 G4double GetCoulombBarrier(const G4DynamicParticle* aParticle, const G4ParticleDefinition* nucleon );
87
88 G4double GetTotalHadronNucleonXsc() { return fTotalXsc; };
89 G4double GetElasticHadronNucleonXsc() { return fElasticXsc; };
90 G4double GetInelasticHadronNucleonXsc(){ return fInelasticXsc; };
91
93
94 G4double GetKpProtonTotXscVector(G4double logEnergy){ return fKpProtonTotXscVector.Value(logEnergy); };
95 G4double GetKpNeutronTotXscVector(G4double logEnergy){ return fKpNeutronTotXscVector.Value(logEnergy); };
96 G4double GetKmProtonTotXscVector(G4double logEnergy){ return fKmProtonTotXscVector.Value(logEnergy); };
97 G4double GetKmNeutronTotXscVector(G4double logEnergy){ return fKmNeutronTotXscVector.Value(logEnergy); };
98
99private:
100
101 const G4double fUpperLimit;
102 const G4double fLowerLimit;
103
104 G4double fTotalXsc, fElasticXsc, fInelasticXsc;
105 G4double fHadronNucleonXsc;
106
107 // K-nucleon tot xsc (mb) fit data, std::log(Tkin(MeV))
108
109 static const G4double fKpProtonTotXsc[66];
110 static const G4double fKpProtonTotTkin[66];
111
112 static const G4double fKpNeutronTotXsc[75];
113 static const G4double fKpNeutronTotTkin[75];
114
115 static const G4double fKmProtonTotXsc[106];
116 static const G4double fKmProtonTotTkin[106];
117
118 static const G4double fKmNeutronTotXsc[68];
119 static const G4double fKmNeutronTotTkin[68];
120
121 G4LPhysicsFreeVector fKpProtonTotXscVector;
122 G4LPhysicsFreeVector fKpNeutronTotXscVector;
123 G4LPhysicsFreeVector fKmProtonTotXscVector;
124 G4LPhysicsFreeVector fKmNeutronTotXscVector;
125
126 G4ParticleDefinition* theGamma;
127 G4ParticleDefinition* theProton;
128 G4ParticleDefinition* theNeutron;
129 G4ParticleDefinition* theAProton;
130 G4ParticleDefinition* theANeutron;
131 G4ParticleDefinition* thePiPlus;
132 G4ParticleDefinition* thePiMinus;
133 G4ParticleDefinition* thePiZero;
134 G4ParticleDefinition* theKPlus;
135 G4ParticleDefinition* theKMinus;
136 G4ParticleDefinition* theK0S;
137 G4ParticleDefinition* theK0L;
139 G4ParticleDefinition* theAntiL;
140 G4ParticleDefinition* theSPlus;
141 G4ParticleDefinition* theASPlus;
142 G4ParticleDefinition* theSMinus;
143 G4ParticleDefinition* theASMinus;
145 G4ParticleDefinition* theAS0;
146 G4ParticleDefinition* theXiMinus;
147 G4ParticleDefinition* theXi0;
148 G4ParticleDefinition* theAXiMinus;
149 G4ParticleDefinition* theAXi0;
150 G4ParticleDefinition* theOmega;
151 G4ParticleDefinition* theAOmega;
155 G4ParticleDefinition* theHe3;
156
157};
158
159
160#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
G4double GetKmNeutronTotXscVector(G4double logEnergy)
virtual G4bool IsApplicable(const G4DynamicParticle *aDP, const G4Element *)
virtual G4bool IsIsoApplicable(const G4DynamicParticle *aDP, G4int Z, G4int A)
G4double CalcMandelstamS(const G4double, const G4double, const G4double)
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4ParticleDefinition *)
void CrossSectionDescription(std::ostream &) const
G4double GetKmProtonTotXscVector(G4double logEnergy)
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4ParticleDefinition *)
G4double GetInelasticHadronNucleonXsc()
G4double GetKpNeutronTotXscVector(G4double logEnergy)
G4double GetElasticHadronNucleonXsc()
virtual void DumpPhysicsTable(const G4ParticleDefinition &)
G4double GetHadronNucleonXscVU(const G4DynamicParticle *, const G4ParticleDefinition *)
G4double GetKpProtonTotXscVector(G4double logEnergy)
G4double CalculateEcmValue(const G4double, const G4double, const G4double)
G4double GetTotalHadronNucleonXsc()
G4double GetHadronNucleonXscEL(const G4DynamicParticle *, const G4ParticleDefinition *)
G4double GetCoulombBarrier(const G4DynamicParticle *aParticle, const G4ParticleDefinition *nucleon)
G4double Value(G4double theEnergy)