45 #ifndef G4ElasticHadrNucleusHE_h
46 #define G4ElasticHadrNucleusHE_h 1
82 void DefineNucleusParameters(
G4double A);
207 G4double HadrTot, HadrSlope, HadrReIm, TotP,
208 DDSect2, DDSect3, ConstU, FmaxT;
211 G4double BoundaryP[7], BoundaryTL[7], BoundaryTG[7];
215 G4double Slope1, Slope2, Coeff1, Coeff2, MaxTR;
242 return c1+(p-p1)*(c2-c1)/(p2-p1);
254 for(i=1; i<
n; i++)
if(hLabMomentum <= EnP[i])
break;
256 if(i == n) i = n - 1;
258 Coeff0 =
LineInterpol(EnP[i], EnP[i-1], C0P[i], C0P[i-1], hLabMomentum);
259 Coeff1 =
LineInterpol(EnP[i], EnP[i-1], C1P[i], C1P[i-1], hLabMomentum);
260 Slope0 =
LineInterpol(EnP[i], EnP[i-1], B0P[i], B0P[i-1], hLabMomentum);
261 Slope1 =
LineInterpol(EnP[i], EnP[i-1], B1P[i], B1P[i-1], hLabMomentum);
272 if ( numN >= numM && numN <= 240)
return SetBinom[numN][numM];
281 return GetFt(Q2)/FmaxT;
G4double LineInterpol(G4double p0, G4double p2, G4double c1, G4double c2, G4double p)
static c2_factory< G4double > c2
G4double SampleT(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
G4double GetQ2(G4double Ran)
G4double GetBinomCof(G4int n, G4int m)
void DefineHadronValues(G4int Z)
G4double GetDistrFun(G4double Q2)
const G4ParticleDefinition * Hadron()
G4double HadronProtonQ2(const G4ParticleDefinition *aHadron, G4double inLabMom)
void GetKinematics(const G4ParticleDefinition *aHadron, G4double MomentumH)
double A(double temperature)
static constexpr double m
G4ElasticHadrNucleusHE(const G4String &name="hElasticGlauber")
G4double TableCrossSec[NQTABLE]
G4double HadrNucDifferCrSec(G4int Z, G4int Nucleus, G4double Q2)
G4ElasticHadrNucleusHE & operator=(const G4ElasticHadrNucleusHE &right)
static const G4int NENERGY
virtual ~G4ElasticHadrNucleusHE()
static const G4int NQTABLE
G4ElasticData(const G4ParticleDefinition *h, G4int Z, G4double A, G4double *eGeV)
G4double GetLightFq2(G4int Z, G4int A, G4double Q)
virtual void ModelDescription(std::ostream &) const
G4double GetHeavyFq2(G4int Z, G4int Nucleus, G4double *LineFq2)
G4double GetQ2_2(G4int N, G4double *Q, G4double *F, G4double R)
G4double HadronNucleusQ2_2(G4ElasticData *pElD, G4int Z, G4double plabGeV, G4double tmax)
void InterpolateHN(G4int n, const G4double EnP[], const G4double C0P[], const G4double C1P[], const G4double B0P[], const G4double B1P[])
G4double GetFt(G4double Q2)
static const G4int NHADRONS
virtual G4double SampleInvariantT(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)