61 const G4double dlP=(malP-milP)/(nH-1);
62 const G4double milPG=std::log(.001*Pmin);
76 LEN =
new std::vector<G4double*>;
77 HEN =
new std::vector<G4double*>;
83 for(
G4int i=0; i<lens; ++i)
delete[] (*
LEN)[i];
87 for(
G4int i=0; i<hens; ++i)
delete[] (*
HEN)[i];
94 outFile <<
"G4ChipsKaonMinusInelasticXS provides the inelastic cross\n" 95 <<
"section for K- nucleus scattering as a function of incident\n" 96 <<
"momentum. The cross section is calculated using M. Kossov's\n" 97 <<
"CHIPS parameterization of cross section data.\n";
147 if(lastCS<=0. && pMom>
lastTH)
168 colP.push_back(pMom);
204 if(sync<=I)
G4cerr<<
"*!*G4QPiMinusNuclCS::CalcCrosSect:Sync="<<sync<<
"<="<<I<<
G4endl;
230 G4cerr<<
"***G4ChipsKaonMinusCS::CalcCrossSect: Sinc="<<sync<<
"#"<<I<<
", Z=" <<targZ
231 <<
", N="<<targN<<
", F="<<F<<
G4endl;
239 if (Momentum<
lastTH)
return 0.;
240 else if (Momentum<Pmin)
244 else if (Momentum<Pmax)
254 if(sigma<0.)
return 0.;
288 G4double El=(.0557*ld2+2.23)/(1.-.7/sp+.075/p4);
289 G4double To=(.3*ld2+19.5)/(1.-.21/sp+.52/p4);
290 sigma=8.8/psp+(To-El)+.002/md+.15/hd;
292 else if(tZ==1 && tN==1)
298 sigma=(.6*dX*dX+36.)/(1.-.11/sp+.52/p2/p2)+.7/(dR*dR+.0256)+18./P/
sp;
300 else if(tZ<97 && tN<152)
309 G4double c=52.*std::exp(al*0.6)*(1.+97./
a2)/(1.+9.8/a)/(1.+47./
a2);
315 sigma=(c+d*
d)/(1.+gg/sp+h/p2/p2)+f/(v*v+u*u)+20.*sa/P/sp;
319 G4cerr<<
"-Warning-G4ChipsKMinusNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<
", N="<<tN<<
G4endl;
322 if(sigma<0.)
return 0.;
330 G4cerr<<
"***G4ChipsKaonMinusInelasticXS::EquLinearFit: DX="<<DX<<
", N="<<N<<
G4endl;
336 G4int jj=
static_cast<int>(
d);
338 else if(jj>N2) jj=N2;
std::vector< G4int > colN
std::vector< G4double * > * HEN
std::vector< G4double > colP
std::vector< G4int > colZ
G4double GetTotalMomentum() const
~G4ChipsKaonMinusInelasticXS()
virtual G4bool IsIsoApplicable(const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat)
G4double CrossSectionLin(G4int targZ, G4int targN, G4double P)
double A(double temperature)
std::vector< G4double * > * LEN
std::vector< G4double > colCS
G4double CalculateCrossSection(G4int F, G4int I, G4int PDG, G4int Z, G4int N, G4double Momentum)
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP)
virtual void CrossSectionDescription(std::ostream &) const
G4ChipsKaonMinusInelasticXS()
G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP)
G4_DECLARE_XS_FACTORY(G4ChipsKaonMinusInelasticXS)
static const double millibarn
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int tgZ, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
static const G4double THmin
std::vector< G4double > colTH
G4GLOB_DLL std::ostream G4cerr
G4double EquLinearFit(G4double X, G4int N, G4double X0, G4double DX, G4double *Y)