62 LEN =
new std::vector<G4double*>;
63 HEN =
new std::vector<G4double*>;
70 for(
G4int i=0; i<lens; ++i)
delete[] (*
LEN)[i];
73 for(
G4int i=0; i<hens; ++i)
delete[] (*
HEN)[i];
103 static G4ThreadLocal std::vector <G4int> *colN_G4MT_TLS_ = 0 ;
if (!colN_G4MT_TLS_) colN_G4MT_TLS_ =
new std::vector <G4int> ; std::vector <G4int> &colN = *colN_G4MT_TLS_;
104 static G4ThreadLocal std::vector <G4int> *colZ_G4MT_TLS_ = 0 ;
if (!colZ_G4MT_TLS_) colZ_G4MT_TLS_ =
new std::vector <G4int> ; std::vector <G4int> &colZ = *colZ_G4MT_TLS_;
105 static G4ThreadLocal std::vector <G4double> *colP_G4MT_TLS_ = 0 ;
if (!colP_G4MT_TLS_) colP_G4MT_TLS_ =
new std::vector <G4double> ; std::vector <G4double> &colP = *colP_G4MT_TLS_;
106 static G4ThreadLocal std::vector <G4double> *colTH_G4MT_TLS_ = 0 ;
if (!colTH_G4MT_TLS_) colTH_G4MT_TLS_ =
new std::vector <G4double> ; std::vector <G4double> &colTH = *colTH_G4MT_TLS_;
107 static G4ThreadLocal std::vector <G4double> *colCS_G4MT_TLS_ = 0 ;
if (!colCS_G4MT_TLS_) colCS_G4MT_TLS_ =
new std::vector <G4double> ; std::vector <G4double> &colCS = *colCS_G4MT_TLS_;
121 if(colN[i]==tgN && colZ[i]==tgZ)
134 if(lastCS<=0. && pMom>
lastTH)
153 colP.push_back(pMom);
182 static const G4double THmiG=THmin*.001;
186 static const G4double Pmin=THmin+(nL-1)*dP;
189 static const G4double milP=std::log(Pmin);
190 static const G4double malP=std::log(Pmax);
191 static const G4double dlP=(malP-milP)/(nH-1);
192 static const G4double milPG=std::log(.001*Pmin);
201 if(sync<=I)
G4cerr<<
"*!*G4ChipsPiMinusNuclCS::CalcCrosSect:Sync="<<sync<<
"<="<<I<<
G4endl;
227 G4cerr<<
"***G4ChipsPiMinusNuclCS::CalcCrossSect: Sinc="<<sync<<
"#"<<I<<
", Z=" <<targZ
228 <<
", N="<<targN<<
", F="<<F<<
G4endl;
236 if (Momentum<
lastTH)
return 0.;
237 else if (Momentum<Pmin)
241 else if (Momentum<Pmax)
251 if(sigma<0.)
return 0.;
262 if(tZ<.99 || tN<0.)
return 0.;
263 else if(tZ==1 && tN==0)
return 300.;
268 return std::sqrt(T*(tpM+T));
302 else if(tZ==1 && tN==1)
308 sigma=(.55*d*d+38.+23./std::sqrt(P))/(1.+.3/p2/p2)+18./(f*f+.1089)+.02/(gg*gg+.0025);
310 else if(tZ<97 && tN<152)
320 G4double c=41.*std::exp(al*.68)*(1.+44./
a2)/(1.+8./a)/(1.+200./a2/
a2);
326 sigma=(c+d*d)/(1.+(.2-.009*sa)/p4)+f/(u*u+h*h)/(1.+r/p2);
330 G4cerr<<
"-Warning-G4ChipsPiPlusNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<
", N="<<tN<<
G4endl;
333 if(sigma<0.)
return 0.;
341 G4cerr<<
"***G4ChipsPionPlusInelasticXS::EquLinearFit: DX="<<DX<<
", N="<<N<<
G4endl;
347 G4int j=
static_cast<int>(d);
static G4PionPlus * Definition()
G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP)
G4ParticleDefinition * GetDefinition() const
G4double EquLinearFit(G4double X, G4int N, G4double X0, G4double DX, G4double *Y)
virtual G4bool IsIsoApplicable(const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat)
G4_DECLARE_XS_FACTORY(G4ChipsPionPlusInelasticXS)
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
G4double GetTotalMomentum() const
G4double CalculateCrossSection(G4int F, G4int I, G4int PDG, G4int Z, G4int N, G4double Momentum)
G4double CrossSectionLin(G4int targZ, G4int targN, G4double P)
G4ChipsPionPlusInelasticXS()
static G4PionPlus * PionPlus()
static const G4double A[nN]
~G4ChipsPionPlusInelasticXS()
G4double ThresholdMomentum(G4int targZ, G4int targN)
std::vector< G4double * > * LEN
std::vector< G4double * > * HEN
G4double GetPDGMass() const
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)
G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP)
static const G4double THmin
G4GLOB_DLL std::ostream G4cerr