#include <G4UPiNuclearCrossSection.hh>
Inheritance diagram for G4UPiNuclearCrossSection:
Public Member Functions | |
G4UPiNuclearCrossSection () | |
virtual | ~G4UPiNuclearCrossSection () |
virtual G4bool | IsElementApplicable (const G4DynamicParticle *aParticle, G4int Z, const G4Material *) |
G4double | GetElasticCrossSection (const G4DynamicParticle *aParticle, G4int Z, G4int A) |
G4double | GetInelasticCrossSection (const G4DynamicParticle *aParticle, G4int Z, G4int A) |
void | BuildPhysicsTable (const G4ParticleDefinition &) |
void | DumpPhysicsTable (const G4ParticleDefinition &) |
virtual void | CrossSectionDescription (std::ostream &) const |
Definition at line 47 of file G4UPiNuclearCrossSection.hh.
G4UPiNuclearCrossSection::G4UPiNuclearCrossSection | ( | ) |
Definition at line 47 of file G4UPiNuclearCrossSection.cc.
References G4NistManager::GetAtomicMassAmu(), G4NistManager::Instance(), G4PionMinus::PionMinus(), and G4PionPlus::PionPlus().
00048 : G4VCrossSectionDataSet("G4UPiNuclearCrossSection") 00049 { 00050 isInitialized = false; 00051 piPlusElastic = piPlusInelastic = piMinusElastic = piMinusInelastic = 0; 00052 piPlus = G4PionPlus::PionPlus(); 00053 piMinus = G4PionMinus::PionMinus(); 00054 00055 NZ = 16; 00056 aPower = 0.75; 00057 elow = 20.0*MeV; 00058 elowest = MeV; 00059 G4NistManager* nist = G4NistManager::Instance(); 00060 for(G4int i=1; i<93; ++i) { 00061 APower[i] = std::pow(nist->GetAtomicMassAmu(i),aPower); 00062 } 00063 }
G4UPiNuclearCrossSection::~G4UPiNuclearCrossSection | ( | ) | [virtual] |
Definition at line 65 of file G4UPiNuclearCrossSection.cc.
References G4PhysicsTable::clearAndDestroy().
00066 { 00067 if(piPlusElastic) { 00068 piPlusElastic->clearAndDestroy(); 00069 delete piPlusElastic; 00070 piPlusElastic = 0; 00071 } 00072 if(piPlusInelastic) { 00073 piPlusInelastic->clearAndDestroy(); 00074 delete piPlusInelastic; 00075 piPlusInelastic = 0; 00076 } 00077 if(piMinusElastic) { 00078 piMinusElastic->clearAndDestroy(); 00079 delete piMinusElastic; 00080 piMinusElastic = 0; 00081 } 00082 if(piMinusInelastic) { 00083 piMinusInelastic->clearAndDestroy(); 00084 delete piMinusInelastic; 00085 piMinusInelastic = 0; 00086 } 00087 }
void G4UPiNuclearCrossSection::BuildPhysicsTable | ( | const G4ParticleDefinition & | ) | [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 208 of file G4UPiNuclearCrossSection.cc.
References G4NistManager::GetAtomicMassAmu(), and G4NistManager::Instance().
Referenced by G4BGGPionInelasticXS::BuildPhysicsTable(), and G4BGGPionElasticXS::BuildPhysicsTable().
00209 { 00210 if(isInitialized) { return; } 00211 if(&p != piPlus && &p != piMinus) { 00212 throw G4HadronicException(__FILE__, __LINE__,"Is applicable only for pions"); 00213 return; 00214 } 00215 isInitialized = true; 00216 00217 const G4int n = 16; 00218 const G4int iz[n] = {2,4,6,7,8,11,13,20,26,29,42,48,50,74,82,92}; 00219 NZ = n; 00220 theZ.reserve(n); 00221 theA.reserve(n); 00222 00223 G4NistManager* nist = G4NistManager::Instance(); 00224 G4int i; 00225 for(i=0; i<n; ++i) { 00226 theZ.push_back(iz[i]); 00227 theA.push_back(nist->GetAtomicMassAmu(iz[i])); 00228 } 00229 00230 piPlusElastic = new G4PhysicsTable(); 00231 piPlusInelastic = new G4PhysicsTable(); 00232 piMinusElastic = new G4PhysicsTable(); 00233 piMinusInelastic = new G4PhysicsTable(); 00234 00235 const G4double e1[38] = { 00236 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.13, 0.14, 0.15, 0.16, 00237 0.17, 0.18, 0.19, 0.2, 0.22,0.24, 0.26, 0.28, 0.3, 0.35, 00238 0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1, 2, 00239 3, 5, 10, 20, 50, 100, 500, 1000}; 00240 const G4double e2[39] = { 00241 0.02, 0.04, 0.06, 0.08, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 00242 0.16, 0.17, 0.18, 0.2, 0.22, 0.24, 0.26, 0.28, 0.3, 0.35, 00243 0.4, 0.45, 0.5, 0.55, 0.575,0.6, 0.7, 0.8, 0.9, 1, 00244 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 00245 const G4double e3[31] = { 00246 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 00247 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8, 00248 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 00249 const G4double e4[32] = { 00250 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 00251 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 00252 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 00253 const G4double e5[34] = { 00254 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14, 00255 0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 00256 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 00257 const G4double e6[35] = { 00258 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14, 00259 0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 00260 0.55, 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 00261 00262 const G4double he_t[38] = { 00263 40, 70, 108, 152, 208, 276, 300, 320, 329, 333, 00264 332, 328, 322, 310, 288, 260, 240, 216, 196, 144, 00265 125, 112, 108.5, 109, 110.5, 117, 123, 128.5, 135, 110, 00266 96, 87, 85, 83.5, 83.5, 83.5, 83.5, 83.5}; 00267 const G4double he_in[38] = { 00268 18, 38, 62, 98, 136, 176, 190, 200, 209, 212, 00269 212, 208, 204, 196, 176, 164, 150, 134, 124, 97.5, 00270 90, 85,82.5, 83.5, 86.5, 93, 97.5,100, 102, 83, 00271 77, 75, 74, 72.5, 72.5, 72.5, 72.5, 72.5}; 00272 const G4double be_m_t[38] = { 00273 150, 210, 294, 396, 520, 600, 623, 635, 642, 640, 00274 630, 615, 600, 576, 540, 504, 470, 435, 400, 340, 00275 294, 258, 236, 230, 233, 244, 257, 270, 276, 250, 00276 230, 215, 205, 194, 188, 186, 186, 186}; 00277 const G4double be_m_in[38] = { 00278 90, 126, 177, 240, 320, 380, 400, 410, 414, 410, 00279 400, 387, 371, 360, 333, 312, 285, 260, 237, 216, 00280 198, 187, 182, 180, 182, 187, 193, 203, 207, 179, 00281 172, 165, 159, 155, 144, 144, 144, 144}; 00282 const G4double be_p_t[38] = { 00283 96, 150, 222, 320, 430, 514, 545, 565, 574, 574, 00284 564, 552, 535, 522, 490, 462, 432, 398, 367, 314, 00285 276, 248, 232, 230, 233, 244, 257, 270, 276, 250, 00286 230, 215, 205, 194, 188, 186, 186, 186}; 00287 const G4double be_p_in[38] = { 00288 60, 95, 142, 194, 262, 319, 345, 361, 364, 364, 00289 354, 350, 330, 319, 298, 280, 258, 237, 216, 200, 00290 189, 183, 182, 180, 182, 187, 193, 203, 207, 179, 00291 172, 165, 159, 155, 144, 144, 144, 144}; 00292 00293 const G4double c_m_t[39] = { 00294 204, 260, 366, 517, 630, 673, 694, 704, 710, 711, 00295 706, 694, 676, 648, 616, 584, 548, 518, 489, 426, 00296 376, 342, 323, 310, 312, 313, 319, 333, 342, 348, 00297 310, 290, 268, 250, 245, 237, 234, 234, 234}; 00298 const G4double c_m_in[39] = { 00299 128, 160, 224, 315, 388, 416, 430, 438, 444, 445, 00300 440, 432, 416, 400, 380, 354, 320, 304, 288, 264, 00301 246, 240, 233, 232, 233, 234, 238, 246, 252, 256, 00302 220, 210, 198, 187, 183, 176, 174, 174, 174}; 00303 const G4double c_p_t[39] = { 00304 140, 192, 294, 428, 594, 642, 662, 687, 685, 688, 00305 684, 672, 656, 630, 598, 567, 533, 504, 474, 416, 00306 369, 336, 319, 310, 312, 313, 319, 333, 342, 348, 00307 310, 290, 268, 250, 245, 237, 234, 234, 234}; 00308 const G4double c_p_in[39] = { 00309 94, 132, 184, 260, 370, 398, 408, 420, 426, 428, 00310 424, 416, 400, 386, 366, 340, 308, 294, 280, 257, 00311 241, 236, 231, 232, 233, 234, 238, 246, 252, 256, 00312 220, 210, 198, 187, 183, 176, 174, 174, 174}; 00313 const G4double n_m_t[39] = { 00314 246, 308, 424, 590, 729, 776, 800, 821, 822, 817, 00315 800, 778, 768, 728, 690, 654, 615, 584, 556, 480, 00316 430, 393, 373, 367, 368, 370, 375, 388, 390, 397, 00317 364, 337, 310, 291, 275, 268, 268, 268, 268}; 00318 const G4double n_m_in[39] = { 00319 155, 188, 256, 360, 456, 492, 512, 526, 526, 520, 00320 504, 491, 475, 450, 425, 396, 376, 360, 340, 300, 00321 282, 270, 265, 265, 266, 268, 273, 280, 288, 288, 00322 256, 237, 226, 218, 208, 202, 202, 202, 202}; 00323 const G4double n_p_t[39] = { 00324 150, 212, 328, 500, 680, 735, 762, 781, 782, 779, 00325 770, 748, 740, 706, 672, 633, 600, 569, 541, 467, 00326 419, 385, 368, 364, 366, 368, 375, 388, 390, 397, 00327 364, 337, 310, 291, 275, 268, 268, 268, 268}; 00328 const G4double n_p_in[39] = { 00329 90, 140, 208, 300, 426, 467, 490, 504, 504, 500, 00330 484, 474, 460, 437, 413, 381, 365, 350, 330, 292, 00331 276, 267, 263, 264, 265, 267, 273, 280, 288, 288, 00332 256, 237, 226, 218, 208, 202, 202, 202, 202}; 00333 00334 const G4double o_m_t[31] = { 00335 280, 360, 500, 685, 812, 861, 870, 865, 835, 800, 00336 755, 700, 600, 537, 493, 468, 441, 436, 443, 449, 00337 460, 463, 432, 385, 350, 325, 312, 307, 303, 303, 303}; 00338 const G4double o_m_in[31] = { 00339 190, 207, 300, 420, 500, 540, 550, 542, 520, 490, 00340 460, 423, 360, 339, 321, 314, 312, 314, 319, 324, 00341 328, 330, 300, 275, 250, 240, 229, 225, 222, 222, 222}; 00342 const G4double o_p_t[31] = { 00343 170, 240, 390, 570, 740, 818, 830, 822, 800, 765, 00344 725, 675, 585, 525, 483, 458, 444, 447, 453, 449, 00345 460, 463, 432, 385, 350, 325, 312, 307, 303, 303, 303}; 00346 const G4double o_p_in[31] = { 00347 100, 145, 240, 340, 470, 518, 530, 522, 505, 477, 00348 448, 412, 350, 330, 316, 310, 308, 311, 317, 324, 00349 328, 330, 300, 275, 250, 240, 229, 225, 222, 222, 222}; 00350 const G4double na_m_t[31] = { 00351 450, 545, 705, 910, 1020, 1075, 1087, 1080, 1042, 987, 00352 943, 885, 790, 700, 650, 610, 585, 575, 585, 595, 00353 600, 610, 556, 524, 494, 458, 445, 429, 427, 427, 427}; 00354 const G4double na_m_in[31] = { 00355 275, 315, 413, 545, 620, 660, 670, 662, 630, 593, 00356 570, 520, 465, 420, 410, 395, 390, 400, 410, 418, 00357 420, 422, 372, 348, 330, 320, 310, 294, 292, 292, 292}; 00358 const G4double na_p_t[31] = { 00359 210, 320, 530, 795, 960, 1035, 1050, 1040, 1007, 957, 00360 918, 865, 773, 685, 636, 598, 575, 565, 578, 590, 00361 598, 610, 556, 524, 494, 458, 445, 429, 427, 427, 427}; 00362 const G4double na_p_in[31] = { 00363 115, 210, 340, 495, 585, 630, 645, 637, 605, 572, 00364 550, 505, 455, 410, 401, 388, 383, 393, 405, 414, 00365 418, 422, 372, 348, 330, 320, 310, 294, 292, 292, 292}; 00366 const G4double al_m_t[31] = { 00367 532, 637, 832, 1057, 1207, 1230, 1210, 1174, 1133, 1095, 00368 1038, 970, 890, 807, 750, 710, 675, 665, 670, 673, 00369 678, 682, 618, 574, 546, 520, 507, 495, 488, 488, 488}; 00370 const G4double al_m_in[31] = { 00371 300, 360, 495, 665, 750, 765, 750, 730, 700, 660, 00372 615, 570, 520, 490, 470, 450, 448, 450, 450, 452, 00373 456, 460, 408, 392, 376, 356, 347, 338, 332, 332, 332}; 00374 const G4double al_p_t[31] = { 00375 225, 350, 616, 945, 1122, 1175, 1157, 1128, 1088, 1045, 00376 988, 935, 870, 787, 730, 690, 660, 652, 660, 668, 00377 678, 682, 618, 574, 546, 520, 507, 495, 488, 488, 488}; 00378 const G4double al_p_in[31] = { 00379 120, 238, 390, 610, 712, 735, 720, 703, 655, 635, 00380 590, 550, 505, 475, 455, 438, 440, 445, 445, 450, 00381 456, 460, 408, 392, 376, 356, 347, 338, 332, 332, 332}; 00382 00383 const G4double ca_m_t[31] = { 00384 800, 980, 1240, 1460, 1570, 1600, 1580, 1535, 1475, 1425, 00385 1375,1295, 1200, 1083, 1000, 948, 915, 895, 900, 908, 00386 915, 922, 856, 795, 740, 705, 682, 660, 660, 660, 660}; 00387 const G4double ca_m_in[31] = { 00388 470, 550, 620, 860, 955, 960, 920, 860, 820, 780, 00389 740, 665, 637, 615, 600, 590, 580, 580, 600, 608, 00390 610, 615, 550, 525, 510, 488, 470, 450, 450, 450, 450}; 00391 const G4double ca_p_t[31] = { 00392 275, 445, 790, 1195, 1440, 1485, 1475, 1435, 1385, 1335, 00393 1295,1245,1160, 1050, 970, 923, 895, 877, 887, 897, 00394 904, 913, 855, 795, 740, 705, 682, 660, 660, 660, 660}; 00395 const G4double ca_p_in[31] = { 00396 160, 315, 500, 745, 870, 905, 900, 860, 810, 770, 00397 740, 710, 640, 617, 595, 585, 575, 575, 590, 600, 00398 602, 608, 550, 525, 510, 488, 470, 450, 450, 450, 450}; 00399 // ca data may have typo 00400 00401 const G4double fe_m_t[32] = { 00402 1175, 1363, 1670, 1950, 2050, 2040, 1975, 1886, 1834, 1773, 00403 1720, 1635, 1474, 1380, 1269, 1225, 1182, 1162, 1159, 1162, 00404 1178, 1190, 1197, 1102, 1135, 975, 945, 925, 905, 905, 00405 905, 905}; 00406 const G4double fe_m_in[32] = { 00407 625, 725, 910, 1180, 1275, 1250, 1200, 1150, 1100, 1040, 00408 995, 925, 825, 810, 780, 760, 745, 740, 740, 740, 00409 750, 760, 765, 690, 660, 635, 615, 600, 585, 585, 00410 585, 585}; 00411 const G4double fe_p_t[32] = { 00412 330, 575, 1010, 1500, 1837, 1875, 1820, 1751, 1691, 1636, 00413 1690, 1450, 1396, 1305, 1219, 1190, 1148, 1138, 1134, 1144, 00414 1163, 1175, 1183, 1198, 1135, 975, 945, 925, 905, 905, 00415 905, 905}; 00416 const G4double fe_p_in[32] = { 00417 210, 410, 707, 1010, 1125, 1150, 1100, 1070, 1010, 960, 00418 920, 776, 780, 760, 750, 740, 720, 725, 725, 730, 00419 740, 750, 755, 690, 660, 635, 615, 600, 585, 585, 00420 585, 585}; 00421 const G4double cu_m_t[32] = { 00422 1400, 1600, 1875, 2088, 2200, 2220, 2175, 2125, 2075, 2012, 00423 1950, 1855, 1670, 1530, 1430, 1370, 1315, 1315, 1315, 1330, 00424 1345, 1360, 1365, 1250, 1185, 1128, 1070, 1035, 1010, 1010, 00425 1010, 1010}; 00426 const G4double cu_m_in[32] = { 00427 725, 840, 1020, 1200, 1295, 1300, 1267, 1240, 1213, 1175, 00428 1125, 1042, 950, 900, 860, 840, 830, 832, 835, 840, 00429 850, 860, 865, 785, 735, 705, 680, 650, 630, 630, 00430 630, 630}; 00431 const G4double cu_p_t[32] = { 00432 355, 605, 1120, 1630, 1940, 2010, 2010, 1980, 1925, 1895, 00433 1830, 1730, 1585, 1490, 1400, 1340, 1290, 1290, 1290, 1310, 00434 1330, 1345, 1350, 1240, 1185, 1128, 1070, 1035, 1010, 1010, 00435 1010, 1010}; 00436 const G4double cu_p_in[32] = { 00437 230, 425, 780, 1025, 1155, 1190, 1190, 1180, 1125, 1100, 00438 1050, 1000, 900, 870, 835, 815, 810, 812, 815, 825, 00439 840, 850, 855, 780, 735, 705, 680, 650, 630, 630, 00440 630, 630}; 00441 00442 const G4double mo_m_t[34] = { 00443 2430, 2610, 2710, 2790, 2880, 2940, 2965, 2970, 2970, 2920, 00444 2840, 2720, 2570, 2500, 2365, 2200, 2050, 1926, 1825, 1768, 00445 1749, 1750, 1778, 1789, 1808, 1690, 1645, 1530, 1492, 1450, 00446 1425, 1425, 1425, 1425}; 00447 const G4double mo_m_in[34] = { 00448 925, 1125, 1250, 1375, 1500, 1600, 1680, 1750, 1770, 1730, 00449 1660, 1580, 1500, 1450, 1330, 1250, 1190, 1140, 1100, 1075, 00450 1075, 1070, 1088, 1095, 1110, 1035, 1005, 940, 917, 880, 00451 860, 860, 860, 860}; 00452 const G4double mo_p_t[34] = { 00453 410, 730, 1110, 1530, 1920, 2200, 2385, 2520, 2600, 2630, 00454 2575, 2470, 2320, 2285, 2185, 2053, 1945, 1852, 1776, 1719, 00455 1710, 1716, 1746, 1759, 1778, 1675, 1645, 1530, 1492, 1450, 00456 1425, 1425, 1425, 1425}; 00457 const G4double mo_p_in[34] = { 00458 270, 540, 825, 975, 1140, 1285, 1400, 1480, 1555, 1580, 00459 1525, 1470, 1360, 1340, 1255, 1160, 1120, 1085, 1060, 1045, 00460 1045, 1045, 1065, 1075, 1090, 1025, 1005, 940, 917, 880, 00461 860, 860, 860, 860}; 00462 const G4double cd_m_t[34] = { 00463 3060, 3125, 3170, 3220, 3255, 3280, 3290, 3260, 3270, 3200, 00464 3120, 3080, 3090, 2920, 2810, 2640, 2362, 2230, 2115, 2050, 00465 2020, 2025, 2040, 2070, 2100, 1900, 1795, 1740, 1675, 1645, 00466 1625, 1620, 1620, 1620}; 00467 const G4double cd_m_in[34]= { 00468 1025, 1275, 1440, 1625, 1740, 1800, 1880, 1920, 1980, 1920, 00469 1850, 1810, 1720, 1650, 1560, 1450, 1330, 1290, 1245, 1210, 00470 1200, 1200, 1205, 1205, 1230, 1130, 1085, 1060, 1000, 985, 00471 975, 970, 970, 970}; 00472 const G4double cd_p_t[34] = { 00473 455, 780, 1170, 1700, 2120, 2400, 2600, 2720, 2820, 2840, 00474 2800, 2760, 2720, 2640, 2560, 2450, 2252, 2130, 2035, 1985, 00475 1970, 1975, 2005, 2035, 2070, 1880, 1795, 1740, 1675, 1645, 00476 1625, 1620, 1620, 1620}; 00477 const G4double cd_p_in[34] = { 00478 310, 580, 880, 1060, 1270, 1400, 1530, 1610, 1660, 1680, 00479 1640, 1600, 1560, 1500, 1430, 1330, 1280, 1230, 1200, 1180, 00480 1170, 1175, 1180, 1180, 1210, 1120, 1085, 1060, 1000, 985, 00481 975, 970, 970, 970}; 00482 00483 const G4double sn_m_t[35] = { 00484 3000, 3180, 3250, 3300, 3300, 3410, 3470, 3450, 3410, 3350, 00485 3280, 3200, 3120, 3050, 2900, 2630, 2500, 2325, 2190, 2100, 00486 2060, 2055, 2055, 2055, 2067, 2085, 2000, 1900, 1835, 1770, 00487 1720, 1700, 1695, 1695, 1695}; 00488 const G4double sn_m_in[35] = { 00489 1050, 1350, 1520, 1650, 1800, 1980, 2070, 2120, 2090, 2050, 00490 1980, 1920, 1830, 1770, 1670, 1500, 1435, 1350, 1300, 1230, 00491 1220, 1235, 1235, 1235, 1237, 1240, 1160, 1120, 1090, 1065, 00492 1040, 1020, 1015, 1015, 1015}; 00493 const G4double sn_p_t[35] = { 00494 465, 800, 1200, 1760, 2170, 2480, 2730, 2885, 2970, 2980, 00495 2970, 2890, 2840, 2790, 2620, 2450, 2335, 2205, 2080, 2020, 00496 2010, 1990, 1990, 2015, 2030, 2045, 1980, 1890, 1835, 1770, 00497 1720, 1700, 1695, 1695, 1695}; 00498 const G4double sn_p_in[35] = { 00499 315, 590, 880, 1220, 1460, 1580, 1700, 1770, 1810, 1810, 00500 1800, 1730, 1680, 1630, 1530, 1400, 1335, 1270, 1210, 1180, 00501 1190, 1190, 1190, 1205, 1210, 1210, 1150, 1115, 1090, 1065, 00502 1040, 1020, 1015, 1015, 1015}; 00503 const G4double w_m_t[35] = { 00504 5200, 5115, 5025, 4975, 4900, 4850, 4780, 4725, 4600, 4490, 00505 4355, 4255, 4125, 4040, 3830, 3580, 3330, 3110, 2955, 2860, 00506 2852, 2845, 2885, 2900, 2915, 2940, 2800, 2660, 2570, 2490, 00507 2460, 2425, 2420, 2420, 2420}; 00508 const G4double w_m_in[35] = { 00509 1450, 1850, 2100, 2350, 2550, 2700, 2825, 2900, 2850, 2750, 00510 2630, 2525, 2400, 2300, 2200, 2070, 1880, 1770, 1715, 1680, 00511 1680, 1680, 1685, 1690, 1700, 1720, 1635, 1560, 1530, 1460, 00512 1440, 1410, 1410, 1410, 1410}; 00513 const G4double w_p_t[35] = { 00514 480, 900, 1500, 2350, 3020, 3420, 3650, 3775, 3875, 3830, 00515 3750, 3700, 3630, 3550, 3550, 3290, 3070, 2890, 2840, 2730, 00516 2725, 2720, 2770, 2805, 2828, 2865, 2770, 2640, 2570, 2490, 00517 2460, 2425, 2420, 2420, 2420}; 00518 const G4double w_p_in[35] = { 00519 325, 680, 990, 1500, 1850, 2150, 2250, 2300, 2350, 2330, 00520 2280, 2230, 2200, 2120, 2130, 1900, 1780, 1670, 1635, 1600, 00521 1602, 1605, 1610, 1615, 1630, 1660, 1620, 1550, 1530, 1460, 00522 1440, 1410, 1410, 1410, 1410}; 00523 00524 const G4double pb_m_t[35] = { 00525 5890, 5700, 5610, 5580, 5550, 5480, 5400, 5300, 5100, 4930, 00526 4750, 4600, 4400, 4280, 4170, 3915, 3650, 3470, 3260, 3150, 00527 3120, 3070, 3085, 3100, 3120, 3160, 3070, 2930, 2820, 2750, 00528 2710, 2655, 2640, 2640, 2640}; 00529 const G4double pb_m_in[35] = { 00530 1575, 2025, 2300, 2575, 2850, 3000, 3115, 3180, 3080, 2940, 00531 2800, 2670, 2550, 2450, 2370, 2220, 2110, 2000, 1920, 1880, 00532 1850, 1800, 1805, 1810, 1820, 1840, 1800, 1720, 1640, 1620, 00533 1570, 1530, 1530, 1530, 1530}; 00534 const G4double pb_p_t[35] = { 00535 515, 940, 1500, 2400, 3270, 3750, 4050, 4140, 4260, 4200, 00536 4080, 3990, 3990, 3810, 3730, 3520, 3370, 3186, 3110, 3010, 00537 2990, 2985, 3005, 3020, 3040, 3080, 3020, 2905, 2790, 2750, 00538 2710, 2655, 2640, 2640, 2640}; 00539 const G4double pb_p_in[35] = { 00540 348, 707, 1040, 1650, 2100, 2400, 2580, 2640, 2650, 2520, 00541 2410, 2300, 2250, 2190, 2130, 2000, 1930, 1870, 1830, 1790, 00542 1770, 1765, 1775, 1780, 1790, 1800, 1775, 1710, 1620, 1620, 00543 1570, 1530, 1530, 1530, 1530}; 00544 const G4double u_m_t[35] = { 00545 7080, 6830, 6650, 6530, 6400, 6280, 6100, 5840, 5660, 5520, 00546 5330, 5160, 4990, 4810, 4630, 4323, 4130, 3870, 3700, 3550, 00547 3490, 3465, 3467, 3475, 3495, 3515, 3440, 3360, 3150, 3040, 00548 2985, 2955, 2940, 2940, 2940}; 00549 const G4double u_m_in[35] = { 00550 1740, 2220, 2500, 2820, 3080, 3300, 3420, 3500, 3420, 3330, 00551 3200, 3060, 2940, 2850, 2710, 2470, 2380, 2250, 2160, 2080, 00552 2040, 2045, 2047, 2050, 2055, 2060, 2010, 1980, 1830, 1780, 00553 1735, 1710, 1700, 1700, 1700}; 00554 const G4double u_p_t[35] = { 00555 485, 960, 1580, 2700, 3550, 4050, 4320, 4420, 4620, 4660, 00556 4580, 4470, 4350, 4295, 4187, 3938, 3755, 3573, 3450, 3342, 00557 3310, 3295, 3310, 3330, 3375, 3405, 3350, 3338, 3135, 3040, 00558 2985, 2955, 2940, 2940, 2940}; 00559 const G4double u_p_in[35] = { 00560 334, 720, 1020, 1560, 2100, 2300, 2550, 2700, 2880, 2880, 00561 2760, 2660, 2550, 2510, 2430, 2270, 2130, 2060, 2000, 1970, 00562 1950, 1950, 1960, 1960, 1970, 1980, 1950, 1978, 1830, 1780, 00563 1735, 1710, 1700, 1700, 1700}; 00564 00565 AddDataSet("pi-",he_t, he_in, e1, 38); 00566 AddDataSet("pi+",he_t, he_in, e1, 38); 00567 AddDataSet("pi-",be_m_t, be_m_in, e1, 38); 00568 AddDataSet("pi+",be_p_t, be_p_in, e1, 38); 00569 AddDataSet("pi-",c_m_t, c_m_in, e2, 39); 00570 AddDataSet("pi+",c_p_t, c_p_in, e2, 39); 00571 AddDataSet("pi-",n_m_t, n_m_in, e2, 39); 00572 AddDataSet("pi+",n_p_t, n_p_in, e2, 39); 00573 AddDataSet("pi-",o_m_t, o_m_in, e3, 31); 00574 AddDataSet("pi+",o_p_t, o_p_in, e3, 31); 00575 AddDataSet("pi-",na_m_t, na_m_in, e3, 31); 00576 AddDataSet("pi+",na_p_t, na_p_in, e3, 31); 00577 AddDataSet("pi-",al_m_t, al_m_in, e3, 31); 00578 AddDataSet("pi+",al_p_t, al_p_in, e3, 31); 00579 AddDataSet("pi-",ca_m_t, ca_m_in, e3, 31); 00580 AddDataSet("pi+",ca_p_t, ca_p_in, e3, 31); 00581 AddDataSet("pi-",fe_m_t, fe_m_in, e4, 32); 00582 AddDataSet("pi+",fe_p_t, fe_p_in, e4, 32); 00583 AddDataSet("pi-",cu_m_t, cu_m_in, e4, 32); 00584 AddDataSet("pi+",cu_p_t, cu_p_in, e4, 32); 00585 AddDataSet("pi-",mo_m_t, mo_m_in, e5, 34); 00586 AddDataSet("pi+",mo_p_t, mo_p_in, e5, 34); 00587 AddDataSet("pi-",cd_m_t, cd_m_in, e5, 34); 00588 AddDataSet("pi+",cd_p_t, cd_p_in, e5, 34); 00589 AddDataSet("pi-",sn_m_t, sn_m_in, e6, 35); 00590 AddDataSet("pi+",sn_p_t, sn_p_in, e6, 35); 00591 AddDataSet("pi-",w_m_t, w_m_in, e6, 35); 00592 AddDataSet("pi+",w_p_t, w_p_in, e6, 35); 00593 AddDataSet("pi-",pb_m_t, pb_m_in, e6, 35); 00594 AddDataSet("pi+",pb_p_t, pb_p_in, e6, 35); 00595 AddDataSet("pi-",u_m_t, u_m_in, e6, 35); 00596 AddDataSet("pi+",u_p_t, u_p_in, e6, 35); 00597 }
void G4UPiNuclearCrossSection::CrossSectionDescription | ( | std::ostream & | ) | const [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 599 of file G4UPiNuclearCrossSection.cc.
00600 { 00601 outFile << "G4UPiNuclearCrossSection calculates the total, elastic and\n" 00602 << "inelastic cross sections for pion scattering from nuclei\n" 00603 << "heavier than hydrogen. It is based on the Barashenkov\n" 00604 << "parameterization and is valid for all incident energies.\n"; 00605 }
void G4UPiNuclearCrossSection::DumpPhysicsTable | ( | const G4ParticleDefinition & | ) | [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 193 of file G4UPiNuclearCrossSection.cc.
References G4cout, and G4endl.
00194 { 00195 if(&p == piPlus) { 00196 G4cout << "### G4UPiNuclearCrossSection Elastic data for pi+" << G4endl; 00197 G4cout << *piPlusElastic << G4endl; 00198 G4cout << "### G4UPiNuclearCrossSection Inelastic data for pi+" << G4endl; 00199 G4cout << *piPlusInelastic << G4endl; 00200 } else if(&p == piMinus) { 00201 G4cout << "### G4UPiNuclearCrossSection Elastic data for pi-" << G4endl; 00202 G4cout << *piMinusElastic << G4endl; 00203 G4cout << "### G4UPiNuclearCrossSection Inelastic data for pi-" << G4endl; 00204 G4cout << *piMinusInelastic << G4endl; 00205 } 00206 }
G4double G4UPiNuclearCrossSection::GetElasticCrossSection | ( | const G4DynamicParticle * | aParticle, | |
G4int | Z, | |||
G4int | A | |||
) |
Definition at line 97 of file G4UPiNuclearCrossSection.cc.
References G4DynamicParticle::GetDefinition(), and G4DynamicParticle::GetKineticEnergy().
Referenced by G4BGGPionElasticXS::BuildPhysicsTable(), and G4BGGPionElasticXS::GetElementCrossSection().
00099 { 00100 G4double cross = 0.0; 00101 G4PhysicsTable* table = 0; 00102 const G4ParticleDefinition* part = dp->GetDefinition(); 00103 if(part == piPlus) { table = piPlusElastic; } 00104 else if(part == piMinus) { table = piMinusElastic; } 00105 if(table) { 00106 cross = Interpolate(Z, A, dp->GetKineticEnergy(),table); 00107 } 00108 return cross; 00109 }
G4double G4UPiNuclearCrossSection::GetInelasticCrossSection | ( | const G4DynamicParticle * | aParticle, | |
G4int | Z, | |||
G4int | A | |||
) |
Definition at line 112 of file G4UPiNuclearCrossSection.cc.
References G4DynamicParticle::GetDefinition(), and G4DynamicParticle::GetKineticEnergy().
Referenced by G4BGGPionInelasticXS::BuildPhysicsTable(), and G4BGGPionInelasticXS::GetElementCrossSection().
00114 { 00115 G4double cross = 0.0; 00116 G4double fact = 1.0; 00117 G4double ekin = dp->GetKineticEnergy(); 00118 G4PhysicsTable* table = 0; 00119 const G4ParticleDefinition* part = dp->GetDefinition(); 00120 00121 // Coulomb barrier 00122 if(part == piPlus) { 00123 if(ekin > elowest) { 00124 table = piPlusInelastic; 00125 if(ekin < elow) { 00126 fact = std::sqrt((ekin-elowest)/(elow-elowest)); 00127 ekin = elow; 00128 } 00129 } 00130 } else if(part == piMinus) { 00131 table = piMinusInelastic; 00132 if(ekin < elow) { ekin = elow; } 00133 } 00134 if(table) { 00135 cross = fact*Interpolate(Z, A, ekin, table); 00136 } 00137 return cross; 00138 }
G4bool G4UPiNuclearCrossSection::IsElementApplicable | ( | const G4DynamicParticle * | aParticle, | |
G4int | Z, | |||
const G4Material * | ||||
) | [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 90 of file G4UPiNuclearCrossSection.cc.