G4UPiNuclearCrossSection Class Reference

#include <G4UPiNuclearCrossSection.hh>

Inheritance diagram for G4UPiNuclearCrossSection:

G4VCrossSectionDataSet

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

Detailed Description

Definition at line 47 of file G4UPiNuclearCrossSection.hh.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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.

00092 {
00093   return (1 < Z);
00094 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:38 2013 for Geant4 by  doxygen 1.4.7