Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
G4ComponentBarNucleonNucleusXsc.cc
이 파일의 문서화 페이지로 가기
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 // author: Vladimir.Grichine@cern.ch
27 //
28 // Implements data from: Barashenkov V.S., Nucleon-Nucleus Cross Section,
29 // Preprint JINR P2-89-770, p. 12, Dubna 1989 (scanned version from KEK)
30 // Based on G4NucleonNuclearCrossSection class
31 //
32 //
33 
35 #include "G4SystemOfUnits.hh"
36 #include "G4DynamicParticle.hh"
37 #include "G4Neutron.hh"
38 #include "G4Proton.hh"
39 #include "G4Pow.hh"
40 
41 // Group 1: He, Be, C for 44 energies
42 
44 {
45  0.014, 0.015, 0.017, 0.02, 0.022, 0.025, 0.027, 0.03, 0.035, 0.04,
46  0.045, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14, 0.15,
47  0.16, 0.18, 0.20, 0.25, 0.30, 0.35, 0.4, 0.5, 0.6, 0.7,
48  0.8, 0.9, 1.0, 1.5, 2.0, 3.0, 5.0, 7.0, 10.0, 20.0,
49  50.0, 100.0, 500.0, 1000.0
50 };
51 
53 {
54  1090, 1020, 915, 800, 710, 640, 600, 560, 500, 440, 390, 360, 295, 256, 220, 192,
55  168, 136, 120, 116, 114, 110, 107, 104, 106, 108, 110, 120, 126, 135, 140, 144, 146,
56  148, 152, 150, 146, 142, 138, 132, 129, 126, 127, 128
57 };
59 {
60  0, 5, 10, 20, 35, 55, 70, 80, 90, 105, 115, 115, 100, 90, 86, 84, 84, 82, 80, 80, 80, 80,
61  79, 78, 80, 84, 88, 94, 100, 105, 108, 108, 108, 112, 114, 114, 112, 110, 108, 106, 104,
62  101, 102, 102
63 };
65 {
66  0, 2, 3, 13, 30, 50, 65, 77, 90, 105, 115, 115, 100, 90, 86, 84, 84, 82, 80, 80, 80, 80,
67  79, 78, 80, 84, 88, 94, 100, 105, 108, 108, 108, 112, 114, 114, 112, 110, 108, 106, 104,
68  101, 102, 102
69 };
70 
72 {
73  1490, 1460, 1400, 1350, 1270, 1200, 1160, 1100, 1000, 910, 810, 740, 625, 575, 455, 406,
74  365, 310, 275, 262, 255, 240, 235, 225, 225, 230, 238, 252, 270, 282, 288, 290, 294, 303,
75  303, 300, 292, 284, 277, 267, 263, 264, 268, 268
76 };
78 {
79  650, 640, 617, 595, 555, 520, 495, 470, 430, 385, 350, 320, 270, 250, 210, 190, 185, 178,
80  175, 175, 175, 175, 175, 170, 170, 172, 176, 184, 194, 200, 209, 213, 214, 216, 216, 212,
81  210, 210, 210, 210, 210, 210, 210, 210
82 };
84 {
85  490, 540, 580, 545, 525, 495, 470, 450, 420, 370, 340, 310, 262, 242, 205, 185, 180, 175,
86  172, 175, 175, 175, 175, 170, 170, 172, 176, 184, 194, 200, 209, 213, 214, 216, 216, 212,
87  210, 210, 210, 210, 210, 210, 210, 210
88 };
89 
91 {
92  1240, 1370, 1450, 1455, 1445, 1385, 1345, 1290, 1210, 1110, 1020, 940, 800, 700, 604, 530,
93  475, 396, 350, 336, 320, 303, 294, 280, 280, 286, 296, 314, 330, 344, 356, 360, 364, 384,
94  388, 384, 364, 352, 344, 330, 324, 324, 332, 332
95 };
97 {
98  590, 570, 542, 510, 500, 460, 445, 430, 395, 380, 350, 330, 295, 270, 255, 240, 228, 222,
99  216, 216, 210, 210, 210, 208, 210, 214, 216, 228, 240, 248, 254, 257, 260, 262, 260, 256,
100  252, 252, 250, 250, 248, 248, 248, 248
101 };
103 {
104  310, 330, 400, 440, 450, 435, 430, 420, 385, 370, 340, 320, 288, 263, 249, 234, 222, 216,
105  210, 211, 205, 208, 210, 208, 210, 214, 216, 228, 240, 248, 254, 257, 260, 262, 260, 256,
106  252, 252, 250, 250, 248, 248, 248, 248
107 };
108 
109 // Group 2: N, O, Na for 44 energies (e1=e2)
110 
112 {
113  0.014, 0.015, 0.017, .02, 0.022, 0.025, 0.027, 0.03, 0.035, .04, 0.045, 0.05, .06, 0.07,
114  .08, 0.09, .1, .12, .14, .15, .16, .18, .20, .25, .30, .35, .4 , 0.5, 0.6, 0.7, 0.8,
115  0.9, 1, 1.5, 2, 3, 5, 7, 10,
116  20, 50, 100, 500, 1000
117 };
118 
120 {
121  1420,1480, 1537, 1550, 1525, 1500, 1480, 1425, 1340, 1260, 1175, 1090, 930, 805, 690, 612,
122  552, 462, 402, 384, 372, 350, 345, 326, 324, 328, 336, 356, 372, 388, 400, 408, 415, 430,
123  435, 432, 415, 402, 390, 375, 367, 370, 382, 385
124 };
126 {
127  680, 665, 625, 580, 562, 525, 510, 485, 450, 435, 410, 387, 340, 310, 290, 280, 276, 274,
128  260, 258, 254, 247, 245, 240, 240, 244, 250, 260, 268, 275, 280, 285, 290, 295, 300, 294,
129  292, 290, 285, 285, 282, 282, 282, 282
130 };
132 {
133  420, 440, 470, 490, 497, 500, 480, 462, 440, 425, 400, 377, 333, 303, 284, 274, 270, 268,
134  254, 252, 247, 245, 245, 240, 240, 244, 250, 260, 268, 275, 280, 285, 290, 295, 300, 294,
135  292, 290, 285, 285, 282, 282, 282, 282
136 };
137 
139 {
140  1520, 1570, 1630, 1660, 1647, 1623, 1595, 1555, 1475, 1395, 1290, 1207, 1035, 925, 816,
141  720, 645, 540, 462, 438, 415, 392, 378, 362, 361, 381, 390, 403, 417, 440, 460, 470,
142  479, 498, 504, 498, 477, 457, 443, 427, 420, 425, 429, 430
143 };
145 {
146  750, 740, 700, 650, 620, 575, 555, 530, 505, 462, 435, 420, 375, 345, 320, 310, 300, 293,
147  288, 282, 282, 280, 276, 270, 271, 275, 280, 290, 295, 304, 310, 315, 318, 332, 335, 330,
148  323, 320, 317, 315, 315, 315, 315, 315
149 };
151 {
152  460, 485, 510, 535, 537, 532, 520, 500, 460, 432, 405, 390, 350, 320, 310, 304, 293, 287,
153  283, 279, 279, 278, 276, 270, 271, 275, 280, 290, 295, 304, 310, 315, 318, 332, 335, 330,
154  323, 320, 317, 315, 315, 315, 315, 315
155 };
156 
158 {
159  1570, 1620, 1695, 1730, 1750, 1760, 1755, 1740, 1710, 1643, 1560, 1480, 1343, 1220, 1073,
160  953, 860, 720, 618, 582, 546, 522, 504, 484, 492, 500, 512, 538, 560, 586, 608, 622, 632,
161  660, 668, 664, 640, 616, 596, 568, 568, 568, 568, 568
162 };
164 {
165  960, 930, 890, 822, 790, 750, 725, 686, 620, 600, 575, 540, 497, 450, 414, 390, 380, 372,
166  354, 360, 355, 354, 350, 350, 350, 356, 364, 384, 392, 400, 408, 410, 420, 408, 412, 420,
167  411, 409, 407, 403, 400, 400, 400, 400
168 };
170 {
171  600, 617, 660, 675, 680, 680, 670, 650, 575, 550, 525, 490, 450, 420, 385, 367, 360, 350,
172  350, 350, 345, 347, 350, 350, 350, 356, 364, 384, 392, 400, 408, 410, 420, 408, 412, 420,
173  411, 409, 407, 403, 400, 400, 400, 400
174 };
175 
176 // Al, Si, Ca for 45 energies
177 
179 {
180  0.014, 0.015, 0.016, 0.017, .02, 0.022, 0.025, 0.027, 0.03, 0.035, .04, 0.045, 0.05, .06, 0.07,
181  .08, 0.09, .1, .12, .14, .15, .16, .18, .20, .25, .30, .35, 0.4, 0.5, 0.6,
182  0.7, 0.8, 0.9, 1, 1.5, 2, 3, 5, 7, 10, 20, 50, 100, 500, 1000
183 };
184 
186 {
187  1735, 1750, 1760, 1795, 1830, 1855, 1885, 1895, 1900, 1870, 1835, 1785, 1710, 1522, 1350,
188  1212, 1080, 972, 816, 720, 678, 642, 600, 567, 558, 560, 578, 592, 616, 644,
189  672, 688, 708, 720, 736, 754, 736, 706, 680, 672, 646, 632, 632, 632, 632
190 };
192 {
193  1000, 990, 975, 950, 905, 875, 825, 800, 762, 690, 652, 610, 570, 495, 480,
194  456, 444, 432, 420, 420, 420, 420, 410, 410, 400, 402, 404, 408, 424, 438,
195  448, 450, 454, 456, 472, 480, 466, 456, 452, 448, 444, 440, 440, 440, 440
196 };
198 {
199  650, 682, 690, 715, 750, 762, 750, 740, 720, 655, 617, 575, 540, 470, 455,
200  // 532, 420, 408, 400, 403, 403, 408, 406, 404, 400, 402, 404, 408, 424, 438,
201  432, 420, 408, 400, 403, 403, 408, 406, 404, 400, 402, 404, 408, 424, 438,
202  448, 450, 454, 456, 472, 480, 466, 456, 452, 448, 444, 440, 440, 440, 440
203 };
204 
206 {
207  1810, 1833, 1850, 1872, 1920, 1950, 1995, 2020, 2035, 2000, 1930, 1850, 1760, 1570, 1400,
208  1255, 1110, 1008, 846, 742, 696, 671, 623, 588, 584, 584, 602, 618, 645, 679,
209  708, 727, 746, 757, 769, 782, 771, 734, 710, 698, 672, 654, 650, 650, 650
210 };
212 {
213  1060, 1035, 1015, 990, 935, 900, 860, 830, 790, 725, 665, 630, 600, 520, 504,
214  486, 470, 456, 444, 432, 432, 432, 418, 418, 415, 412, 416, 422, 440, 460,
215  472, 476, 479, 480, 492, 496, 488, 472, 472, 464, 460, 452, 448, 448, 448
216 };
218 {
219  670, 700, 725, 750, 780, 780, 770, 757, 735, 690, 635, 585, 570, 490, 475,
220  460, 446, 431, 423, 425, 425, 425, 425, 422, 422, 412, 416, 422, 440, 460,
221  472, 476, 479, 480, 492, 496, 488, 472, 472, 464, 460, 452, 448, 448, 448
222 };
223 
225 {
226  2180, 2130, 2095, 2075, 2115, 2150, 2220, 2250, 2300, 2365, 2360, 2280, 2180, 2000,
227  1805, 1650, 1500, 1340, 1140, 990, 940, 890, 825, 790, 770, 773, 787, 800, 830, 870,
228  905, 930, 950, 965, 990, 1002, 990, 965, 945, 925, 892, 860, 860, 860, 860
229 };
231 {
232  1240, 1225, 1200, 1180, 1125, 1090, 1045, 1020, 980, 925, 880, 825, 770, 680, 640,
233  620, 615, 600, 580, 565, 560, 560, 560, 550, 535, 530, 540, 550, 570, 595, 610, 615,
234  620, 622, 629, 630, 620, 612, 607, 592, 587, 580, 580, 580, 580
235 };
237 {
238  770, 800, 823, 850, 900, 925, 935, 920, 895, 835, 800, 750, 715, 640, 605, 590, 588,
239  573, 555, 543, 540, 540, 540, 535, 530, 530, 540, 550, 570, 595, 610, 615,
240  620, 622, 629, 630, 620, 612, 607, 592, 587, 580, 580, 580, 580
241 };
242 
243 // Fe, Cu, Mo for 47 energies
244 
246 {
247  0.014, 0.015, 0.017, .02, 0.022, 0.025, 0.027, 0.03, 0.033, 0.035, 0.037, .04, 0.045,
248  0.05, 0.055, .06, 0.07, .08, 0.09, .1, .12, .14, .15, .16, .18, .20, .25, .30, .35,
249  .4 , 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.5, 2, 3, 5, 7, 10,
250  20, 50, 100, 500, 1000
251 };
252 
254 {
255  2580, 2490, 2370, 2282, 2275, 2285, 2320, 2370, 2432, 2445, 2460, 2485, 2530, 2540,
256  2517, 2480, 2290, 2110, 1940, 1790, 1510, 1290, 1220, 1150, 1070, 1030, 1013, 1020,
257  1030, 1043, 1075, 1110, 1133, 1163, 1185, 1225, 1252, 1260, 1260, 1233, 1207, 1185,
258  1140, 1110, 1110, 1110, 1110
259 };
261 {
262  1440, 1433, 1390, 1325, 1280, 1260, 1215, 1180, 1140, 1110, 1080, 1040, 990, 955, 920,
263  885, 835, 800, 780, 765, 750, 725, 720, 720, 710, 700, 700, 700, 712, 705, 735, 750,
264  765, 775, 780, 795, 810, 813, 810, 784, 757, 743, 735, 720, 720, 720, 720
265 };
267 {
268  900, 960, 1070, 1090, 1115, 1120, 1115, 1080, 1045, 1025, 1000, 960, 900, 885, 865, 790,
269  765, 740, 720, 700, 697, 697, 697, 697, 695, 690, 688, 690, 712, 705, 735, 750,
270  765, 775, 780, 795, 810, 813, 810, 784, 757, 743, 735, 720, 720, 720, 720
271 };
272 
274 {
275  2920, 2800, 2615, 2480, 2455, 2430, 2440, 2460, 2500, 2530, 2560, 2615, 2690, 2720,
276  2700, 2645, 2500, 2320, 2140, 1970, 1670, 1460, 1380, 1285, 1200, 1160, 1140, 1147,
277  1163, 1170, 1200, 1237, 1265, 1285, 1305, 1328, 1375, 1390, 1395, 1370, 1335, 1315,
278  1270, 1230, 1230, 1230, 1230
279 };
281 {
282  1540, 1535, 1500, 1445, 1407, 1380, 1330, 1300, 1285, 1270, 1240, 1190, 1090, 1010,
283  940, 920, 860, 835, 820, 810, 800, 780, 775, 770, 760, 760, 758, 765, 765, 770, 795,
284  810, 825, 830, 840, 848, 870, 870, 868, 840, 825, 810, 803, 795, 795, 795, 795
285 };
287 {
288  935, 1000, 1060, 1190, 1220, 1250, 1240, 1210, 1150, 1130, 1115, 1050, 985, 950, 890,
289  870, 820, 800, 785, 780, 770, 750, 745, 740, 735, 735, 745, 760, 762, 770, 795,
290  810, 825, 830, 840, 848, 870, 870, 868, 840, 825, 810, 803, 795, 795, 795, 795
291 };
292 
294 {
295  4150, 4040, 3800, 3490, 3300, 3060, 2960, 2845, 2785, 2820, 2850, 2980, 3170, 3230,
296  3270, 3280, 3225, 3075, 2895, 2710, 2355, 2060, 1925, 1800, 1630, 1560, 1540, 1550,
297  1570, 1590, 1650, 1685, 1715, 1740, 1760, 1780, 1850, 1880, 1858, 1815, 1790, 1782,
298  1720, 1690, 1690, 1690, 1690
299 };
301 {
302  1790, 1775, 1740, 1680, 1640, 1580, 1550, 1510, 1460, 1440, 1418, 1380, 1330, 1280,
303  1240, 1200, 1155, 1140, 1110, 1110, 1080, 1065, 1050, 1050, 1025, 1020, 1015, 1020,
304  1022, 1026, 1060, 1085, 1100, 1110, 1120, 1127, 1150, 1160, 1140, 1100, 1085, 1080,
305  1070, 1070, 1070, 1070, 1070
306 };
308 {
309  1025, 1080, 1190, 1380, 1440, 1495, 1475, 1420, 1350, 1310, 1300, 1290, 1250, 1200,
310  1170, 1130, 1095, 1060, 1040, 1022, 1020, 1016, 1016, 1016, 1016, 1012, 1005, 1005,
311  1005, 1010, 1060, 1085, 1100, 1110, 1120, 1127, 1150, 1160, 1140, 1100, 1085, 1080,
312  1070, 1070, 1070, 1070, 1070
313 };
314 
315 // Cd, Sn, W for 48 energies
316 
318 {
319  0.014, 0.015, 0.017, 0.018, .02, 0.022, 0.025, 0.027, 0.03, 0.033, 0.035, .04,
320  0.045, 0.05, 0.055, .06, .065, 0.07, .08, 0.09, .1, .12, .14, .15, .16, .18,
321  .20, .25, .30, .35, .4 , 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.5, 2, 3, 5, 7, 10, 20,
322  50, 100, 500, 1000
323 };
324 
326 {
327  4420, 4280, 4170, 4070, 3860, 3680, 3420, 3280, 3125, 3060, 3080, 3190, 3350, 3445,
328  3510, 3540, 3560, 3550, 3460, 3300, 3030, 2640, 2340, 2190, 2070, 1950, 1770, 1732,
329  1740, 1760, 1780, 1832, 1885, 1925, 1945, 1960, 1980, 2070, 2080, 2065, 2040, 2022,
330  1980, 1940, 1870, 1870, 1870, 1870
331 };
333 {
334  1920, 1910, 1880, 1860, 1840, 1800, 1760, 1720, 1675, 1630, 1600, 1520, 1465, 1420,
335  1390, 1340, 1310, 1280, 1275, 1235, 1225, 1200, 1170, 1170, 1170, 1165, 1145, 1140,
336  1140, 1135, 1160, 1180, 1220, 1240, 1250, 1260, 1265, 1270, 1275, 1250, 1222, 1222,
337  1220, 1215, 1190, 1190, 1190, 1190
338 };
340 {
341  1020, 1100, 1225, 1290, 1440, 1520, 1575, 1560, 1518, 1460, 1420, 1400, 1365, 1340,
342  1300, 1280, 1260, 1200, 1190, 1160, 1125, 1125, 1125, 1125, 1125, 1125, 1120, 1120,
343  1120, 1118, 1146, 1180, 1220, 1240, 1250, 1260, 1265, 1270, 1275, 1250, 1222, 1222,
344  1220, 1215, 1190, 1190, 1190, 1190
345 };
346 
348 {
349  4420, 4400, 4260, 4150, 3980, 3770, 3530, 3370, 3245, 3180, 3170, 3260, 3400, 3500,
350  3560, 3610, 3650, 3680, 3580, 3390, 3190, 2760, 2430, 2295, 2175, 1990, 1880, 1810,
351  1820, 1840, 1865, 1940, 1985, 2020, 2040, 2060, 2080, 2160, 2185, 2180, 2110, 2105,
352  2080, 2050, 1980, 1980, 1980, 1980
353 };
355 {
356  1945, 1940, 1905, 1890, 1860, 1830, 1780, 1755, 1717, 1680, 1645, 1570, 1500, 1455,
357  1410, 1370, 1340, 1320, 1290, 1285, 1260, 1240, 1235, 1212, 1200, 1200, 1200, 1190,
358  1190, 1200, 1210, 1240, 1270, 1285, 1300, 1300, 1310, 1320, 1320, 1290, 1240, 1240,
359  1240, 1240, 1240, 1240, 1240, 1240
360 };
362 {
363  1020, 1080, 1270, 1335, 1465, 1505, 1610, 1610, 1550, 1535, 1500, 1440, 1407, 1370,
364  1340, 1300, 1285, 1260, 1230, 1215, 1200, 1180, 1170, 1170, 1165, 1165, 1170, 1165,
365  1165, 1183, 1195, 1240, 1270, 1285, 1300, 1300, 1310, 1320, 1320, 1290, 1240, 1240,
366  1240, 1240, 1240, 1240, 1240, 1240
367 };
368 
370 {
371  5320, 5430, 5480, 5450, 5330, 5190, 4960, 4790, 4550, 4340, 4200, 4070, 4000, 4030,
372  4125, 4220, 4270, 4390, 4440, 4360, 4200, 3800, 3380, 3200, 3040, 2790, 2660, 2575,
373  2575, 2600, 2640, 2690, 2755, 2790, 2812, 2837, 2850, 2950, 3000, 2970, 2940, 2910,
374  2880, 2820, 2730, 2730, 2730, 2730
375 };
377 {
378  2440, 2400, 2370, 2350, 2310, 2270, 2220, 2195, 2150, 2100, 2070, 2010, 1945, 1900,
379  1850, 1820, 1780, 1760, 1730, 1720, 1680, 1680, 1660, 1660, 1650, 1650, 1640, 1640,
380  1612, 1615, 1625, 1640, 1700, 1720, 1730, 1740, 1750, 1780, 1780, 1750, 1740, 1735,
381  1710, 1695, 1680, 1680, 1680, 1680
382 };
384 {
385  950, 1020, 1240, 1400, 1560, 1670, 1760, 1830, 1850, 1855, 1870, 1840, 1800, 1770,
386  1740, 1715, 1680, 1670, 1650, 1620, 1610, 1600, 1600, 1600, 1600, 1600, 1600, 1595,
387  1585, 1595, 1615, 1640, 1700, 1720, 1730, 1740, 1750, 1780, 1780, 1750, 1740, 1735,
388  1710, 1695, 1680, 1680, 1680, 1680
389 };
390 
391 // Pb, U for 46 energies
392 
394 {
395  0.014, 0.015, 0.017, 0.019, 0.02, 0.022, 0.025, 0.027, 0.03, 0.035,
396  0.04, 0.045, 0.05, 0.055, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12,
397  0.14, 0.15, 0.16, 0.18, 0.20, 0.25, 0.30, 0.35, 0.4 , 0.5,
398  0.6, 0.7, 0.8, 0.9, 1.0, 1.5, 2.0, 3.0, 5.0, 7.0,
399  10.0, 20.0, 50.0, 100.0, 500.0, 1000.0
400 };
401 
403 {
404  5300, 5440, 5720, 5880, 5765, 5745, 5480, 5280, 4970, 4550, 4390, 4300, 4265, 4325,
405  4450, 4540, 4740, 4710, 4600, 4100, 3660, 3480, 3300, 3000, 2890, 2865, 2855, 2850,
406  2865, 2920, 2955, 3000, 3030, 3060, 3105, 3240, 3290, 3270, 3240, 3180, 3090, 3060,
407  2970, 2970, 2970, 2970
408 
409 };
411 {
412  2580, 2550, 2505, 2462, 2460, 2435, 2380, 2355, 2280, 2180, 2170, 2130, 2080, 2035,
413  1980, 1940, 1900, 1870, 1840, 1800, 1800, 1800, 1780, 1760, 1760, 1740, 1730, 1725,
414  1740, 1785, 1815, 1835, 1860, 1890, 1895, 1920, 1920, 1890, 1850, 1835, 1830, 1830,
415  1830, 1830, 1830, 1830
416 };
418 {
419  900, 1060, 1200, 1420, 1515, 1620, 1750, 1800, 1915, 2030, 1960, 1940, 1910, 1860,
420  1840, 1780, 1770, 1760, 1740, 1720, 1725, 1740, 1740, 1730, 1720, 1700, 1710, 1720,
421  1730, 1740, 1815, 1835, 1860, 1890, 1895, 1920, 1920, 1890, 1850, 1835, 1830, 1830,
422  1830, 1830, 1830, 1830
423 };
424 
426 {
427  5800, 5940, 6160, 6345, 6360, 6350, 6170, 6020, 5760, 5350, 4990, 4800, 4710, 4690,
428  4760, 5040, 5190, 5200, 5080, 4600, 4120, 3920, 3720, 3420, 3240, 3150, 3160, 3180,
429  3210, 3240, 3280, 3350, 3390, 3435, 3480, 3560, 3585, 3580, 3540, 3500, 3470, 3410,
430  3335, 3335, 3335, 3335
431 };
433 {
434  2820, 2770, 2700, 2660, 2645, 2620, 2580, 2550, 2515, 2450, 2390, 2320, 2260, 2225,
435  2200, 2140, 2080, 2060, 2040, 2000, 1980, 1965, 1960, 1930, 1920, 1890, 1905, 1920,
436  1945, 1970, 1985, 2010, 2040, 2070, 2080, 2090, 2095, 2080, 2063, 2060, 2050, 2040,
437  2005, 2005, 2005, 2005
438 };
440 {
441  800, 900, 1100, 1300, 1410, 1510, 1680, 1800, 2000, 2200, 2080, 2060, 2035, 2100,
442  2030, 2030, 2000, 1960, 1960, 1960, 1940, 1925, 1920, 1905, 1890, 1860, 1880, 1910,
443  1930, 1945, 1985, 2010, 2040, 2070, 2080, 2090, 2095, 2080, 2063, 2060, 2050, 2040,
444  2005, 2005, 2005, 2005
445 };
446 
447 using namespace std;
448 
450 
452  : G4VComponentCrossSection("G4ComponentBarNucleonNucleusXsc"),
453  fTotalXsc(0.0), fInelasticXsc(0.0), fElasticXsc(0.0)
454 {
457 
458  // He, Be, C
459 
460  thePimData.push_back(new G4PiData(he_m_t, he_m_in, e1, 44));
461  thePipData.push_back(new G4PiData(he_m_t, he_p_in, e1, 44));
462 
463  thePimData.push_back(new G4PiData(be_m_t, be_m_in, e1, 44));
464  thePipData.push_back(new G4PiData(be_m_t, be_p_in, e1, 44));
465 
466  thePimData.push_back(new G4PiData(c_m_t, c_m_in, e1, 44));
467  thePipData.push_back(new G4PiData(c_m_t, c_p_in, e1, 44));
468 
469  // N, O, Na
470 
471  thePimData.push_back(new G4PiData(n_m_t, n_m_in, e2, 44));
472  thePipData.push_back(new G4PiData(n_m_t, n_p_in, e2, 44));
473 
474  thePimData.push_back(new G4PiData(o_m_t, o_m_in, e2, 44));
475  thePipData.push_back(new G4PiData(o_m_t, o_p_in, e2, 44));
476 
477  thePimData.push_back(new G4PiData(na_m_t, na_m_in, e2, 44));
478  thePipData.push_back(new G4PiData(na_m_t, na_p_in, e2, 44));
479 
480  // Al, Si, Ca
481 
482  thePimData.push_back(new G4PiData(al_m_t, al_m_in, e3, 45));
483  thePipData.push_back(new G4PiData(al_m_t, al_p_in, e3, 45));
484 
485  thePimData.push_back(new G4PiData(si_m_t, si_m_in, e3, 45));
486  thePipData.push_back(new G4PiData(si_m_t, si_p_in, e3, 45));
487 
488  thePimData.push_back(new G4PiData(ca_m_t, ca_m_in, e3, 45));
489  thePipData.push_back(new G4PiData(ca_m_t, ca_p_in, e3, 45));
490 
491  // Fe, Cu, Mo
492 
493  thePimData.push_back(new G4PiData(fe_m_t, fe_m_in, e4, 47));
494  thePipData.push_back(new G4PiData(fe_m_t, fe_p_in, e4, 47));
495 
496  thePimData.push_back(new G4PiData(cu_m_t, cu_m_in, e4, 47));
497  thePipData.push_back(new G4PiData(cu_m_t, cu_p_in, e4, 47));
498 
499  thePimData.push_back(new G4PiData(mo_m_t, mo_m_in, e4, 47));
500  thePipData.push_back(new G4PiData(mo_m_t, mo_p_in, e4, 47));
501 
502  // Cd, Sn, W
503 
504  thePimData.push_back(new G4PiData(cd_m_t, cd_m_in, e5, 48));
505  thePipData.push_back(new G4PiData(cd_m_t, cd_p_in, e5, 48));
506 
507  thePimData.push_back(new G4PiData(sn_m_t, sn_m_in, e5, 48));
508  thePipData.push_back(new G4PiData(sn_m_t, sn_p_in, e5, 48));
509 
510  thePimData.push_back(new G4PiData(w_m_t, w_m_in, e5, 48));
511  thePipData.push_back(new G4PiData(w_m_t, w_p_in, e5, 48));
512 
513  // Pb, U
514 
515  thePimData.push_back(new G4PiData(pb_m_t, pb_m_in, e6, 46));
516  thePipData.push_back(new G4PiData(pb_m_t, pb_p_in, e6, 46));
517 
518  thePimData.push_back(new G4PiData(u_m_t, u_m_in, e6, 46));
519  thePipData.push_back(new G4PiData(u_m_t, u_p_in, e6, 46));
520 
521  theZ.push_back(2); // He
522  theZ.push_back(4); // Be
523  theZ.push_back(6); // C
524  theZ.push_back(7); // N
525  theZ.push_back(8); // O
526  theZ.push_back(11); // Na
527  theZ.push_back(13); // Al
528  theZ.push_back(14); // Si
529  theZ.push_back(20); // Ca
530  theZ.push_back(26); // Fe
531  theZ.push_back(29); // Cu
532  theZ.push_back(42); // Mo
533  theZ.push_back(48); // Cd
534  theZ.push_back(50); // Sn
535  theZ.push_back(74); // W
536  theZ.push_back(82); // Pb
537  theZ.push_back(92); // U
538 
539 }
540 
542 //
543 
545 {
546  std::for_each(thePimData.begin(), thePimData.end(), G4PiData::Delete());
547  std::for_each(thePipData.begin(), thePipData.end(), G4PiData::Delete());
548 }
549 
551 
553  G4double kinEnergy,
554  G4int Z, G4int)
555 {
556  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
557  kinEnergy);
559  delete aDP;
560 
561  return fTotalXsc;
562 }
563 
565 
567  G4double kinEnergy,
568  G4int Z, G4double)
569 {
570  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
571  kinEnergy);
573  delete aDP;
574 
575  return fTotalXsc;
576 }
577 
579 
581  G4double kinEnergy,
582  G4int Z, G4int )
583 {
584  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
585  kinEnergy);
587  delete aDP;
588 
589  return fInelasticXsc;
590 }
591 
593 
595  G4double kinEnergy,
596  G4int Z, G4double )
597 {
598  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
599  kinEnergy);
601  delete aDP;
602 
603  return fInelasticXsc;
604 }
605 
607 
609  G4double kinEnergy,
610  G4int Z, G4double )
611 {
612  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
613  kinEnergy);
615  delete aDP;
616 
617  return fElasticXsc;
618 }
619 
621 
623  G4double kinEnergy,
624  G4int Z, G4int )
625 {
626  G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
627  kinEnergy);
629  delete aDP;
630 
631  return fElasticXsc;
632 }
633 
634 
635 
637 //
638 
639 G4bool
641  G4int Z) // , const G4Material*)
642 {
643  G4bool result = false;
644  if(aParticle->GetDefinition() == theNeutron ) result = true;
645  if(aParticle->GetDefinition() == theProton) result = true;
646  if(Z < 2) result = false;
647  if(aParticle->GetKineticEnergy() > 999.9*GeV) result = false;
648  return result;
649 }
650 
652 //
653 //
654 
655 G4double
657  G4int Z) // , const G4Material*)
658 {
659  G4double kineticEnergy = aParticle->GetKineticEnergy();
660 
661  G4double result = 0;
662  // G4cout<<"Z = "<<Z<<G4endl;
663 
664  size_t it = 0;
665  size_t itmax = theZ.size() - 1;
666  for(; it <= itmax; ++it) { if(Z <= theZ[it]) { break; } }
667  if( it > itmax ) { it = itmax; }
668  G4int Z1, Z2;
669  G4double x1, x2, xt1, xt2;
670 
671  std::vector<G4PiData *> * theData = &thePimData;
672  if(aParticle->GetDefinition() == theProton) { theData = &thePipData; }
673 
674  if( theZ[it] == Z )
675  {
676  result = (*theData)[it]->ReactionXSection(kineticEnergy);
677  fTotalXsc = (*theData)[it]->TotalXSection(kineticEnergy);
678  }
679  else
680  {
681  if(0 == it) { it = 1; }
682  x1 = (*theData)[it-1]->ReactionXSection(kineticEnergy);
683  xt1 = (*theData)[it-1]->TotalXSection(kineticEnergy);
684  Z1 = theZ[it-1];
685  x2 = (*theData)[it]->ReactionXSection(kineticEnergy);
686  xt2 = (*theData)[it]->TotalXSection(kineticEnergy);
687  Z2 = theZ[it];
688 
689  result = Interpolate(Z1, Z2, Z, x1, x2);
690  fTotalXsc = Interpolate(Z1, Z2, Z, xt1, xt2);
691  }
692 
694  if( fElasticXsc < 0.) { fElasticXsc = 0.; }
695 
696  return result;
697 }
698 
700 //
701 
704 {
705 // Nucleon numbers obtained from G4NistManager G4 8.0
706 
707  static const G4double alpha = 2./3.;
708 
709  static const G4double A[92] =
710  {
711  1.0001, 4.0000, 6.9241, 9.0000, 10.801, 12.011, 14.004, 16.004, 19.000, 20.188,
712  23.000, 24.320, 27.000, 28.109, 31.000, 32.094, 35.484, 39.985, 39.135, 40.116,
713  45.000, 47.918, 50.998, 52.055, 55.000, 55.910, 59.000, 58.760, 63.617, 65.468,
714  69.798, 72.691, 75.000, 79.042, 79.986, 83.887, 85.557, 87.710, 89.000, 91.318,
715  93.000, 96.025, 98.000, 101.16, 103.00, 106.51, 107.96, 112.51, 114.91, 118.81,
716  121.86, 127.70, 127.00, 131.39, 133.00, 137.42, 139.00, 140.21, 141.00, 144.32,
717  145.00, 150.45, 152.04, 157.33, 159.00, 162.57, 165.00, 167.32, 169.00, 173.10,
718  175.03, 178.54, 181.00, 183.89, 186.25, 190.27, 192.25, 195.11, 197.00, 200.63,
719  204.41, 207.24, 209.00, 209.00, 210.00, 222.00, 223.00, 226.00, 227.00, 232.00,
720  231.00, 237.98
721  };
722  static G4ThreadLocal G4bool NeedInit = true;
723 
724  static G4ThreadLocal G4double A75[92];
725 
726  if ( NeedInit )
727  {
728  for (G4int i=0; i<92; ++i)
729  {
730  A75[i] = G4Pow::GetInstance()->powA(A[i], alpha); // interpolate by square ~ A^(2/3)
731  }
732  NeedInit=false;
733  }
734 
735  // for tabulated data, cross section scales with A^(2/3)
736  G4double r1 = x1 / A75[Z1-1] * A75[Z-1];
737  G4double r2 = x2 / A75[Z2-1] * A75[Z-1];
738  G4double result = 0.5*(r1+r2);
739 
740  // More precise average
741  if(Z1 != Z2) {
742  G4double alp1 = (A[Z-1] - A[Z1-1]);
743  G4double alp2 = (A[Z2-1] - A[Z-1]);
744  result = (r1*alp2 + r2*alp1)/(alp1 + alp2);
745  }
746  // G4cout << "x1/2, z1/2 z" <<x1<<" "<<x2<<" "<<Z1<<" "<<Z2<<" "<<Z<<G4endl;
747  // G4cout << "res1/2 " << r1 <<" " << r2 <<" " << result<< G4endl;
748  return result;
749 }
750 
751 void
753 {
754  outFile << "G4ComponentBarNucleonNucleusXsc is a variant of the Barashenkov\n"
755  << "cross section parameterization to be used of protons and\n"
756  << "nucleons on targets heavier than hydrogen. It is intended for\n"
757  << "use as a cross section component and is currently used by\n"
758  << "G4BGGNucleonInelasticXS. It is valid for incident energies up\n"
759  << "to 1 TeV.\n";
760 }
761 
G4ThreeVector G4ParticleMomentum
virtual G4double GetInelasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double)
virtual G4double GetElasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double)
Float_t x1[n_points_granero]
Definition: compare.C:5
virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int)
static G4Proton * Proton()
Definition: G4Proton.cc:93
G4double GetElementCrossSection(const G4DynamicParticle *aParticle, G4int Z)
#define G4ThreadLocal
Definition: tls.hh:69
Float_t Z
G4double Interpolate(G4int Z1, G4int Z2, G4int Z, G4double x1, G4double x2)
virtual G4double GetTotalElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double)
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
static G4Pow * GetInstance()
Definition: G4Pow.cc:57
G4ParticleDefinition * GetDefinition() const
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:242
static const G4double alpha
double A(double temperature)
G4double G4ParticleHPJENDLHEData::G4double result
Double_t Z2
void CrossSectionDescription(std::ostream &) const
Double_t Z1
int G4int
Definition: G4Types.hh:78
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
G4double GetKineticEnergy() const
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int)
G4bool IsElementApplicable(const G4DynamicParticle *aParticle, G4int Z)
Float_t x2[n_points_geant4]
Definition: compare.C:26
static constexpr double GeV
Definition: G4SIunits.hh:217
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int)