45 #ifndef G4ElasticHadrNucleusHE_h
46 #define G4ElasticHadrNucleusHE_h 1
58 static const G4int NHADRONS = 26;
59 static const G4int ONQ0 = 5;
60 static const G4int ONQ2 = 100;
61 static const G4int NENERGY = 30;
62 static const G4int NQTABLE = NENERGY*ONQ2;
81 void DefineNucleusParameters(
G4double A);
172 G4int HadronCode[NHADRONS];
173 G4int HadronType[NHADRONS];
174 G4int HadronType1[NHADRONS];
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;
241 return c1+(p-p1)*(c2-c1)/(p2-p1);
253 for(i=1; i<
n; i++)
if(hLabMomentum <= EnP[i])
break;
255 if(i == n) i = n - 1;
257 Coeff0 =
LineInterpol(EnP[i], EnP[i-1], C0P[i], C0P[i-1], hLabMomentum);
258 Coeff1 =
LineInterpol(EnP[i], EnP[i-1], C1P[i], C1P[i-1], hLabMomentum);
259 Slope0 =
LineInterpol(EnP[i], EnP[i-1], B0P[i], B0P[i-1], hLabMomentum);
260 Slope1 =
LineInterpol(EnP[i], EnP[i-1], B1P[i], B1P[i-1], hLabMomentum);
271 if ( numN >= numM && numN <= 240)
return SetBinom[numN][numM];
280 return GetFt(Q2)/FmaxT;
G4double LineInterpol(G4double p0, G4double p2, G4double c1, G4double c2, G4double p)
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)
G4ElasticHadrNucleusHE(const G4String &name="hElasticGlauber")
G4double TableCrossSec[NQTABLE]
G4double HadrNucDifferCrSec(G4int Z, G4int Nucleus, G4double Q2)
virtual void Description() const
G4ElasticHadrNucleusHE & operator=(const G4ElasticHadrNucleusHE &right)
virtual ~G4ElasticHadrNucleusHE()
G4ElasticData(const G4ParticleDefinition *h, G4int Z, G4double A, G4double *eGeV)
G4double GetLightFq2(G4int Z, G4int A, G4double Q)
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)
virtual G4double SampleInvariantT(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)