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