00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include "G4ComponentBarNucleonNucleusXsc.hh"
00035 #include "G4SystemOfUnits.hh"
00036 #include "G4DynamicParticle.hh"
00037 #include "G4Neutron.hh"
00038 #include "G4Proton.hh"
00039
00040
00041
00042 const G4double G4ComponentBarNucleonNucleusXsc::e1[44] =
00043 {
00044 0.014, 0.015, 0.017, 0.02, 0.022, 0.025, 0.027, 0.03, 0.035, 0.04,
00045 0.045, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14, 0.15,
00046 0.16, 0.18, 0.20, 0.25, 0.30, 0.35, 0.4, 0.5, 0.6, 0.7,
00047 0.8, 0.9, 1.0, 1.5, 2.0, 3.0, 5.0, 7.0, 10.0, 20.0,
00048 50.0, 100.0, 500.0, 1000.0
00049 };
00050
00051 const G4double G4ComponentBarNucleonNucleusXsc::he_m_t[44] =
00052 {
00053 1090, 1020, 915, 800, 710, 640, 600, 560, 500, 440, 390, 360, 295, 256, 220, 192,
00054 168, 136, 120, 116, 114, 110, 107, 104, 106, 108, 110, 120, 126, 135, 140, 144, 146,
00055 148, 152, 150, 146, 142, 138, 132, 129, 126, 127, 128
00056 };
00057 const G4double G4ComponentBarNucleonNucleusXsc::he_m_in[44] =
00058 {
00059 0, 5, 10, 20, 35, 55, 70, 80, 90, 105, 115, 115, 100, 90, 86, 84, 84, 82, 80, 80, 80, 80,
00060 79, 78, 80, 84, 88, 94, 100, 105, 108, 108, 108, 112, 114, 114, 112, 110, 108, 106, 104,
00061 101, 102, 102
00062 };
00063 const G4double G4ComponentBarNucleonNucleusXsc::he_p_in[44] =
00064 {
00065 0, 2, 3, 13, 30, 50, 65, 77, 90, 105, 115, 115, 100, 90, 86, 84, 84, 82, 80, 80, 80, 80,
00066 79, 78, 80, 84, 88, 94, 100, 105, 108, 108, 108, 112, 114, 114, 112, 110, 108, 106, 104,
00067 101, 102, 102
00068 };
00069
00070 const G4double G4ComponentBarNucleonNucleusXsc::be_m_t[44] =
00071 {
00072 1490, 1460, 1400, 1350, 1270, 1200, 1160, 1100, 1000, 910, 810, 740, 625, 575, 455, 406,
00073 365, 310, 275, 262, 255, 240, 235, 225, 225, 230, 238, 252, 270, 282, 288, 290, 294, 303,
00074 303, 300, 292, 284, 277, 267, 263, 264, 268, 268
00075 };
00076 const G4double G4ComponentBarNucleonNucleusXsc::be_m_in[44] =
00077 {
00078 650, 640, 617, 595, 555, 520, 495, 470, 430, 385, 350, 320, 270, 250, 210, 190, 185, 178,
00079 175, 175, 175, 175, 175, 170, 170, 172, 176, 184, 194, 200, 209, 213, 214, 216, 216, 212,
00080 210, 210, 210, 210, 210, 210, 210, 210
00081 };
00082 const G4double G4ComponentBarNucleonNucleusXsc::be_p_in[44] =
00083 {
00084 490, 540, 580, 545, 525, 495, 470, 450, 420, 370, 340, 310, 262, 242, 205, 185, 180, 175,
00085 172, 175, 175, 175, 175, 170, 170, 172, 176, 184, 194, 200, 209, 213, 214, 216, 216, 212,
00086 210, 210, 210, 210, 210, 210, 210, 210
00087 };
00088
00089 const G4double G4ComponentBarNucleonNucleusXsc::c_m_t[44] =
00090 {
00091 1240, 1370, 1450, 1455, 1445, 1385, 1345, 1290, 1210, 1110, 1020, 940, 800, 700, 604, 530,
00092 475, 396, 350, 336, 320, 303, 294, 280, 280, 286, 296, 314, 330, 344, 356, 360, 364, 384,
00093 388, 384, 364, 352, 344, 330, 324, 324, 332, 332
00094 };
00095 const G4double G4ComponentBarNucleonNucleusXsc::c_m_in[44] =
00096 {
00097 590, 570, 542, 510, 500, 460, 445, 430, 395, 380, 350, 330, 295, 270, 255, 240, 228, 222,
00098 216, 216, 210, 210, 210, 208, 210, 214, 216, 228, 240, 248, 254, 257, 260, 262, 260, 256,
00099 252, 252, 250, 250, 248, 248, 248, 248
00100 };
00101 const G4double G4ComponentBarNucleonNucleusXsc::c_p_in[44] =
00102 {
00103 310, 330, 400, 440, 450, 435, 430, 420, 385, 370, 340, 320, 288, 263, 249, 234, 222, 216,
00104 210, 211, 205, 208, 210, 208, 210, 214, 216, 228, 240, 248, 254, 257, 260, 262, 260, 256,
00105 252, 252, 250, 250, 248, 248, 248, 248
00106 };
00107
00108
00109
00110 const G4double G4ComponentBarNucleonNucleusXsc::e2[44] =
00111 {
00112 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,
00113 .08, 0.09, .1, .12, .14, .15, .16, .18, .20, .25, .30, .35, .4 , 0.5, 0.6, 0.7, 0.8,
00114 0.9, 1, 1.5, 2, 3, 5, 7, 10,
00115 20, 50, 100, 500, 1000
00116 };
00117
00118 const G4double G4ComponentBarNucleonNucleusXsc::n_m_t[44] =
00119 {
00120 1420,1480, 1537, 1550, 1525, 1500, 1480, 1425, 1340, 1260, 1175, 1090, 930, 805, 690, 612,
00121 552, 462, 402, 384, 372, 350, 345, 326, 324, 328, 336, 356, 372, 388, 400, 408, 415, 430,
00122 435, 432, 415, 402, 390, 375, 367, 370, 382, 385
00123 };
00124 const G4double G4ComponentBarNucleonNucleusXsc::n_m_in[44] =
00125 {
00126 680, 665, 625, 580, 562, 525, 510, 485, 450, 435, 410, 387, 340, 310, 290, 280, 276, 274,
00127 260, 258, 254, 247, 245, 240, 240, 244, 250, 260, 268, 275, 280, 285, 290, 295, 300, 294,
00128 292, 290, 285, 285, 282, 282, 282, 282
00129 };
00130 const G4double G4ComponentBarNucleonNucleusXsc::n_p_in[44] =
00131 {
00132 420, 440, 470, 490, 497, 500, 480, 462, 440, 425, 400, 377, 333, 303, 284, 274, 270, 268,
00133 254, 252, 247, 245, 245, 240, 240, 244, 250, 260, 268, 275, 280, 285, 290, 295, 300, 294,
00134 292, 290, 285, 285, 282, 282, 282, 282
00135 };
00136
00137 const G4double G4ComponentBarNucleonNucleusXsc::o_m_t[44] =
00138 {
00139 1520, 1570, 1630, 1660, 1647, 1623, 1595, 1555, 1475, 1395, 1290, 1207, 1035, 925, 816,
00140 720, 645, 540, 462, 438, 415, 392, 378, 362, 361, 381, 390, 403, 417, 440, 460, 470,
00141 479, 498, 504, 498, 477, 457, 443, 427, 420, 425, 429, 430
00142 };
00143 const G4double G4ComponentBarNucleonNucleusXsc::o_m_in[44] =
00144 {
00145 750, 740, 700, 650, 620, 575, 555, 530, 505, 462, 435, 420, 375, 345, 320, 310, 300, 293,
00146 288, 282, 282, 280, 276, 270, 271, 275, 280, 290, 295, 304, 310, 315, 318, 332, 335, 330,
00147 323, 320, 317, 315, 315, 315, 315, 315
00148 };
00149 const G4double G4ComponentBarNucleonNucleusXsc::o_p_in[44] =
00150 {
00151 460, 485, 510, 535, 537, 532, 520, 500, 460, 432, 405, 390, 350, 320, 310, 304, 293, 287,
00152 283, 279, 279, 278, 276, 270, 271, 275, 280, 290, 295, 304, 310, 315, 318, 332, 335, 330,
00153 323, 320, 317, 315, 315, 315, 315, 315
00154 };
00155
00156 const G4double G4ComponentBarNucleonNucleusXsc::na_m_t[44] =
00157 {
00158 1570, 1620, 1695, 1730, 1750, 1760, 1755, 1740, 1710, 1643, 1560, 1480, 1343, 1220, 1073,
00159 953, 860, 720, 618, 582, 546, 522, 504, 484, 492, 500, 512, 538, 560, 586, 608, 622, 632,
00160 660, 668, 664, 640, 616, 596, 568, 568, 568, 568, 568
00161 };
00162 const G4double G4ComponentBarNucleonNucleusXsc::na_m_in[44] =
00163 {
00164 960, 930, 890, 822, 790, 750, 725, 686, 620, 600, 575, 540, 497, 450, 414, 390, 380, 372,
00165 354, 360, 355, 354, 350, 350, 350, 356, 364, 384, 392, 400, 408, 410, 420, 408, 412, 420,
00166 411, 409, 407, 403, 400, 400, 400, 400
00167 };
00168 const G4double G4ComponentBarNucleonNucleusXsc::na_p_in[44] =
00169 {
00170 600, 617, 660, 675, 680, 680, 670, 650, 575, 550, 525, 490, 450, 420, 385, 367, 360, 350,
00171 350, 350, 345, 347, 350, 350, 350, 356, 364, 384, 392, 400, 408, 410, 420, 408, 412, 420,
00172 411, 409, 407, 403, 400, 400, 400, 400
00173 };
00174
00175
00176
00177 const G4double G4ComponentBarNucleonNucleusXsc::e3[45] =
00178 {
00179 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,
00180 .08, 0.09, .1, .12, .14, .15, .16, .18, .20, .25, .30, .35, 0.4, 0.5, 0.6,
00181 0.7, 0.8, 0.9, 1, 1.5, 2, 3, 5, 7, 10, 20, 50, 100, 500, 1000
00182 };
00183
00184 const G4double G4ComponentBarNucleonNucleusXsc::al_m_t[45] =
00185 {
00186 1735, 1750, 1760, 1795, 1830, 1855, 1885, 1895, 1900, 1870, 1835, 1785, 1710, 1522, 1350,
00187 1212, 1080, 972, 816, 720, 678, 642, 600, 567, 558, 560, 578, 592, 616, 644,
00188 672, 688, 708, 720, 736, 754, 736, 706, 680, 672, 646, 632, 632, 632, 632
00189 };
00190 const G4double G4ComponentBarNucleonNucleusXsc::al_m_in[45] =
00191 {
00192 1000, 990, 975, 950, 905, 875, 825, 800, 762, 690, 652, 610, 570, 495, 480,
00193 456, 444, 432, 420, 420, 420, 420, 410, 410, 400, 402, 404, 408, 424, 438,
00194 448, 450, 454, 456, 472, 480, 466, 456, 452, 448, 444, 440, 440, 440, 440
00195 };
00196 const G4double G4ComponentBarNucleonNucleusXsc::al_p_in[45] =
00197 {
00198 650, 682, 690, 715, 750, 762, 750, 740, 720, 655, 617, 575, 540, 470, 455,
00199
00200 432, 420, 408, 400, 403, 403, 408, 406, 404, 400, 402, 404, 408, 424, 438,
00201 448, 450, 454, 456, 472, 480, 466, 456, 452, 448, 444, 440, 440, 440, 440
00202 };
00203
00204 const G4double G4ComponentBarNucleonNucleusXsc::si_m_t[45] =
00205 {
00206 1810, 1833, 1850, 1872, 1920, 1950, 1995, 2020, 2035, 2000, 1930, 1850, 1760, 1570, 1400,
00207 1255, 1110, 1008, 846, 742, 696, 671, 623, 588, 584, 584, 602, 618, 645, 679,
00208 708, 727, 746, 757, 769, 782, 771, 734, 710, 698, 672, 654, 650, 650, 650
00209 };
00210 const G4double G4ComponentBarNucleonNucleusXsc::si_m_in[45] =
00211 {
00212 1060, 1035, 1015, 990, 935, 900, 860, 830, 790, 725, 665, 630, 600, 520, 504,
00213 486, 470, 456, 444, 432, 432, 432, 418, 418, 415, 412, 416, 422, 440, 460,
00214 472, 476, 479, 480, 492, 496, 488, 472, 472, 464, 460, 452, 448, 448, 448
00215 };
00216 const G4double G4ComponentBarNucleonNucleusXsc::si_p_in[45] =
00217 {
00218 670, 700, 725, 750, 780, 780, 770, 757, 735, 690, 635, 585, 570, 490, 475,
00219 460, 446, 431, 423, 425, 425, 425, 425, 422, 422, 412, 416, 422, 440, 460,
00220 472, 476, 479, 480, 492, 496, 488, 472, 472, 464, 460, 452, 448, 448, 448
00221 };
00222
00223 const G4double G4ComponentBarNucleonNucleusXsc::ca_m_t[45] =
00224 {
00225 2180, 2130, 2095, 2075, 2115, 2150, 2220, 2250, 2300, 2365, 2360, 2280, 2180, 2000,
00226 1805, 1650, 1500, 1340, 1140, 990, 940, 890, 825, 790, 770, 773, 787, 800, 830, 870,
00227 905, 930, 950, 965, 990, 1002, 990, 965, 945, 925, 892, 860, 860, 860, 860
00228 };
00229 const G4double G4ComponentBarNucleonNucleusXsc::ca_m_in[45] =
00230 {
00231 1240, 1225, 1200, 1180, 1125, 1090, 1045, 1020, 980, 925, 880, 825, 770, 680, 640,
00232 620, 615, 600, 580, 565, 560, 560, 560, 550, 535, 530, 540, 550, 570, 595, 610, 615,
00233 620, 622, 629, 630, 620, 612, 607, 592, 587, 580, 580, 580, 580
00234 };
00235 const G4double G4ComponentBarNucleonNucleusXsc::ca_p_in[45] =
00236 {
00237 770, 800, 823, 850, 900, 925, 935, 920, 895, 835, 800, 750, 715, 640, 605, 590, 588,
00238 573, 555, 543, 540, 540, 540, 535, 530, 530, 540, 550, 570, 595, 610, 615,
00239 620, 622, 629, 630, 620, 612, 607, 592, 587, 580, 580, 580, 580
00240 };
00241
00242
00243
00244 const G4double G4ComponentBarNucleonNucleusXsc::e4[47] =
00245 {
00246 0.014, 0.015, 0.017, .02, 0.022, 0.025, 0.027, 0.03, 0.033, 0.035, 0.037, .04, 0.045,
00247 0.05, 0.055, .06, 0.07, .08, 0.09, .1, .12, .14, .15, .16, .18, .20, .25, .30, .35,
00248 .4 , 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.5, 2, 3, 5, 7, 10,
00249 20, 50, 100, 500, 1000
00250 };
00251
00252 const G4double G4ComponentBarNucleonNucleusXsc::fe_m_t[47] =
00253 {
00254 2580, 2490, 2370, 2282, 2275, 2285, 2320, 2370, 2432, 2445, 2460, 2485, 2530, 2540,
00255 2517, 2480, 2290, 2110, 1940, 1790, 1510, 1290, 1220, 1150, 1070, 1030, 1013, 1020,
00256 1030, 1043, 1075, 1110, 1133, 1163, 1185, 1225, 1252, 1260, 1260, 1233, 1207, 1185,
00257 1140, 1110, 1110, 1110, 1110
00258 };
00259 const G4double G4ComponentBarNucleonNucleusXsc::fe_m_in[47] =
00260 {
00261 1440, 1433, 1390, 1325, 1280, 1260, 1215, 1180, 1140, 1110, 1080, 1040, 990, 955, 920,
00262 885, 835, 800, 780, 765, 750, 725, 720, 720, 710, 700, 700, 700, 712, 705, 735, 750,
00263 765, 775, 780, 795, 810, 813, 810, 784, 757, 743, 735, 720, 720, 720, 720
00264 };
00265 const G4double G4ComponentBarNucleonNucleusXsc::fe_p_in[47] =
00266 {
00267 900, 960, 1070, 1090, 1115, 1120, 1115, 1080, 1045, 1025, 1000, 960, 900, 885, 865, 790,
00268 765, 740, 720, 700, 697, 697, 697, 697, 695, 690, 688, 690, 712, 705, 735, 750,
00269 765, 775, 780, 795, 810, 813, 810, 784, 757, 743, 735, 720, 720, 720, 720
00270 };
00271
00272 const G4double G4ComponentBarNucleonNucleusXsc::cu_m_t[47] =
00273 {
00274 2920, 2800, 2615, 2480, 2455, 2430, 2440, 2460, 2500, 2530, 2560, 2615, 2690, 2720,
00275 2700, 2645, 2500, 2320, 2140, 1970, 1670, 1460, 1380, 1285, 1200, 1160, 1140, 1147,
00276 1163, 1170, 1200, 1237, 1265, 1285, 1305, 1328, 1375, 1390, 1395, 1370, 1335, 1315,
00277 1270, 1230, 1230, 1230, 1230
00278 };
00279 const G4double G4ComponentBarNucleonNucleusXsc::cu_m_in[47] =
00280 {
00281 1540, 1535, 1500, 1445, 1407, 1380, 1330, 1300, 1285, 1270, 1240, 1190, 1090, 1010,
00282 940, 920, 860, 835, 820, 810, 800, 780, 775, 770, 760, 760, 758, 765, 765, 770, 795,
00283 810, 825, 830, 840, 848, 870, 870, 868, 840, 825, 810, 803, 795, 795, 795, 795
00284 };
00285 const G4double G4ComponentBarNucleonNucleusXsc::cu_p_in[47] =
00286 {
00287 935, 1000, 1060, 1190, 1220, 1250, 1240, 1210, 1150, 1130, 1115, 1050, 985, 950, 890,
00288 870, 820, 800, 785, 780, 770, 750, 745, 740, 735, 735, 745, 760, 762, 770, 795,
00289 810, 825, 830, 840, 848, 870, 870, 868, 840, 825, 810, 803, 795, 795, 795, 795
00290 };
00291
00292 const G4double G4ComponentBarNucleonNucleusXsc::mo_m_t[47] =
00293 {
00294 4150, 4040, 3800, 3490, 3300, 3060, 2960, 2845, 2785, 2820, 2850, 2980, 3170, 3230,
00295 3270, 3280, 3225, 3075, 2895, 2710, 2355, 2060, 1925, 1800, 1630, 1560, 1540, 1550,
00296 1570, 1590, 1650, 1685, 1715, 1740, 1760, 1780, 1850, 1880, 1858, 1815, 1790, 1782,
00297 1720, 1690, 1690, 1690, 1690
00298 };
00299 const G4double G4ComponentBarNucleonNucleusXsc::mo_m_in[47] =
00300 {
00301 1790, 1775, 1740, 1680, 1640, 1580, 1550, 1510, 1460, 1440, 1418, 1380, 1330, 1280,
00302 1240, 1200, 1155, 1140, 1110, 1110, 1080, 1065, 1050, 1050, 1025, 1020, 1015, 1020,
00303 1022, 1026, 1060, 1085, 1100, 1110, 1120, 1127, 1150, 1160, 1140, 1100, 1085, 1080,
00304 1070, 1070, 1070, 1070, 1070
00305 };
00306 const G4double G4ComponentBarNucleonNucleusXsc::mo_p_in[47] =
00307 {
00308 1025, 1080, 1190, 1380, 1440, 1495, 1475, 1420, 1350, 1310, 1300, 1290, 1250, 1200,
00309 1170, 1130, 1095, 1060, 1040, 1022, 1020, 1016, 1016, 1016, 1016, 1012, 1005, 1005,
00310 1005, 1010, 1060, 1085, 1100, 1110, 1120, 1127, 1150, 1160, 1140, 1100, 1085, 1080,
00311 1070, 1070, 1070, 1070, 1070
00312 };
00313
00314
00315
00316 const G4double G4ComponentBarNucleonNucleusXsc::e5[48] =
00317 {
00318 0.014, 0.015, 0.017, 0.018, .02, 0.022, 0.025, 0.027, 0.03, 0.033, 0.035, .04,
00319 0.045, 0.05, 0.055, .06, .065, 0.07, .08, 0.09, .1, .12, .14, .15, .16, .18,
00320 .20, .25, .30, .35, .4 , 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.5, 2, 3, 5, 7, 10, 20,
00321 50, 100, 500, 1000
00322 };
00323
00324 const G4double G4ComponentBarNucleonNucleusXsc::cd_m_t[48] =
00325 {
00326 4420, 4280, 4170, 4070, 3860, 3680, 3420, 3280, 3125, 3060, 3080, 3190, 3350, 3445,
00327 3510, 3540, 3560, 3550, 3460, 3300, 3030, 2640, 2340, 2190, 2070, 1950, 1770, 1732,
00328 1740, 1760, 1780, 1832, 1885, 1925, 1945, 1960, 1980, 2070, 2080, 2065, 2040, 2022,
00329 1980, 1940, 1870, 1870, 1870, 1870
00330 };
00331 const G4double G4ComponentBarNucleonNucleusXsc::cd_m_in[48]=
00332 {
00333 1920, 1910, 1880, 1860, 1840, 1800, 1760, 1720, 1675, 1630, 1600, 1520, 1465, 1420,
00334 1390, 1340, 1310, 1280, 1275, 1235, 1225, 1200, 1170, 1170, 1170, 1165, 1145, 1140,
00335 1140, 1135, 1160, 1180, 1220, 1240, 1250, 1260, 1265, 1270, 1275, 1250, 1222, 1222,
00336 1220, 1215, 1190, 1190, 1190, 1190
00337 };
00338 const G4double G4ComponentBarNucleonNucleusXsc::cd_p_in[48] =
00339 {
00340 1020, 1100, 1225, 1290, 1440, 1520, 1575, 1560, 1518, 1460, 1420, 1400, 1365, 1340,
00341 1300, 1280, 1260, 1200, 1190, 1160, 1125, 1125, 1125, 1125, 1125, 1125, 1120, 1120,
00342 1120, 1118, 1146, 1180, 1220, 1240, 1250, 1260, 1265, 1270, 1275, 1250, 1222, 1222,
00343 1220, 1215, 1190, 1190, 1190, 1190
00344 };
00345
00346 const G4double G4ComponentBarNucleonNucleusXsc::sn_m_t[48] =
00347 {
00348 4420, 4400, 4260, 4150, 3980, 3770, 3530, 3370, 3245, 3180, 3170, 3260, 3400, 3500,
00349 3560, 3610, 3650, 3680, 3580, 3390, 3190, 2760, 2430, 2295, 2175, 1990, 1880, 1810,
00350 1820, 1840, 1865, 1940, 1985, 2020, 2040, 2060, 2080, 2160, 2185, 2180, 2110, 2105,
00351 2080, 2050, 1980, 1980, 1980, 1980
00352 };
00353 const G4double G4ComponentBarNucleonNucleusXsc::sn_m_in[48] =
00354 {
00355 1945, 1940, 1905, 1890, 1860, 1830, 1780, 1755, 1717, 1680, 1645, 1570, 1500, 1455,
00356 1410, 1370, 1340, 1320, 1290, 1285, 1260, 1240, 1235, 1212, 1200, 1200, 1200, 1190,
00357 1190, 1200, 1210, 1240, 1270, 1285, 1300, 1300, 1310, 1320, 1320, 1290, 1240, 1240,
00358 1240, 1240, 1240, 1240, 1240, 1240
00359 };
00360 const G4double G4ComponentBarNucleonNucleusXsc::sn_p_in[48] =
00361 {
00362 1020, 1080, 1270, 1335, 1465, 1505, 1610, 1610, 1550, 1535, 1500, 1440, 1407, 1370,
00363 1340, 1300, 1285, 1260, 1230, 1215, 1200, 1180, 1170, 1170, 1165, 1165, 1170, 1165,
00364 1165, 1183, 1195, 1240, 1270, 1285, 1300, 1300, 1310, 1320, 1320, 1290, 1240, 1240,
00365 1240, 1240, 1240, 1240, 1240, 1240
00366 };
00367
00368 const G4double G4ComponentBarNucleonNucleusXsc::w_m_t[48] =
00369 {
00370 5320, 5430, 5480, 5450, 5330, 5190, 4960, 4790, 4550, 4340, 4200, 4070, 4000, 4030,
00371 4125, 4220, 4270, 4390, 4440, 4360, 4200, 3800, 3380, 3200, 3040, 2790, 2660, 2575,
00372 2575, 2600, 2640, 2690, 2755, 2790, 2812, 2837, 2850, 2950, 3000, 2970, 2940, 2910,
00373 2880, 2820, 2730, 2730, 2730, 2730
00374 };
00375 const G4double G4ComponentBarNucleonNucleusXsc::w_m_in[48] =
00376 {
00377 2440, 2400, 2370, 2350, 2310, 2270, 2220, 2195, 2150, 2100, 2070, 2010, 1945, 1900,
00378 1850, 1820, 1780, 1760, 1730, 1720, 1680, 1680, 1660, 1660, 1650, 1650, 1640, 1640,
00379 1612, 1615, 1625, 1640, 1700, 1720, 1730, 1740, 1750, 1780, 1780, 1750, 1740, 1735,
00380 1710, 1695, 1680, 1680, 1680, 1680
00381 };
00382 const G4double G4ComponentBarNucleonNucleusXsc::w_p_in[48] =
00383 {
00384 950, 1020, 1240, 1400, 1560, 1670, 1760, 1830, 1850, 1855, 1870, 1840, 1800, 1770,
00385 1740, 1715, 1680, 1670, 1650, 1620, 1610, 1600, 1600, 1600, 1600, 1600, 1600, 1595,
00386 1585, 1595, 1615, 1640, 1700, 1720, 1730, 1740, 1750, 1780, 1780, 1750, 1740, 1735,
00387 1710, 1695, 1680, 1680, 1680, 1680
00388 };
00389
00390
00391
00392 const G4double G4ComponentBarNucleonNucleusXsc::e6[46] =
00393 {
00394 0.014, 0.015, 0.017, 0.019, 0.02, 0.022, 0.025, 0.027, 0.03, 0.035,
00395 0.04, 0.045, 0.05, 0.055, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12,
00396 0.14, 0.15, 0.16, 0.18, 0.20, 0.25, 0.30, 0.35, 0.4 , 0.5,
00397 0.6, 0.7, 0.8, 0.9, 1.0, 1.5, 2.0, 3.0, 5.0, 7.0,
00398 10.0, 20.0, 50.0, 100.0, 500.0, 1000.0
00399 };
00400
00401 const G4double G4ComponentBarNucleonNucleusXsc::pb_m_t[46] =
00402 {
00403 5300, 5440, 5720, 5880, 5765, 5745, 5480, 5280, 4970, 4550, 4390, 4300, 4265, 4325,
00404 4450, 4540, 4740, 4710, 4600, 4100, 3660, 3480, 3300, 3000, 2890, 2865, 2855, 2850,
00405 2865, 2920, 2955, 3000, 3030, 3060, 3105, 3240, 3290, 3270, 3240, 3180, 3090, 3060,
00406 2970, 2970, 2970, 2970
00407
00408 };
00409 const G4double G4ComponentBarNucleonNucleusXsc::pb_m_in[46] =
00410 {
00411 2580, 2550, 2505, 2462, 2460, 2435, 2380, 2355, 2280, 2180, 2170, 2130, 2080, 2035,
00412 1980, 1940, 1900, 1870, 1840, 1800, 1800, 1800, 1780, 1760, 1760, 1740, 1730, 1725,
00413 1740, 1785, 1815, 1835, 1860, 1890, 1895, 1920, 1920, 1890, 1850, 1835, 1830, 1830,
00414 1830, 1830, 1830, 1830
00415 };
00416 const G4double G4ComponentBarNucleonNucleusXsc::pb_p_in[46] =
00417 {
00418 900, 1060, 1200, 1420, 1515, 1620, 1750, 1800, 1915, 2030, 1960, 1940, 1910, 1860,
00419 1840, 1780, 1770, 1760, 1740, 1720, 1725, 1740, 1740, 1730, 1720, 1700, 1710, 1720,
00420 1730, 1740, 1815, 1835, 1860, 1890, 1895, 1920, 1920, 1890, 1850, 1835, 1830, 1830,
00421 1830, 1830, 1830, 1830
00422 };
00423
00424 const G4double G4ComponentBarNucleonNucleusXsc::u_m_t[46] =
00425 {
00426 5800, 5940, 6160, 6345, 6360, 6350, 6170, 6020, 5760, 5350, 4990, 4800, 4710, 4690,
00427 4760, 5040, 5190, 5200, 5080, 4600, 4120, 3920, 3720, 3420, 3240, 3150, 3160, 3180,
00428 3210, 3240, 3280, 3350, 3390, 3435, 3480, 3560, 3585, 3580, 3540, 3500, 3470, 3410,
00429 3335, 3335, 3335, 3335
00430 };
00431 const G4double G4ComponentBarNucleonNucleusXsc::u_m_in[46] =
00432 {
00433 2820, 2770, 2700, 2660, 2645, 2620, 2580, 2550, 2515, 2450, 2390, 2320, 2260, 2225,
00434 2200, 2140, 2080, 2060, 2040, 2000, 1980, 1965, 1960, 1930, 1920, 1890, 1905, 1920,
00435 1945, 1970, 1985, 2010, 2040, 2070, 2080, 2090, 2095, 2080, 2063, 2060, 2050, 2040,
00436 2005, 2005, 2005, 2005
00437 };
00438 const G4double G4ComponentBarNucleonNucleusXsc::u_p_in[46] =
00439 {
00440 800, 900, 1100, 1300, 1410, 1510, 1680, 1800, 2000, 2200, 2080, 2060, 2035, 2100,
00441 2030, 2030, 2000, 1960, 1960, 1960, 1940, 1925, 1920, 1905, 1890, 1860, 1880, 1910,
00442 1930, 1945, 1985, 2010, 2040, 2070, 2080, 2090, 2095, 2080, 2063, 2060, 2050, 2040,
00443 2005, 2005, 2005, 2005
00444 };
00445
00446 using namespace std;
00447
00449
00450 G4ComponentBarNucleonNucleusXsc::G4ComponentBarNucleonNucleusXsc()
00451 : G4VComponentCrossSection("G4ComponentBarNucleonNucleusXsc"),
00452 fTotalXsc(0.0), fInelasticXsc(0.0), fElasticXsc(0.0)
00453 {
00454 theNeutron = G4Neutron::Neutron();
00455 theProton = G4Proton::Proton();
00456
00457
00458
00459 thePimData.push_back(new G4PiData(he_m_t, he_m_in, e1, 44));
00460 thePipData.push_back(new G4PiData(he_m_t, he_p_in, e1, 44));
00461
00462 thePimData.push_back(new G4PiData(be_m_t, be_m_in, e1, 44));
00463 thePipData.push_back(new G4PiData(be_m_t, be_p_in, e1, 44));
00464
00465 thePimData.push_back(new G4PiData(c_m_t, c_m_in, e1, 44));
00466 thePipData.push_back(new G4PiData(c_m_t, c_p_in, e1, 44));
00467
00468
00469
00470 thePimData.push_back(new G4PiData(n_m_t, n_m_in, e2, 44));
00471 thePipData.push_back(new G4PiData(n_m_t, n_p_in, e2, 44));
00472
00473 thePimData.push_back(new G4PiData(o_m_t, o_m_in, e2, 44));
00474 thePipData.push_back(new G4PiData(o_m_t, o_p_in, e2, 44));
00475
00476 thePimData.push_back(new G4PiData(na_m_t, na_m_in, e2, 44));
00477 thePipData.push_back(new G4PiData(na_m_t, na_p_in, e2, 44));
00478
00479
00480
00481 thePimData.push_back(new G4PiData(al_m_t, al_m_in, e3, 45));
00482 thePipData.push_back(new G4PiData(al_m_t, al_p_in, e3, 45));
00483
00484 thePimData.push_back(new G4PiData(si_m_t, si_m_in, e3, 45));
00485 thePipData.push_back(new G4PiData(si_m_t, si_p_in, e3, 45));
00486
00487 thePimData.push_back(new G4PiData(ca_m_t, ca_m_in, e3, 45));
00488 thePipData.push_back(new G4PiData(ca_m_t, ca_p_in, e3, 45));
00489
00490
00491
00492 thePimData.push_back(new G4PiData(fe_m_t, fe_m_in, e4, 47));
00493 thePipData.push_back(new G4PiData(fe_m_t, fe_p_in, e4, 47));
00494
00495 thePimData.push_back(new G4PiData(cu_m_t, cu_m_in, e4, 47));
00496 thePipData.push_back(new G4PiData(cu_m_t, cu_p_in, e4, 47));
00497
00498 thePimData.push_back(new G4PiData(mo_m_t, mo_m_in, e4, 47));
00499 thePipData.push_back(new G4PiData(mo_m_t, mo_p_in, e4, 47));
00500
00501
00502
00503 thePimData.push_back(new G4PiData(cd_m_t, cd_m_in, e5, 48));
00504 thePipData.push_back(new G4PiData(cd_m_t, cd_p_in, e5, 48));
00505
00506 thePimData.push_back(new G4PiData(sn_m_t, sn_m_in, e5, 48));
00507 thePipData.push_back(new G4PiData(sn_m_t, sn_p_in, e5, 48));
00508
00509 thePimData.push_back(new G4PiData(w_m_t, w_m_in, e5, 48));
00510 thePipData.push_back(new G4PiData(w_m_t, w_p_in, e5, 48));
00511
00512
00513
00514 thePimData.push_back(new G4PiData(pb_m_t, pb_m_in, e6, 46));
00515 thePipData.push_back(new G4PiData(pb_m_t, pb_p_in, e6, 46));
00516
00517 thePimData.push_back(new G4PiData(u_m_t, u_m_in, e6, 46));
00518 thePipData.push_back(new G4PiData(u_m_t, u_p_in, e6, 46));
00519
00520 theZ.push_back(2);
00521 theZ.push_back(4);
00522 theZ.push_back(6);
00523 theZ.push_back(7);
00524 theZ.push_back(8);
00525 theZ.push_back(11);
00526 theZ.push_back(13);
00527 theZ.push_back(14);
00528 theZ.push_back(20);
00529 theZ.push_back(26);
00530 theZ.push_back(29);
00531 theZ.push_back(42);
00532 theZ.push_back(48);
00533 theZ.push_back(50);
00534 theZ.push_back(74);
00535 theZ.push_back(82);
00536 theZ.push_back(92);
00537
00538 }
00539
00541
00542
00543 G4ComponentBarNucleonNucleusXsc::~G4ComponentBarNucleonNucleusXsc()
00544 {
00545 std::for_each(thePimData.begin(), thePimData.end(), G4PiData::Delete());
00546 std::for_each(thePipData.begin(), thePipData.end(), G4PiData::Delete());
00547 }
00548
00550
00551 G4double G4ComponentBarNucleonNucleusXsc::GetTotalIsotopeCrossSection(const G4ParticleDefinition* aParticle,
00552 G4double kinEnergy,
00553 G4int Z, G4int)
00554 {
00555 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
00556 kinEnergy);
00557 fInelasticXsc = GetElementCrossSection(aDP, Z);
00558 delete aDP;
00559
00560 return fTotalXsc;
00561 }
00562
00564
00565 G4double G4ComponentBarNucleonNucleusXsc::GetTotalElementCrossSection(const G4ParticleDefinition* aParticle,
00566 G4double kinEnergy,
00567 G4int Z, G4double)
00568 {
00569 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
00570 kinEnergy);
00571 fInelasticXsc = GetElementCrossSection(aDP, Z);
00572 delete aDP;
00573
00574 return fTotalXsc;
00575 }
00576
00578
00579 G4double G4ComponentBarNucleonNucleusXsc::GetInelasticIsotopeCrossSection(const G4ParticleDefinition* aParticle,
00580 G4double kinEnergy,
00581 G4int Z, G4int )
00582 {
00583 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
00584 kinEnergy);
00585 fInelasticXsc = GetElementCrossSection(aDP, Z);
00586 delete aDP;
00587
00588 return fInelasticXsc;
00589 }
00590
00592
00593 G4double G4ComponentBarNucleonNucleusXsc::GetInelasticElementCrossSection(const G4ParticleDefinition* aParticle,
00594 G4double kinEnergy,
00595 G4int Z, G4double )
00596 {
00597 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
00598 kinEnergy);
00599 fInelasticXsc = GetElementCrossSection(aDP, Z);
00600 delete aDP;
00601
00602 return fInelasticXsc;
00603 }
00604
00606
00607 G4double G4ComponentBarNucleonNucleusXsc::GetElasticElementCrossSection(const G4ParticleDefinition* aParticle,
00608 G4double kinEnergy,
00609 G4int Z, G4double )
00610 {
00611 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
00612 kinEnergy);
00613 fInelasticXsc = GetElementCrossSection(aDP, Z);
00614 delete aDP;
00615
00616 return fElasticXsc;
00617 }
00618
00620
00621 G4double G4ComponentBarNucleonNucleusXsc::GetElasticIsotopeCrossSection(const G4ParticleDefinition* aParticle,
00622 G4double kinEnergy,
00623 G4int Z, G4int )
00624 {
00625 G4DynamicParticle* aDP = new G4DynamicParticle(aParticle,G4ParticleMomentum(1.,0.,0.),
00626 kinEnergy);
00627 fInelasticXsc = GetElementCrossSection(aDP, Z);
00628 delete aDP;
00629
00630 return fElasticXsc;
00631 }
00632
00633
00634
00636
00637
00638 G4bool
00639 G4ComponentBarNucleonNucleusXsc::IsElementApplicable(const G4DynamicParticle* aParticle,
00640 G4int Z)
00641 {
00642 G4bool result = false;
00643 if(aParticle->GetDefinition() == theNeutron ) result = true;
00644 if(aParticle->GetDefinition() == theProton) result = true;
00645 if(Z < 2) result = false;
00646 if(aParticle->GetKineticEnergy() > 999.9*GeV) result = false;
00647 return result;
00648 }
00649
00651
00652
00653
00654 G4double
00655 G4ComponentBarNucleonNucleusXsc::GetElementCrossSection(const G4DynamicParticle* aParticle,
00656 G4int Z)
00657 {
00658 G4double kineticEnergy = aParticle->GetKineticEnergy();
00659
00660 G4double result = 0;
00661
00662
00663 size_t it = 0;
00664 size_t itmax = theZ.size() - 1;
00665 for(; it <= itmax; ++it) { if(Z <= theZ[it]) { break; } }
00666 if( it > itmax ) { it = itmax; }
00667 G4int Z1, Z2;
00668 G4double x1, x2, xt1, xt2;
00669
00670 std::vector<G4PiData *> * theData = &thePimData;
00671 if(aParticle->GetDefinition() == theProton) { theData = &thePipData; }
00672
00673 if( theZ[it] == Z )
00674 {
00675 result = (*theData)[it]->ReactionXSection(kineticEnergy);
00676 fTotalXsc = (*theData)[it]->TotalXSection(kineticEnergy);
00677 }
00678 else
00679 {
00680 if(0 == it) { it = 1; }
00681 x1 = (*theData)[it-1]->ReactionXSection(kineticEnergy);
00682 xt1 = (*theData)[it-1]->TotalXSection(kineticEnergy);
00683 Z1 = theZ[it-1];
00684 x2 = (*theData)[it]->ReactionXSection(kineticEnergy);
00685 xt2 = (*theData)[it]->TotalXSection(kineticEnergy);
00686 Z2 = theZ[it];
00687
00688 result = Interpolate(Z1, Z2, Z, x1, x2);
00689 fTotalXsc = Interpolate(Z1, Z2, Z, xt1, xt2);
00690 }
00691
00692 fElasticXsc = fTotalXsc - result;
00693 if( fElasticXsc < 0.) { fElasticXsc = 0.; }
00694
00695 return result;
00696 }
00697
00699
00700
00701 G4double G4ComponentBarNucleonNucleusXsc::
00702 Interpolate(G4int Z1, G4int Z2, G4int Z, G4double x1, G4double x2)
00703 {
00704
00705
00706 static G4double alpha = 2./3.;
00707
00708 static const G4double A[92] =
00709 {
00710 1.0001, 4.0000, 6.9241, 9.0000, 10.801, 12.011, 14.004, 16.004, 19.000, 20.188,
00711 23.000, 24.320, 27.000, 28.109, 31.000, 32.094, 35.484, 39.985, 39.135, 40.116,
00712 45.000, 47.918, 50.998, 52.055, 55.000, 55.910, 59.000, 58.760, 63.617, 65.468,
00713 69.798, 72.691, 75.000, 79.042, 79.986, 83.887, 85.557, 87.710, 89.000, 91.318,
00714 93.000, 96.025, 98.000, 101.16, 103.00, 106.51, 107.96, 112.51, 114.91, 118.81,
00715 121.86, 127.70, 127.00, 131.39, 133.00, 137.42, 139.00, 140.21, 141.00, 144.32,
00716 145.00, 150.45, 152.04, 157.33, 159.00, 162.57, 165.00, 167.32, 169.00, 173.10,
00717 175.03, 178.54, 181.00, 183.89, 186.25, 190.27, 192.25, 195.11, 197.00, 200.63,
00718 204.41, 207.24, 209.00, 209.00, 210.00, 222.00, 223.00, 226.00, 227.00, 232.00,
00719 231.00, 237.98
00720 };
00721 static G4bool NeedInit = true;
00722
00723 static G4double A75[92];
00724
00725 if ( NeedInit )
00726 {
00727 for (G4int i=0; i<92; ++i)
00728 {
00729 A75[i] = std::pow(A[i], alpha);
00730 }
00731 NeedInit=false;
00732 }
00733
00734
00735 G4double r1 = x1 / A75[Z1-1] * A75[Z-1];
00736 G4double r2 = x2 / A75[Z2-1] * A75[Z-1];
00737 G4double result = 0.5*(r1+r2);
00738
00739
00740 if(Z1 != Z2) {
00741 G4double alp1 = (A[Z-1] - A[Z1-1]);
00742 G4double alp2 = (A[Z2-1] - A[Z-1]);
00743 result = (r1*alp2 + r2*alp1)/(alp1 + alp2);
00744 }
00745
00746
00747 return result;
00748 }
00749
00750 void
00751 G4ComponentBarNucleonNucleusXsc::CrossSectionDescription(std::ostream& outFile) const
00752 {
00753 outFile << "G4ComponentBarNucleonNucleusXsc is a variant of the Barashenkov\n"
00754 << "cross section parameterization to be used of protons and\n"
00755 << "nucleons on targets heavier than hydrogen. It is intended for\n"
00756 << "use as a cross section component and is currently used by\n"
00757 << "G4BGGNucleonInelasticXS. It is valid for incident energies up\n"
00758 << "to 1 TeV.\n";
00759 }
00760