70 LEN =
new std::vector<G4double*>;
71 HEN =
new std::vector<G4double*>;
76 G4int lens=LEN->size();
77 for(
G4int i=0; i<lens; ++i)
delete[] (*LEN)[i];
79 G4int hens=HEN->size();
80 for(
G4int i=0; i<hens; ++i)
delete[] (*HEN)[i];
146 static std::vector <G4int> colN;
147 static std::vector <G4int> colZ;
148 static std::vector <G4double> colP;
149 static std::vector <G4double> colTH;
150 static std::vector <G4double> colCS;
154 if(tgN!=lastN || tgZ!=lastZ)
162 if(lastI)
for(
G4int i=0; i<lastI; i++)
164 if(colN[i]==tgN && colZ[i]==tgZ)
176 lastCS=CalculateCrossSection(-1,j,cPDG,lastZ,lastN,pMom);
177 if(lastCS<=0. && pMom>lastTH)
189 lastCS=CalculateCrossSection(0,j,cPDG,lastZ,lastN,pMom);
196 colP.push_back(pMom);
197 colTH.push_back(lastTH);
198 colCS.push_back(lastCS);
208 else if(pMom<=lastTH)
214 lastCS=CalculateCrossSection(1,j,cPDG,lastZ,lastN,pMom);
225 static const G4double THmiG=THmin*.001;
228 static const G4int nL=105;
229 static const G4double Pmin=THmin+(nL-1)*dP;
231 static const G4int nH=224;
232 static const G4double milP=std::log(Pmin);
233 static const G4double malP=std::log(Pmax);
234 static const G4double dlP=(malP-milP)/(nH-1);
235 static const G4double milPG=std::log(.001*Pmin);
243 G4int sync=LEN->size();
244 if(sync<=I)
G4cerr<<
"*!*G4QPiMinusNuclCS::CalcCrosSect:Sync="<<sync<<
"<="<<I<<
G4endl;
254 for(
G4int k=0; k<nL; k++)
256 lastLEN[k] = CrossSectionLin(targZ, targN, P);
262 lastHEN[
n] = CrossSectionLog(targZ, targN, lP);
267 G4int sync=LEN->size();
270 G4cerr<<
"***G4QPiMinusNuclCS::CalcCrossSect: Sinc="<<sync<<
"#"<<I<<
", Z=" <<targZ
271 <<
", N="<<targN<<
", F="<<F<<
G4endl;
274 LEN->push_back(lastLEN);
275 HEN->push_back(lastHEN);
279 if (Momentum<lastTH)
return 0.;
280 else if (Momentum<Pmin)
282 sigma=EquLinearFit(Momentum,nL,THmin,dP,lastLEN);
284 else if (Momentum<Pmax)
287 sigma=EquLinearFit(lP,nH,milP,dlP,lastHEN);
292 sigma=CrossSectionFormula(targZ, targN, P, std::log(P));
294 if(sigma<0.)
return 0.;
302 return CrossSectionFormula(tZ, tN, P, lP);
309 return CrossSectionFormula(tZ, tN, P, lP);
324 sigma=(To-El)+.2443*ld2+31.48;
326 else if(tZ==1 && tN==1)
329 sigma=0.6*r*r+67.+90.*std::exp(-lP*.666);
331 else if(tZ<97 && tN<152)
340 G4double c=(170.+3600./a2s)/(1.+65./a2s)+40.*std::pow(a,0.712)/(1.+12.2/
a)/(1.+34./a2);
341 G4double r=(170.+0.01*a3)/(1.+a3/28000.);
346 G4cerr<<
"-Warning-G4QAntiBarNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<
", N="<<tN<<
G4endl;
349 if(sigma<0.)
return 0.;
357 G4cerr<<
"***G4ChipsAntiBaryonInelasticXS::EquLinearFit: DX="<<DX<<
", N="<<N<<
G4endl;
363 G4int j=
static_cast<int>(
d);