66 LEN =
new std::vector<G4double*>;
67 HEN =
new std::vector<G4double*>;
73 for(
G4int i=0; i<lens; ++i)
delete[] (*
LEN)[i];
76 for(
G4int i=0; i<hens; ++i)
delete[] (*
HEN)[i];
83 outFile <<
"G4ChipsPionMinusInelasticXS provides the inelastic cross\n" 84 <<
"section for pion- nucleus scattering as a function of incident\n" 85 <<
"momentum. The cross section is calculated using M. Kossov's\n" 86 <<
"CHIPS parameterization of cross section data.\n";
136 if(lastCS<=0. && pMom>
lastTH)
155 colP.push_back(pMom);
184 static const G4double THmiG=THmin*.001;
188 static const G4double Pmin=THmin+(nL-1)*dP;
193 static const G4double dlP=(malP-milP)/(nH-1);
203 if(sync<=I)
G4cerr<<
"*!*G4ChipsPiMinusNuclCS::CalcCrosSect:Sync="<<sync<<
"<="<<I<<
G4endl;
229 G4cerr<<
"***G4ChipsPiMinusNuclCS::CalcCrossSect: Sinc="<<sync<<
"#"<<I<<
", Z=" <<targZ
230 <<
", N="<<targN<<
", F="<<F<<
G4endl;
238 if (Momentum<
lastTH)
return 0.;
239 else if (Momentum<Pmin)
243 else if (Momentum<Pmax)
253 if(sigma<0.)
return 0.;
290 sigma=(To-El)+.4/md+.01/hd;
293 else if(tZ==1 && tN==1)
299 sigma=(.55*d*d+38.+23./std::sqrt(P))/(1.+.3/p2/p2)+18./(f*f+.1089)+.02/(gg*gg+.0025);
301 else if(tZ<97 && tN<152)
316 sigma=(c+d*
d)/(1.+.17/p4)+f/(u*u+h*h);
320 G4cerr<<
"-Warning-G4ChipsPiMinusNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<
", N="<<tN<<
G4endl;
323 if(sigma<0.)
return 0.;
331 G4cerr<<
"***G4ChipsPionMinusInelasticXS::EquLinearFit: DX="<<DX<<
", N="<<N<<
G4endl;
337 G4int jj=
static_cast<int>(
d);
339 else if(jj>N2) jj=N2;
G4_DECLARE_XS_FACTORY(G4ChipsPionMinusInelasticXS)
virtual G4bool IsIsoApplicable(const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat)
G4double EquLinearFit(G4double X, G4int N, G4double X0, G4double DX, G4double *Y)
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int tgZ, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
G4double CalculateCrossSection(G4int F, G4int I, G4int PDG, G4int Z, G4int N, G4double Momentum)
G4double GetTotalMomentum() const
virtual void CrossSectionDescription(std::ostream &) const
~G4ChipsPionMinusInelasticXS()
G4ChipsPionMinusInelasticXS()
std::vector< G4double * > * LEN
std::vector< G4double > colP
std::vector< G4double * > * HEN
G4double CrossSectionLin(G4int targZ, G4int targN, G4double P)
double A(double temperature)
std::vector< G4double > colCS
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP)
G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP)
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static const double millibarn
std::vector< G4double > colTH
std::vector< G4int > colN
std::vector< G4int > colZ
static const G4double THmin
G4GLOB_DLL std::ostream G4cerr