source: trunk/source/processes/hadronic/cross_sections/src/G4HadronCrossSections.cc@ 1340

Last change on this file since 1340 was 1340, checked in by garnier, 15 years ago

update ti head

File size: 82.9 KB
Line 
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// GEANT4 tag $Name: hadr-cross-V09-03-12 $
28//
29//
30// G4 Hadron Physics class G4HadronCrossSections
31// F.W. Jones, TRIUMF, 03-DEC-96
32//
33// This class encapsulates cross section data and calculations
34// from the Geant3/Gheisha routine GHESIG.
35// The overloaded method MakePhysicsVector can be used to Generate
36// Physics Tables for different processes.
37//
38// Note: this is implemented as a SINGLETON class
39//
40// 27-MAR-97 FWJ: first version for Alpha release
41// 14-APR-97 FWJ: class name changed from G4LCrossSectionData
42// to G4HadronicCrossSections
43// 23-Apr-97 Johannes Peter Wellisch: debugging, add the residual particles
44// 23-MAY-97 FWJ: corrected problem with neutron cross sections
45// 20-JUN-97 FWJ: added some missing elastic data (e.g. K+) and
46// fixed a momentum/energy units problem in the physics vectors
47// 14-APR-98 FWJ: rewritten as class G4HadronCrossSections
48// and adapted to G4CrossSectionDataSet/DataStore class design.
49// 25-JUN-98 FWJ: optimised bin selection.
50// 06-NOV-98 FWJ: added first-order correction for low-energy
51// inelastic cross sections
52//
53
54
55#include "G4HadronCrossSections.hh"
56#include "G4ios.hh"
57
58
59// Initialize static pointer for singleton instance
60G4HadronCrossSections*
61G4HadronCrossSections::theInstance = 0;
62
63
64// Cross section tables from G3.21/GHEISHA routine GHESIG
65
66//---------------------------------------------------------------------
67// Lab Momentum in GeV/c
68//---------------------------------------------------------------------
69G4float G4HadronCrossSections::plab[TSIZE] = {
70 0.00000E+00 , 0.10000 , 0.15000 , 0.20000 , 0.25000 ,
71 0.30000 , 0.35000 , 0.40000 , 0.45000 , 0.50000 ,
72 0.55000 , 0.60000 , 0.65000 , 0.70000 , 0.75000 ,
73 0.80000 , 0.85000 , 0.90000 , 0.95000 , 1.0000 ,
74 1.1000 , 1.2000 , 1.3000 , 1.4000 , 1.5000 ,
75 1.6000 , 1.8000 , 2.0000 , 2.2000 , 2.4000 ,
76 2.6000 , 2.8000 , 3.0000 , 4.0000 , 5.0000 ,
77 6.0000 , 8.0000 , 10.000 , 20.000 , 100.00 ,
78 1000.0
79};
80
81//---------------------------------------------------------------------
82// Elastic scattering on free protons
83//---------------------------------------------------------------------
84
85G4float G4HadronCrossSections::csel[NPARTS][TSIZE] = {
86 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1
87 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
88 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
89 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
90 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
91 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
92 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
93 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
94 0.00000E+00},
95
96 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //2
97 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
98 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
99 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
100 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
101 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
102 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
103 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
104 0.00000E+00},
105
106 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //3
107 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
108 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
109 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
110 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
111 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
112 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
113 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
114 0.00000E+00},
115
116 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4
117 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
118 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
119 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
120 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
121 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
122 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
123 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
124 0.00000E+00},
125
126 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //5
127 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
128 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
129 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
130 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
131 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
132 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
133 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
134 0.00000E+00},
135
136 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //6
137 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
138 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
139 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
140 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
141 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
142 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
143 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
144 0.00000E+00},
145
146// Elastic cross section for piplus - p
147 {0.00000E+00, 6.0000 , 20.000 , 71.000 , 155.00 , //7
148 195.00 , 130.00 , 78.000 , 60.000 , 32.000 ,
149 23.500 , 18.500 , 15.000 , 12.500 , 10.000 ,
150 9.1000 , 8.6000 , 8.8000 , 9.5000 , 10.600 ,
151 13.000 , 15.500 , 17.100 , 17.200 , 16.200 ,
152 15.000 , 12.300 , 10.200 , 9.0000 , 8.0000 ,
153 7.3000 , 6.8000 , 6.5000 , 5.8000 , 5.4000 ,
154 5.2000 , 5.0000 , 4.9000 , 3.8000 , 3.2000 ,
155 3.5000},
156
157 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //8
158 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
159 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
160 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
161 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
162 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
163 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
164 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
165 0.00000E+00},
166
167// Elastic cross section for piminus - p
168 {0.00000E+00, 1.0000 , 3.0000 , 8.0000 , 18.000 , //9
169 25.000 , 27.500 , 12.300 , 10.600 , 11.000 ,
170 12.500 , 14.500 , 17.000 , 19.400 , 19.800 ,
171 16.800 , 14.000 , 14.800 , 20.000 , 26.100 ,
172 19.500 , 15.000 , 12.800 , 11.500 , 10.500 ,
173 9.8000 , 8.8000 , 8.2000 , 7.8000 , 7.5000 ,
174 7.2000 , 7.0000 , 6.8000 , 6.1000 , 5.7000 ,
175 5.4000 , 4.9000 , 4.6000 , 4.0000 , 3.3000 ,
176 3.5000},
177
178 {10.000 , 11.200 , 11.300 , 11.400 , 11.500 , //10
179 11.600 , 11.800 , 12.000 , 12.100 , 12.200 ,
180 12.300 , 12.400 , 12.500 , 12.500 , 12.500 ,
181 12.400 , 12.300 , 12.200 , 12.000 , 11.800 ,
182 11.200 , 11.500 , 9.9000 , 9.4000 , 8.8000 ,
183 8.4000 , 7.5000 , 6.9000 , 6.3000 , 5.9000 ,
184 5.5000 , 5.2000 , 5.0000 , 4.0000 , 3.5000 ,
185 3.3000 , 3.1000 , 3.1000 , 3.0000 , 2.5000 ,
186 3.0000},
187
188 {10.000 , 11.200 , 11.300 , 11.400 , 11.500 , //11
189 11.600 , 11.800 , 12.000 , 12.100 , 12.200 ,
190 12.300 , 12.400 , 12.500 , 12.500 , 12.500 ,
191 12.400 , 12.300 , 12.200 , 12.000 , 11.800 ,
192 11.200 , 11.500 , 9.9000 , 9.4000 , 8.8000 ,
193 8.4000 , 7.5000 , 6.9000 , 6.3000 , 5.9000 ,
194 5.5000 , 5.2000 , 5.0000 , 4.0000 , 3.5000 ,
195 3.3000 , 3.1000 , 3.1000 , 3.0000 , 2.5000 ,
196 3.0000},
197
198 {160.83 , 82.800 , 58.575 , 43.683 , 34.792 , //12
199 28.650 , 24.367 , 20.917 , 18.192 , 16.300 ,
200 14.608 , 13.017 , 12.250 , 11.700 , 12.017 ,
201 14.075 , 15.842 , 16.433 , 16.042 , 15.008 ,
202 12.575 , 10.708 , 9.2000 , 8.0167 , 7.2833 ,
203 7.0750 , 6.6333 , 6.1250 , 5.6583 , 5.2750 ,
204 4.9333 , 4.6250 , 4.4583 , 3.7333 , 3.3833 ,
205 3.1833 , 2.9833 , 2.7500 , 2.3667 , 2.2000 ,
206 2.6000},
207
208 {300.00 , 140.00 , 97.000 , 70.000 , 55.000 , //13
209 45.000 , 37.000 , 31.000 , 26.000 , 23.000 ,
210 20.000 , 17.000 , 15.500 , 14.500 , 14.700 ,
211 18.500 , 22.000 , 23.000 , 22.500 , 20.700 ,
212 16.500 , 14.000 , 11.500 , 9.6000 , 8.6000 ,
213 8.5000 , 8.3000 , 7.6000 , 7.0000 , 6.4000 ,
214 5.9000 , 5.5000 , 5.3000 , 4.4000 , 4.1000 ,
215 3.9000 , 3.7000 , 3.3000 , 2.6000 , 2.5000 ,
216 3.0000},
217
218// Elastic cross section for p-p
219 {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //14
220 40.000 , 27.000 , 22.000 , 21.000 , 20.000 ,
221 20.000 , 20.000 , 20.500 , 21.000 , 22.000 ,
222 23.000 , 24.000 , 24.000 , 24.400 , 24.500 ,
223 25.000 , 25.500 , 26.000 , 26.500 , 27.000 ,
224 27.000 , 26.000 , 23.000 , 21.500 , 20.000 ,
225 19.000 , 18.000 , 17.000 , 13.000 , 11.500 ,
226 10.300 , 9.4000 , 9.0000 , 8.8000 , 7.0000 ,
227 7.5000},
228
229 {200.00 , 163.00 , 141.00 , 120.00 , 111.00 , //15
230 99.500 , 92.500 , 86.500 , 82.000 , 78.000 ,
231 74.000 , 71.000 , 67.500 , 65.000 , 62.500 ,
232 59.700 , 58.100 , 56.300 , 54.700 , 52.700 ,
233 50.000 , 48.400 , 47.000 , 46.000 , 45.200 ,
234 42.800 , 39.200 , 36.300 , 32.800 , 30.400 ,
235 28.100 , 26.300 , 24.500 , 19.250 , 16.840 ,
236 14.600 , 12.340 , 11.210 , 8.8500 , 7.5000 ,
237 7.5000} ,
238
239 {4200.0 , 440.00 , 420.00 , 400.00 , 230.00 , //16
240 160.00 , 105.00 , 80.000 , 62.000 , 50.000 ,
241 45.000 , 41.000 , 38.000 , 36.000 , 35.000 ,
242 34.000 , 33.000 , 32.000 , 31.500 , 31.000 ,
243 30.500 , 30.000 , 29.500 , 29.000 , 28.500 ,
244 28.000 , 26.000 , 23.000 , 21.500 , 20.000 ,
245 19.000 , 18.000 , 17.000 , 13.000 , 11.500 ,
246 10.300 , 9.4000 , 9.0000 , 8.8000 , 7.0000 ,
247 7.5000} ,
248
249 {185.88 , 133.23 , 119.37 , 102.86 , 93.102 , //17
250 82.752 , 76.205 , 71.008 , 67.366 , 64.096 ,
251 60.891 , 58.501 , 55.735 , 53.773 , 51.839 ,
252 49.671 , 48.485 , 47.045 , 45.803 , 44.306 ,
253 42.623 , 41.786 , 41.115 , 40.630 , 40.129 ,
254 38.242 , 35.233 , 32.662 , 29.639 , 27.573 ,
255 25.536 , 23.948 , 22.356 , 17.723 , 15.614 ,
256 13.653 , 11.675 , 10.653 , 8.6198 , 7.4464 ,
257 7.4821} ,
258
259 {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //18
260 40.000 , 27.000 , 22.000 , 21.000 , 20.000 ,
261 20.000 , 19.067 , 19.333 , 19.500 , 19.833 ,
262 20.567 , 21.800 , 22.900 , 23.869 , 23.809 ,
263 22.161 , 21.488 , 19.732 , 19.433 , 19.345 ,
264 19.029 , 18.121 , 16.280 , 15.258 , 14.280 ,
265 13.644 , 12.963 , 12.316 , 9.5333 , 8.4333 ,
266 7.5728 , 6.9696 , 6.7518 , 6.6175 , 5.6000 ,
267 6.1145} ,
268
269 {157.65 , 73.701 , 76.096 , 68.571 , 57.305 , //19
270 49.257 , 43.616 , 40.024 , 38.098 , 36.287 ,
271 34.674 , 33.105 , 31.712 , 30.685 , 29.613 ,
272 28.602 , 28.336 , 28.075 , 27.786 , 27.215 ,
273 26.380 , 26.146 , 25.108 , 24.783 , 24.360 ,
274 23.219 , 21.431 , 20.095 , 18.382 , 17.267 ,
275 16.100 , 15.175 , 14.271 , 11.573 , 10.305 ,
276 9.1471 , 8.0149 , 7.4349 , 6.2499 , 5.8928 ,
277 6.0774} ,
278
279 {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //20
280 40.000 , 27.000 , 22.000 , 21.000 , 20.000 ,
281 20.000 , 19.067 , 19.333 , 19.500 , 19.833 ,
282 20.567 , 21.800 , 22.900 , 23.869 , 23.809 ,
283 22.161 , 21.488 , 19.732 , 19.433 , 19.345 ,
284 19.029 , 18.121 , 16.280 , 15.258 , 14.280 ,
285 13.644 , 12.963 , 12.316 , 9.5333 , 8.4333 ,
286 7.5728 , 6.9696 , 6.7518 , 6.6175 , 5.6000 ,
287 6.1145} ,
288
289 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //21
290 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
291 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
292 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
293 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
294 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
295 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
296 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
297 0.00000E+00},
298
299 {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //22
300 40.000 , 27.000 , 22.000 , 21.000 , 20.000 ,
301 20.000 , 19.067 , 19.333 , 19.500 , 19.833 ,
302 20.567 , 21.800 , 22.900 , 23.869 , 23.809 ,
303 22.161 , 21.488 , 19.732 , 19.433 , 19.345 ,
304 19.029 , 18.121 , 16.280 , 15.258 , 14.280 ,
305 13.644 , 12.963 , 12.316 , 9.5333 , 8.4333 ,
306 7.5728 , 6.9696 , 6.7518 , 6.6175 , 5.6000 ,
307 6.1145} ,
308
309 {185.88 , 133.23 , 119.37 , 102.86 , 93.102 , //23
310 82.752 , 76.205 , 71.008 , 67.366 , 64.096 ,
311 60.891 , 58.104 , 55.241 , 53.140 , 50.934 ,
312 48.660 , 47.566 , 46.585 , 45.581 , 44.003 ,
313 41.134 , 39.374 , 36.878 , 35.523 , 34.503 ,
314 32.334 , 29.365 , 27.370 , 24.705 , 22.921 ,
315 21.229 , 19.879 , 18.559 , 14.625 , 12.758 ,
316 11.041 , 9.3440 , 8.5484 , 6.7104 , 6.0000 ,
317 6.1131} ,
318
319 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //24
320 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
321 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
322 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
323 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
324 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
325 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
326 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
327 0.00000E+00},
328
329 {157.65 , 73.701 , 76.096 , 68.571 , 57.305 , //25
330 49.257 , 43.616 , 40.024 , 38.098 , 36.287 ,
331 34.674 , 33.105 , 31.712 , 30.685 , 29.613 ,
332 28.602 , 28.336 , 28.075 , 27.786 , 27.215 ,
333 26.380 , 26.146 , 25.108 , 24.783 , 24.360 ,
334 23.219 , 21.431 , 20.095 , 18.382 , 17.267 ,
335 16.100 , 15.175 , 14.271 , 11.573 , 10.305 ,
336 9.1471 , 8.0149 , 7.4349 , 6.2499 , 5.8928 ,
337 6.0774} ,
338
339 {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //26
340 40.000 , 27.000 , 22.000 , 21.000 , 20.000 ,
341 20.000 , 18.133 , 18.167 , 18.000 , 17.667 ,
342 18.133 , 19.600 , 21.800 , 23.338 , 23.118 ,
343 19.323 , 17.476 , 13.464 , 12.367 , 11.691 ,
344 11.057 , 10.242 , 9.5593 , 9.0151 , 8.5591 ,
345 8.2884 , 7.9253 , 7.6311 , 6.0667 , 5.3667 ,
346 4.8456 , 4.5392 , 4.5036 , 4.4351 , 4.2000 ,
347 4.7289} ,
348
349 {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //27
350 40.000 , 27.000 , 22.000 , 21.000 , 20.000 ,
351 20.000 , 18.133 , 18.167 , 18.000 , 17.667 ,
352 18.133 , 19.600 , 21.800 , 23.338 , 23.118 ,
353 19.323 , 17.476 , 13.464 , 12.367 , 11.691 ,
354 11.057 , 10.242 , 9.5593 , 9.0151 , 8.5591 ,
355 8.2884 , 7.9253 , 7.6311 , 6.0667 , 5.3667 ,
356 4.8456 , 4.5392 , 4.5036 , 4.4351 , 4.2000 ,
357 4.7289} ,
358
359 {157.65 , 73.701 , 76.096 , 68.571 , 57.305 , //28
360 49.257 , 43.616 , 40.024 , 38.098 , 36.287 ,
361 34.674 , 32.708 , 31.218 , 30.052 , 28.707 ,
362 27.591 , 27.417 , 27.615 , 27.564 , 26.913 ,
363 24.891 , 23.734 , 20.871 , 19.677 , 18.734 ,
364 17.311 , 15.563 , 14.803 , 13.448 , 12.615 ,
365 11.794 , 11.106 , 10.474 , 8.4745 , 7.4498 ,
366 6.5350 , 5.6835 , 5.3300 , 4.3406 , 4.4464 ,
367 4.7083} ,
368
369 {143.53 , 43.935 , 54.462 , 51.429 , 39.407 , //29
370 32.510 , 27.321 , 24.532 , 23.465 , 22.383 ,
371 21.566 , 20.209 , 19.453 , 18.825 , 18.046 ,
372 17.562 , 17.802 , 18.360 , 18.667 , 18.519 ,
373 17.514 , 17.120 , 14.985 , 14.306 , 13.663 ,
374 12.753 , 11.596 , 11.165 , 10.287 , 9.7882 ,
375 9.2294 , 8.7539 , 8.3300 , 6.9480 , 6.2234 ,
376 5.5881 , 5.0189 , 4.7733 , 4.1104 , 4.3929 ,
377 4.6905} ,
378
379 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //30
380 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
381 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
382 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
383 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
384 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
385 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
386 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
387 0.00000E+00},
388
389 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //31
390 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
391 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
392 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
393 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
394 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
395 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
396 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
397 0.00000E+00},
398
399 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //32
400 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
401 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
402 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
403 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
404 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
405 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
406 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
407 0.00000E+00},
408
409 {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //33
410 40.000 , 27.000 , 22.000 , 21.000 , 20.000 ,
411 20.000 , 18.133 , 18.167 , 18.000 , 17.667 ,
412 18.133 , 19.600 , 21.800 , 23.338 , 23.118 ,
413 19.323 , 17.476 , 13.464 , 12.367 , 11.691 ,
414 11.057 , 10.242 , 9.5593 , 9.0151 , 8.5591 ,
415 8.2884 , 7.9253 , 7.6311 , 6.0667 , 5.3667 ,
416 4.8456 , 4.5392 , 4.5036 , 4.4351 , 4.2000 ,
417 4.7289} ,
418
419 {143.53 , 43.935 , 54.462 , 51.429 , 39.407 , //34
420 32.510 , 27.321 , 24.532 , 23.465 , 22.383 ,
421 21.566 , 20.209 , 19.453 , 18.825 , 18.046 ,
422 17.562 , 17.802 , 18.360 , 18.667 , 18.519 ,
423 17.514 , 17.120 , 14.985 , 14.306 , 13.663 ,
424 12.753 , 11.596 , 11.165 , 10.287 , 9.7882 ,
425 9.2294 , 8.7539 , 8.3300 , 6.9480 , 6.2234 ,
426 5.5881 , 5.0189 , 4.7733 , 4.1104 , 4.3929 ,
427 4.6905} ,
428
429 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //35
430 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
431 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
432 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
433 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
434 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
435 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
436 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
437 0.00000E+00}
438};
439
440//---------------------------------------------------------------------
441// Inelastic scattering on free protons
442//---------------------------------------------------------------------
443
444G4float G4HadronCrossSections::csin[NPARTS][TSIZE] = {
445
446 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1
447 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
448 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
449 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
450 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
451 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
452 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
453 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
454 0.00000E+00},
455
456 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //2
457 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
458 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
459 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
460 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
461 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
462 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
463 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
464 0.00000E+00},
465
466 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //3
467 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
468 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
469 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
470 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
471 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
472 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
473 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
474 0.00000E+00},
475
476 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4
477 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
478 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
479 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
480 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
481 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
482 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
483 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
484 0.00000E+00},
485
486 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //5
487 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
488 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
489 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
490 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
491 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
492 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
493 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
494 0.00000E+00},
495
496 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //6
497 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
498 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
499 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
500 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
501 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
502 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
503 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
504 0.00000E+00},
505
506// Inelastic cross section for piplus - p
507 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //7
508 0.00000E+00, 0.00000E+00, 0.50000 , 1.2000 , 1.7000 ,
509 2.2500 , 3.0000 , 3.6000 , 4.5000 , 5.4000 ,
510 6.3000 , 8.6000 , 9.0000 , 10.000 , 11.500 ,
511 14.000 , 17.000 , 19.500 , 22.000 , 24.000 ,
512 21.500 , 18.500 , 19.000 , 20.500 , 22.200 ,
513 23.000 , 23.300 , 23.000 , 21.000 , 20.500 ,
514 20.200 , 20.100 , 20.000 , 20.000 , 20.000 ,
515 21.000},
516
517
518 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //8
519 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
520 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
521 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
522 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
523 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
524 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
525 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
526 0.00000E+00},
527
528// Inelastic cross section for piminus - p
529 {0.00000E+00, 3.0000 , 9.2000 , 20.500 , 36.500 , //9
530 45.000 , 28.000 , 19.500 , 15.500 , 14.200 ,
531 15.500 , 17.500 , 20.000 , 23.000 , 26.000 ,
532 20.000 , 23.000 , 26.500 , 32.000 , 35.000 ,
533 28.500 , 22.000 , 22.500 , 23.500 , 24.000 ,
534 24.500 , 26.000 , 27.500 , 27.500 , 27.000 ,
535 26.500 , 25.500 , 25.000 , 23.000 , 22.500 ,
536 22.200 , 22.000 , 22.000 , 21.200 , 20.700 ,
537 21.000} ,
538
539 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //10
540 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
541 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
542 0.50000 , 1.5000 , 2.7000 , 3.8000 , 4.8000 ,
543 6.5000 , 7.6000 , 8.4000 , 9.0000 , 9.4000 ,
544 9.8000 , 10.500 , 11.000 , 11.500 , 11.800 ,
545 12.200 , 12.400 , 12.600 , 13.200 , 13.500 ,
546 13.700 , 14.000 , 14.200 , 14.500 , 16.400 ,
547 17.000} ,
548
549 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //11
550 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
551 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
552 0.50000 , 1.5000 , 2.7000 , 3.8000 , 4.8000 ,
553 6.5000 , 7.6000 , 8.4000 , 9.0000 , 9.4000 ,
554 9.8000 , 10.500 , 11.000 , 11.500 , 11.800 ,
555 12.200 , 12.400 , 12.600 , 13.200 , 13.500 ,
556 13.700 , 14.000 , 14.200 , 14.500 , 16.400 ,
557 17.000} ,
558
559 {266.67 , 133.33 , 83.333 , 57.083 , 44.500 , //12
560 33.250 , 24.583 , 20.833 , 18.333 , 16.083 ,
561 15.625 , 15.083 , 14.833 , 15.083 , 15.833 ,
562 17.042 , 18.958 , 20.758 , 22.533 , 22.825 ,
563 21.250 , 18.567 , 17.767 , 18.100 , 19.933 ,
564 20.783 , 21.225 , 21.000 , 20.558 , 20.258 ,
565 20.017 , 19.767 , 19.600 , 19.183 , 18.850 ,
566 18.575 , 18.350 , 18.175 , 17.808 , 17.558 ,
567 19.250} ,
568
569 {400.00 , 200.00 , 120.00 , 81.000 , 62.000 , //13
570 47.000 , 35.000 , 28.000 , 24.000 , 21.000 ,
571 19.500 , 19.000 , 18.800 , 19.000 , 20.000 ,
572 21.000 , 23.000 , 25.000 , 27.000 , 27.500 ,
573 25.500 , 22.000 , 20.800 , 21.000 , 23.000 ,
574 24.000 , 24.000 , 23.800 , 23.000 , 22.500 ,
575 22.000 , 21.600 , 21.400 , 21.000 , 20.500 ,
576 20.200 , 19.800 , 19.500 , 18.600 , 17.500 ,
577 20.000} ,
578
579// Inelastic cross section for p - p
580 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //14
581 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
582 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
583 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.10000 , 1.5000 ,
584 7.0000 , 12.000 , 17.000 , 19.500 , 20.500 ,
585 22.000 , 23.500 , 24.800 , 25.800 , 26.500 ,
586 27.000 , 27.500 , 28.000 , 30.000 , 31.000 ,
587 32.000 , 32.500 , 32.500 , 33.000 , 33.500 ,
588 33.500} ,
589
590 {1500.0 , 1160.0 , 310.00 , 230.00 , 178.00 , //15
591 153.00 , 134.00 , 124.00 , 113.00 , 106.00 ,
592 101.00 , 96.000 , 92.000 , 89.000 , 87.000 ,
593 84.000 , 81.000 , 78.500 , 76.500 , 75.000 ,
594 72.000 , 70.000 , 68.000 , 64.500 , 63.000 ,
595 62.000 , 61.000 , 59.500 , 58.500 , 56.500 ,
596 56.500 , 56.000 , 55.500 , 52.000 , 50.000 ,
597 48.000 , 45.000 , 44.000 , 39.200 , 34.500 ,
598 34.500} ,
599
600 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //16
601 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
602 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
603 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.10000 , 1.5000 ,
604 7.0000 , 12.000 , 17.000 , 19.500 , 20.500 ,
605 22.000 , 23.500 , 24.800 , 25.800 , 26.500 ,
606 27.000 , 27.500 , 28.000 , 30.000 , 31.000 ,
607 32.000 , 32.500 , 32.500 , 33.000 , 33.500 ,
608 34.000} ,
609
610 {1394.1 , 948.17 , 262.43 , 197.14 , 149.30 , //17
611 127.25 , 110.39 , 101.79 , 92.834 , 87.104 ,
612 83.109 , 79.099 , 75.965 , 73.627 , 72.161 ,
613 69.889 , 67.595 , 65.595 , 64.057 , 63.054 ,
614 61.377 , 60.434 , 59.485 , 56.970 , 55.931 ,
615 55.398 , 54.827 , 53.538 , 52.861 , 51.247 ,
616 51.344 , 50.992 , 50.644 , 47.876 , 46.358 ,
617 44.887 , 42.577 , 41.815 , 38.180 , 34.254 ,
618 34.418} ,
619
620 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //18
621 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
622 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
623 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01, 1.4577 ,
624 6.2052 , 10.112 , 12.902 , 14.300 , 14.688 ,
625 15.505 , 16.379 , 17.554 , 18.309 , 18.920 ,
626 19.389 , 19.804 , 20.284 , 22.000 , 22.733 ,
627 23.527 , 24.097 , 24.382 , 24.816 , 26.800 ,
628 27.719} ,
629
630 {1182.4 , 524.50 , 167.30 , 131.43 , 91.895 , //19
631 75.743 , 63.184 , 57.376 , 52.502 , 49.313 ,
632 47.326 , 44.762 , 43.222 , 42.015 , 41.221 ,
633 40.244 , 39.504 , 39.145 , 38.860 , 38.731 ,
634 37.987 , 37.814 , 36.326 , 34.750 , 33.953 ,
635 33.635 , 33.349 , 32.938 , 32.785 , 32.092 ,
636 32.373 , 32.312 , 32.329 , 31.261 , 30.597 ,
637 30.073 , 29.228 , 29.182 , 27.683 , 27.107 ,
638 27.956} ,
639
640 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //20
641 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
642 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
643 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01, 1.4577 ,
644 6.2052 , 10.112 , 12.902 , 14.300 , 14.688 ,
645 15.505 , 16.379 , 17.554 , 18.309 , 18.920 ,
646 19.389 , 19.804 , 20.284 , 22.000 , 22.733 ,
647 23.527 , 24.097 , 24.382 , 24.816 , 26.800 ,
648 27.719} ,
649
650 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //21
651 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
652 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
653 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
654 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
655 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
656 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
657 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
658 0.00000E+00},
659
660 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //22
661 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
662 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
663 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01, 1.4577 ,
664 6.2052 , 10.112 , 12.902 , 14.300 , 14.688 ,
665 15.505 , 16.379 , 17.554 , 18.309 , 18.920 ,
666 19.389 , 19.804 , 20.284 , 22.000 , 22.733 ,
667 23.527 , 24.097 , 24.382 , 24.816 , 26.800 ,
668 27.719} ,
669
670 {1394.1 , 948.17 , 262.43 , 197.14 , 149.30 , //23
671 127.25 , 110.39 , 101.79 , 92.834 , 87.104 ,
672 83.109 , 78.563 , 75.292 , 72.760 , 70.900 ,
673 68.467 , 66.314 , 64.955 , 63.746 , 62.623 ,
674 59.233 , 56.946 , 53.355 , 49.810 , 48.090 ,
675 46.839 , 45.695 , 44.863 , 44.062 , 42.599 ,
676 42.684 , 42.328 , 42.041 , 39.508 , 37.880 ,
677 36.299 , 34.075 , 33.553 , 29.723 , 27.600 ,
678 28.120} ,
679
680 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //24
681 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
682 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
683 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
684 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
685 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
686 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
687 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
688 0.00000E+00},
689
690 {1182.4 , 524.50 , 167.30 , 131.43 , 91.895 , //25
691 75.743 , 63.184 , 57.376 , 52.502 , 49.313 ,
692 47.326 , 44.762 , 43.222 , 42.015 , 41.221 ,
693 40.244 , 39.504 , 39.145 , 38.860 , 38.731 ,
694 37.987 , 37.814 , 36.326 , 34.750 , 33.953 ,
695 33.635 , 33.349 , 32.938 , 32.785 , 32.092 ,
696 32.373 , 32.312 , 32.329 , 31.261 , 30.597 ,
697 30.073 , 29.228 , 29.182 , 27.683 , 27.107 ,
698 27.956} ,
699
700 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //26
701 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
702 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
703 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01, 1.4154 ,
704 5.4104 , 8.2240 , 8.8031 , 9.1000 , 8.8761 ,
705 9.0095 , 9.2576 , 10.307 , 10.818 , 11.341 ,
706 11.778 , 12.108 , 12.569 , 14.000 , 14.467 ,
707 15.054 , 15.694 , 16.263 , 16.632 , 20.100 ,
708 21.438} ,
709
710 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //27
711 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
712 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
713 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01, 1.4154 ,
714 5.4104 , 8.2240 , 8.8031 , 9.1000 , 8.8761 ,
715 9.0095 , 9.2576 , 10.307 , 10.818 , 11.341 ,
716 11.778 , 12.108 , 12.569 , 14.000 , 14.467 ,
717 15.054 , 15.694 , 16.263 , 16.632 , 20.100 ,
718 21.438} ,
719
720 {1182.4 , 524.50 , 167.30 , 131.43 , 91.895 , //28
721 75.743 , 63.184 , 57.376 , 52.502 , 49.313 ,
722 47.326 , 44.225 , 42.549 , 41.148 , 39.960 ,
723 38.822 , 38.223 , 38.505 , 38.549 , 38.301 ,
724 35.843 , 34.326 , 30.196 , 27.590 , 26.112 ,
725 25.076 , 24.217 , 24.264 , 23.985 , 23.445 ,
726 23.713 , 23.647 , 23.726 , 22.892 , 22.119 ,
727 21.485 , 20.726 , 20.921 , 19.226 , 20.454 ,
728 21.658} ,
729
730 {1076.5 , 312.66 , 119.74 , 98.571 , 63.193 , //29
731 49.990 , 39.579 , 35.168 , 32.335 , 30.417 ,
732 29.434 , 27.325 , 26.514 , 25.775 , 25.120 ,
733 24.711 , 24.818 , 25.600 , 26.106 , 26.355 ,
734 25.220 , 24.760 , 21.681 , 20.060 , 19.044 ,
735 18.474 , 18.044 , 18.301 , 18.347 , 18.192 ,
736 18.557 , 18.639 , 18.870 , 18.769 , 18.478 ,
737 18.372 , 18.302 , 18.735 , 18.206 , 20.207 ,
738 21.576} ,
739
740 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //30
741 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
742 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
743 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
744 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
745 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
746 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
747 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
748 0.00000E+00},
749
750 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //31
751 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
752 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
753 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
754 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
755 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
756 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
757 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
758 0.00000E+00},
759
760 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //32
761 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
762 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
763 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
764 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
765 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
766 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
767 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
768 0.00000E+00},
769
770 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //33
771 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
772 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
773 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01, 1.4154 ,
774 5.4104 , 8.2240 , 8.8031 , 9.1000 , 8.8761 ,
775 9.0095 , 9.2576 , 10.307 , 10.818 , 11.341 ,
776 11.778 , 12.108 , 12.569 , 14.000 , 14.467 ,
777 15.054 , 15.694 , 16.263 , 16.632 , 20.100 ,
778 21.438} ,
779
780 {1076.5 , 312.66 , 119.74 , 98.571 , 63.193 , //34
781 49.990 , 39.579 , 35.168 , 32.335 , 30.417 ,
782 29.434 , 27.325 , 26.514 , 25.775 , 25.120 ,
783 24.711 , 24.818 , 25.600 , 26.106 , 26.355 ,
784 25.220 , 24.760 , 21.681 , 20.060 , 19.044 ,
785 18.474 , 18.044 , 18.301 , 18.347 , 18.192 ,
786 18.557 , 18.639 , 18.870 , 18.769 , 18.478 ,
787 18.372 , 18.302 , 18.735 , 18.206 , 20.207 ,
788 21.576} ,
789
790 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //35
791 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
792 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
793 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
794 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
795 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
796 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
797 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
798 0.00000E+00}
799
800};
801
802//---------------------------------------------------------------------
803// Elastic scattering of pion on nucleus
804//---------------------------------------------------------------------
805
806G4float G4HadronCrossSections::cspiel[3][TSIZE] = {
807
808// Elastic cross section for Pi on Al (mb)
809 {0.00000E+00, 350.00 , 580.00 , 600.00 , 550.00 , //1
810 450.00 , 410.00 , 370.00 , 340.00 , 230.00 ,
811 220.00 , 205.00 , 180.00 , 155.00 , 145.00 ,
812 140.00 , 160.00 , 195.00 , 235.00 , 250.00 ,
813 270.00 , 280.00 , 300.00 , 300.00 , 290.00 ,
814 285.00 , 265.00 , 240.00 , 230.00 , 222.00 ,
815 204.00 , 196.00 , 190.00 , 170.00 , 170.00 ,
816 160.00 , 150.00 , 140.00 , 120.00 , 80.000 ,
817 80.000},
818
819// Elastic cross section for Pi on Cu (mb)
820 {0.00000E+00, 700.00 , 1000.0 , 1200.0 , 1300.0 , //2
821 1300.0 , 1250.0 , 1250.0 , 1100.0 , 1000.0 ,
822 940.00 , 740.00 , 700.00 , 670.00 , 660.00 ,
823 670.00 , 680.00 , 700.00 , 735.00 , 800.00 ,
824 810.00 , 820.00 , 820.00 , 810.00 , 800.00 ,
825 800.00 , 700.00 , 600.00 , 500.00 , 470.00 ,
826 440.00 , 410.00 , 380.00 , 330.00 , 330.00 ,
827 330.00 , 330.00 , 330.00 , 285.00 , 240.00 ,
828 240.00},
829
830// Elastic cross section for Pi on Pb (mb)
831 {0.00000E+00, 1700.0 , 2200.0 , 2200.0 , 1800.0 , //3
832 1300.0 , 1200.0 , 900.00 , 900.00 , 1000.0 ,
833 1100.0 , 1300.0 , 1400.0 , 1420.0 , 1490.0 ,
834 1560.0 , 1580.0 , 1690.0 , 1795.0 , 2000.0 ,
835 2070.0 , 2140.0 , 2050.0 , 2010.0 , 1970.0 ,
836 1880.0 , 1690.0 , 1500.0 , 1420.0 , 1390.0 ,
837 1350.0 , 1360.0 , 1370.0 , 1280.0 , 1290.0 ,
838 1295.0 , 1250.0 , 1200.0 , 1050.0 , 900.00 ,
839 900.00}
840};
841
842//---------------------------------------------------------------------
843// Inelastic scattering of pion on nucleus
844//---------------------------------------------------------------------
845
846G4float G4HadronCrossSections::cspiin[3][TSIZE] = {
847
848// Inelastic cross section for Pi on Al (mb)
849 {0.00000E+00, 200.00 , 320.00 , 500.00 , 600.00 , //1
850 600.00 , 590.00 , 530.00 , 510.00 , 470.00 ,
851 430.00 , 425.00 , 420.00 , 425.00 , 425.00 ,
852 430.00 , 430.00 , 435.00 , 435.00 , 440.00 ,
853 430.00 , 430.00 , 420.00 , 420.00 , 420.00 ,
854 415.00 , 415.00 , 410.00 , 410.00 , 408.00 ,
855 406.00 , 404.00 , 400.00 , 380.00 , 340.00 ,
856 340.00 , 340.00 , 340.00 , 340.00 , 340.00 ,
857 340.00} ,
858
859// Inelastic cross section for Pi on Cu (mb)
860 {0.00000E+00, 400.00 , 800.00 , 1000.0 , 1100.0 , //2
861 1200.0 , 1150.0 , 1050.0 , 1000.0 , 900.00 ,
862 860.00 , 860.00 , 850.00 , 850.00 , 840.00 ,
863 830.00 , 820.00 , 810.00 , 805.00 , 800.00 ,
864 800.00 , 800.00 , 800.00 , 800.00 , 800.00 ,
865 800.00 , 800.00 , 800.00 , 800.00 , 780.00 ,
866 760.00 , 740.00 , 720.00 , 720.00 , 700.00 ,
867 690.00 , 680.00 , 670.00 , 665.00 , 660.00 ,
868 660.00} ,
869
870// Inelastic cross section for Pi on Pb (mb)
871 {0.00000E+00, 1000.0 , 1900.0 , 2600.0 , 2900.0 , //3
872 3000.0 , 2800.0 , 2600.0 , 2500.0 , 2300.0 ,
873 2200.0 , 2000.0 , 1900.0 , 1880.0 , 1860.0 ,
874 1840.0 , 1820.0 , 1810.0 , 1805.0 , 1800.0 ,
875 1780.0 , 1760.0 , 1750.0 , 1740.0 , 1730.0 ,
876 1720.0 , 1710.0 , 1700.0 , 1680.0 , 1660.0 ,
877 1650.0 , 1640.0 , 1630.0 , 1620.0 , 1610.0 ,
878 1605.0 , 1600.0 , 1600.0 , 1550.0 , 1500.0 ,
879 1500.0}
880};
881
882//---------------------------------------------------------------------
883// Elastic scattering of proton on nucleus
884//---------------------------------------------------------------------
885
886G4float G4HadronCrossSections::cspnel[3][TSIZE] = {
887
888// Elastic cross section for P on Al (mb)
889 {2100.0 , 1800.0 , 1500.0 , 1050.0 , 900.00 , //1
890 950.00 , 800.00 , 650.00 , 570.00 , 390.00 ,
891 300.00 , 240.00 , 230.00 , 230.00 , 220.00 ,
892 220.00 , 225.00 , 225.00 , 240.00 , 240.00 ,
893 290.00 , 330.00 , 335.00 , 350.00 , 355.00 ,
894 370.00 , 350.00 , 330.00 , 310.00 , 290.00 ,
895 270.00 , 265.00 , 260.00 , 230.00 , 210.00 ,
896 210.00 , 200.00 , 200.00 , 190.00 , 180.00 ,
897 180.00},
898
899// Elastic cross section for P on Cu (mb)
900 {3800.0 , 2900.0 , 1850.0 , 1550.0 , 1450.0 , //2
901 1520.0 , 1460.0 , 1300.0 , 1140.0 , 880.00 ,
902 700.00 , 620.00 , 540.00 , 560.00 , 460.00 ,
903 460.00 , 470.00 , 470.00 , 480.00 , 480.00 ,
904 580.00 , 600.00 , 610.00 , 620.00 , 620.00 ,
905 620.00 , 590.00 , 580.00 , 460.00 , 440.00 ,
906 420.00 , 400.00 , 480.00 , 430.00 , 380.00 ,
907 380.00 , 380.00 , 380.00 , 380.00 , 380.00 ,
908 380.00},
909
910// Elastic cross section for P on Pb (mb)
911 {7000.0 , 6000.0 , 4500.0 , 3350.0 , 2700.0 , //3
912 3000.0 , 3550.0 , 3970.0 , 3280.0 , 2490.0 ,
913 2100.0 , 1510.0 , 1440.0 , 1370.0 , 1370.0 ,
914 1370.0 , 1400.0 , 1400.0 , 1420.0 , 1420.0 ,
915 1440.0 , 1460.0 , 1460.0 , 1450.0 , 1450.0 ,
916 1470.0 , 1400.0 , 1400.0 , 1380.0 , 1370.0 ,
917 1360.0 , 1350.0 , 1340.0 , 1330.0 , 1320.0 ,
918 1310.0 , 1305.0 , 1300.0 , 1300.0 , 1300.0 ,
919 1300.0}
920};
921
922//---------------------------------------------------------------------
923// Inelastic scattering of proton on nucleus
924//---------------------------------------------------------------------
925
926G4float G4HadronCrossSections::cspnin[3][TSIZE] = {
927
928// Inelastic cross section for P on Al (mb)
929 {0.00000E+00, 200.00 , 400.00 , 800.00 , 800.00 , //1
930 550.00 , 500.00 , 450.00 , 430.00 , 410.00 ,
931 400.00 , 390.00 , 380.00 , 370.00 , 370.00 ,
932 370.00 , 365.00 , 365.00 , 360.00 , 360.00 ,
933 360.00 , 360.00 , 365.00 , 370.00 , 375.00 ,
934 380.00 , 400.00 , 410.00 , 420.00 , 430.00 ,
935 440.00 , 440.00 , 440.00 , 440.00 , 440.00 ,
936 440.00 , 440.00 , 440.00 , 440.00 , 440.00 ,
937 440.00} ,
938
939// Inelastic cross section for P on Cu (mb)
940 {0.00000E+00, 400.00 , 950.00 , 1050.0 , 1050.0 , //2
941 980.00 , 940.00 , 900.00 , 860.00 , 820.00 ,
942 800.00 , 780.00 , 760.00 , 740.00 , 740.00 ,
943 740.00 , 730.00 , 730.00 , 720.00 , 720.00 ,
944 720.00 , 720.00 , 730.00 , 740.00 , 750.00 ,
945 760.00 , 800.00 , 820.00 , 820.00 , 820.00 ,
946 820.00 , 820.00 , 820.00 , 820.00 , 820.00 ,
947 820.00 , 820.00 , 820.00 , 820.00 , 820.00 ,
948 820.00} ,
949
950// Inelastic cross section for P on Pb (mb)
951 {0.00000E+00, 0.00000E+00, 500.00 , 1450.0 , 1700.0 , //3
952 1800.0 , 1750.0 , 1730.0 , 1720.0 , 1710.0 ,
953 1700.0 , 1690.0 , 1660.0 , 1630.0 , 1630.0 ,
954 1630.0 , 1600.0 , 1600.0 , 1580.0 , 1580.0 ,
955 1580.0 , 1580.0 , 1600.0 , 1630.0 , 1650.0 ,
956 1670.0 , 1760.0 , 1800.0 , 1800.0 , 1800.0 ,
957 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 ,
958 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 ,
959 1800.0}
960};
961
962//---------------------------------------------------------------------
963// Lab kinetic energy in GeV
964//---------------------------------------------------------------------
965G4float G4HadronCrossSections::elab[NELAB] = {
966 0.10000E-03, 0.20000E-03, 0.30000E-03, 0.40000E-03, 0.50000E-03,
967 0.70000E-03, 0.10000E-02, 0.20000E-02, 0.30000E-02, 0.40000E-02,
968 0.50000E-02, 0.70000E-02, 0.10000E-01, 0.15000E-01, 0.20000E-01,
969 0.25000E-01, 0.32700E-01
970};
971
972//---------------------------------------------------------------------
973// Tables for low-energy (< 32.7 MeV) neutrons
974//---------------------------------------------------------------------
975
976// Atomic weight
977G4float G4HadronCrossSections::cnlwat[NCNLW] = {
978 1.0000 , 16.000 , 27.000 , 56.000 , 59.000 ,
979 64.000 , 91.000 , 112.00 , 119.00 , 127.00 ,
980 137.00 , 181.00 , 207.00 , 209.00 , 238.00
981};
982// Elastic cross section
983G4float G4HadronCrossSections::cnlwel[NCNLW][NELAB] = {
984 {6000.0 , 5500.0 , 5200.0 , 4900.0 , 4800.0 , //1
985 4400.0 , 4000.0 , 2900.0 , 2200.0 , 1800.0 ,
986 1400.0 , 1100.0 , 900.00 , 700.00 , 600.00 ,
987 560.00 , 520.00} ,
988 {5400.0 , 5050.0 , 4800.0 , 4600.0 , 4399.0 , //2
989 4090.0 , 3700.0 , 2600.0 , 1950.0 , 1600.0 ,
990 1300.0 , 900.00 , 700.00 , 800.00 , 1050.0 ,
991 1250.0 , 1320.0} ,
992 {5500.0 , 5150.0 , 4900.0 , 4699.0 , 4490.0 , //3
993 4150.0 , 3750.0 , 2790.0 , 2100.0 , 1650.0 ,
994 1300.0 , 950.00 , 800.00 , 860.00 , 1000.0 ,
995 1090.0 , 1080.0} ,
996 {5499.0 , 4970.0 , 4450.0 , 4080.0 , 3750.0 , //4
997 3380.0 , 2900.0 , 2400.0 , 2380.0 , 2350.0 ,
998 2300.0 , 2100.0 , 1720.0 , 1370.0 , 1200.0 ,
999 1060.0 , 870.00} ,
1000 {5399.0 , 4710.0 , 4180.0 , 3760.0 , 3460.0 , //5
1001 3150.0 , 2730.0 , 2270.0 , 1850.0 , 1850.0 ,
1002 2130.0 , 2330.0 , 2120.0 , 1640.0 , 1310.0 ,
1003 1100.0 , 1050.0} ,
1004 {5099.0 , 4405.0 , 3825.0 , 3455.0 , 3125.0 , //6
1005 2695.0 , 2350.0 , 1850.0 , 1580.0 , 1820.0 ,
1006 2050.0 , 2210.0 , 2000.0 , 1590.0 , 1310.0 ,
1007 1120.0 , 1040.0} ,
1008 {6290.0 , 5960.0 , 5640.0 , 5370.0 , 5150.0 , //7
1009 4800.0 , 4250.0 , 3150.0 , 2470.0 , 2100.0 ,
1010 2230.0 , 2420.0 , 2450.0 , 2050.0 , 1760.0 ,
1011 1550.0 , 1330.0} ,
1012 {6885.0 , 6650.0 , 6350.0 , 6150.0 , 6000.0 , //8
1013 5700.0 , 5360.0 , 4250.0 , 2800.0 , 1870.0 ,
1014 1810.0 , 1820.0 , 2170.0 , 2450.0 , 2150.0 ,
1015 1700.0 , 1390.0} ,
1016 {6600.0 , 6500.0 , 6400.0 , 6249.0 , 6190.0 , //9
1017 5950.0 , 5520.0 , 4250.0 , 2750.0 , 1900.0 ,
1018 1850.0 , 1950.0 , 2340.0 , 2800.0 , 2540.0 ,
1019 2100.0 , 1760.0} ,
1020 {7400.0 , 7200.0 , 6999.0 , 6840.0 , 6655.0 , //10
1021 6320.0 , 5820.0 , 4400.0 , 2850.0 , 2000.0 ,
1022 1800.0 , 1800.0 , 2150.0 , 2600.0 , 2350.0 ,
1023 1950.0 , 2100.0} ,
1024 {7900.0 , 7700.0 , 7499.0 , 7390.0 , 7202.0 , //11
1025 6810.0 , 6360.0 , 4920.0 , 3450.0 , 2600.0 ,
1026 2200.0 , 1950.0 , 2300.0 , 2800.0 , 2650.0 ,
1027 2250.0 , 2050.0} ,
1028 {7900.0 , 7750.0 , 7699.0 , 7590.0 , 7450.0 , //12
1029 7200.0 , 6850.0 , 5650.0 , 4400.0 , 3700.0 ,
1030 3400.0 , 2800.0 , 2700.0 , 3100.0 , 3250.0 ,
1031 3100.0 , 2750.0} ,
1032 {6100.0 , 5950.0 , 5750.0 , 5599.0 , 5440.0 , //13
1033 5200.0 , 4800.0 , 4300.0 , 5800.0 , 5750.0 ,
1034 4800.0 , 3420.0 , 2650.0 , 3200.0 , 3650.0 ,
1035 3500.0 , 2980.0} ,
1036 {6100.0 , 5950.0 , 5750.0 , 5599.0 , 5440.0 , //14
1037 5200.0 , 4800.0 , 4300.0 , 5800.0 , 5750.0 ,
1038 4800.0 , 3420.0 , 2650.0 , 3200.0 , 3650.0 ,
1039 3500.0 , 2980.0} ,
1040 {6600.0 , 6350.0 , 6100.0 , 5899.0 , 5690.0 , //15
1041 5300.0 , 4850.0 , 4450.0 , 5650.0 , 5700.0 ,
1042 4950.0 , 3850.0 , 3050.0 , 3050.0 , 3460.0 ,
1043 3650.0 , 3340.0}
1044};
1045// Inelastic cross section
1046G4float G4HadronCrossSections::cnlwin[NCNLW][NELAB] = {
1047 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1
1048 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
1049 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
1050 0.00000E+00, 0.00000E+00},
1051 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , //2
1052 10.000 , 50.000 , 100.00 , 200.00 , 300.00 ,
1053 400.00 , 600.00 , 700.00 , 750.00 , 700.00 ,
1054 700.00 , 680.00} ,
1055 {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //3
1056 50.000 , 100.00 , 260.00 , 450.00 , 600.00 ,
1057 700.00 , 800.00 , 900.00 , 940.00 , 900.00 ,
1058 860.00 , 820.00} ,
1059 {1.0000 , 80.000 , 200.00 , 320.00 , 400.00 , //4
1060 520.00 , 700.00 , 1000.0 , 1120.0 , 1200.0 ,
1061 1200.0 , 1200.0 , 1180.0 , 1130.0 , 1100.0 ,
1062 1090.0 , 1080.0} ,
1063 {1.0000 , 90.000 , 220.00 , 340.00 , 420.00 , //5
1064 550.00 , 720.00 , 1080.0 , 1300.0 , 1400.0 ,
1065 1420.0 , 1420.0 , 1380.0 , 1260.0 , 1190.0 ,
1066 1150.0 , 1100.0} ,
1067 {1.0000 , 95.000 , 225.00 , 345.00 , 425.00 , //6
1068 555.00 , 750.00 , 1150.0 , 1500.0 , 1680.0 ,
1069 1700.0 , 1690.0 , 1550.0 , 1360.0 , 1240.0 ,
1070 1180.0 , 1120.0} ,
1071 {10.000 , 140.00 , 260.00 , 380.00 , 450.00 , //7
1072 600.00 , 750.00 , 1200.0 , 1580.0 , 1800.0 ,
1073 1820.0 , 1830.0 , 1800.0 , 1750.0 , 1690.0 ,
1074 1650.0 , 1620.0} ,
1075 {15.000 , 150.00 , 300.00 , 400.00 , 500.00 , //8
1076 650.00 , 840.00 , 1500.0 , 2100.0 , 2130.0 ,
1077 2140.0 , 2130.0 , 2080.0 , 2000.0 , 1950.0 ,
1078 1900.0 , 1860.0} ,
1079 {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //9
1080 150.00 , 380.00 , 1000.0 , 1650.0 , 2100.0 ,
1081 2100.0 , 2100.0 , 2060.0 , 1950.0 , 1860.0 ,
1082 1800.0 , 1740.0} ,
1083 {0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , 45.000 , //10
1084 180.00 , 380.00 , 1050.0 , 1900.0 , 2300.0 ,
1085 2300.0 , 2200.0 , 2150.0 , 2000.0 , 1900.0 ,
1086 1800.0 , 1750.0} ,
1087 {0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , 48.000 , //11
1088 190.00 , 390.00 , 1080.0 , 2000.0 , 2400.0 ,
1089 2400.0 , 2300.0 , 2200.0 , 2100.0 , 1950.0 ,
1090 1850.0 , 1800.0} ,
1091 {0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , 50.000 , //12
1092 200.00 , 400.00 , 1100.0 , 2100.0 , 2500.0 ,
1093 2500.0 , 2450.0 , 2300.0 , 2100.0 , 2000.0 ,
1094 1900.0 , 1850.0} ,
1095 {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //13
1096 100.00 , 350.00 , 900.00 , 1400.0 , 2000.0 ,
1097 2300.0 , 2380.0 , 2400.0 , 2300.0 , 2250.0 ,
1098 2200.0 , 2120.0} ,
1099 {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //14
1100 100.00 , 350.00 , 900.00 , 1400.0 , 2000.0 ,
1101 2300.0 , 2380.0 , 2400.0 , 2300.0 , 2250.0 ,
1102 2200.0 , 2120.0} ,
1103 {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //15
1104 100.00 , 400.00 , 950.00 , 1600.0 , 2200.0 ,
1105 2550.0 , 2750.0 , 2700.0 , 2600.0 , 2540.0 ,
1106 2450.0 , 2360.0}
1107};
1108// Capture cross section indexed by Z
1109G4float G4HadronCrossSections::cscap[100] = {
1110 6.0000 , 5.7000 , 5.5000 , 5.3000 , 5.2000 ,
1111 5.1000 , 5.0000 , 4.9000 , 4.8000 , 4.8000 ,
1112 4.8000 , 4.8000 , 4.8000 , 4.8000 , 4.8000 ,
1113 4.8000 , 4.9000 , 5.0000 , 5.2000 , 5.5000 ,
1114 6.0000 , 6.7000 , 7.5000 , 8.5000 , 10.000 ,
1115 12.000 , 14.500 , 19.000 , 26.500 , 40.000 ,
1116 75.000 , 120.00 , 180.00 , 260.00 , 360.00 ,
1117 330.00 , 60.000 , 7.0000 , 9.5000 , 20.000 ,
1118 75.000 , 140.00 , 250.00 , 360.00 , 480.00 ,
1119 580.00 , 590.00 , 500.00 , 300.00 , 100.00 ,
1120 200.00 , 300.00 , 400.00 , 470.00 , 500.00 ,
1121 430.00 , 100.00 , 20.000 , 22.000 , 40.000 ,
1122 560.00 , 950.00 , 1000.0 , 1000.0 , 1000.0 ,
1123 990.00 , 920.00 , 860.00 , 790.00 , 740.00 ,
1124 650.00 , 600.00 , 540.00 , 470.00 , 440.00 ,
1125 390.00 , 360.00 , 340.00 , 320.00 , 310.00 ,
1126 280.00 , 2.0000 , 2.5000 , 6.0000 , 13.000 ,
1127 38.000 , 65.000 , 140.00 , 280.00 , 300.00 ,
1128 430.00 , 580.00 , 650.00 , 800.00 , 920.00 ,
1129 1100.0 , 1250.0 , 1400.0 , 1550.0 , 1700.0
1130};
1131
1132//---------------------------------------------------------------------
1133// Tables for fission cross sections
1134//---------------------------------------------------------------------
1135
1136// Lab kinetic energy in GeV
1137G4float G4HadronCrossSections::ekfiss[NFISS] = {
1138 0.10000E-03, 0.20000E-03, 0.30000E-03, 0.50000E-03, 0.70000E-03,
1139 0.10000E-02, 0.15000E-02, 0.20000E-02, 0.30000E-02, 0.50000E-02,
1140 0.70000E-02, 0.10000E-01, 0.15000E-01, 0.20000E-01, 0.50000E-01,
1141 0.10000 , 0.20000 , 0.30000 , 0.40000 , 0.50000 ,
1142 1000.0
1143};
1144// Fission cross sections
1145G4float G4HadronCrossSections::csfiss[4][NFISS] = {
1146 {2600.0 , 2300.0 , 2300.0 , 2100.0 , 2000.0 , //1
1147 1950.0 , 1930.0 , 1900.0 , 1800.0 , 1600.0 ,
1148 2100.0 , 2300.0 , 0.00000E+00, 0.00000E+00, 0.00000E+00,
1149 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
1150 0.00000E+00},
1151 {1850.0 , 1400.0 , 1300.0 , 1150.0 , 1100.0 , //2
1152 1200.0 , 1250.0 , 1300.0 , 1250.0 , 1150.0 ,
1153 1600.0 , 1900.0 , 0.00000E+00, 0.00000E+00, 0.00000E+00,
1154 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
1155 0.00000E+00},
1156 {1700.0 , 1650.0 , 1650.0 , 1700.0 , 1700.0 , //3
1157 1800.0 , 1900.0 , 2000.0 , 1950.0 , 1800.0 ,
1158 2150.0 , 2450.0 , 0.00000E+00, 0.00000E+00, 0.00000E+00,
1159 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
1160 0.00000E+00},
1161 {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4
1162 0.00000E+00, 250.00 , 550.00 , 550.00 , 550.00 ,
1163 550.00 , 550.00 , 1000.0 , 1400.0 , 1600.0 ,
1164 1500.0 , 1400.0 , 1300.0 , 1200.0 , 1100.0 ,
1165 1000.0}
1166};
1167
1168G4float G4HadronCrossSections::alpha[NPARTS] = {
1169 0.7,0.7,0.7,0.7,0.7,0.7,
1170 0.75,0.75,0.75,
1171 0.76,0.76,0.76,0.76,
1172 0.685,0.63,0.685,0.63,0.685,0.63,
1173 0.685,0.685,0.685,0.63,0.63,0.63,0.685,0.685,0.63,0.63,
1174 0.7,0.7,0.7,0.685,0.63,0.7
1175};
1176
1177G4float G4HadronCrossSections::alphac[TSIZE] = {
1178 1.2,1.2,1.2,1.15,0.90,0.91,0.98,1.06,1.10,1.11,
1179 1.10,1.08,1.05,1.01,0.985,0.962,0.945,0.932,
1180 0.925,0.920,0.920,0.921,0.922,0.923,0.928,0.931,
1181 0.940,0.945,0.950,0.955,0.958,0.962,0.965,0.976,
1182 0.982,0.988,0.992,1.010,1.020,1.030,1.040
1183};
1184
1185G4float G4HadronCrossSections::partel[NPARTS] = {
1186 0.,0.,0.,0.,0.,0.,
1187 1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,
1188 1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,
1189 1.,1.,1.,1.,1.,1.,1.,1.,1.
1190};
1191G4float G4HadronCrossSections::partin[NPARTS] = {
1192 0.,0.,0.,0.,0.,0.,
1193 1.00,0.00,1.05,1.20,1.35,1.30,1.20,1.00,1.30,
1194 1.00,1.30,1.00,1.30,1.00,1.00,1.00,1.30,1.30,1.30,
1195 1.00,1.00,1.30,1.30,1.00,1.,1.,1.,1.3,1.
1196};
1197
1198// Enabling flags for corrections for compounds
1199G4int G4HadronCrossSections::icorr[NPARTS] = {
1200 1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1201 0,1,0,1,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1,0,0
1202};
1203
1204// Enabling flags for interaction to occur
1205G4int G4HadronCrossSections::intrc[NPARTS] = {
1206 0,0,0,0,0,0,
1207 1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,0,
1208 1,1,1,1,1,1,1,1,1,1,0
1209};
1210
1211G4float G4HadronCrossSections::csa[4] = {1., 27.00, 63.54, 207.19};
1212
1213G4int G4HadronCrossSections::ipart2[7] = {9, 8, 7, 11, 10, 13, 12};
1214
1215G4bool G4HadronCrossSections::correctInelasticNearZero = 0;
1216
1217
1218G4double G4HadronCrossSections::GetInelasticCrossSection(
1219 const G4DynamicParticle* particle,
1220 const G4Element* element)
1221{
1222 if (particle->GetDefinition() != prevParticleDefinition ||
1223 element != prevElement ||
1224 particle->GetKineticEnergy() != prevKineticEnergy) {
1225
1226 G4int nIso = element->GetNumberOfIsotopes();
1227
1228 if (nIso) {
1229 G4double cross_section = 0;
1230 G4IsotopeVector* isoVector = element->GetIsotopeVector();
1231 G4double* abundVector = element->GetRelativeAbundanceVector();
1232 G4int ZZ;
1233 G4int AA;
1234
1235 for (G4int i = 0; i < nIso; i++) {
1236 ZZ = (*isoVector)[i]->GetZ();
1237 AA = (*isoVector)[i]->GetN();
1238 CalcScatteringCrossSections(particle, ZZ, AA);
1239 cross_section += siginelastic*abundVector[i];
1240 }
1241 siginelastic = cross_section;
1242
1243 } else {
1244 G4int ZZ = G4lrint(element->GetZ());
1245 G4int AA = G4lrint(element->GetN());
1246 CalcScatteringCrossSections(particle, ZZ, AA);
1247 }
1248 }
1249 return siginelastic;
1250}
1251
1252
1253G4double
1254G4HadronCrossSections::GetInelasticCrossSection(const G4DynamicParticle* particle,
1255 G4int ZZ, G4int AA)
1256{
1257 prevElement = 0; // force new cross section calculation for next call of
1258 // GetInelasticCrossSection(particle, element, temp)
1259 CalcScatteringCrossSections(particle, ZZ, AA);
1260 return siginelastic;
1261}
1262
1263
1264G4double G4HadronCrossSections::GetElasticCrossSection(
1265 const G4DynamicParticle* particle,
1266 const G4Element* element)
1267{
1268 if (particle->GetDefinition() != prevParticleDefinition ||
1269 element != prevElement ||
1270 particle->GetKineticEnergy() != prevKineticEnergy) {
1271
1272 G4int nIso = element->GetNumberOfIsotopes();
1273
1274 if (nIso) {
1275 G4double cross_section = 0;
1276 G4IsotopeVector* isoVector = element->GetIsotopeVector();
1277 G4double* abundVector = element->GetRelativeAbundanceVector();
1278 G4int ZZ;
1279 G4int AA;
1280
1281 for (G4int i = 0; i < nIso; i++) {
1282 ZZ = (*isoVector)[i]->GetZ();
1283 AA = (*isoVector)[i]->GetN();
1284 CalcScatteringCrossSections(particle, ZZ, AA);
1285 cross_section += sigelastic*abundVector[i];
1286 }
1287 sigelastic = cross_section;
1288
1289 } else {
1290 G4int ZZ = G4lrint(element->GetZ());
1291 G4int AA = G4lrint(element->GetN());
1292 CalcScatteringCrossSections(particle, ZZ, AA);
1293 }
1294 }
1295 return sigelastic;
1296}
1297
1298
1299G4double
1300G4HadronCrossSections::GetElasticCrossSection(const G4DynamicParticle* particle,
1301 G4int ZZ, G4int AA)
1302{
1303 prevElement = 0; // force new cross section calculation for next call of
1304 // GetElasticCrossSection(particle, element, temp)
1305 CalcScatteringCrossSections(particle, ZZ, AA);
1306 return sigelastic;
1307}
1308
1309
1310// Method to calculate cross sections for all processes.
1311// To facilitate comparison with the original Fortran source, and because
1312// of the interdependence of the elastic and inelastic cross section
1313// calculations, this has not been split into separate processes.
1314
1315void
1316G4HadronCrossSections::CalcScatteringCrossSections(
1317 const G4DynamicParticle* aParticle,
1318 G4int ZZ, G4int AA)
1319{
1320 G4double sigel, sigin, sigtot;
1321 G4double xsecel, xsecin=0;
1322 xsecel = 0;
1323 G4double dx, dy, rc, rca, b;
1324 G4double crel, crin;
1325 G4double xspiel, xspiin;
1326
1327 G4int ipart = GetParticleCode(aParticle);
1328 G4double a = AA;
1329 G4double z = ZZ;
1330
1331 if (verboseLevel > 1) {
1332 G4cout << "G4HadronCrossSections: a=" << a << G4endl;
1333 G4cout << "G4HadronCrossSections: z=" << z << G4endl;
1334 }
1335
1336// Ions...
1337
1338 if (ipart >= 30 && ipart <= 32) {
1339
1340 G4double apart=0;
1341 if (ipart == 30) apart = std::pow(2., 1./3.);
1342 else if (ipart == 31) apart = std::pow(3., 1./3.);
1343 else if (ipart == 32) apart = std::pow(4., 1./3.);
1344
1345 G4double term = apart + std::pow(a, 1./3.);
1346 sigin = 49.*term*term;
1347 // Convert cross section from mb to default units
1348 siginelastic = sigin*millibarn;
1349 if(aParticle->GetKineticEnergy() < 6*MeV) siginelastic = 0;
1350 sigelastic = 0.;
1351 return;
1352 }
1353
1354 G4double ek = aParticle->GetKineticEnergy()/GeV;
1355
1356// Low energy neutrons...
1357
1358 if (ipart == 16 && ek <= 0.0327) {
1359
1360 // G4int je2 = NELAB;
1361 // for (G4int j = 2; j <= NELAB; j++) {
1362 // if (ek < elab[j - 1]) {
1363 // je2 = j;
1364 // break;
1365 // }
1366 // }
1367 // G4int je1 = je2 -1;
1368 // je1 = je1 - 1; // For array indexing
1369 // je2 = je2 - 1; // For array indexing
1370
1371 G4int je1 = 0;
1372 G4int je2 = NELAB - 1;
1373 do {
1374 G4int midBin = (je1 + je2)/2;
1375 if (ek < elab[midBin])
1376 je2 = midBin;
1377 else
1378 je1 = midBin;
1379 } while (je2 - je1 > 1);
1380
1381 G4double delab = elab[je2] - elab[je1];
1382
1383 // G4int ja2 = NCNLW;
1384 // for (G4int jj = 2; jj <= NCNLW; jj++) {
1385 // if (a < cnlwat[jj - 1]) {
1386 // ja2 = jj;
1387 // break;
1388 // }
1389 // }
1390 // G4int ja1 = ja2 - 1;
1391 // ja1 = ja1 - 1; // For array indexing
1392 // ja2 = ja2 - 1; // For array indexing
1393
1394 G4int ja1 = 0;
1395 G4int ja2 = NCNLW - 1;
1396 do {
1397 G4int midBin = (ja1 + ja2)/2;
1398 if (a < cnlwat[midBin])
1399 ja2 = midBin;
1400 else
1401 ja1 = midBin;
1402 } while (ja2 - ja1 > 1);
1403
1404 G4double dnlwat = cnlwat[ja2] - cnlwat[ja1];
1405
1406// Elastic cross section:
1407 // E interpolation or extrapolation at JA1
1408 dy = cnlwel[ja1][je2] - cnlwel[ja1][je1];
1409 G4double rce = dy/delab;
1410 // A interpolation or extrapolation at JE1
1411 dy = cnlwel[ja2][je1] - cnlwel[ja1][je1];
1412 rca = dy/dnlwat;
1413 b = cnlwel[ja1][je1] - rce*elab[je1] - rca*cnlwat[ja1];
1414 sigelastic = rce*ek + rca*a + b;
1415// Inelastic cross section:
1416 // E interpolation or extrapolation at JA1
1417 dy = cnlwin[ja1][je2] - cnlwin[ja1][je1];
1418 rce = dy/delab;
1419 // A interpolation or extrapolation at JE1
1420 dy = cnlwin[ja2][je1] - cnlwin[ja1][je1];
1421 rca = dy/dnlwat;
1422 b = cnlwin[ja1][je1] - rce*elab[je1] - rca*cnlwat[ja1];
1423 siginelastic = rce*ek + rca*a + b;
1424 // Convert cross sections from mb to default units
1425 sigelastic = sigelastic*millibarn;
1426 siginelastic = siginelastic*millibarn;
1427 return;
1428 }
1429
1430// Remaining particles...
1431
1432// Get momentum bin
1433 G4double p = aParticle->GetTotalMomentum()/GeV;
1434
1435 // G4int j = TSIZE - 1;
1436 // for (G4int i = 2; i <= TSIZE; i++) {
1437 // if (p < plab[i]) {
1438 // j = i - 1;
1439 // break;
1440 // }
1441 // }
1442 // j = j - 1; // For array indexing
1443
1444 G4int je1 = 0;
1445 G4int je2 = TSIZE - 1;
1446 do {
1447 G4int midBin = (je1 + je2)/2;
1448 if (p < plab[midBin])
1449 je2 = midBin;
1450 else
1451 je1 = midBin;
1452 } while (je2 - je1 > 1);
1453
1454 G4int ipart1 = ipart - 1; // For array indexing
1455
1456// Get cross sections for scattering on free protons
1457 dx = plab[je2] - plab[je1];
1458// Elastic cross section
1459 dy = csel[ipart1][je2] - csel[ipart1][je1];
1460 rc = dy/dx;
1461 b = csel[ipart1][je1] - rc*plab[je1];
1462 sigel = rc*p + b;
1463// Inelastic cross section
1464 dy = csin[ipart1][je2] - csin[ipart1][je1];
1465 rc = dy/dx;
1466 b = csin[ipart1][je1] - rc*plab[je1];
1467 sigin = rc*p + b;
1468 if (verboseLevel > 1) {
1469 G4cout << "sigel " << sigel << G4endl;
1470 G4cout << "sigin " << sigin << G4endl;
1471 }
1472 G4double alph = alpha[ipart1];
1473 if (ipart < 14) {
1474 dy = alphac[je2] - alphac[je1];
1475 rc = dy/dx;
1476 b = alphac[je1] - rc*plab[je1];
1477 G4double corfac = rc*p + b;
1478 alph = alph*corfac;
1479 G4int ipart3 = ipart2[ipart - 7];
1480 ipart3 = ipart3 - 1; // For array indexing
1481 // Elastic cross section
1482 dy = csel[ipart3][je2] - csel[ipart3][je1];
1483 rc = dy/dx;
1484 b = csel[ipart3][je1] - rc*plab[je1];
1485 xsecel = rc*p + b;
1486 // Inelastic cross section
1487 dy = csin[ipart3][je2] - csin[ipart3][je1];
1488 rc = dy/dx;
1489 b = csin[ipart3][je1] - rc*plab[je1];
1490 xsecin = rc*p + b;
1491 }
1492
1493// A-dependence from parameterization...
1494
1495 if (a >= 1.5) {
1496
1497 crel = 1.;
1498 crin = 1.;
1499
1500 G4int i = 3;
1501 if (a < 50.) i = 2;
1502 if (a > 100.) i = 4;
1503 i = i - 1; // For array indexing
1504
1505// Protons and neutrons
1506 if (ipart == 14 || ipart == 16) {
1507 dy = cspnel[i - 1][je2] - cspnel[i - 1][je1];
1508 rc = dy/dx;
1509 b = cspnel[i - 1][je1] - rc*plab[je1];
1510 xsecel = rc*p + b;
1511 dy = cspnin[i - 1][je2] - cspnin[i - 1][je1];
1512 rc = dy/dx;
1513 b = cspnin[i - 1][je1] - rc*plab[je1];
1514 xsecin = rc*p + b;
1515 // The following is a first-order correction to Gheisha (GHESIG)
1516 // behaviour, where for the lighter elements the inelastic cross
1517 // section is not realistic for particles in the first momentum
1518 // bin. In the first momentum bin, it better to interpolate
1519 // in K.E. Subject to further improvements.
1520 if (correctInelasticNearZero && je1 == 0 && i <= 3) {
1521 G4double m0 = aParticle->GetMass()/GeV;
1522 G4double T = std::sqrt(m0*m0 + p*p) - m0;
1523 G4double dx = std::sqrt(m0*m0 + plab[1]*plab[1]) - m0;
1524 rc = dy/dx;
1525 xsecin = rc*T + b;
1526 }
1527
1528 if (sigel >= 0.001)
1529 crel = xsecel/(0.36*sigel*std::pow(G4double(csa[i]), 1.17));
1530 sigtot = sigel + sigin;
1531 if (sigtot >= 0.001)
1532 crin = xsecin/(sigtot*std::pow(G4double(csa[i]), alph));
1533 }
1534
1535 else if (ipart < 15) {
1536// Calculate correction factors (crel, crin) from values
1537// on Al, Cu, Pb. Note that data is only available for pions and protons.
1538 G4double wgch = 0.5;
1539 if (a < 20.) wgch = 0.5 + 0.5*std::exp(-(a - 1.));
1540 sigel = wgch*sigel + (1. - wgch)*xsecel;
1541 sigin = wgch*sigin + (1. - wgch)*xsecin;
1542
1543// This section not for kaons
1544 if (ipart < 10) {
1545 dy = cspiel[i - 1][je2] - cspiel[i - 1][je1];
1546 rc = dy/dx;
1547 b = cspiel[i - 1][je1] - rc*plab[je1];
1548 xspiel = rc*p + b;
1549 dy = cspiin[i - 1][je2] - cspiin[i - 1][je1];
1550 rc = dy/dx;
1551 b = cspiin[i - 1][je1] - rc*plab[je1];
1552 xspiin = rc*p + b;
1553 if (verboseLevel > 1) {
1554 G4cout << "xspiel " << xspiel << G4endl;
1555 G4cout << "xspiin " << xspiin << G4endl;
1556 }
1557 if (sigel >= 0.001)
1558 crel = xspiel/(0.36*sigel*std::pow(G4double(csa[i]),1.17));
1559 sigtot = sigel + sigin;
1560 if (sigtot >= 0.001)
1561 crin = xspiin/(sigtot*std::pow(G4double(csa[i]), alph));
1562 }
1563 }
1564
1565// Apply correction factors
1566 sigin = crin*(sigin + sigel)*std::pow(a, alph);
1567 sigel = crel*0.36*sigel*std::pow(a, 1.17);
1568 sigel = sigel*partel[ipart1];
1569 sigin = sigin*partin[ipart1];
1570 }
1571
1572// Correction factor for high (p > 100 GeV/c) energies:
1573 G4double corh = 1.;
1574 if (p > 100.) corh = 0.1085736156*std::log(p) + 0.5;
1575
1576 sigel = corh*sigel;
1577 sigin = corh*sigin;
1578 // Convert cross section from mb to default units
1579 sigelastic = sigel*millibarn;
1580 siginelastic = sigin*millibarn;
1581
1582 return;
1583}
1584
1585
1586G4double
1587G4HadronCrossSections::GetCaptureCrossSection(
1588 const G4DynamicParticle* aParticle,
1589 G4int ZZ, G4int /*AA*/)
1590{
1591 if (GetParticleCode(aParticle) != 16) { return 0.; }
1592 G4double ek = aParticle->GetKineticEnergy()/GeV;
1593 if (ek > 0.0327) { return 0.; }
1594
1595 G4double ekx = std::max(ek, 1.e-9);
1596 if( ekx != lastEkx )
1597 {
1598 lastEkx = ekx;
1599 lastEkxPower = std::pow(ekx*1.e6, 0.577);
1600 }
1601
1602 G4int izno = ZZ;
1603 if (izno > 100) izno = 100; // Not in GHESIG
1604 izno = izno - 1; // For array indexing
1605 G4double sigcap = 11.12*cscap[izno]/lastEkxPower;
1606 // Convert cross section from mb to default units
1607 sigcap = sigcap*millibarn;
1608 return sigcap;
1609}
1610
1611
1612G4double
1613G4HadronCrossSections::GetFissionCrossSection(
1614 const G4DynamicParticle* aParticle,
1615 G4int ZZ, G4int AA)
1616{
1617 if (AA < 230) return 0;
1618
1619 G4double ek = aParticle->GetKineticEnergy()/GeV;
1620
1621 G4int ie1 = 0;
1622 G4int ie2 = NFISS - 1;
1623 do {
1624 G4int midBin = (ie1 + ie2)/2;
1625 if (ek < ekfiss[midBin])
1626 ie2 = midBin;
1627 else
1628 ie1 = midBin;
1629 } while (ie2 - ie1 > 1);
1630 G4int i = ie2;
1631 if (ek < ekfiss[0]) i = 0;
1632
1633 G4int j = 4;
1634 if (ek <= 0.01) {
1635 if (ZZ == 92 && AA == 233) j = 1;
1636 else if (ZZ == 92 && AA == 235) j = 2;
1637 else if (ZZ == 94 && AA == 239) j = 3;
1638 }
1639 G4double z43ba;
1640 if (j == 4) {
1641 z43ba = std::pow(G4double(ZZ), 4./3.)/G4double(AA);
1642 z43ba = std::max(-67. + 38.7*z43ba, 0.);
1643 }
1644 else {
1645 z43ba = 1.;
1646 }
1647 j = j - 1; // For array indexing
1648 G4double sigfiss = csfiss[j][i]*z43ba;
1649// Convert from mb to cm^2
1650 // sigfiss = sigfiss*1.e-27;
1651 // Convert cross section from mb to default units
1652 sigfiss = sigfiss*millibarn;
1653 return sigfiss;
1654}
1655
1656
1657G4int
1658G4HadronCrossSections::GetParticleCode(const G4DynamicParticle* aParticle)
1659{
1660 // Returns GHEISHA code for particle
1661 // Case entries ordered by estimated frequency
1662
1663 G4int ipart;
1664
1665 switch( aParticle->GetPDGcode()) {
1666 case 111:
1667 ipart = 8; // pi0
1668 break;
1669 case 211:
1670 ipart = 7; // pi+
1671 break;
1672 case -211:
1673 ipart = 9; // pi-
1674 break;
1675 case 2112:
1676 ipart = 16; // neutron
1677 break;
1678 case 2212:
1679 ipart = 14; // proton
1680 break;
1681 case 321:
1682 ipart = 10; // K+
1683 break;
1684 case -321:
1685 ipart = 13; // K-
1686 break;
1687 case 130:
1688 ipart = 12; // K0L
1689 break;
1690 case 310:
1691 ipart = 11; // K0S
1692 break;
1693 case 1000010020:
1694 ipart = 30; // deuteron
1695 break;
1696 case 1000010030:
1697 ipart = 31; // triton
1698 break;
1699 case 1000020040:
1700 ipart = 32; // alpha
1701 break;
1702 case 3122:
1703 ipart = 18; // lambda
1704 break;
1705 case -2112:
1706 ipart = 17; // anti-neutron
1707 break;
1708 case -2212:
1709 ipart = 15; // anti-proton
1710 break;
1711 case -3122:
1712 ipart = 19; // anti-lambda
1713 break;
1714 case 3222:
1715 ipart = 20; // sigma+
1716 break;
1717 case 3212:
1718 ipart = 21; // sigma0
1719 break;
1720 case 3112:
1721 ipart = 22; // sigma-
1722 break;
1723 case 3322:
1724 ipart = 26; // xi0
1725 break;
1726 case 3312:
1727 ipart = 27; // xi-
1728 break;
1729 case 3334:
1730 ipart = 33; // omega-
1731 break;
1732 case -3222:
1733 ipart = 23; // anti-sigma+
1734 break;
1735 case -3212:
1736 ipart = 24; // anti-sigma0
1737 break;
1738 case -3112:
1739 ipart = 25; // anti-sigma-
1740 break;
1741 case -3322:
1742 ipart = 28; // anti-xi0
1743 break;
1744 case -3312:
1745 ipart = 29; // anti-xi-
1746 break;
1747 case -3334:
1748 ipart = 34; // anti-omega-
1749 break;
1750 default:
1751 G4Exception("G4HadronCrossSections", "007", FatalException,
1752 "GetParticleCode: unsupported particle");
1753 return 0;
1754 }
1755
1756 return ipart;
1757}
Note: See TracBrowser for help on using the repository browser.