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