65 LEN =
new std::vector<G4double*>;
66 HEN =
new std::vector<G4double*>;
72 for(
G4int i=0; i<lens; ++i)
delete[] (*
LEN)[i];
76 for(
G4int i=0; i<hens; ++i)
delete[] (*
HEN)[i];
82 outFile <<
"G4ChipsHyperonInelasticXS provides the inelastic cross\n"
83 <<
"section for hyperon nucleus scattering as a function of incident\n"
84 <<
"momentum. The cross section is calculated using M. Kossov's\n"
85 <<
"CHIPS parameterization of cross section data.\n";
170 if(lastCS<=0. && pMom>
lastTH)
189 colP.push_back(pMom);
218 static const G4double THmiG=THmin*.001;
222 static const G4double Pmin=THmin+(nL-1)*dP;
227 static const G4double dlP=(malP-milP)/(nH-1);
237 if(sync<=I)
G4cerr<<
"*!*G4QPiMinusNuclCS::CalcCrosSect:Sync="<<sync<<
"<="<<I<<
G4endl;
263 G4cerr<<
"***G4QHyperNuclCS::CalcCrossSect: Sinc="<<sync<<
"#"<<I<<
", Z=" <<targZ
264 <<
", N="<<targN<<
", F="<<F<<
G4endl;
272 if (Momentum<
lastTH)
return 0.;
273 else if (Momentum<Pmin)
277 else if (Momentum<Pmax)
287 if(sigma<0.)
return 0.;
311 const G4bool isHeavyElementAllowed =
true;
320 G4double El=(.0557*ld2+6.72+99./p2)/(1.+2./sp+2./p4);
321 G4double To=(.3*ld2+38.2+900./
sp)/(1.+27./sp+3./p4);
324 else if((tZ<97 && tN<152) || isHeavyElementAllowed)
338 G4double c=(170.+3600./a2s)/(1.+65./a2s);
339 G4double gg=42.*(
G4Exp(al*0.8)+4.E-8*a4)/(1.+28./a)/(1.+5.E-5*a2);
346 e=380.+18.*a2/(1.+a2/60.)/(1.+2.E-19*a8);
348 h=1.E-8*a2/(1.+a2/17.)/(1.+3.E-20*a8);
349 t=(.2+.00056*a2)/(1.+a2*.0006);
351 sigma=(c+d*
d)/(1.+t/ssp+r/p4)+(gg+e*
G4Exp(-6.*P))/(1.+h/p4/p4);
353 G4cout<<
"G4QHyperonNucCS::CSForm: A="<<a<<
",P="<<P<<
",CS="<<sigma<<
",c="<<c<<
",g="<<gg
354 <<
",d="<<d<<
",r="<<r<<
",e="<<e<<
",h="<<h<<
G4endl;
359 G4cerr<<
"-Warning-G4QHyperonNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<
", N="<<tN<<
G4endl;
362 if(sigma<0.)
return 0.;
370 G4cerr<<
"***G4ChipsHyperonInelasticXS::EquLinearFit: DX="<<DX<<
", N="<<N<<
G4endl;
376 G4int jj=
static_cast<int>(
d);
378 else if(jj>N2) jj=N2;
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
std::vector< G4int > colN
std::vector< ExP01TrackerHit * > a
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int tgZ, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
std::vector< G4double > colP
std::vector< G4double > colTH
G4double G4Log(G4double x)
virtual void CrossSectionDescription(std::ostream &) const
std::vector< G4double * > * LEN
static constexpr double millibarn
G4ParticleDefinition * GetDefinition() const
G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP)
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
G4double CalculateCrossSection(G4int F, G4int I, G4int PDG, G4int Z, G4int N, G4double Momentum)
G4double EquLinearFit(G4double X, G4int N, G4double X0, G4double DX, G4double *Y)
static const G4double THmin
double A(double temperature)
G4ChipsHyperonInelasticXS()
#define G4_DECLARE_XS_FACTORY(cross_section)
G4GLOB_DLL std::ostream G4cerr
G4double CrossSectionLin(G4int targZ, G4int targN, G4double P)
std::vector< G4double > colCS
std::vector< G4double * > * HEN
G4int GetPDGEncoding() const
G4GLOB_DLL std::ostream G4cout
G4double GetTotalMomentum() const
G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP)
~G4ChipsHyperonInelasticXS()
virtual G4bool IsIsoApplicable(const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat)
std::vector< G4int > colZ