49const G4int G4QKaonMinusElasticCrossSection::nPoints=128;
50const G4int G4QKaonMinusElasticCrossSection::nLast=nPoints-1;
51G4double G4QKaonMinusElasticCrossSection::lPMin=-8.;
52G4double G4QKaonMinusElasticCrossSection::lPMax= 8.;
53G4double G4QKaonMinusElasticCrossSection::dlnP=(lPMax-lPMin)/nLast;
54G4bool G4QKaonMinusElasticCrossSection::onlyCS=
true;
55G4double G4QKaonMinusElasticCrossSection::lastSIG=0.;
56G4double G4QKaonMinusElasticCrossSection::lastLP=-10.;
57G4double G4QKaonMinusElasticCrossSection::lastTM=0.;
58G4double G4QKaonMinusElasticCrossSection::theSS=0.;
59G4double G4QKaonMinusElasticCrossSection::theS1=0.;
60G4double G4QKaonMinusElasticCrossSection::theB1=0.;
61G4double G4QKaonMinusElasticCrossSection::theS2=0.;
62G4double G4QKaonMinusElasticCrossSection::theB2=0.;
63G4double G4QKaonMinusElasticCrossSection::theS3=0.;
64G4double G4QKaonMinusElasticCrossSection::theB3=0.;
65G4double G4QKaonMinusElasticCrossSection::theS4=0.;
66G4double G4QKaonMinusElasticCrossSection::theB4=0.;
67G4int G4QKaonMinusElasticCrossSection::lastTZ=0;
68G4int G4QKaonMinusElasticCrossSection::lastTN=0;
69G4double G4QKaonMinusElasticCrossSection::lastPIN=0.;
70G4double* G4QKaonMinusElasticCrossSection::lastCST=0;
71G4double* G4QKaonMinusElasticCrossSection::lastPAR=0;
72G4double* G4QKaonMinusElasticCrossSection::lastSST=0;
73G4double* G4QKaonMinusElasticCrossSection::lastS1T=0;
74G4double* G4QKaonMinusElasticCrossSection::lastB1T=0;
75G4double* G4QKaonMinusElasticCrossSection::lastS2T=0;
76G4double* G4QKaonMinusElasticCrossSection::lastB2T=0;
77G4double* G4QKaonMinusElasticCrossSection::lastS3T=0;
78G4double* G4QKaonMinusElasticCrossSection::lastB3T=0;
79G4double* G4QKaonMinusElasticCrossSection::lastS4T=0;
80G4double* G4QKaonMinusElasticCrossSection::lastB4T=0;
81G4int G4QKaonMinusElasticCrossSection::lastN=0;
82G4int G4QKaonMinusElasticCrossSection::lastZ=0;
83G4double G4QKaonMinusElasticCrossSection::lastP=0.;
84G4double G4QKaonMinusElasticCrossSection::lastTH=0.;
85G4double G4QKaonMinusElasticCrossSection::lastCS=0.;
86G4int G4QKaonMinusElasticCrossSection::lastI=0;
88std::vector<G4double*> G4QKaonMinusElasticCrossSection::PAR;
89std::vector<G4double*> G4QKaonMinusElasticCrossSection::CST;
90std::vector<G4double*> G4QKaonMinusElasticCrossSection::SST;
91std::vector<G4double*> G4QKaonMinusElasticCrossSection::S1T;
92std::vector<G4double*> G4QKaonMinusElasticCrossSection::B1T;
93std::vector<G4double*> G4QKaonMinusElasticCrossSection::S2T;
94std::vector<G4double*> G4QKaonMinusElasticCrossSection::B2T;
95std::vector<G4double*> G4QKaonMinusElasticCrossSection::S3T;
96std::vector<G4double*> G4QKaonMinusElasticCrossSection::B3T;
97std::vector<G4double*> G4QKaonMinusElasticCrossSection::S4T;
98std::vector<G4double*> G4QKaonMinusElasticCrossSection::B4T;
106 std::vector<G4double*>::iterator pos;
107 for (pos=CST.begin(); pos<CST.end(); pos++)
110 for (pos=PAR.begin(); pos<PAR.end(); pos++)
113 for (pos=SST.begin(); pos<SST.end(); pos++)
116 for (pos=S1T.begin(); pos<S1T.end(); pos++)
119 for (pos=B1T.begin(); pos<B1T.end(); pos++)
122 for (pos=S2T.begin(); pos<S2T.end(); pos++)
125 for (pos=B2T.begin(); pos<B2T.end(); pos++)
128 for (pos=S3T.begin(); pos<S3T.end(); pos++)
131 for (pos=B3T.begin(); pos<B3T.end(); pos++)
134 for (pos=S4T.begin(); pos<S4T.end(); pos++)
137 for (pos=B4T.begin(); pos<B4T.end(); pos++)
146 return &theCrossSection;
154 static std::vector <G4int> colN;
155 static std::vector <G4int> colZ;
156 static std::vector <G4double> colP;
157 static std::vector <G4double> colTH;
158 static std::vector <G4double> colCS;
163 G4cout<<
"G4QKaMiusElCS::GetCS:>>>f="<<fCS<<
", p="<<pMom<<
", Z="<<tgZ<<
"("<<lastZ<<
") ,N="
164 <<tgN<<
"("<<lastN<<
"), T="<<pEn<<
"("<<lastTH<<
")"<<
",Sz="<<colN.size()<<
G4endl;
169 G4cout<<
"*Warning*G4QKaonMinusElaCS::GetCS:*>Found pPDG="<<pPDG<<
" ==> CS=0"<<
G4endl;
178 if(lastI)
for(
G4int i=0; i<lastI; i++)
180 if(colN[i]==tgN && colZ[i]==tgZ)
185 G4cout<<
"G4QKMElCS::GetCS:*Found* P="<<pMom<<
",Threshold="<<lastTH<<
",i="<<i<<
G4endl;
191 G4cout<<
"G4QKMElCS::GetCS:Found T="<<pEn<<
" < Threshold="<<lastTH<<
",CS=0"<<
G4endl;
202 G4cout<<
"G4QKaonMinusElastCS::GetCS: P="<<pMom<<
",CS="<<lastCS*millibarn<<
G4endl;
205 return lastCS*millibarn;
210 G4cout<<
"G4QKMElCS::G:UpdateDB P="<<pMom<<
",f="<<fCS<<
",I="<<lastI<<
",i="<<i<<
G4endl;
214 G4cout<<
"G4QKaonMinusElCS::GetCrosSec:****>New(inDB) Calculated CS="<<lastCS<<
G4endl;
217 if(lastCS<=0. && pEn>lastTH)
220 G4cout<<
"G4QKaonMinusElCS::GetCS: T="<<pEn<<
"(CS=0) > Threshold="<<lastTH<<
G4endl;
227 G4cout<<
"---G4QKaonMinusElasticCrossSection::GetCrosSec:pPDG="<<pPDG<<
",i="<<i<<
",N="
228 <<colN[i]<<
",Z["<<i<<
"]="<<colZ[i]<<
G4endl;
235 G4cout<<
"G4QKaonMinusElCS::GetCS:CalNewP="<<pMom<<
",f="<<fCS<<
",lastI="<<lastI<<
G4endl;
243 G4cout<<
"G4QKaonMinusElasticCrossSection::GetCS:NewThr="<<lastTH<<
",T="<<pEn<<
G4endl;
248 G4cout<<
"G4QKaonMinusElCS::GetCS:1st T="<<pEn<<
"(CS=0)>Threshold="<<lastTH<<
G4endl;
254 G4cout<<
"G4QKaonMinusElCS::GetCS:NCS="<<lastCS<<
",lZ="<<lastN<<
",lN="<<lastZ<<
G4endl;
259 colP.push_back(pMom);
260 colTH.push_back(lastTH);
261 colCS.push_back(lastCS);
263 G4cout<<
"G4QKMElCS::GetCS:1st,P="<<pMom<<
"(MeV),CS="<<lastCS*millibarn<<
"(mb)"<<
G4endl;
266 return lastCS*millibarn;
271 G4cout<<
"G4QKaonMinusElasticCrossSection::GetCS: Update lastI="<<lastI<<
G4endl;
277 G4cout<<
"G4QKMElCS::GetCSec:End,P="<<pMom<<
"(MeV),CS="<<lastCS*millibarn<<
"(mb)"<<
G4endl;
279 G4cout<<
"G4QKaonMinusElasticCrossSection::GetCrosSec:**End**, onlyCS="<<onlyCS<<
G4endl;
281 return lastCS*millibarn;
290 static std::vector <G4double> PIN;
295 G4cout<<
"G4QKaonMinusElasticCS::CalcCS: onlyCS="<<onlyCS<<
",F="<<F<<
",p="<<pIU<<
G4endl;
297 lastLP=std::log(pMom);
315 G4cout<<
"G4QKaonMinusElCS::CalCS:DB updated for I="<<I<<
",*,PIN4="<<PIN[4]<<
G4endl;
319 G4cout<<
"G4QKaonMinusElasticCS::CalcCS:*read*,LP="<<lastLP<<
",PIN="<<lastPIN<<
G4endl;
321 if(lastLP>lastPIN && lastLP<lPMax)
323 lastPIN=GetPTables(lastLP,lastPIN,PDG,tgZ,tgN);
325 G4cout<<
"G4QKMElCS::CalcCS:updated(I),LP="<<lastLP<<
"<IN["<<I<<
"]="<<lastPIN<<
G4endl;
345 G4cout<<
"G4QKaonMinusElasticCS::CalcCS:*ini*,lstLP="<<lastLP<<
",min="<<lPMin<<
G4endl;
347 lastPIN = GetPTables(lastLP,lPMin,PDG,tgZ,tgN);
349 G4cout<<
"G4QKaMiElCS::CCS:i,Z="<<tgZ<<
",N="<<tgN<<
",PDG="<<PDG<<
",LP"<<lastPIN<<
G4endl;
351 PIN.push_back(lastPIN);
352 PAR.push_back(lastPAR);
353 CST.push_back(lastCST);
354 SST.push_back(lastSST);
355 S1T.push_back(lastS1T);
356 B1T.push_back(lastB1T);
357 S2T.push_back(lastS2T);
358 B2T.push_back(lastB2T);
359 S3T.push_back(lastS3T);
360 B3T.push_back(lastB3T);
361 S4T.push_back(lastS4T);
362 B4T.push_back(lastB4T);
366 G4cout<<
"G4QKMElCS::CalcCS:?update?,LP="<<lastLP<<
",IN="<<lastPIN<<
",ML="<<lPMax<<
G4endl;
368 if(lastLP>lastPIN && lastLP<lPMax)
370 lastPIN = GetPTables(lastLP,lastPIN,PDG,tgZ,tgN);
372 G4cout<<
"G4QKaonMinusElCS::CalcCS:*updated(O)*,LP="<<lastLP<<
"<IN="<<lastPIN<<
G4endl;
376 G4cout<<
"G4QKaMiElCS::CalcCS:lastLP="<<lastLP<<
",lPM="<<lPMin<<
",lPIN="<<lastPIN<<
G4endl;
378 if(!onlyCS) lastTM=GetQ2max(PDG, tgZ, tgN, pMom);
380 G4cout<<
"G4QKaMiElCrosSec::CalcCS: oCS="<<onlyCS<<
",-t="<<lastTM<<
", p="<<lastLP<<
G4endl;
382 if(lastLP>lPMin && lastLP<=lastPIN)
386 G4double shift=(lastLP-lPMin)/dlnP+.000001;
387 G4int blast=
static_cast<int>(shift);
388 if(blast<0 || blast>=nLast)
G4cout<<
"G4QKMElCS::CCS:b="<<blast<<
",n="<<nLast<<
G4endl;
389 lastSIG = lastCST[blast];
392 theSS = lastSST[blast];
393 theS1 = lastS1T[blast];
394 theB1 = lastB1T[blast];
395 theS2 = lastS2T[blast];
396 theB2 = lastB2T[blast];
397 theS3 = lastS3T[blast];
398 theB3 = lastB3T[blast];
399 theS4 = lastS4T[blast];
400 theB4 = lastB4T[blast];
403 G4cout<<
"G4QKaonMinusElasticCS::CalculateCS:(E) S1="<<theS1<<
",B1="<<theB1<<
G4endl;
409 G4int blast=
static_cast<int>(shift);
411 if(blast>=nLast) blast=nLast-1;
415 lastSIG= SIGL+shift*(lastCST[lastL]-SIGL);
417 G4cout<<
"G4QKaonMinusElasticCrossSection::CalcCrossSection:Sig="<<lastSIG<<
",P="
418 <<pMom<<
",Z="<<tgZ<<
",N="<<tgN<<
",PDG="<<PDG<<
",onlyCS="<<onlyCS<<
G4endl;
423 theSS=SSTL+shift*(lastSST[lastL]-SSTL);
425 theS1=S1TL+shift*(lastS1T[lastL]-S1TL);
428 G4cout<<
"G4QKaonMinusElasticCS::CalcCrossSect: b="<<blast<<
", ls="<<lastL<<
",SL="
429 <<S1TL<<
",SU="<<lastS1T[lastL]<<
",BL="<<B1TL<<
",BU="<<lastB1T[lastL]<<
G4endl;
431 theB1=B1TL+shift*(lastB1T[lastL]-B1TL);
433 theS2=S2TL+shift*(lastS2T[lastL]-S2TL);
435 theB2=B2TL+shift*(lastB2T[lastL]-B2TL);
437 theS3=S3TL+shift*(lastS3T[lastL]-S3TL);
439 G4cout<<
"G4QKaonMinusElasticCrossSection::CalcCS: s3l="<<S3TL<<
", sh3="<<shift
440 <<
", s3h="<<lastS3T[lastL]<<
", b="<<blast<<
", l="<<lastL<<
G4endl;
443 theB3=B3TL+shift*(lastB3T[lastL]-B3TL);
445 theS4=S4TL+shift*(lastS4T[lastL]-S4TL);
447 G4cout<<
"G4QKaonMinusElasticCrossSection::CalcCS: s4l="<<S4TL<<
", sh4="<<shift
448 <<
",s4h="<<lastS4T[lastL]<<
",b="<<blast<<
",l="<<lastL<<
G4endl;
451 theB4=B4TL+shift*(lastB4T[lastL]-B4TL);
454 G4cout<<
"G4QKaonMinusElasticCS::CalculateCS:(I) S1="<<theS1<<
",B1="<<theB1<<
G4endl;
458 else lastSIG=GetTabValues(lastLP, PDG, tgZ, tgN);
459 if(lastSIG<0.) lastSIG = 0.;
461 G4cout<<
"G4QKaonMinusElasticCrossSection::CalculateCS: END, onlyCS="<<onlyCS<<
G4endl;
472 const G4int n_kmpel=36;
474 G4double kmp_el[n_kmpel]={5.2,.0557,3.5,2.23,.7,.075,.004,.39,.000156,.15,1.,.0156,5.,
475 74.,3.,3.4,.2,.17,.001,8.,.055,3.64,5.e-5,4000.,1500.,.46,
476 1.2e6,3.5e6,5.e-5,1.e10,8.5e8,1.e10,1.1,3.4e6,6.8e6,0.};
492 if(lastPAR[nLast]!=pwd)
494 if ( tgZ == 1 && tgN == 0 )
496 for (
G4int ip=0; ip<n_kmpel; ip++) lastPAR[ip]=kmp_el[ip];
520 lastPAR[0]=.06*asa/(1.+a*(.01+.1/ssa));
521 lastPAR[1]=.75*asa/(1.+.009*a);
522 lastPAR[2]=.1*a2*ssa/(1.+.0015*a2/ssa);
523 lastPAR[3]=1./(1.+500./a2);
535 lastPAR[10]=1.2e7*a8+380*a17;
536 lastPAR[11]=.7/(1.+4.e-12*a16);
537 lastPAR[12]=2.5/a8/(a4+1.e-16*a32);
539 lastPAR[14]=1.2*a2+2.3;
542 lastPAR[16]=.01/(1.+.0024*a5);
544 lastPAR[18]=9.e-7/(1.+.035*a5);
545 lastPAR[19]=(42.+2.7e-11*a16)/(1.+.14*a);
549 lastPAR[22]=2.4e-3*a8/(1.+2.6e-4*a7);
550 lastPAR[23]=3.5e-36*a32*a8/(1.+5.e-15*a32/a);
552 lastPAR[24]=1.e5/(a8+2.5e12/a16);
553 lastPAR[25]=8.e7/(a12+1.e-27*a28*a28);
554 lastPAR[26]=.0006*a3;
556 lastPAR[27]=10.+4.e-8*a12*a;
561 lastPAR[31]=1./(1.+.0001*a8);
562 lastPAR[32]=1.5e-4/(1.+5.e-6*a12);
566 lastPAR[35]=2.e-7*a4;
570 lastPAR[38]=1.e8*std::exp(.32*asa);
571 lastPAR[39]=20.*std::exp(.45*asa);
572 lastPAR[40]=7.e3+2.4e6/a5;
573 lastPAR[41]=2.5e5*std::exp(.085*a3);
576 lastPAR[43]=920.+.03*a8*a3;
577 lastPAR[44]=93.+.0023*a12;
579 G4cout<<
"G4QKMElCS::CalcCS:la "<<lastPAR[38]<<
", "<<lastPAR[39]<<
", "<<lastPAR[40]
580 <<
", "<<lastPAR[42]<<
", "<<lastPAR[43]<<
", "<<lastPAR[44]<<
G4endl;
591 lastPAR[ 9]=4.5*std::pow(a,1.15);
592 lastPAR[10]=.06*std::pow(a,.6);
593 lastPAR[11]=.6*a/(1.+2.e15/a16);
594 lastPAR[12]=.17/(a+9.e5/a3+1.5e33/a32);
595 lastPAR[13]=(.001+7.e-11*a5)/(1.+4.4e-11*a5);
596 lastPAR[14]=(p1a10*p1a10+2.e-29)/(1.+2.e-22*a12);
598 lastPAR[15]=400./a12+2.e-22*a9;
599 lastPAR[16]=1.e-32*a12/(1.+5.e22/a14);
600 lastPAR[17]=1000./a2+9.5*sa*ssa;
601 lastPAR[18]=4.e-6*a*asa+1.e11/a16;
602 lastPAR[19]=(120./a+.002*a2)/(1.+2.e14/a16);
603 lastPAR[20]=9.+100./a;
605 lastPAR[21]=.002*a3+3.e7/a6;
606 lastPAR[22]=7.e-15*a4*asa;
607 lastPAR[23]=9000./a4;
609 lastPAR[24]=.0011*asa/(1.+3.e34/a32/a4);
610 lastPAR[25]=1.e-5*a2+2.e14/a16;
611 lastPAR[26]=1.2e-11*a2/(1.+1.5e19/a12);
612 lastPAR[27]=.016*asa/(1.+5.e16/a16);
614 lastPAR[28]=.002*a4/(1.+7.e7/std::pow(a-6.83,14));
615 lastPAR[29]=2.e6/a6+7.2/std::pow(a,.11);
616 lastPAR[30]=11.*a3/(1.+7.e23/a16/a8);
617 lastPAR[31]=100./asa;
619 lastPAR[32]=(.1+4.4e-5*a2)/(1.+5.e5/a4);
620 lastPAR[33]=3.5e-4*a2/(1.+1.e8/a8);
621 lastPAR[34]=1.3+3.e5/a4;
622 lastPAR[35]=500./(a2+50.)+3;
623 lastPAR[36]=1.e-9/a+s4a16*s4a16;
625 lastPAR[37]=.4*asa+3.e-9*a6;
626 lastPAR[38]=.0005*a5;
630 lastPAR[41]=.05+.005*a;
631 lastPAR[42]=7.e-8/sa;
635 lastPAR[46]=3.e32/(a32+1.e32);
639 lastPAR[49]=7.e3*a/(sa+1.);
640 lastPAR[50]=900.*sa/(1.+500./a3);
642 G4cout<<
"G4QKMElCS::CalcCS:ha "<<lastPAR[41]<<
", "<<lastPAR[42]<<
", "<<lastPAR[43]
643 <<
", "<<lastPAR[44]<<
", "<<lastPAR[45]<<
", "<<lastPAR[46]<<
G4endl;
647 lastPAR[51]=1.e15+2.e27/a4/(1.+2.e-18*a16);
654 lastCST[0]=GetTabValues(lp, PDG, tgZ, tgN);
666 G4cout<<
"G4QKaonMinusElasticCrossSection::GetPTables:ip=0(init), lp="<<lp<<
",S1="
667 <<theS1<<
",B1="<<theB1<<
",S2="<<theS2<<
",B2="<<theB3<<
",S3="<<theS3
668 <<
",B3="<<theB3<<
",S4="<<theS4<<
",B4="<<theB4<<
G4endl;
673 G4int ini =
static_cast<int>((ILP-lPMin+.000001)/dlnP)+1;
677 G4int fin =
static_cast<int>((LP-lPMin)/dlnP)+1;
678 if(fin>=nPoints) fin=nLast;
682 for(
G4int ip=ini; ip<=fin; ip++)
687 lastCST[ip]=GetTabValues(lp, PDG, tgZ, tgN);
699 G4cout<<
"G4QKaonMinusElasticCrossSection::GetPTables:ip="<<ip<<
",lp="<<lp
700 <<
",S1="<<theS1<<
",B1="<<theB1<<
",S2="<<theS2<<
",B2="<<theB2<<
",S3="
701 <<theS3<<
",B3="<<theB3<<
",S4="<<theS4<<
",B4="<<theB4<<
G4endl;
706 else G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetPTables: PDG="<<PDG
707 <<
", Z="<<tgZ<<
", N="<<tgN<<
", i="<<ini<<
" > fin="<<fin<<
", LP="<<LP
708 <<
" > ILP="<<ILP<<
" nothing is done!"<<
G4endl;
710 else G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetPTables: PDG="<<PDG
711 <<
", Z="<<tgZ<<
", N="<<tgN<<
", i="<<ini<<
">= max="<<nPoints<<
", LP="<<LP
712 <<
" > ILP="<<ILP<<
", lPMax="<<lPMax<<
" nothing is done!"<<
G4endl;
715 else G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetPTa:PDG="<<PDG<<
",Z="<<tgZ
716 <<
", N="<<tgN<<
", LP="<<LP<<
" <= ILP="<<ILP<<
" nothing is done!"<<
G4endl;
725 ed <<
"PDG = " << PDG <<
", Z = " << tgZ <<
", N = " << tgN
726 <<
", while it is defined only for PDG=-321 (K-) " <<
G4endl;
727 G4Exception(
"G4QKaonMinusElasticCrossSection::GetPTables()",
"HAD_CHPS_0000",
736 static const G4double GeVSQ=gigaelectronvolt*gigaelectronvolt;
741 G4cout<<
"G4QKaMiElCS::GetExchT:F="<<onlyCS<<
",Z="<<tgZ<<
",N="<<tgN<<
",PDG="<<PDG<<
G4endl;
743 if(PDG==310 || PDG==130) PDG=-321;
744 if(PDG!=-321)
G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetET:PDG="<<PDG<<
G4endl;
745 if(onlyCS)
G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetExT: onlyCS=1"<<
G4endl;
751 G4cout<<
"G4QKaonMinusElCS::GetExT: TM="<<lastTM<<
",S1="<<theS1<<
",B1="<<theB1<<
",S2="
752 <<theS2<<
",B2="<<theB2<<
",S3="<<theS3<<
",B3="<<theB3<<
",GeV2="<<GeVSQ<<
G4endl;
757 G4double ts1=-std::log(1.-R1)/theB1;
758 G4double ds1=std::fabs(ts1-lastTM)/lastTM;
760 G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetExT:1p "<<ts1<<
"#"<<lastTM
761 <<
",d="<<ds1<<
",R1="<<R1<<
",E1="<<E1<<
G4endl;
764 G4double R2=(1.-std::exp(-E2*E2*E2));
766 G4double ts2=std::pow(-std::log(1.-R2),.333333333)/theB2;
767 G4double ds2=std::fabs(ts2-lastTM)/lastTM;
769 G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetExT:2p "<<ts2<<
"#"<<lastTM
770 <<
",d="<<ds2<<
",R2="<<R2<<
",E2="<<E2<<
G4endl;
775 G4double ts3=-std::log(1.-R3)/theB3;
776 G4double ds3=std::fabs(ts3-lastTM)/lastTM;
778 G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetExT:3p "<<ts3<<
"#"<<lastTM
779 <<
",d="<<ds3<<
",R3="<<R1<<
",E3="<<E3<<
G4endl;
790 q2=-std::log(1.-ran)/theB1;
796 q2=-std::log(1.-ran);
798 q2=std::pow(q2,third)/theB2;
804 q2=-std::log(1.-ran)/theB3;
811 G4cout<<
"G4QKaonMinusElasticCrossSection::GetExT:a="<<a<<
",t="<<lastTM<<
",S1="<<theS1
812 <<
",B1="<<theB1<<
",SS="<<theSS<<
",S2="<<theS2<<
",B2="<<theB2<<
",S3="<<theS3
813 <<
",B3="<<theB3<<
",S4="<<theS4<<
",B4="<<theB4<<
G4endl;
815 G4double E1=lastTM*(theB1+lastTM*theSS);
819 G4double ts1=-std::log(1.-R1)/theB1;
820 if(std::fabs(tss)>1.e-7) ts1=(std::sqrt(theB1*(theB1+(tss+tss)*ts1))-theB1)/tss;
823 G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetExT:1a "<<ts1<<
"#"<<lastTM
824 <<
",d="<<ds1<<
",R1="<<R1<<
",E1="<<E1<<
G4endl;
831 G4double ts2=-std::log(1.-R2)/theB2;
832 if(a<6.5)ts2=std::pow(ts2,third);
833 else ts2=std::pow(ts2,fifth);
834 G4double ds2=std::fabs(ts2-lastTM)/lastTM;
836 G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetExT:2a "<<ts2<<
"#"<<lastTM
837 <<
",d="<<ds2<<
",R2="<<R2<<
",E2="<<E2<<
G4endl;
840 if(a>6.5)E3*=tm2*tm2*tm2;
843 G4double ts3=-std::log(1.-R3)/theB3;
844 if(a>6.5)ts3=std::pow(ts3,sevth);
845 G4double ds3=std::fabs(ts3-lastTM)/lastTM;
847 G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetExT:3a "<<ts3<<
"#"<<lastTM
848 <<
",d="<<ds3<<
",R3="<<R3<<
",E3="<<E3<<
G4endl;
853 G4double ts4=-std::log(1.-R4)/theB4;
854 G4double ds4=std::fabs(ts4-lastTM)/lastTM;
856 G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetExT:4a "<<ts4<<
"#"<<lastTM
857 <<
",d="<<ds4<<
",R4="<<R4<<
",E4="<<E4<<
G4endl;
867 G4cout<<
"G4QKMElCS::GExT:1="<<I1<<
",2="<<I2<<
",3="<<I3<<
",4="<<I4<<
",r="<<rand<<
G4endl;
873 q2=-std::log(1.-ran)/theB1;
874 if(std::fabs(tss)>1.e-7) q2=(std::sqrt(theB1*(theB1+(tss+tss)*q2))-theB1)/tss;
876 G4cout<<
"G4QKMElCS::GExT:Q2="<<q2<<
",ss="<<tss/2<<
",b1="<<theB1<<
",t1="<<ts1<<
G4endl;
883 q2=-std::log(1.-ran)/theB2;
885 if(a<6.5) q2=std::pow(q2,third);
886 else q2=std::pow(q2,fifth);
888 G4cout<<
"G4QKMElCS::GetExT: Q2="<<q2<<
",r2="<<R2<<
",b2="<<theB2<<
",t2="<<ts2<<
G4endl;
895 q2=-std::log(1.-ran)/theB3;
897 if(a>6.5) q2=std::pow(q2,sevth);
899 G4cout<<
"G4QKMElCS::GetExT: Q2="<<q2<<
",r3="<<R2<<
",b3="<<theB2<<
",t3="<<ts2<<
G4endl;
906 q2=-std::log(1.-ran)/theB4;
907 if(a<6.5) q2=lastTM-q2;
909 G4cout<<
"G4QKMElCS::GET:Q2="<<q2<<
",m="<<lastTM<<
",b4="<<theB3<<
",t4="<<ts3<<
G4endl;
914 if(!(q2>=-1.||q2<=1.))
G4cout<<
"*NAN*G4QKaonMinusElasticCS::GetExchT: -t="<<q2<<
G4endl;
918 G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GET:-t="<<q2<<
">"<<lastTM<<
G4endl;
928 static const G4double GeVSQ=gigaelectronvolt*gigaelectronvolt;
930 G4cout<<
"G4QKaonMinusECS::GetS:"<<onlyCS<<
",Z="<<tgZ<<
",N="<<tgN<<
",PDG="<<PDG<<
G4endl;
932 if(onlyCS)
G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetSl:onlCS=true"<<
G4endl;
933 if(lastLP<-4.3)
return 0.;
940 ed <<
"PDG = " << PDG <<
", Z = " << tgZ <<
", N = " << tgN
941 <<
", while it is defined only for PDG=-321 (K-)" <<
G4endl;
943 if(theB1<0.) theB1=0.;
944 if(!(theB1>=-1.||theB1<=1.))
G4cout<<
"*NAN*G4QKaonMinusElCS::GetSlope:B1="<<theB1<<
G4endl;
951 static const G4double HGeVSQ=gigaelectronvolt*gigaelectronvolt/2.;
952 return lastTM*HGeVSQ;
959 if(PDG!=-321)
G4cout<<
"*Warning*G4QKaonMinusElasticCrossSection::GetTV:PDG="<<PDG<<
G4endl;
962 G4cout<<
"*Warning*G4QKaonMinusElasticCS::GetTabV:(1-92)NoIsotopes for Z="<<tgZ<<
G4endl;
980 G4cout<<
"G4QKaonMinusECS::GetTV: l="<<lp<<
",Z="<<tgZ<<
",N="<<tgN<<
",PDG="<<PDG<<
G4endl;
988 if ( tgZ == 1 && tgN == 0 )
992 theS1=(lastPAR[13]+lastPAR[14]*dl2*dl2)/(1.+lastPAR[15]/p4/p)+
993 (lastPAR[16]/p2+lastPAR[17]*p)/(p4+lastPAR[18]*sp);
994 theB1=lastPAR[19]*std::pow(p,lastPAR[20])/(1.+lastPAR[21]/p3);
995 theS2=lastPAR[22]+lastPAR[23]/(p4+lastPAR[24]*p);
996 theB2=lastPAR[25]+lastPAR[26]/(p4+lastPAR[27]/
sp);
997 theS3=lastPAR[28]+lastPAR[29]/(p4*p4+lastPAR[30]*p2+lastPAR[31]);
998 theB3=lastPAR[32]+lastPAR[33]/(p4+lastPAR[34]);
1002 G4cout<<
"G4QKaonMinusElasticCrossSection::GetTabV:TM="<<lastTM<<
",S1="<<theS1<<
",B1="
1003 <<theB1<<
",S2="<<theS2<<
",B2="<<theB2<<
",S3="<<theS1<<
",B3="<<theB1<<
G4endl;
1007 return lastPAR[0]/psp+(lastPAR[1]*dp*dp+lastPAR[3])/(1.-lastPAR[4]/sp+lastPAR[5]/p4)+
1008 lastPAR[6]/(
sqr(p-lastPAR[7])+lastPAR[8])+lastPAR[9]/(
sqr(p-lastPAR[10])+lastPAR[11]);
1026 theS1=lastPAR[9]/(1.+lastPAR[10]*p4*pa)+lastPAR[11]/(p4+lastPAR[12]*p4/pa2)+
1027 (lastPAR[13]*dl*dl+lastPAR[14])/(1.+lastPAR[15]/p2);
1028 theB1=(lastPAR[16]+lastPAR[17]*p2)/(p4+lastPAR[18]/pah)+lastPAR[19];
1029 theSS=lastPAR[20]/(1.+lastPAR[21]/p2)+lastPAR[22]/(p6/pa+lastPAR[23]/p16);
1030 theS2=lastPAR[24]/(pa/p2+lastPAR[25]/p4)+lastPAR[26];
1031 theB2=lastPAR[27]*std::pow(p,lastPAR[28])+lastPAR[29]/(p8+lastPAR[30]/p16);
1032 theS3=lastPAR[31]/(pa*p+lastPAR[32]/pa)+lastPAR[33];
1033 theB3=lastPAR[34]/(p3+lastPAR[35]/p6)+lastPAR[36]/(1.+lastPAR[37]/p2);
1034 theS4=p2*(pah*lastPAR[38]*std::exp(-pah*lastPAR[39])+
1035 lastPAR[40]/(1.+lastPAR[41]*std::pow(p,lastPAR[42])));
1036 theB4=lastPAR[43]*pa/p2/(1.+pa*lastPAR[44]);
1038 G4cout<<
"G4QKaonMinusElasticCS::GetTabV: lA, p="<<p<<
",S1="<<theS1<<
",B1="<<theB1
1039 <<
",SS="<<theSS<<
",S2="<<theS2<<
",B2="<<theB2<<
",S3="<<theS3<<
",B3="<<theB3
1040 <<
",S4="<<theS4<<
",B4="<<theB4<<
G4endl;
1045 theS1=lastPAR[9]/(1.+lastPAR[10]/p4)+lastPAR[11]/(p4+lastPAR[12]/p2)+
1046 lastPAR[13]/(p5+lastPAR[14]/p16);
1047 theB1=(lastPAR[15]/p8+lastPAR[19])/(p+lastPAR[16]/std::pow(p,lastPAR[20]))+
1048 lastPAR[17]/(1.+lastPAR[18]/p4);
1049 theSS=lastPAR[21]/(p4/std::pow(p,lastPAR[23])+lastPAR[22]/p4);
1050 theS2=lastPAR[24]/p4/(std::pow(p,lastPAR[25])+lastPAR[26]/p12)+lastPAR[27];
1051 theB2=lastPAR[28]/std::pow(p,lastPAR[29])+lastPAR[30]/std::pow(p,lastPAR[31]);
1052 theS3=lastPAR[32]/std::pow(p,lastPAR[35])/(1.+lastPAR[36]/p12)+
1053 lastPAR[33]/(1.+lastPAR[34]/p6);
1054 theB3=lastPAR[37]/p8+lastPAR[38]/p2+lastPAR[39]/(1.+lastPAR[40]/p8);
1055 theS4=(lastPAR[41]/p4+lastPAR[46]/p)/(1.+lastPAR[42]/p10)+
1056 (lastPAR[43]+lastPAR[44]*dl*dl)/(1.+lastPAR[45]/p12);
1057 theB4=lastPAR[47]/(1.+lastPAR[48]/p)+lastPAR[49]*p4/(1.+lastPAR[50]*p5);
1059 G4cout<<
"G4QKaonMinusElasticCS::GetTabVal:hA,p="<<p<<
",S1="<<theS1<<
",B1="<<theB1
1060 <<
",SS="<<theSS<<
",S2="<<theS2<<
",B2="<<theB2<<
",S3="<<theS3<<
",B3="<<theB3
1061 <<
",S4="<<theS4<<
",B4="<<theB4<<
G4endl;
1066 G4cout<<
"G4QKaonMinusElCS::GTV: PDG="<<PDG<<
",P="<<p<<
",N="<<tgN<<
",Z="<<tgZ<<
G4endl;
1070 return (lastPAR[0]*dlp*dlp+lastPAR[1]+lastPAR[2]/p3)/(1.+lastPAR[3]/p2/
sp);
1097 G4double s_value=dmt*std::sqrt(pP2+mK2)+mK2+mt*mt;
1098 return dmt*dmt*pP2/s_value;
1106 ed <<
"PDG = " << PDG <<
", Z = " << tgZ <<
", N = " << tgN
1107 <<
", while it is defined only for p projectiles & Z_target>0" <<
G4endl;
1108 G4Exception(
"G4QKaonMinusElasticCrossSection::GetQ2max()",
"HAD_CHPS_0000",
G4DLLIMPORT std::ostream G4cout
G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG)
G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int pPDG, G4int Z, G4int N, G4double pP)
G4QKaonMinusElasticCrossSection()
virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, G4int pPDG=-321)
G4double GetSlope(G4int tZ, G4int tN, G4int pPDG)
~G4QKaonMinusElasticCrossSection()
static G4VQCrossSection * GetPointer()
virtual G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=0)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
std::ostringstream G4ExceptionDescription