126 : fTotalXsc(0.0), fElasticXsc(0.0), fInelasticXsc(0.0)
219 outFile <<
"G4HadronNucleonXsc calculates the total, inelastic and elastic\n"
220 <<
"hadron-nucleon cross sections using several different\n"
221 <<
"parameterizations within the Glauber-Gribov approach. It is\n"
222 <<
"valid for all incident gammas and long-lived hadrons at\n"
223 <<
"energies above 30 keV. This is a cross section component which\n"
224 <<
"is to be used to build a cross section data set.\n";
235 if ( pdg == 2212 || pdg == 2112 || pdg == 211 )
239 else if ( pdg == 321 || pdg == 310 || pdg == 130 )
243 else if ( pdg == 3122 || pdg == 3222 || pdg == 3112 || pdg == 3212 || pdg == 3322 || pdg == 3312 || pdg == 3324 ||
245 pdg == 4122 || pdg == 4332 || pdg == 4122 || pdg == 4212 || pdg == 4222 || pdg == 4112 || pdg == 4232 || pdg == 4132 ||
247 pdg == 5122 || pdg == 5332 || pdg == 5122 || pdg == 5112 || pdg == 5222 || pdg == 5212 || pdg == 5132 || pdg == 5232
253 else if ( pdg == 511 || pdg == 421 || pdg == 531 || pdg == 541 || pdg == 431 || pdg == 411 || pdg == 521 ||
255 pdg == 221 || pdg == 331 || pdg == 441 || pdg == 443 || pdg == 543
279 static const G4double eta1 = 0.4473;
280 static const G4double eta2 = 0.5486;
284 if(theParticle ==
theGamma) { mass1 = 770.; }
291 G4double P(0.0), R1(0.0), R2(0.0), del(1.0);
414 R1 = (
neutron) ? 0.0231 : 0.0139;
434 (del*(H*blog*blog +
P) + R1*
G4Exp(-eta1*blog) + R2*
G4Exp(-eta2*blog));
477 G4double pLab = std::sqrt(ekin*(ekin + 2*pM));
502 else if( pLab >= 100.)
507 else if( pLab >= 10.)
509 fElasticXsc = 6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
521 else if( pLab < 0.73 )
526 else if( pLab < 1.05 )
534 fElasticXsc = 6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
544 else if( pLab < 0.8 )
549 else if( pLab < 1.4 )
557 fTotalXsc = 33.3 + 20.8*(pLab*pLab - 1.35)
559 fElasticXsc = 6 + 20/( (logP-0.182)*(logP-0.182) + 1.0 );
572 else if( pLab >= 100.)
577 else if( pLab >= 10.)
579 fElasticXsc = 6. + 20./( (logP-0.182)*(logP-0.182) + 1.0 );
591 else if( pLab < 1.05 )
600 fElasticXsc = 6. + 20./( (logP-0.182)*(logP-0.182) + 1.0 );
610 else if( pLab < 0.8 )
615 else if( pLab < 1.4 )
624 fTotalXsc = 33.3 + 20.8*(pLab*pLab - 1.35)
626 fElasticXsc = 6. + 20./( (logP-0.182)*(logP-0.182) + 1.0 );
632 else if((theParticle ==
thePiPlus && proton) ||
637 fTotalXsc = 10./((logP + 1.273)*(logP + 1.273) + 0.05);
640 else if( pLab < 0.68 )
642 fTotalXsc = 14./((logP + 1.273)*(logP + 1.273) + 0.07);
645 else if( pLab < 0.85 )
651 else if( pLab < 1.15 )
655 fElasticXsc = 6.0 + 1.4/(( pLab - 1.4)*( pLab - 1.4) + 0.1);
659 G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
660 G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
662 fElasticXsc = 6.0 + 1.4/(( pLab - 1.4)*( pLab - 1.4) + 0.1);
664 else if( pLab < 2.0 )
666 G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
667 G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
669 fElasticXsc = 3.0 + 1.36/( (logP - 0.336)*(logP - 0.336) + 0.08);
671 else if( pLab < 3.5 )
673 G4double Ex1 = 3.2*
G4Exp(-(pLab-2.55)*(pLab-2.55)/0.55/0.55);
674 G4double Ex2 = 12*
G4Exp(-(pLab-1.47)*(pLab-1.47)/0.225/0.225);
676 fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);
678 else if( pLab < 10. )
681 fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);
685 fElasticXsc = 3.0 + 6.20/( (logP - 0.336)*(logP - 0.336) + 0.8);
689 else if((theParticle ==
thePiPlus && neutron) ||
694 fTotalXsc = 0.288/((pLab - 0.28)*(pLab - 0.28) + 0.004);
695 fElasticXsc = 1.8/((logP + 1.273)*(logP + 1.273) + 0.07);
697 else if( pLab < 0.395676 )
699 fTotalXsc = 0.648/((pLab - 0.28)*(pLab - 0.28) + 0.009);
700 fElasticXsc = 0.257/((pLab - 0.28)*(pLab - 0.28) + 0.01);
702 else if( pLab < 0.5 )
708 else if( pLab < 0.65 )
712 fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
714 else if( pLab < 0.72 )
717 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
718 fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
720 else if( pLab < 0.88 )
723 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
724 fElasticXsc = 0.95/((pLab - 0.72)*(pLab - 0.72) + 0.049);
726 else if( pLab < 1.03 )
729 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
730 fElasticXsc = 2.0 + 0.4/((pLab - 1.03)*(pLab - 1.03) + 0.016);
732 else if( pLab < 1.15 )
735 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
736 fElasticXsc = 2.0 + 0.4/((pLab - 1.03)*(pLab - 1.03) + 0.016);
738 else if( pLab < 1.3 )
741 24*
G4Exp(-(pLab-1.015)*(pLab-1.015)/0.075/0.075);
747 3*
G4Exp(-(pLab-2.1)*(pLab-2.1)/0.4/0.4)+
748 1.5*
G4Exp(-(pLab-1.4)*(pLab-1.4)/0.12/0.12);
756 else if( (theParticle ==
theKMinus) && proton )
760 G4double psp = pLab*std::sqrt(pLab);
764 else if( pLab >
pMax )
792 + .004/md + 0.005/hd1+ 0.01/hd2 +.15/hd;
795 + .006/md + 0.01/hd1+ 0.02/hd2 + .20/hd ;
815 fTotalXsc = 25.2 + 0.38*sqrLogPlab - 2.9*logP + 0.30/hd;
818 else if( (theParticle ==
theKPlus) && proton )
825 else if( pLab >
pMax )
843 + 2./((pLab - 0.8)*(pLab - 0.8) + 0.652);
845 + 2.6/((pLab - 1.)*(pLab - 1.) + 0.392);
857 else if( pLab >
pMax )
911 }
else if(theParticle ==
theK0S || theParticle ==
theK0L) {
937 }
else if(theParticle ==
theK0S || theParticle ==
theK0L) {
960 G4double pLab = std::sqrt(ekin*(ekin + 2*pM));
974 G4double psp = pLab*std::sqrt(pLab);
978 else if( pLab >
pMax )
997 fTotalXsc = 14./psp + (1.1*
cofLogT*ld2 + 19.5)/(1. - .21/sp + .52/p4) + .60/hd;
1016 - 1.3*logP + .15/hd;
1017 fTotalXsc = 25.2 + 0.38*sqrLogPlab - 2.9*logP + 0.60/hd;
1020 else if( (theParticle ==
theKPlus) && proton )
1027 else if( pLab >
pMax )
1045 + 2./((pLab - 0.8)*(pLab - 0.8) + 0.652);
1047 + 2.6/((pLab - 1.)*(pLab - 1.) + 0.392);
1059 else if( pLab >
pMax )
1110 static const G4double lBarCof1S = 0.88;
1111 static const G4double lBarCof2S = 0.76;
1112 static const G4double lBarCof3S = 0.64;
1113 static const G4double lBarCof1C = 0.784378;
1114 static const G4double lBarCofSC = 0.664378;
1115 static const G4double lBarCof2SC = 0.544378;
1116 static const G4double lBarCof1B = 0.740659;
1117 static const G4double lBarCofSB = 0.620659;
1118 static const G4double lBarCof2SB = 0.500659;
1187 static const G4double llMesCof1C = 0.676568;
1188 static const G4double llMesCof1B = 0.610989;
1189 static const G4double llMesCof2C = 0.353135;
1190 static const G4double llMesCof2B = 0.221978;
1191 static const G4double llMesCofSC = 0.496568;
1192 static const G4double llMesCofSB = 0.430989;
1193 static const G4double llMesCofCB = 0.287557;
1194 static const G4double llMesCofEtaP = 0.88;
1195 static const G4double llMesCofEta = 0.76;
1235 else if(theParticle ==
theEta )
1237 coeff = llMesCofEta;
1241 coeff = llMesCofEtaP;
1262 G4double Plab = std::sqrt(ekin*(ekin + 2.*mass));
1268 G4double sqrLogPlab = logPlab * logPlab;
1273 if( absPDGcode > 1000)
1277 fTotalXsc = 48.0 + 0.522*sqrLogPlab - 4.51*logPlab;
1278 fElasticXsc = 11.9 + 26.9*
G4Exp(-logPlab*1.21) + 0.169*sqrLogPlab - 1.85*logPlab;
1282 fTotalXsc = 47.3 + 0.513*sqrLogPlab - 4.27*logPlab;
1283 fElasticXsc = 11.9 + 26.9*
G4Exp(-logPlab*1.21) + 0.169*sqrLogPlab - 1.85*logPlab;
1286 else if( PDGcode == 211)
1290 fTotalXsc = 16.4 + 19.3 *
G4Exp(-logPlab*0.42) + 0.19 *sqrLogPlab - 0.0 *logPlab;
1291 fElasticXsc = 0.0 + 11.4*
G4Exp(-logPlab*0.40) + 0.079*sqrLogPlab - 0.0 *logPlab;
1295 fTotalXsc = 33.0 + 14.0 *
G4Exp(-logPlab*1.36) + 0.456*sqrLogPlab - 4.03*logPlab;
1296 fElasticXsc = 1.76 + 11.2*
G4Exp(-logPlab*0.64) + 0.043*sqrLogPlab - 0.0 *logPlab;
1299 else if( PDGcode == -211)
1303 fTotalXsc = 33.0 + 14.0 *
G4Exp(-logPlab*1.36) + 0.456*sqrLogPlab - 4.03*logPlab;
1304 fElasticXsc = 1.76 + 11.2*
G4Exp(-logPlab*0.64) + 0.043*sqrLogPlab - 0.0 *logPlab;
1308 fTotalXsc = 16.4 + 19.3 *
G4Exp(-logPlab*0.42) + 0.19 *sqrLogPlab - 0.0 *logPlab;
1309 fElasticXsc = 0.0 + 11.4*
G4Exp(-logPlab*0.40) + 0.079*sqrLogPlab - 0.0 *logPlab;
1312 else if( PDGcode == 111)
1316 fTotalXsc = (16.4 + 19.3 *
G4Exp(-logPlab*0.42) + 0.19 *sqrLogPlab - 0.0 *logPlab +
1317 33.0 + 14.0 *
G4Exp(-logPlab*1.36) + 0.456*sqrLogPlab - 4.03*logPlab)/2;
1319 fElasticXsc = (0.0 + 11.4*
G4Exp(-logPlab*0.40) + 0.079*sqrLogPlab - 0.0 *logPlab +
1320 1.76 + 11.2*
G4Exp(-logPlab*0.64) + 0.043*sqrLogPlab - 0.0 *logPlab)/2;
1325 fTotalXsc = (33.0 + 14.0 *
G4Exp(-logPlab*1.36) + 0.456*sqrLogPlab - 4.03*logPlab +
1326 16.4 + 19.3 *
G4Exp(-logPlab*0.42) + 0.19 *sqrLogPlab - 0.0 *logPlab)/2;
1327 fElasticXsc = (1.76 + 11.2*
G4Exp(-logPlab*0.64) + 0.043*sqrLogPlab - 0.0 *logPlab +
1328 0.0 + 11.4*
G4Exp(-logPlab*0.40) + 0.079*sqrLogPlab - 0.0 *logPlab)/2;
1331 else if( PDGcode == 321 )
1335 fTotalXsc = 18.1 + 0.26 *sqrLogPlab - 1.0 *logPlab;
1336 fElasticXsc = 5.0 + 8.1*
G4Exp(-logPlab*1.8 ) + 0.16 *sqrLogPlab - 1.3 *logPlab;
1340 fTotalXsc = 18.7 + 0.21 *sqrLogPlab - 0.89*logPlab;
1341 fElasticXsc = 7.3 + 0.29 *sqrLogPlab - 2.4 *logPlab;
1344 else if( PDGcode ==-321 )
1348 fTotalXsc = 32.1 + 0.66*sqrLogPlab - 5.6*logPlab;
1349 fElasticXsc = 7.3 + 0.29*sqrLogPlab - 2.4*logPlab;
1353 fTotalXsc = 25.2 + 0.38*sqrLogPlab - 2.9*logPlab;
1354 fElasticXsc = 5.0 + 8.1*
G4Exp(-logPlab*1.8 ) + 0.16*sqrLogPlab - 1.3*logPlab;
1357 else if( PDGcode == 311 )
1361 fTotalXsc = ( 18.1 + 0.26 *sqrLogPlab - 1.0 *logPlab +
1362 32.1 + 0.66 *sqrLogPlab - 5.6 *logPlab)/2;
1363 fElasticXsc = ( 5.0 + 8.1*
G4Exp(-logPlab*1.8 ) + 0.16 *sqrLogPlab - 1.3 *logPlab +
1364 7.3 + 0.29 *sqrLogPlab - 2.4 *logPlab)/2;
1368 fTotalXsc = ( 18.7 + 0.21 *sqrLogPlab - 0.89*logPlab +
1369 25.2 + 0.38 *sqrLogPlab - 2.9 *logPlab)/2;
1370 fElasticXsc = ( 7.3 + 0.29 *sqrLogPlab - 2.4 *logPlab +
1371 5.0 + 8.1*
G4Exp(-logPlab*1.8 ) + 0.16 *sqrLogPlab - 1.3 *logPlab)/2;
1378 fTotalXsc = 48.0 + 0.522*sqrLogPlab - 4.51*logPlab;
1379 fElasticXsc = 11.9 + 26.9*
G4Exp(-logPlab*1.21) + 0.169*sqrLogPlab - 1.85*logPlab;
1383 fTotalXsc = 47.3 + 0.513*sqrLogPlab - 4.27*logPlab;
1384 fElasticXsc = 11.9 + 26.9*
G4Exp(-logPlab*1.21) + 0.169*sqrLogPlab - 1.85*logPlab;
1418 xsection = 0.0677*x1 + 0.129*
x2;
1422 xsection = 21.70*x1 + 56.08*
x2;
1426 xsection = 21.70*x1 + 56.08*
x2;
1430 xsection = 21.70*x1 + 98.39*
x2;
1434 xsection = 13.63*x1 + 27.56*
x2;
1438 xsection = 13.63*x1 + 36.02*
x2;
1442 xsection = 11.82*x1 + 8.15*
x2;
1446 xsection = 11.82*x1 + 26.36*
x2;
1448 else if(theParticle ==
theK0S || theParticle ==
theK0L)
1450 xsection = 11.82*x1 + 17.25*
x2;
1454 xsection = 21.70*x1 + 56.08*
x2;
1484 G4double totEcm = std::sqrt(pM*pM + tM*tM + 2.*pElab*tM);