34#define INCLXX_IN_GEANT4_MODE 1
54 struct BystrickyEvaluator {
58 const G4double xrat=ekin*oneOverThreshold;
68 s11pzHC(-2.228000000000294018,8.7560000000005723725,-0.61000000000023239325,-5.4139999999999780324,3.3338333333333348023,-0.75835000000000022049,0.060623611111111114688),
69 s01ppHC(2.0570000000126518344,-6.029000000012135826,36.768500000002462784,-45.275666666666553533,25.112666666666611953,-7.2174166666666639187,1.0478875000000000275,-0.060804365079365080846),
70 s01pzHC(0.18030000000000441851,7.8700999999999953598,-4.0548999999999990425,0.555199999999999959),
71 s11pmHC(0.20590000000000031866,3.3450999999999993936,-1.4401999999999997825,0.17076666666666664973),
72 s12pmHC(-0.77235999999999901328,4.2626599999999991117,-1.9008899999999997323,0.30192266666666663379,-0.012270833333333331986),
73 s12ppHC(-0.75724999999999975664,2.0934399999999998565,-0.3803099999999999814),
74 s12zzHC(-0.89599999999996965072,7.882999999999978632,-7.1049999999999961928,1.884333333333333089),
75 s02pzHC(-1.0579999999999967036,11.113999999999994089,-8.5259999999999990196,2.0051666666666666525),
76 s02pmHC(2.4009000000012553286,-7.7680000000013376183,20.619000000000433505,-16.429666666666723928,5.2525708333333363472,-0.58969166666666670206),
77 s12mzHC(-0.21858699999999976269,1.9148999999999999722,-0.31727500000000001065,-0.027695000000000000486)
104 inelastic =
NLToNS(p1,p2);
117 return inelastic +
elastic(p1, p2);
164 const G4double xs0 = xs1 + xs2 + xs3 + xs4 + xs5 + xs6 + xs7 +xs8;
172 else if (oldXS3Pi != 0.) {
173 newXS3Pi=oldXS3Pi-xsEta-xsOmega-xs0;
174 if (newXS3Pi < 1.e-09)
175 newXS2Pi=oldXS2Pi-(xsEta+xsOmega+xs0-oldXS3Pi);
180 newXS2Pi=oldXS2Pi-xsEta-xsOmega-xs0;
181 if (newXS2Pi < 1.e-09 && newXS2Pi!=0.){
188 if (oldXS4Pi != 0.) {
189 newXS4Pi=oldXS4Pi-xsEta-xsOmega-xs0;
190 if (newXS4Pi < 1.e-09)
191 newXS3Pi=oldXS3Pi-(xsEta+xsOmega+xs0-oldXS4Pi);
196 newXS3Pi=oldXS3Pi-xsEta-xsOmega-xs0;
197 if (newXS3Pi < 1.e-09){
204 newXS4Pi=oldXS4Pi-xsEta-xsOmega-xs0;
205 if (newXS4Pi < 1.e-09){
235 const G4double xs0 = xs1 + xs2 + xs3 + xs4 + xs5 + xs6 + xs7 + xs8;
242 if (oldXS4Pi != 0. || oldXS3Pi != 0.)
244 else if (oldXS2Pi != 0.) {
245 newXS2Pi=oldXS2Pi-xsEta-xs0;
247 newXS1Pi=oldXS1Pi-(xsEta+xs0-oldXS2Pi);
252 newXS1Pi=oldXS1Pi-xsEta-xs0;
259 else if (oldXS3Pi != 0.) {
260 newXS3Pi=oldXS3Pi-xsEta-xs0;
262 newXS2Pi = oldXS2Pi-(xsEta+xs0-oldXS3Pi);
267 newXS2Pi = oldXS2Pi-xsEta-xs0;
274 if (oldXS4Pi != 0.) {
275 newXS4Pi=oldXS4Pi-xsEta-xs0;
277 newXS3Pi=oldXS3Pi-(xsEta+xs0-oldXS4Pi);
282 newXS3Pi=oldXS3Pi-xsEta-xs0;
289 newXS4Pi=oldXS4Pi-xsEta-xs0;
325 else if (pLab < 425.)
326 sigma = 869.*std::exp(-pLab/100.);
327 else if (pLab < 30000.)
328 sigma = 12.8*std::exp(-6.2e-5*pLab);
332 if (sigma < 0.) sigma = 0.;
360 else if (pLab < 2080.)
361 sigma = 17.4-3.*std::exp(6.3e-4*pLab);
362 else if (pLab < 5500.)
363 sigma = 832.*std::pow(pLab,-0.64);
364 else if (pLab < 30000.)
369 if (sigma < 0.) sigma = 0.;
396 sigma = 6.132*std::pow(pLab,-0.2437)+12.98*std::exp(-std::pow(pLab-0.9902,2)/0.05558)+2.928*std::exp(-std::pow(pLab-1.649,2)/0.772)+564.3*std::exp(-std::pow(pLab+0.9901,2)/0.5995);
398 if (sigma < 0.) sigma = 0.;
433 if(pLab < 2.3393)
return 0.;
434 else if (pLab < 30.) sigma = 1.11875*std::pow((pLab-2.3393),1.0951)/std::pow((pLab+2.3393),2.0958);
438 if(pLab < 2.3508)
return 0.;
439 else if (pLab < 30.) sigma = 1.11875*std::pow((pLab-2.3508),1.0951)/std::pow((pLab+2.3508),2.0958);
484 sigma = 1.5*6.38*std::pow(pLab-2.593,2.1)/std::pow(pLab,4.162);
486 sigma = 1.75*6.38*std::pow(pLab-2.593,2.1)/std::pow(pLab,4.162);
515 if( ener < p1->getMass() + p2->
getMass())
530 if( ratio1 == 0 || ratio2 == 0)
533 ratio = ratio2/ratio1;
535 sigma = ratio *
NNToNLK(p1,p2) * 3;
573 if( ener < p1->getMass() + p2->
getMass())
588 if( ratio1 == 0 || ratio2 == 0)
591 ratio = ratio2/ratio1;
593 sigma = ratio *
NNToNSK(p1,p2) * 3;
609 if( ener < p1->getMass() + p2->
getMass())
624 if( ratio1 == 0 || ratio2 == 0)
627 ratio = ratio2/ratio1;
645 if( ener < p1->getMass() + p2->
getMass())
660 if( ratio1 == 0 || ratio2 == 0)
663 ratio = ratio2/ratio1;
694 sigma = 26 * 5./19. * 0.3 *std::pow(1.-2.872*2.872/(ener*ener),3.)*std::pow(2.872*2.872/(ener*ener),0.8);
696 sigma = 6 * 5./19. * 0.3 *std::pow(1.-2.872*2.872/(ener*ener),3.)*std::pow(2.872*2.872/(ener*ener),0.8);
712 if(pLab < 6.)
return 0.;
715 if(pLab < 30.) sigma = 10.15*std::pow((pLab - 6.),2.157)/std::pow(pLab,2.333);
719 if(pLab < 30.) sigma = 8.12*std::pow((pLab - 6.),2.157)/std::pow(pLab,2.333);
754 if(std::abs(iso) == 4)
return 0.;
761 if(s <= s0)
return 0.;
763 sigma = n_channel*a*std::pow(s/s0-1,b)*std::pow(s0/s,c);
816 sigma = n_channel*a*std::pow(s/s0-1,b)*std::pow(s0/s,c);
825 else if (std::abs(iso) == 2)
863 G4double sigma = n_channel*a*std::pow(s/s0-1,b)*std::pow(s0/s,c);
869 else if (std::abs(iso) == 2)
924 G4double sigma = n_channel*a*std::pow(s/s0-1,b)*std::pow(s0/s,c);
930 else if (std::abs(iso) == 2)
975 sigma = 8* 22./60. * 3. *std::pow(1.-2.872*2.872/(ener*ener),3.)*std::pow(2.872*2.872/(ener*ener),0.8);
977 sigma = 7* 22./60. * 3. *std::pow(1.-2.872*2.872/(ener*ener),3.)*std::pow(2.872*2.872/(ener*ener),0.8);
978 else if (std::abs(iso) == 2)
979 sigma = 9* 22./60. * 3. *std::pow(1.-2.872*2.872/(ener*ener),3.)*std::pow(2.872*2.872/(ener*ener),0.8);
981 sigma = 6* 22./60. * 3. *std::pow(1.-2.872*2.872/(ener*ener),3.)*std::pow(2.872*2.872/(ener*ener),0.8);
1001 if(iso == 3 || iso == -3)
1014 if(pion->getType() ==
PiZero)
1029 sigma = 0.3936*std::pow(pLab,-1.357)-6.052*std::exp(-std::pow(pLab-0.7154,2)/0.02026)-0.16*std::exp(-std::pow(pLab-0.9684,2)/0.001432)+0.489*std::exp(-std::pow(pLab-0.8886,2)/0.08378);
1030 if(sigma < 0.)
return 0;
1063 if(iso == 3 || iso == -3)
1065 else if(pion->getType() ==
PiZero)
1067 else if(iso == 1 || iso == -1)
1082 sigma = 4.352*std::pow(pLab-1.0356,1.006)/(std::pow(pLab+1.0356,0.0978)*std::pow(pLab,5.375));
1097 sigma = 0.001897*std::pow(pLab-1.0428,2.869)/(std::pow(pLab+1.0428,-16.68)*std::pow(pLab,19.1));
1112 sigma = 3.624*std::pow(pLab-1.0356,1.4)/std::pow(pLab,5.14);
1124 if((p1->
getType() ==
PiZero && pLab < 1.0356) || (pLab < 1.034))
1127 sigma = 0.3474*std::pow(pLab-1.034,0.07678)/std::pow(pLab,1.627);
1165 if(iso == 3 || iso == -3)
1166 sigma = 146.2*std::pow(pLab-1.147,1.996)/std::pow(pLab+1.147,5.921);
1167 else if(pion->getType() ==
PiZero)
1168 sigma = 1.5*146.2*std::pow(pLab-1.147,1.996)/std::pow(pLab+1.147,5.921);
1170 sigma = 2*146.2*std::pow(pLab-1.147,1.996)/std::pow(pLab+1.147,5.921);
1216 if(iso == 3 || iso == -3)
1217 sigma = 2.25*8.139*std::pow(pLab-1.3041,2.431)/std::pow(pLab,5.298);
1218 else if(pion->getType() ==
PiZero)
1219 sigma = 2.625*8.139*std::pow(pLab-1.3041,2.431)/std::pow(pLab,5.298);
1221 sigma = 3.*8.139*std::pow(pLab-1.3041,2.431)/std::pow(pLab,5.298);
1261 if(iso == 3 || iso == -3)
1262 sigma = 2*18.77*std::pow(pLab-1.4162,4.597)/std::pow(pLab,6.877);
1263 else if(pion->getType() ==
PiZero)
1264 sigma = 1.75*18.77*std::pow(pLab-1.4162,4.597)/std::pow(pLab,6.877);
1266 sigma = 2.5*18.77*std::pow(pLab-1.4162,4.597)/std::pow(pLab,6.877);
1323 if(iso == 3 || iso == -3)
1324 sigma = 3.25*137.6*std::pow(pLab-1.5851,5.856)/std::pow(pLab,9.295);
1325 else if(pion->getType() ==
PiZero)
1326 sigma = 3.5*137.6*std::pow(pLab-1.5851,5.856)/std::pow(pLab,9.295);
1328 sigma = 3.75*137.6*std::pow(pLab-1.5851,5.856)/std::pow(pLab,9.295);
1367 if(pLab < 1.5066)
return 0.;
1368 else if(pLab < 30.) sigma = 3./2.*2.996*std::pow((pLab - 1.5066),1.929)/std::pow(pLab,3.582);
1372 if(pLab < 1.5066)
return 0.;
1373 else if(pLab < 30.) sigma = 5./2.*2.996*std::pow((pLab - 1.5066),1.929)/std::pow(pLab,3.582);
1377 if(pLab < 1.5066)
return 0.;
1378 else if(pLab < 30.) sigma = 1./2.*2.996*std::pow((pLab - 1.5066),1.929)/std::pow(pLab,3.582);
1405 if(pLab < 2.2)
return 0.;
1407 if(pion->getType() ==
PiZero){
1408 if(pLab < 30.) sigma = 4.4755*std::pow((pLab - 2.2),1.927)/std::pow(pLab,1.89343);
1411 else if((pion->getType() ==
PiPlus && nucleon->getType() ==
Neutron) || (pion->getType() ==
PiMinus && nucleon->getType() ==
Proton)){
1412 if(pLab < 30.) sigma = 5.1*std::pow((pLab - 2.2),1.854)/std::pow(pLab,1.904);
1416 if(pLab < 30.) sigma = 3.851*std::pow((pLab - 2.2),2)/std::pow(pLab,1.88286);
1454 sigma = 3 * 8.74*std::pow((pLab-0.664),0.438)/std::pow(pLab,2.717);
1470 if(iso == 3 || iso == -3)
1488 if(pLab < 0.1)
return 100.;
1489 sigma = 8.23*std::pow(pLab,-1.087);
1492 if(pLab < 0.1)
return 200.;
1493 sigma = 16.46*std::pow(pLab,-1.087);
1503 if(iso == 3 || iso == -3)
1520 else if(pLab < 0.1035)
return 200.;
1522 return 13.79*std::pow(pLab,-1.181);
1559 sigma = 12.84*std::pow((pLab-0.0774),18.19)/std::pow((pLab),20.41);
1602 sigma = 5.55*116.8*std::pow(pLab-0.53,6.874)/std::pow(pLab,10.11);
1604 sigma = 5.*116.8*std::pow(pLab-0.53,6.874)/std::pow(pLab,10.11);;
1647 else if(pLab < 1.744)
1648 sigma = 26.41*std::pow(pLab-0.812,7.138)/std::pow(pLab,5.337);
1649 else if(pLab < 3.728)
1650 sigma = 1572.*std::pow(pLab-0.812,9.069)/std::pow(pLab,12.44);
1652 sigma = 60.23*std::pow(pLab-0.812,5.084)/std::pow(pLab,6.72);
1689 else if(nucleon->getType() ==
Proton){
1693 sigma = 0.4977*std::pow(pLab - 0.08921,0.5581)/std::pow(pLab,2.704);
1694 else if(pLab < 0.73)
1695 sigma = 2.*std::pow(pLab,-1.2) + 6.493*std::exp(-0.5*std::pow((pLab-0.3962)/0.02,2));
1696 else if(pLab < 1.38)
1697 sigma = 2.3*std::pow(pLab,-0.9) + 1.1*std::exp(-0.5*std::pow((pLab-0.82)/0.04,2)) + 5.*std::exp(-0.5*std::pow((pLab-1.04)/0.1,2));
1699 sigma = 2.5*std::pow(pLab,-1.68) + 0.7*std::exp(-0.5*std::pow((pLab-1.6)/0.2,2)) + 0.2*std::exp(-0.5*std::pow((pLab-2.3)/0.2,2));
1705 else if(pLab < 0.73)
1706 sigma = 2.*std::pow(pLab,-1.2) + 6.493*std::exp(-0.5*std::pow((pLab-0.3962)/0.02,2));
1707 else if(pLab < 1.38)
1708 sigma = 2.3*std::pow(pLab,-0.9) + 1.1*std::exp(-0.5*std::pow((pLab-0.82)/0.04,2)) + 5.*std::exp(-0.5*std::pow((pLab-1.04)/0.1,2));
1710 sigma = 2.5*std::pow(pLab,-1.68) + 0.7*std::exp(-0.5*std::pow((pLab-1.6)/0.2,2)) + 0.2*std::exp(-0.5*std::pow((pLab-2.3)/0.2,2));
1752 sigma = 13./6.*(1.4*std::pow(pLab,-1.7)+1.88*std::exp(-std::pow(pLab-0.747,2)/0.005)+8*std::exp(-std::pow(pLab-0.4,2)/0.002)+0.8*std::exp(-std::pow(pLab-1.07,2)/0.01));
1758 sigma = 4./3.*(1.4*std::pow(pLab,-1.7)+1.88*std::exp(-std::pow(pLab-0.747,2)/0.005)+8*std::exp(-std::pow(pLab-0.4,2)/0.002)+0.8*std::exp(-std::pow(pLab-1.07,2)/0.01));
1803 sigma = 0.97*std::pow(pLab,-1.523);
1805 sigma = 1.23*std::pow(pLab,-1.467)+0.872*std::exp(-std::pow(pLab-0.749,2)/0.0045)+2.337*std::exp(-std::pow(pLab-0.957,2)/0.017)+0.476*std::exp(-std::pow(pLab-1.434,2)/0.136);
1807 sigma = 3.*std::pow(pLab,-2.57);
1853 sigma = 29./12.*3./2.*(49.96*std::pow(pLab-0.260,6.398)/std::pow(pLab+0.260,9.732)+0.1451*std::exp(-std::pow(pLab-0.4031,2)/0.00115));
1855 sigma = 54./24.*3./2.*(49.96*std::pow(pLab-0.260,6.398)/std::pow(pLab+0.260,9.732)+0.1451*std::exp(-std::pow(pLab-0.4031,2)/0.00115));
1903 sigma = 6364.*std::pow(pLab,6.07)/std::pow(pLab+1.,10.58)+2.158*std::exp(-std::pow((pLab-0.395)/.01984,2)/2.);
1905 sigma = 46.3*std::pow(pLab,0.62)/std::pow(pLab+1.,3.565);
1951 sigma = 28. * 10.13*std::pow(pLab-0.526,5.846)/std::pow(pLab,8.343);
1953 sigma = 20. * 10.13*std::pow(pLab-0.526,5.846)/std::pow(pLab,8.343);
2000 sigma = 4.75 * 26.8*std::pow(pLab-0.85,4.9)/std::pow(pLab,6.34);
2002 sigma = 4.25 * 26.8*std::pow(pLab-0.85,4.9)/std::pow(pLab,6.34);
2019 if (particle1->
isEta()) {
2021 nucleon = particle2;
2025 nucleon = particle1;
2031 else if (pLab < 700. )
2032 sigma = 1.3288E-7*std::pow(pLab,3.) - 2.6243E-4*std::pow(pLab,2.) + 1.7140E-1*pLab - 3.6408E+1;
2033 else if (pLab < 1400. )
2034 sigma = -3.7606E-17*std::pow(pLab,6.) + 2.5954E-13*std::pow(pLab,5.) - 7.4491E-10*std::pow(pLab,4.) + 1.1391E-6*std::pow(pLab,3.) - 9.8028E-4*std::pow(pLab,2.) + 4.5100E-1*pLab - 8.5862E+1;
2061 massomega=particle1->
getMass();
2062 massnucleon=particle2->
getMass();
2065 massomega=particle2->
getMass();
2066 massnucleon=particle1->
getMass();
2076 if (particle1->
isNucleon()) sigma =
NpiToLK(pion, particle1) * (pCM_pion/pCM_omega);
2077 if (particle2->
isNucleon()) sigma =
NpiToLK(pion, particle2) * (pCM_pion/pCM_omega);
2100 if (particle1->
isEta()) {
2102 nucleon = particle2;
2106 nucleon = particle1;
2112 else if (pLab < 1400. )
2113 sigma = -7.9949212022E-18*std::pow(pLab,6.) + 4.8776384248E-14*std::pow(pLab,5.) - 1.2005766956E-10*std::pow(pLab,4.) + 1.5072180697E-7*std::pow(pLab,3.) - 9.9473179699E-5*std::pow(pLab,2.) + 3.1111481306E-2*pLab - 3.0616598048;
2142 massomega=particle1->
getMass();
2143 massnucleon=particle2->
getMass();
2146 massomega=particle2->
getMass();
2147 massnucleon=particle1->
getMass();
2157 if (particle1->
isNucleon()) sigma = 2*
NpiToSK(pion, particle1) * (pCM_pion/pCM_omega);
2158 if (particle2->
isNucleon()) sigma = 2*
NpiToSK(pion, particle2) * (pCM_pion/pCM_omega);
Multipion, mesonic Resonances and strange cross sections.
virtual G4double piNToEtaN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance production - piN Channel.
virtual G4double etaNElastic(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - elastic Channel.
virtual G4double omegaNToPiN(Particle const *const p1, Particle const *const p2)
Cross section for OmegaN->PiN.
virtual G4double etaNToPiPiN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - pipiN Channel.
virtual G4double piNToOmegaN(Particle const *const p1, Particle const *const p2)
Cross section for PiN->OmegaN.
virtual G4double omegaNInelastic(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - inelastic Channel.
virtual G4double NNToNNEta(Particle const *const particle1, Particle const *const particle2)
Cross section for Eta production (inclusive) - NN entrance channel.
virtual G4double etaPrimeNToPiN(Particle const *const p1, Particle const *const p2)
Cross section for EtaPrimeN->PiN.
virtual G4double etaNToPiN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - piN Channel.
virtual G4double NNToNNOmega(Particle const *const particle1, Particle const *const particle2)
Cross section for Omega production (inclusive) - NN entrance channel.
virtual G4double piNToxPiN(const G4int xpi, Particle const *const p1, Particle const *const p2)
Cross section for X pion production - piN Channel.
G4double piNTot(Particle const *const p1, Particle const *const p2)
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
Elastic particle-particle cross section.
G4double NNTot(Particle const *const part1, Particle const *const part2)
Internal implementation of the NN total cross section.
virtual G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
Cross section for NDelta->NN.
virtual G4double NNTwoPi(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 2-pion production - NN entrance channel.
virtual G4double NNOnePiOrDelta(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 1-pion production + delta production - NN entrance channel.
virtual G4double NNToxPiNN(const G4int xpi, Particle const *const p1, Particle const *const p2)
Cross section for X pion production - NN Channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NKbToNKb2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NpiToLKpi(Particle const *const p1, Particle const *const p2)
virtual G4double NpiToNKKb(Particle const *const p1, Particle const *const p2)
virtual G4double etaNToSK(Particle const *const p1, Particle const *const p2)
virtual G4double p_kmToL_pz(Particle const *const p1, Particle const *const p2)
virtual G4double NpiToSK(Particle const *const p1, Particle const *const p2)
virtual G4double p_pimToSzKz(Particle const *const p1, Particle const *const p2)
virtual G4double NKbToNKbpi(Particle const *const p1, Particle const *const p2)
virtual G4double NKbToL2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NpiToLK2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NKbelastic(Particle const *const p1, Particle const *const p2)
virtual G4double NNToNLKpi(Particle const *const p1, Particle const *const p2)
virtual G4double NpiToMissingStrangeness(Particle const *const p1, Particle const *const p2)
virtual G4double NNToNSK(Particle const *const p1, Particle const *const p2)
virtual G4double NLToNS(Particle const *const p1, Particle const *const p2)
Nucleon-Hyperon quasi-elastic cross sections.
virtual G4double NKToNK2pi(Particle const *const p1, Particle const *const p2)
virtual G4double p_kmToL_pp_pm(Particle const *const p1, Particle const *const p2)
virtual G4double omegaNToPiPiN(Particle const *const p1, Particle const *const p2)
Cross sections for omega-induced 2Pi emission on nucleon.
virtual G4double NDeltaToDeltaSK(Particle const *const p1, Particle const *const p2)
virtual G4double NKToNKpi(Particle const *const p1, Particle const *const p2)
virtual G4double omegaNToLK(Particle const *const p1, Particle const *const p2)
Omega-Nucleon cross sections.
virtual G4double NpiToSKpi(Particle const *const p1, Particle const *const p2)
virtual G4double NNToNSKpi(Particle const *const p1, Particle const *const p2)
virtual G4double NNToNLK2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToNSK(Particle const *const p1, Particle const *const p2)
CrossSectionsStrangeness()
virtual G4double omegaNToSK(Particle const *const p1, Particle const *const p2)
virtual G4double NKelastic(Particle const *const p1, Particle const *const p2)
const HornerC4 s02pzHC
Horner coefficients for s02pz.
virtual G4double NpiToLK(Particle const *const p1, Particle const *const p2)
Nucleon-Pion to Strange particles cross sections.
virtual G4double p_pizToSzKp(Particle const *const p1, Particle const *const p2)
const HornerC5 s12pmHC
Horner coefficients for s12pm.
G4double p_pipToSpKp(Particle const *const p1, Particle const *const p2)
virtual G4double NKbToLpi(Particle const *const p1, Particle const *const p2)
virtual G4double NSToNS(Particle const *const p1, Particle const *const p2)
virtual G4double NSToNL(Particle const *const p1, Particle const *const p2)
const HornerC6 s02pmHC
Horner coefficients for s02pm.
const HornerC8 s01ppHC
Horner coefficients for s01pp.
virtual G4double etaNToLK(Particle const *const p1, Particle const *const p2)
eta-Nucleon cross sections
virtual G4double NKbToS2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NKbToSpi(Particle const *const p1, Particle const *const p2)
virtual G4double NpiToSK2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NNToxPiNN(const G4int xpi, Particle const *const p1, Particle const *const p2)
Cross section for X pion production - NN Channel.
virtual G4double NKToNK(Particle const *const p1, Particle const *const p2)
Nucleon-Kaon cross sections.
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
second new elastic particle-particle cross section
static const G4int nMaxPiNN
Maximum number of outgoing pions in NN collisions.
virtual G4double total(Particle const *const p1, Particle const *const p2)
second new total particle-particle cross section
virtual G4double NDeltaToNNKKb(Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToDeltaLK(Particle const *const p1, Particle const *const p2)
virtual G4double p_pimToSmKp(Particle const *const p1, Particle const *const p2)
virtual G4double piNToxPiN(const G4int xpi, Particle const *const p1, Particle const *const p2)
correction to old cross section
const HornerC7 s11pzHC
Horner coefficients for s11pz.
virtual G4double NYelastic(Particle const *const p1, Particle const *const p2)
elastic scattering for Nucleon-Strange Particles cross sections
G4double p_pimToLK0(Particle const *const p1, Particle const *const p2)
static const G4int nMaxPiPiN
Maximum number of outgoing pions in piN collisions.
virtual G4double NNToNSK2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NNToNNKKb(Particle const *const p1, Particle const *const p2)
virtual G4double NNToNLK(Particle const *const p1, Particle const *const p2)
Nucleon-Nucleon to Stange particles cross sections.
const HornerC4 s12mzHC
Horner coefficients for s12mz.
const HornerC4 s12zzHC
Horner coefficients for s12zz.
virtual G4double NDeltaToNLK(Particle const *const p1, Particle const *const p2)
Nucleon-Delta to Stange particles cross sections.
const HornerC4 s11pmHC
Horner coefficients for s11pm.
virtual G4double NNToMissingStrangeness(Particle const *const p1, Particle const *const p2)
const HornerC3 s12ppHC
Horner coefficients for s12pp.
const HornerC4 s01pzHC
Horner coefficients for s01pz.
virtual G4double NKbToNKb(Particle const *const p1, Particle const *const p2)
Nucleon-antiKaon cross sections.
G4bool isLambda() const
Is this a Lambda?
G4bool isEtaPrime() const
Is this an etaprime?
G4bool isOmega() const
Is this an omega?
G4bool isSigma() const
Is this a Sigma?
G4bool isEta() const
Is this an eta?
G4bool isPion() const
Is this a pion?
G4bool isAntiKaon() const
Is this an antiKaon?
G4INCL::ParticleType getType() const
G4bool isKaon() const
Is this a Kaon?
G4double getMass() const
Get the cached particle mass.
G4bool isDelta() const
Is it a Delta?
G4bool isHyperon() const
Is this an Hyperon?
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
G4double momentumInCM(Particle const *const p1, Particle const *const p2)
gives the momentum in the CM frame of two particles.
G4double getINCLMass(const G4int A, const G4int Z, const G4int S)
Get INCL nuclear mass (in MeV/c^2).
const G4double effectiveNucleonMass2
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
const G4double effectiveNucleonMass
static G4double eval(const G4double pLab, const G4double oneOverThreshold, HornerCoefficients< N > const &coeffs)
static G4double eval(const G4double x, HornerCoefficients< N > const &coeffs)