105 std::vector<G4double*>::iterator
pos;
144 outFile <<
"G4ChipsHyperonElasticXS provides the elastic cross\n"
145 <<
"section for hyperon nucleus scattering as a function of incident\n"
146 <<
"momentum. The cross section is calculated using M. Kossov's\n"
147 <<
"CHIPS parameterization of cross section data.\n";
205 if(lastCS<=0. && pEn>
lastTH)
226 colP.push_back(pMom);
310 G4int blast=
static_cast<int>(shift);
329 G4int blast=
static_cast<int>(shift);
370 const G4int n_hypel=33;
372 G4double hyp_el[n_hypel]={1.,.002,.12,.0557,3.5,6.72,99.,2.,3.,5.,74.,3.,3.4,.2,.17,
373 .001,8.,.055,3.64,5.e-5,4000.,1500.,.46,1.2e6,3.5e6,5.e-5,
374 1.e10,8.5e8,1.e10,1.1,3.4e6,6.8e6,0.};
378 if(PDG>3000 && PDG<3335)
393 if ( tgZ == 1 && tgN == 0 )
395 for (
G4int ip=0; ip<n_hypel; ip++)
lastPAR[ip]=hyp_el[ip];
420 lastPAR[1]=2.36*asa/(1.+a*.055/ssa);
421 lastPAR[2]=(1.+.00007*a3/ssa)/(1.+.0026*a2);
422 lastPAR[3]=1.76*a/ssa+.00003*a3;
423 lastPAR[4]=(.03+200./a3)/(1.+1.E5/a3/sa);
435 lastPAR[11]=.7/(1.+4.e-12*a16);
436 lastPAR[12]=2.5/a8/(a4+1.e-16*a32);
443 lastPAR[18]=9.e-7/(1.+.035*a5);
444 lastPAR[19]=(42.+2.7e-11*a16)/(1.+.14*a);
448 lastPAR[22]=2.4e-3*a8/(1.+2.6e-4*a7);
449 lastPAR[23]=3.5e-36*a32*a8/(1.+5.e-15*a32/a);
451 lastPAR[24]=1.e5/(a8+2.5e12/a16);
452 lastPAR[25]=8.e7/(a12+1.e-27*a28*a28);
461 lastPAR[32]=1.5e-4/(1.+5.e-6*a12);
488 lastPAR[11]=.6*a/(1.+2.e15/a16);
489 lastPAR[12]=.17/(a+9.e5/a3+1.5e33/a32);
490 lastPAR[13]=(.001+7.e-11*a5)/(1.+4.4e-11*a5);
491 lastPAR[14]=(p1a10*p1a10+2.e-29)/(1.+2.e-22*a12);
493 lastPAR[15]=400./a12+2.e-22*a9;
494 lastPAR[16]=1.e-32*a12/(1.+5.e22/a14);
495 lastPAR[17]=1000./a2+9.5*sa*ssa;
496 lastPAR[18]=4.e-6*a*asa+1.e11/a16;
497 lastPAR[19]=(120./a+.002*a2)/(1.+2.e14/a16);
504 lastPAR[24]=.0011*asa/(1.+3.e34/a32/a4);
505 lastPAR[25]=1.e-5*a2+2.e14/a16;
506 lastPAR[26]=1.2e-11*a2/(1.+1.5e19/a12);
507 lastPAR[27]=.016*asa/(1.+5.e16/a16);
511 lastPAR[30]=11.*a3/(1.+7.e23/a16/a8);
514 lastPAR[32]=(.1+4.4e-5*a2)/(1.+5.e5/a4);
515 lastPAR[33]=3.5e-4*a2/(1.+1.e8/a8);
518 lastPAR[36]=1.e-9/a+s4a16*s4a16;
535 lastPAR[50]=900.*sa/(1.+500./a3);
538 lastPAR[51]=1.e15+2.e27/a4/(1.+2.e-18*a16);
568 for(
G4int ip=ini; ip<=fin; ip++)
587 else G4cout<<
"*Warning*G4ChipsHyperonElasticXS::GetPTables: PDG="<<PDG
588 <<
", Z="<<tgZ<<
", N="<<tgN<<
", i="<<ini<<
" > fin="<<fin<<
", LP="<<LP
589 <<
" > ILP="<<ILP<<
" nothing is done!"<<
G4endl;
591 else G4cout<<
"*Warning*G4ChipsHyperonElasticXS::GetPTables: PDG="<<PDG
592 <<
", Z="<<tgZ<<
", N="<<tgN<<
", i="<<ini<<
">= max="<<
nPoints<<
", LP="<<LP
593 <<
" > ILP="<<ILP<<
", lPMax="<<
lPMax<<
" nothing is done!"<<
G4endl;
600 ed <<
"PDG = " << PDG <<
", Z = " << tgZ <<
", N = " << tgN
601 <<
", while it is defined only for Hyperons" <<
G4endl;
602 G4Exception(
"G4ChipsHyperonElasticXS::GetPTables()",
"HAD_CHPS_0000",
616 if(PDG<3000 || PDG>3334)
G4cout<<
"*Warning*G4QHyElCS::GET:PDG="<<PDG<<
G4endl;
665 if(a>6.5)E3*=tm2*tm2*tm2;
681 if(std::fabs(tss)>1.e-7) q2=(std::sqrt(
theB1*(
theB1+(tss+tss)*q2))-
theB1)/tss;
709 if(!(q2>=-1.||q2<=1.))
G4cout<<
"*NAN*G4QHyElasticCrossSect::GetExchangeT:-t="<<q2<<
G4endl;
722 if(
lastLP<-4.3)
return 0.;
724 if(PDG<3000 || PDG>3334)
730 ed <<
"PDG = " << PDG <<
", Z = " << tgZ <<
", N = " << tgN
731 <<
", while it is defined only for Hyperons" <<
G4endl;
732 G4Exception(
"G4ChipsHyperonElasticXS::GetSlope()",
"HAD_CHPS_0000",
752 if(PDG<3000 || PDG>3334)
G4cout<<
"*Warning*G4QHypElCS::GTV:P="<<PDG<<
G4endl;
756 const G4bool isHeavyElementAllowed =
true;
757 if(tgZ<0 || ( !isHeavyElementAllowed && tgZ>92))
759 G4cout<<
"*Warning*G4QHyperonElastCS::GetTabValue:(1-92) NoIsotopesFor Z="<<tgZ<<
G4endl;
774 if ( tgZ == 1 && tgN == 0 )
849 static const G4double mLa2= mLamb*mLamb;
856 G4double mds=dmt*std::sqrt(pP2+mLa2)+mLa2+mt*mt;
857 return dmt*dmt*pP2/mds;
865 ed <<
"PDG = " << PDG <<
", Z = " << tgZ <<
", N = " << tgN
866 <<
", while it is defined only for p projectiles & Z_target>0" <<
G4endl;
867 G4Exception(
"G4ChipsHyperonElasticXS::GetQ2max()",
"HAD_CHPS_0000",
G4_DECLARE_XS_FACTORY(G4ChipsHyperonElasticXS)
static const G4double pos
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
static constexpr double gigaelectronvolt
static constexpr double millibarn
static constexpr double GeV
G4GLOB_DLL std::ostream G4cout
std::vector< G4double > colCS
std::vector< G4double * > S2T
~G4ChipsHyperonElasticXS()
G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int pPDG, G4int Z, G4int N, G4double pP)
G4double GetQ2max(G4int pPDG, G4int tgZ, G4int tgN, G4double pP)
G4ChipsHyperonElasticXS()
G4double GetPTables(G4double lpP, G4double lPm, G4int PDG, G4int tZ, G4int tN)
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
std::vector< G4double * > S1T
virtual G4bool IsIsoApplicable(const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat)
std::vector< G4int > colZ
G4double GetTabValues(G4double lp, G4int pPDG, G4int tgZ, G4int tgN)
std::vector< G4double * > B4T
std::vector< G4double * > S3T
std::vector< G4double > colTH
std::vector< G4double * > B3T
std::vector< G4double * > B2T
std::vector< G4double * > CST
std::vector< G4int > colN
G4double GetSlope(G4int tZ, G4int tN, G4int pPDG)
std::vector< G4double * > S4T
G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG)
std::vector< G4double > colP
std::vector< G4double * > SST
std::vector< G4double > PIN
std::vector< G4double * > PAR
virtual void CrossSectionDescription(std::ostream &) const
std::vector< G4double * > B1T
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int tgZ, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
G4ParticleDefinition * GetDefinition() const
G4double GetTotalMomentum() const
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
static G4Lambda * Lambda()
G4double GetPDGMass() const
G4int GetPDGEncoding() const
G4IonTable * GetIonTable() const
static G4ParticleTable * GetParticleTable()
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const