#include <G4ChipsProtonInelasticXS.hh>
|
| G4ChipsProtonInelasticXS () |
|
| ~G4ChipsProtonInelasticXS () |
|
virtual void | CrossSectionDescription (std::ostream &) const |
|
virtual G4bool | IsIsoApplicable (const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat) |
|
virtual G4double | GetIsoCrossSection (const G4DynamicParticle *, G4int tgZ, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0) |
|
virtual G4double | GetChipsCrossSection (G4double momentum, G4int Z, G4int N, G4int pdg) |
|
| G4VCrossSectionDataSet (const G4String &nam="") |
|
virtual | ~G4VCrossSectionDataSet () |
|
virtual G4bool | IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=0) |
|
G4double | GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0) |
|
G4double | ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0) |
|
virtual G4double | GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=0) |
|
virtual G4Isotope * | SelectIsotope (const G4Element *, G4double kinEnergy) |
|
virtual void | BuildPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | DumpPhysicsTable (const G4ParticleDefinition &) |
|
virtual G4int | GetVerboseLevel () const |
|
virtual void | SetVerboseLevel (G4int value) |
|
G4double | GetMinKinEnergy () const |
|
void | SetMinKinEnergy (G4double value) |
|
G4double | GetMaxKinEnergy () const |
|
void | SetMaxKinEnergy (G4double value) |
|
const G4String & | GetName () const |
|
|
G4double | CalculateCrossSection (G4int F, G4int I, G4int PDG, G4int Z, G4int N, G4double Momentum) |
|
G4double | CrossSectionLin (G4int targZ, G4int targN, G4double P) |
|
G4double | CrossSectionLog (G4int targZ, G4int targN, G4double lP) |
|
G4double | CrossSectionFormula (G4int targZ, G4int targN, G4double P, G4double lP) |
|
G4double | ThresholdMomentum (G4int targZ, G4int targN) |
|
G4double | EquLinearFit (G4double X, G4int N, G4double X0, G4double DX, G4double *Y) |
|
Definition at line 44 of file G4ChipsProtonInelasticXS.hh.
◆ G4ChipsProtonInelasticXS()
G4ChipsProtonInelasticXS::G4ChipsProtonInelasticXS |
( |
| ) |
|
Definition at line 57 of file G4ChipsProtonInelasticXS.cc.
69 LEN =
new std::vector<G4double*>;
70 HEN =
new std::vector<G4double*>;
G4VCrossSectionDataSet(const G4String &nam="")
std::vector< G4double * > * LEN
std::vector< G4double * > * HEN
static const char * Default_Name()
◆ ~G4ChipsProtonInelasticXS()
G4ChipsProtonInelasticXS::~G4ChipsProtonInelasticXS |
( |
| ) |
|
◆ CalculateCrossSection()
Definition at line 184 of file G4ChipsProtonInelasticXS.cc.
188 static const G4double THmiG=THmin*.001;
192 static const G4double Pmin=THmin+(nL-1)*dP;
197 static const G4double dlP=(malP-milP)/(nH-1);
207 if(sync<=I)
G4cout<<
"*!*G4QProtonNuclCS::CalcCrossSect:Sync="<<sync<<
"<="<<I<<
G4endl;
233 G4cout<<
"***G4ChipsProtonNuclCS::CalcCrossSect: Sinc="<<sync<<
"#"<<I<<
", Z=" <<targZ
234 <<
", N="<<targN<<
", F="<<F<<
G4endl;
242 if (Momentum<
lastTH)
return 0.;
243 else if (Momentum<Pmin)
247 else if (Momentum<Pmax)
257 if(sigma<0.)
return 0.;
G4double CrossSectionLin(G4int targZ, G4int targN, G4double P)
G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP)
G4double EquLinearFit(G4double X, G4int N, G4double X0, G4double DX, G4double *Y)
G4GLOB_DLL std::ostream G4cout
std::vector< G4double * > * LEN
G4double G4Log(G4double x)
G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP)
std::vector< G4double * > * HEN
static const G4double THmin
◆ CrossSectionDescription()
void G4ChipsProtonInelasticXS::CrossSectionDescription |
( |
std::ostream & |
outFile | ) |
const |
|
virtual |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 84 of file G4ChipsProtonInelasticXS.cc.
86 outFile <<
"G4ChipsProtonInelasticXS provides the inelastic cross\n" 87 <<
"section for proton nucleus scattering as a function of incident\n" 88 <<
"momentum. The cross section is calculated using M. Kossov's\n" 89 <<
"CHIPS parameterization of cross section data.\n";
◆ CrossSectionFormula()
Definition at line 358 of file G4ChipsProtonInelasticXS.cc.
368 El=1./(0.00012+p2*0.2);
385 El=LE+(0.0557*lp2+6.72+32.6/
P)/(1.+rp2/P);
386 To=LE+(0.3 *lp2+38.2+52.7*
rp2)/(1.+2.72*rp2*rp2);
400 else if(tZ<97 && tN<152)
415 G4double c=(170.+3600./a2s)/(1.+65./a2s);
421 8.e-18/(1./a16+1.3e-20)/(1.+1.e-21*a12);
422 G4double ss=3.57+.009*a2/(1.+.0001*a2*
a);
423 G4double h=(.01/a4+2.5e-6/
a)*(1.+6.e-6*a2*a)/(1.+6.e7/a12/
a2);
424 sigma=(c+d*
d)/(1.+r/p4)+(gg+e*
G4Exp(-ss*P))/(1.+h/p4/p4);
428 G4cerr<<
"-Warning-G4QProtonNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<
", N="<<tN<<
G4endl;
431 if(sigma<0.)
return 0.;
static const G4double rp2
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4GLOB_DLL std::ostream G4cerr
◆ CrossSectionLin()
Definition at line 279 of file G4ChipsProtonInelasticXS.cc.
285 else if(tZ<97 && tN<152)
304 else if(tZ==5 && tN==6)
310 else if(tZ==4 && tN==5)
316 else if(tZ==3 && tN==4)
322 else if(tZ==3 && tN==3)
328 else if(tZ==2 && tN==1)
339 sigma+=pex*
G4Exp(-dp*dp/wid);
344 G4cerr<<
"-Warning-G4ChipsProtonNuclearXS::CSLin:*Bad A* Z="<<tZ<<
", N="<<tN<<
G4endl;
347 if(sigma<0.)
return 0.;
G4double ThresholdMomentum(G4int targZ, G4int targN)
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 G4double pos
G4GLOB_DLL std::ostream G4cerr
◆ CrossSectionLog()
Definition at line 352 of file G4ChipsProtonInelasticXS.cc.
G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
◆ Default_Name()
static const char* G4ChipsProtonInelasticXS::Default_Name |
( |
| ) |
|
|
inlinestatic |
◆ EquLinearFit()
◆ GetChipsCrossSection()
!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
Definition at line 113 of file G4ChipsProtonInelasticXS.cc.
140 if(lastCS<=0. && pMom>
lastTH)
159 colP.push_back(pMom);
std::vector< G4int > colZ
std::vector< G4double > colP
static const double millibarn
std::vector< G4double > colCS
std::vector< G4double > colTH
G4double CalculateCrossSection(G4int F, G4int I, G4int PDG, G4int Z, G4int N, G4double Momentum)
std::vector< G4int > colN
◆ GetIsoCrossSection()
◆ IsIsoApplicable()
◆ ThresholdMomentum()
Definition at line 262 of file G4ChipsProtonInelasticXS.cc.
269 if(tZ<.99 || tN<0.)
return 0.;
270 else if(tZ==1 && tN==0)
return 800.;
275 return std::sqrt(T*(tpM+T));
static G4Pow * GetInstance()
static G4Proton * Definition()
static G4Proton * Proton()
G4double GetPDGMass() const
static const G4double third
G4double powA(G4double A, G4double y) const
◆ colCS
std::vector<G4double> G4ChipsProtonInelasticXS::colCS |
|
private |
◆ colN
std::vector<G4int> G4ChipsProtonInelasticXS::colN |
|
private |
◆ colP
std::vector<G4double> G4ChipsProtonInelasticXS::colP |
|
private |
◆ colTH
std::vector<G4double> G4ChipsProtonInelasticXS::colTH |
|
private |
◆ colZ
std::vector<G4int> G4ChipsProtonInelasticXS::colZ |
|
private |
◆ HEN
std::vector<G4double*>* G4ChipsProtonInelasticXS::HEN |
|
private |
G4int G4ChipsProtonInelasticXS::j |
|
private |
◆ lastCS
G4double G4ChipsProtonInelasticXS::lastCS |
|
private |
◆ lastHEN
G4double* G4ChipsProtonInelasticXS::lastHEN |
|
private |
◆ lastI
G4int G4ChipsProtonInelasticXS::lastI |
|
private |
◆ lastLEN
G4double* G4ChipsProtonInelasticXS::lastLEN |
|
private |
◆ lastN
G4int G4ChipsProtonInelasticXS::lastN |
|
private |
◆ lastP
G4double G4ChipsProtonInelasticXS::lastP |
|
private |
◆ lastTH
G4double G4ChipsProtonInelasticXS::lastTH |
|
private |
◆ lastZ
G4int G4ChipsProtonInelasticXS::lastZ |
|
private |
◆ LEN
std::vector<G4double*>* G4ChipsProtonInelasticXS::LEN |
|
private |
The documentation for this class was generated from the following files: