53G4bool G4QNuMuNuclearCrossSection::onlyCS=
true;
54G4double G4QNuMuNuclearCrossSection::lastSig=0.;
55G4double G4QNuMuNuclearCrossSection::lastQEL=0.;
56G4int G4QNuMuNuclearCrossSection::lastL=0;
57G4double G4QNuMuNuclearCrossSection::lastE=0.;
58G4double* G4QNuMuNuclearCrossSection::lastEN=0;
59G4double* G4QNuMuNuclearCrossSection::lastTX=0;
60G4double* G4QNuMuNuclearCrossSection::lastQE=0;
61G4int G4QNuMuNuclearCrossSection::lastPDG=0;
62G4int G4QNuMuNuclearCrossSection::lastN=0;
63G4int G4QNuMuNuclearCrossSection::lastZ=0;
64G4double G4QNuMuNuclearCrossSection::lastP=0.;
65G4double G4QNuMuNuclearCrossSection::lastTH=0.;
66G4double G4QNuMuNuclearCrossSection::lastCS=0.;
67G4int G4QNuMuNuclearCrossSection::lastI=0;
68std::vector<G4double*>* G4QNuMuNuclearCrossSection::TX =
new std::vector<G4double*>;
69std::vector<G4double*>* G4QNuMuNuclearCrossSection::QE =
new std::vector<G4double*>;
75 return &theCrossSection;
80 G4int lens=TX->size();
81 for(
G4int i=0; i<lens; ++i)
delete[] (*TX)[i];
83 G4int hens=QE->size();
84 for(
G4int i=0; i<hens; ++i)
delete[] (*QE)[i];
94 static std::vector <G4int> colPDG;
95 static std::vector <G4int> colN;
96 static std::vector <G4int> colZ;
97 static std::vector <G4double> colP;
98 static std::vector <G4double> colTH;
99 static std::vector <G4double> colCS;
103 G4cout<<
"G4QNMNCS::GetCS:>> f="<<fCS<<
", p="<<pMom<<
", Z="<<tgZ<<
"("<<lastZ<<
") ,N="<<tgN
104 <<
"("<<lastN<<
"),PDG="<<pPDG<<
"("<<lastPDG<<
"), T="<<pEn<<
"("<<lastTH<<
")"<<
",Sz="
111 G4cout<<
"G4QNMNCS::GetCS: *** Found pPDG="<<pPDG<<
" =--=> CS=0"<<
G4endl;
117 if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)
126 if(lastI)
for(
G4int i=0; i<lastI; i++)
if(colPDG[i]==pPDG)
128 if(colN[i]==tgN && colZ[i]==tgZ)
133 G4cout<<
"G4QNMNCS::GetCS:*Found*P="<<pMom<<
",Threshold="<<lastTH<<
",j="<<j<<
G4endl;
139 G4cout<<
"G4QNMNCS::GetCS:Found T="<<pEn<<
" < Threshold="<<lastTH<<
",X=0"<<
G4endl;
149 G4cout<<
"G4QNMNCS::GetCS:P="<<pMom<<
",CS="<<lastCS*millibarn<<
G4endl;
152 return lastCS*millibarn;
157 G4cout<<
"G4QNMNCS::G:UpdaDB P="<<pMom<<
",f="<<fCS<<
",lI="<<lastI<<
",j="<<j<<
G4endl;
161 G4cout<<
"G4QNMNCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<
G4endl;
164 if(lastCS<=0. && pEn>lastTH)
167 G4cout<<
"G4QNMNCS::GetCS: New T="<<pEn<<
"(CS=0) > Threshold="<<lastTH<<
G4endl;
174 G4cout<<
"---G4QNMNCrossSec::GetCrosSec:pPDG="<<pPDG<<
",j="<<j<<
",N="<<colN[i]
175 <<
",Z["<<i<<
"]="<<colZ[i]<<
",cPDG="<<colPDG[i]<<
G4endl;
183 G4cout<<
"G4QNMNCS::GetCrSec: CalcNew P="<<pMom<<
",f="<<fCS<<
",lastI="<<lastI<<
G4endl;
191 G4cout<<
"G4QNMNCrossSection::GetCrossSect:NewThresh="<<lastTH<<
",T="<<pEn<<
G4endl;
196 G4cout<<
"G4QNMNCS::GetCS: First T="<<pEn<<
"(CS=0) > Threshold="<<lastTH<<
G4endl;
202 G4cout<<
"G4QNMNCS::GetCrosSec:New CS="<<lastCS<<
",lZ="<<lastN<<
",lN="<<lastZ<<
G4endl;
207 colPDG.push_back(pPDG);
208 colP.push_back(pMom);
209 colTH.push_back(lastTH);
210 colCS.push_back(lastCS);
212 G4cout<<
"G4QNMNCS::GetCS:1st,P="<<pMom<<
"(MeV),X="<<lastCS*millibarn<<
"(mb)"<<
G4endl;
215 return lastCS*millibarn;
220 G4cout<<
"G4QNMNCS::GetCS: Update lastI="<<lastI<<
",j="<<j<<
G4endl;
230 G4cout<<
"G4QNMNCS::GetCS: Current T="<<pEn<<
" < Threshold="<<lastTH<<
", CS=0"<<
G4endl;
235 else if(std::fabs(lastP/pMom-1.)<
tolerance)
238 G4cout<<
"G4QNMNCS::GetCS:OldCur P="<<pMom<<
"="<<pMom<<
",CS="<<lastCS*millibarn<<
G4endl;
241 return lastCS*millibarn;
246 G4cout<<
"G4QNMNCS::GetCS:UpdaCur P="<<pMom<<
",f="<<fCS<<
",I="<<lastI<<
",j="<<j<<
G4endl;
252 G4cout<<
"G4QNMNCS::GetCrSec:End,P="<<pMom<<
"(MeV),CS="<<lastCS*millibarn<<
"(mb)"<<
G4endl;
255 return lastCS*millibarn;
264 static const G4double mN=.931494043;
266 static const G4double mmu=.105658369;
268 static const G4double thresh=mmu+mmu2/dmN;
272 if(Z>0||N>0) dN=thresh*GeV;
282 static const G4int nE=65;
283 static const G4int mL=nE-1;
284 static const G4double mN=.931494043;
286 static const G4double mmu=.105658369;
288 static const G4double EMi=mmu+mmu2/dmN;
291 static std::vector <G4double> colH;
322 G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);
323 if(res<0)
G4cerr<<
"*W*G4NuMuNuclearCS::CalcCrossSect:Bad Function Retrieve"<<
G4endl;
325 G4int sync=TX->size();
326 if(sync!=I)
G4cerr<<
"***G4NuMuNuclearCS::CalcCrossSect:Sync.="<<sync<<
"#"<<I<<
G4endl;
327 TX->push_back(lastTX);
328 QE->push_back(lastQE);
346 if(lastE<=lastEN[sep]) sep-=newran;
351 if(chk+chk!=mL)
G4cerr<<
"*Warn*G4NuMuNuclearCS::CalcCS:Table! mL="<<mL<<
G4endl;
355 if(lastE<lowE||sep>=mL||lastE>highE)
356 G4cerr<<
"*Warn*G4NuMuNuclearCS::CalcCS:Bin! "<<lowE<<
" < "<<lastE<<
" < "<<highE
357 <<
", sep="<<sep<<
", mL="<<mL<<
G4endl;
358 lastSig=lastE*(lastE-lowE)*(lastTX[sep+1]-lowTX)/(highE-lowE)+lowTX;
362 lastQEL=(lastE-lowE)*(lastQE[sep+1]-lowQE)/(highE-lowE)+lowQE;
364 G4cout<<
"G4NuMuNuclearCS::CalcCS: T="<<lastSig<<
",Q="<<lastQEL<<
",E="<<lastE<<
G4endl;
373 if(lastQEL<0.) lastQEL = 0.;
374 if(lastSig<0.) lastSig = 0.;
377 if(!onlyCS) lastQEL*=mb38;
389 static const G4double mN=.931494043;
391 static const G4double mmu=.105658369;
393 static const G4double thresh=mmu+mmu2/dmN;
394 static const G4int nE=65;
395 static const G4double nuEn[nE]={thresh,
396 .112039,.116079,.120416,.125076,.130090,.135494,.141324,.147626,.154445,.161838,
397 .169864,.178594,.188105,.198485,.209836,.222272,.235923,.250941,.267497,.285789,
398 .306045,.328530,.353552,.381466,.412689,.447710,.487101,.531538,.581820,.638893,
399 .703886,.778147,.863293,.961275,1.07445,1.20567,1.35843,1.53701,1.74667,1.99390,
400 2.28679,2.63542,3.05245,3.55386,4.15990,4.89644,5.79665,6.90336,8.27224,9.97606,
401 12.1106,14.8029,18.2223,22.5968,28.2351,35.5587,45.1481,57.8086,74.6682,97.3201,
402 128.036,170.085,228.220,309.420};
404 .108618,.352160,.476083,.566575,.639014,.699871,.752634,.799407,.841524,.879844,
405 .914908,.947050,.976456,1.00321,1.02734,1.04881,1.06755,1.08349,1.09653,1.10657,
406 1.11355,1.11739,1.11806,1.11556,1.10992,1.10124,1.08964,1.07532,1.05851,1.03950,
407 1.01859,.996169,.972593,.948454,.923773,.899081,.874713,.850965,.828082,.806265,
408 .785659,.766367,.748450,.731936,.716824,.703098,.690723,.679652,.669829,.661187,
409 .653306,.646682,.640986,.636125,.631993,.628479,.625458,.622800,.620364,.616231,
410 .614986,.612563,.609807,.606511};
412 .012170,.040879,.057328,.070865,.083129,.094828,.106366,.118013,.129970,.142392,
413 .155410,.169138,.183676,.199123,.215573,.233120,.251860,.271891,.293317,.316246,
414 .340796,.367096,.395292,.425547,.458036,.491832,.524989,.556457,.585692,.612377,
415 .636544,.657790,.676260,.692007,.705323,.716105,.724694,.731347,.736340,.740172,
416 .742783,.744584,.745804,.746829,.747479,.747995,.748436,.749047,.749497,.749925,
417 .750486,.750902,.751268,.751566,.752026,.752266,.752428,.752761,.752873,.753094,
418 .753161,.753164,.753340,.753321};
428 G4cout<<
"***G4QNuMuNuclearCrossSection::GetFunctions:Z="<<z<<
".No CS returned"<<
G4endl;
431 for(
G4int k=0; k<nE; k++)
438 if(first) e[k]=nuEn[k];
439 t[k]=TOTX[k]*nuEn[k]*(na+na)/ta+QELX[k]*(dn+dn-da)/ta;
448 static const G4double mmu=.105658369;
450 static const double hmmu2=mmu2/2;
451 static const double MN=.931494043;
452 static const double MN2=MN*MN;
454 static const G4double pconv=1./power;
455 static const G4int nQ2=101;
456 static const G4int lQ2=nQ2-1;
457 static const G4int bQ2=lQ2-1;
459 static const G4double Xl[nQ2]={1.87905e-10,
460 .005231, .010602, .016192, .022038, .028146, .034513, .041130, .047986, .055071, .062374,
461 .069883, .077587, .085475, .093539, .101766, .110150, .118680, .127348, .136147, .145069,
462 .154107, .163255, .172506, .181855, .191296, .200825, .210435, .220124, .229886, .239718,
463 .249617, .259578, .269598, .279675, .289805, .299986, .310215, .320490, .330808, .341169,
464 .351568, .362006, .372479, .382987, .393527, .404099, .414700, .425330, .435987, .446670,
465 .457379, .468111, .478866, .489643, .500441, .511260, .522097, .532954, .543828, .554720,
466 .565628, .576553, .587492, .598447, .609416, .620398, .631394, .642403, .653424, .664457,
467 .675502, .686557, .697624, .708701, .719788, .730886, .741992, .753108, .764233, .775366,
468 .786508, .797658, .808816, .819982, .831155, .842336, .853524, .864718, .875920, .887128,
469 .898342, .909563, .920790, .932023, .943261, .954506, .965755, .977011, .988271, .999539};
473 static const G4double dX=(Xmax-Xmin)/lQ2;
475 1.88843, 3.65455, 5.29282, 6.82878, 8.28390, 9.67403, 11.0109, 12.3034, 13.5583, 14.7811,
476 15.9760, 17.1466, 18.2958, 19.4260, 20.5392, 21.6372, 22.7215, 23.7933, 24.8538, 25.9039,
477 26.9446, 27.9766, 29.0006, 30.0171, 31.0268, 32.0301, 33.0274, 34.0192, 35.0058, 35.9876,
478 36.9649, 37.9379, 38.9069, 39.8721, 40.8337, 41.7920, 42.7471, 43.6992, 44.6484, 45.5950,
479 46.5390, 47.4805, 48.4197, 49.3567, 50.2916, 51.2245, 52.1554, 53.0846, 54.0120, 54.9377,
480 55.8617, 56.7843, 57.7054, 58.6250, 59.5433, 60.4603, 61.3761, 62.2906, 63.2040, 64.1162,
481 65.0274, 65.9375, 66.8467, 67.7548, 68.6621, 69.5684, 70.4738, 71.3784, 72.2822, 73.1852,
482 74.0875, 74.9889, 75.8897, 76.7898, 77.6892, 78.5879, 79.4860, 80.3835, 81.2804, 82.1767,
483 83.0724, 83.9676, 84.8622, 85.7563, 86.6499, 87.5430, 88.4356, 89.3277, 90.2194, 91.1106,
484 92.0013, 92.8917, 93.7816, 94.6711, 95.5602, 96.4489, 97.3372, 98.2252, 99.1128, 100.000};
492 G4double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
493 G4double E2M=MN*Enu2-(Enu+MN)*hmmu2;
498 G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E));
500 G4double Xma=std::pow((1.+Q2mi),power);
501 G4double Xmi=std::pow((1.+Q2ma),power);
504 G4int iXi=
static_cast<int>(rXi);
509 G4double inti=bnti+dXi*(inl[iXi+1]-bnti);
512 G4int iXa=
static_cast<int>(rXa);
517 G4double inta=bnta+dXa*(inl[iXa+1]-bnta);
520 G4int intc=
static_cast<int>(intx);
522 if(intc>bQ2) intc=bQ2;
533 static const double mpi=.13957018;
534 static const G4double mmu=.105658369;
536 static const double hmmu2=mmu2/2;
537 static const double MN=.931494043;
538 static const double MN2=MN*MN;
539 static const double dMN=MN+MN;
540 static const double mcV=(dMN+mpi)*mpi;
541 static const G4int power=7;
542 static const G4double pconv=1./power;
543 static const G4int nX=21;
544 static const G4int lX=nX-1;
545 static const G4int bX=lX-1;
546 static const G4int nE=20;
547 static const G4int bE=nE-1;
548 static const G4int pE=bE-1;
550 static const G4double X0[nX]={6.14081e-05,
551 .413394, .644455, .843199, 1.02623, 1.20032, 1.36916, 1.53516, 1.70008, 1.86539, 2.03244,
552 2.20256, 2.37723, 2.55818, 2.74762, 2.94857, 3.16550, 3.40582, 3.68379, 4.03589, 4.77419};
553 static const G4double X1[nX]={.00125268,
554 .861178, 1.34230, 1.75605, 2.13704, 2.49936, 2.85072, 3.19611, 3.53921, 3.88308, 4.23049,
555 4.58423, 4.94735, 5.32342, 5.71700, 6.13428, 6.58447, 7.08267, 7.65782, 8.38299, 9.77330};
556 static const G4double X2[nX]={.015694,
557 1.97690, 3.07976, 4.02770, 4.90021, 5.72963, 6.53363, 7.32363, 8.10805, 8.89384, 9.68728,
558 10.4947, 11.3228, 12.1797, 13.0753, 14.0234, 15.0439, 16.1692, 17.4599, 19.0626, 21.7276};
559 static const G4double X3[nX]={.0866877,
560 4.03498, 6.27651, 8.20056, 9.96931, 11.6487, 13.2747, 14.8704, 16.4526, 18.0351, 19.6302,
561 21.2501, 22.9075, 24.6174, 26.3979, 28.2730, 30.2770, 32.4631, 34.9243, 37.8590, 41.9115};
562 static const G4double X4[nX]={.160483,
563 5.73111, 8.88884, 11.5893, 14.0636, 16.4054, 18.6651, 20.8749, 23.0578, 25.2318, 27.4127,
564 29.6152, 31.8540, 34.1452, 36.5074, 38.9635, 41.5435, 44.2892, 47.2638, 50.5732, 54.4265};
565 static const G4double X5[nX]={.0999307,
566 5.25720, 8.11389, 10.5375, 12.7425, 14.8152, 16.8015, 18.7296, 20.6194, 22.4855, 24.3398,
567 26.1924, 28.0527, 29.9295, 31.8320, 33.7699, 35.7541, 37.7975, 39.9158, 42.1290, 44.4649};
568 static const G4double X6[nX]={.0276367,
569 3.53378, 5.41553, 6.99413, 8.41629, 9.74057, 10.9978, 12.2066, 13.3796, 14.5257, 15.6519,
570 16.7636, 17.8651, 18.9603, 20.0527, 21.1453, 22.2411, 23.3430, 24.4538, 25.5765, 26.7148};
571 static const G4double X7[nX]={.00472383,
572 2.08253, 3.16946, 4.07178, 4.87742, 5.62140, 6.32202, 6.99034, 7.63368, 8.25720, 8.86473,
573 9.45921, 10.0430, 10.6179, 11.1856, 11.7475, 12.3046, 12.8581, 13.4089, 13.9577, 14.5057};
574 static const G4double X8[nX]={.000630783,
575 1.22723, 1.85845, 2.37862, 2.84022, 3.26412, 3.66122, 4.03811, 4.39910, 4.74725, 5.08480,
576 5.41346, 5.73457, 6.04921, 6.35828, 6.66250, 6.96250, 7.25884, 7.55197, 7.84232, 8.13037};
577 static const G4double X9[nX]={7.49179e-05,
578 .772574, 1.16623, 1.48914, 1.77460, 2.03586, 2.27983, 2.51069, 2.73118, 2.94322, 3.14823,
579 3.34728, 3.54123, 3.73075, 3.91638, 4.09860, 4.27779, 4.45428, 4.62835, 4.80025, 4.97028};
580 static const G4double XA[nX]={8.43437e-06,
581 .530035, .798454, 1.01797, 1.21156, 1.38836, 1.55313, 1.70876, 1.85712, 1.99956, 2.13704,
582 2.27031, 2.39994, 2.52640, 2.65007, 2.77127, 2.89026, 3.00726, 3.12248, 3.23607, 3.34823};
583 static const G4double XB[nX]={9.27028e-07,
584 .395058, .594211, .756726, .899794, 1.03025, 1.15167, 1.26619, 1.37523, 1.47979, 1.58059,
585 1.67819, 1.77302, 1.86543, 1.95571, 2.04408, 2.13074, 2.21587, 2.29960, 2.38206, 2.46341};
586 static const G4double XC[nX]={1.00807e-07,
587 .316195, .474948, .604251, .717911, .821417, .917635, 1.00829, 1.09452, 1.17712, 1.25668,
588 1.33364, 1.40835, 1.48108, 1.55207, 1.62150, 1.68954, 1.75631, 1.82193, 1.88650, 1.95014};
589 static const G4double XD[nX]={1.09102e-08,
590 .268227, .402318, .511324, .606997, .694011, .774803, .850843, .923097, .992243, 1.05878,
591 1.12309, 1.18546, 1.24613, 1.30530, 1.36313, 1.41974, 1.47526, 1.52978, 1.58338, 1.63617};
592 static const G4double XE[nX]={1.17831e-09,
593 .238351, .356890, .453036, .537277, .613780, .684719, .751405, .814699, .875208, .933374,
594 .989535, 1.04396, 1.09685, 1.14838, 1.19870, 1.24792, 1.29615, 1.34347, 1.38996, 1.43571};
595 static const G4double XF[nX]={1.27141e-10,
596 .219778, .328346, .416158, .492931, .562525, .626955, .687434, .744761, .799494, .852046,
597 .902729, .951786, .999414, 1.04577, 1.09099, 1.13518, 1.17844, 1.22084, 1.26246, 1.30338};
598 static const G4double XG[nX]={1.3713e-11,
599 .208748, .310948, .393310, .465121, .530069, .590078, .646306, .699515, .750239, .798870,
600 .845707, .890982, .934882, .977559, 1.01914, 1.05973, 1.09941, 1.13827, 1.17637, 1.21379};
601 static const G4double XH[nX]={1.47877e-12,
602 .203089, .301345, .380162, .448646, .510409, .567335, .620557, .670820, .718647, .764421,
603 .808434, .850914, .892042, .931967, .970812, 1.00868, 1.04566, 1.08182, 1.11724, 1.15197};
604 static const G4double XI[nX]={1.59454e-13,
605 .201466, .297453, .374007, .440245, .499779, .554489, .605506, .653573, .699213, .742806,
606 .784643, .824952, .863912, .901672, .938353, .974060, 1.00888, 1.04288, 1.07614, 1.10872};
607 static const G4double XJ[nX]={1.71931e-14,
608 .202988, .297870, .373025, .437731, .495658, .548713, .598041, .644395, .688302, .730147,
609 .770224, .808762, .845943, .881916, .916805, .950713, .983728, 1.01592, 1.04737, 1.07813};
611 static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0],
612 X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]};
614 (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX,
615 (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX,
616 (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX,
617 (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX,
618 (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX};
620 {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ};
622 .411893, 1.25559, 2.34836, 3.60264, 4.96046, 6.37874, 7.82342, 9.26643, 10.6840, 12.0555,
623 13.3628, 14.5898, 15.7219, 16.7458, 17.6495, 18.4217, 19.0523, 19.5314, 19.8501, 20.0000};
625 .401573, 1.22364, 2.28998, 3.51592, 4.84533, 6.23651, 7.65645, 9.07796, 10.4780, 11.8365,
626 13.1360, 14.3608, 15.4967, 16.5309, 17.4516, 18.2481, 18.9102, 19.4286, 19.7946, 20.0000};
628 .387599, 1.17339, 2.19424, 3.37090, 4.65066, 5.99429, 7.37071, 8.75427, 10.1232, 11.4586,
629 12.7440, 13.9644, 15.1065, 16.1582, 17.1083, 17.9465, 18.6634, 19.2501, 19.6982, 20.0000};
631 .366444, 1.09391, 2.04109, 3.13769, 4.33668, 5.60291, 6.90843, 8.23014, 9.54840, 10.8461,
632 12.1083, 13.3216, 14.4737, 15.5536, 16.5512, 17.4573, 18.2630, 18.9603, 19.5417, 20.0000};
634 .321962, .959681, 1.79769, 2.77753, 3.85979, 5.01487, 6.21916, 7.45307, 8.69991, 9.94515,
635 11.1759, 12.3808, 13.5493, 14.6720, 15.7402, 16.7458, 17.6813, 18.5398, 19.3148, 20.0000};
637 .257215, .786302, 1.49611, 2.34049, 3.28823, 4.31581, 5.40439, 6.53832, 7.70422, 8.89040,
638 10.0865, 11.2833, 12.4723, 13.6459, 14.7969, 15.9189, 17.0058, 18.0517, 19.0515, 20.0000};
640 .201608, .638914, 1.24035, 1.97000, 2.80354, 3.72260, 4.71247, 5.76086, 6.85724, 7.99243,
641 9.15826, 10.3474, 11.5532, 12.7695, 13.9907, 15.2117, 16.4275, 17.6337, 18.8258, 20.0000};
643 .168110, .547208, 1.07889, 1.73403, 2.49292, 3.34065, 4.26525, 5.25674, 6.30654, 7.40717,
644 8.55196, 9.73492, 10.9506, 12.1940, 13.4606, 14.7460, 16.0462, 17.3576, 18.6767, 20.0000};
646 .150652, .497557, .990048, 1.60296, 2.31924, 3.12602, 4.01295, 4.97139, 5.99395, 7.07415,
647 8.20621, 9.38495, 10.6057, 11.8641, 13.1561, 14.4781, 15.8267, 17.1985, 18.5906, 20.0000};
649 .141449, .470633, .941304, 1.53053, 2.22280, 3.00639, 3.87189, 4.81146, 5.81837, 6.88672,
650 8.01128, 9.18734, 10.4106, 11.6772, 12.9835, 14.3261, 15.7019, 17.1080, 18.5415, 20.0000};
652 .136048, .454593, .912075, 1.48693, 2.16457, 2.93400, 3.78639, 4.71437, 5.71163, 6.77265,
653 7.89252, 9.06683, 10.2916, 11.5631, 12.8780, 14.2331, .625500, 17.0525, 18.5115, 20.0000};
655 .132316, .443455, .891741, 1.45656, 2.12399, 2.88352, 3.72674, 4.64660, 5.63711, 6.69298,
656 7.80955, 8.98262, 10.2084, 11.4833, 12.8042, 14.1681, 15.5721, 17.0137, 18.4905, 20.0000};
658 .129197, .434161, .874795, 1.43128, 2.09024, 2.84158, 3.67721, 4.59038, 5.57531, 6.62696,
659 7.74084, 8.91291, 10.1395, 11.4173, 12.7432, 14.1143, 15.5280, 16.9817, 18.4731, 20.0000};
661 .126079, .424911, .857980, 1.40626, 2.05689, 2.80020, 3.62840, 4.53504, 5.51456, 6.56212,
662 7.67342, 8.84458, 10.0721, 11.3527, 12.6836, 14.0618, 15.4849, 16.9504, 18.4562, 20.0000};
664 .122530, .414424, .838964, 1.37801, 2.01931, 2.75363, 3.57356, 4.47293, 5.44644, 6.48949,
665 7.59795, 8.76815, 9.99673, 11.2806, 12.6170, 14.0032, 15.4369, 16.9156, 18.4374, 20.0000};
667 .118199, .401651, .815838, 1.34370, 1.97370, 2.69716, 3.50710, 4.39771, 5.36401, 6.40164,
668 7.50673, 8.67581, 9.90572, 11.1936, 12.5367, 13.9326, 15.3790, 16.8737, 18.4146, 20.0000};
670 .112809, .385761, .787075, 1.30103, 1.91700, 2.62697, 3.42451, 4.30424, 5.26158, 6.29249,
671 7.39341, 8.56112, 9.79269, 11.0855, 12.4369, 13.8449, 15.3071, 16.8216, 18.3865, 20.0000};
673 .106206, .366267, .751753, 1.24859, 1.84728, 2.54062, 3.32285, .189160, 5.13543, 6.15804,
674 7.25377, 8.41975, 9.65334, 10.9521, 12.3139, 13.7367, 15.2184, 16.7573, 18.3517, 20.0000};
676 .098419, .343194, .709850, 1.18628, 1.76430, 2.43772, 3.20159, 4.05176, 4.98467, 5.99722,
677 7.08663, 8.25043, 9.48633, 10.7923, 12.1663, 13.6067, 15.1118, 16.6800, 18.3099, 20.0000};
679 .089681, .317135, .662319, 1.11536, 1.66960, 2.32002, 3.06260, 3.89397, 4.81126, 5.81196,
680 6.89382, 8.05483, 9.29317, 10.6072, 11.9952, 13.4560, 14.9881, 16.5902, 18.2612, 20.0000};
682 {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ};
684-1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292,
685 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218};
687 static const G4double lEma=lE[nE-1];
688 static const G4double dlE=(lEma-lEmi)/bE;
693 G4int fE=
static_cast<int>(rE);
705 G4double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
706 G4double E2M=MN*Enu2-(Enu+MN)*hmmu2;
711 G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E));
714 if(Q2ma>Q2nq) Q2ma=Q2nq;
717 G4double shift=1.+.9673/(1.+.323/Enu/Enu)/std::pow(Enu,.78);
719 G4double Xmi=std::pow((shift-Rmi),power);
720 G4double Xma=std::pow((shift-1.),power);
722 G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]);
723 G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]);
725 G4int iXi=
static_cast<int>(rXi);
730 G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil);
732 G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir);
733 G4double inti=intil+dE*(intir-intil);
736 G4int iXa=
static_cast<int>(rXa);
741 G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal);
743 G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar);
744 G4double inta=intal+dE*(intar-intal);
748 G4int intc=
static_cast<int>(intx);
753 G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl);
755 G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr);
768 G4double s_value=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3)));
770 return 1.-s_value*(1.-s_value/2);
776 return 3.+.3581*std::log(1.+Q2/.04);
G4DLLIMPORT std::ostream G4cerr
G4DLLIMPORT std::ostream G4cout
G4int GetExchangePDGCode()
G4double GetQEL_ExchangeQ2()
G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=14)
G4double GetNPartons(G4double Q2)
G4double GetNQE_ExchangeQ2()
G4double GetDirectPart(G4double Q2)
~G4QNuMuNuclearCrossSection()
G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, G4int N, G4double Momentum)
static G4VQCrossSection * GetPointer()
virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, G4int pPDG=0)
static G4double tolerance