Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ComponentBarNucleonNucleusXsc.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 //
27 // author: Vladimir.Grichine@cern.ch
28 //
29 // Implements data from: Barashenkov V.S., Nucleon-Nucleus Cross Section,
30 // Preprint JINR P2-89-770, p. 12, Dubna 1989 (scanned version from KEK)
31 // Based on G4NucleonNuclearCrossSection class
32 //
33 
34 #ifndef G4ComponentBarNucleonNucleusXsc_h
35 #define G4ComponentBarNucleonNucleusXsc_h
36 
37 
39 #include "G4ParticleDefinition.hh"
40 #include "G4DynamicParticle.hh"
41 
42 #include "globals.hh"
43 #include "G4PiData.hh"
44 #include "G4HadTmpUtil.hh"
45 
46 
48 {
49 
50 public:
51 
54 
55 
56 
57  // virtual interface methods
58 
59  virtual
61  G4double kinEnergy,
62  G4int Z, G4int );
63 
64  virtual
66  G4double kinEnergy,
67  G4int Z, G4double );
68 
69  virtual
71  G4double kinEnergy,
72  G4int Z, G4int );
73 
74  virtual
76  G4double kinEnergy,
77  G4int Z, G4double );
78 
79  virtual
81  G4double kinEnergy,
82  G4int Z, G4double );
83 
84  virtual
86  G4double kinEnergy,
87  G4int Z, G4int );
88 
89 
90 
91  // virtual
93  G4int Z); // , const G4Material* mat = 0);
94 
95  // virtual
97  G4int Z); // , const G4Material* mat = 0);
98 
99  // virtual
100  void CrossSectionDescription(std::ostream&) const;
101 
102  inline G4double GetElasticCrossSection(const G4DynamicParticle* aParticle,
103  G4int Z);
104 
105  inline G4double GetTotalXsc() { return fTotalXsc; };
106  inline G4double GetElasticXsc(){ return fElasticXsc; };
107 
108 private:
109 
110  G4double Interpolate(G4int Z1, G4int Z2, G4int Z, G4double x1, G4double x2);
111 
112 // add Hydrogen from PDG group.
113 
114 static const G4double e1[44];
115 
116 static const G4double he_m_t[44];
117 static const G4double he_m_in[44];
118 static const G4double he_p_in[44];
119 
120 static const G4double be_m_t[44];
121 static const G4double be_m_in[44];
122 static const G4double be_p_in[44];
123 
124 static const G4double c_m_t[44];
125 static const G4double c_m_in[44];
126 static const G4double c_p_in[44];
127 
128 
129 static const G4double e2[44];
130 
131 static const G4double n_m_t[44];
132 static const G4double n_m_in[44];
133 static const G4double n_p_in[44];
134 
135 static const G4double o_m_t[44];
136 static const G4double o_m_in[44];
137 static const G4double o_p_in[44];
138 
139 static const G4double na_m_t[44];
140 static const G4double na_m_in[44];
141 static const G4double na_p_in[44];
142 
143 
144 static const G4double e3[45];
145 
146 // static const G4double e3_1[31];
147 
148 static const G4double al_m_t[45];
149 static const G4double al_m_in[45];
150 static const G4double al_p_in[45];
151 
152 static const G4double si_m_t[45];
153 static const G4double si_m_in[45];
154 static const G4double si_p_in[45];
155 
156 static const G4double ca_m_t[45];
157 static const G4double ca_m_in[45];
158 static const G4double ca_p_in[45];
159 
160 
161 static const G4double e4[47];
162 
163 static const G4double fe_m_t[47];
164 static const G4double fe_m_in[47];
165 static const G4double fe_p_in[47];
166 
167 static const G4double cu_m_t[47];
168 static const G4double cu_m_in[47];
169 static const G4double cu_p_in[47];
170 
171 static const G4double mo_m_t[47];
172 static const G4double mo_m_in[47];
173 static const G4double mo_p_in[47];
174 
175 
176 static const G4double e5[48];
177 
178 static const G4double cd_m_t[48];
179 static const G4double cd_m_in[48];
180 static const G4double cd_p_in[48];
181 
182 static const G4double sn_m_t[48];
183 static const G4double sn_m_in[48];
184 static const G4double sn_p_in[48];
185 
186 static const G4double w_m_t[48];
187 static const G4double w_m_in[48];
188 static const G4double w_p_in[48];
189 
190 static const G4double e6[46];
191 
192 // static const G4double e7[46];
193 
194 static const G4double pb_m_t[46];
195 static const G4double pb_m_in[46];
196 static const G4double pb_p_in[46];
197 
198 static const G4double u_m_t[46];
199 static const G4double u_m_in[46];
200 static const G4double u_p_in[46];
201 
202 // vectors for treatment
203 
204 std::vector< G4int > theZ;
205 std::vector< G4PiData* > thePipData;
206 std::vector< G4PiData* > thePimData;
207 
208  // cross sections
209 
210  G4double fTotalXsc;
211  G4double fInelasticXsc;
212  G4double fElasticXsc;
213 
214  // particles
215  const G4ParticleDefinition* theProton;
216  const G4ParticleDefinition* theNeutron;
217 
218 };
219 
220 inline
222  const G4DynamicParticle* dp, G4int Z)
223 {
224  fInelasticXsc = GetElementCrossSection(dp, Z);
225  return fElasticXsc;
226 }
227 
228 #endif
virtual G4double GetTotalElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double)
void CrossSectionDescription(std::ostream &) const
int G4int
Definition: G4Types.hh:78
virtual G4double GetInelasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double)
bool G4bool
Definition: G4Types.hh:79
virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int)
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int)
G4bool IsElementApplicable(const G4DynamicParticle *aParticle, G4int Z)
virtual G4double GetElasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double)
double G4double
Definition: G4Types.hh:76
G4double GetElementCrossSection(const G4DynamicParticle *aParticle, G4int Z)
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int)
G4double GetElasticCrossSection(const G4DynamicParticle *aParticle, G4int Z)