Import Geant4 10.6.0 source tree
This commit is contained in:
+44
-75
@@ -23,15 +23,12 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// G4ElasticHadrNucleusHe.hh
|
||||
|
||||
// The generator of high energy hadron-nucleus elastic scattering
|
||||
// The hadron kinetic energy T > 1 GeV
|
||||
// N. Starkov 2003.
|
||||
// N.Starkov 2003.
|
||||
//
|
||||
// 19.05.04 Variant for G4 6.1: The 'ApplyYourself' was changed
|
||||
// 19.11.05 The HE elastic scattering on proton is added (N.Starkov)
|
||||
// 16.11.06 General redesign (N.Starkov)
|
||||
// 23.11.06 General cleanup, ONQ0=3 (V.Ivanchenko)
|
||||
@@ -55,43 +52,39 @@
|
||||
|
||||
class G4NistManager;
|
||||
|
||||
static const G4int NHADRONS = 26; // Number of hadrons
|
||||
static const G4int ONQ0 = 5; // The initial number of steps on Q2
|
||||
static const G4int ONQ2 = 100; // The total number of steps on Q2
|
||||
static const G4int NENERGY = 30;
|
||||
static const G4int ZMAX = 93;
|
||||
static const G4int NQTABLE = NENERGY*ONQ2;
|
||||
static const G4int NHADRONS = 26; // Number of allowed hadrons
|
||||
static const G4int ONQ2 = 102; // Number of points on Q2
|
||||
static const G4int NENERGY = 24;
|
||||
static const G4int ZMAX = 93;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
class G4ElasticData
|
||||
{
|
||||
|
||||
friend class G4ElasticHadrNucleusHE;
|
||||
|
||||
public:
|
||||
|
||||
G4ElasticData(const G4ParticleDefinition* h, G4int Z, G4int A, G4double* e);
|
||||
G4ElasticData(const G4ParticleDefinition* h, G4int Z, G4int A,
|
||||
const G4double* e);
|
||||
|
||||
~G4ElasticData(){}
|
||||
|
||||
const G4ParticleDefinition* Hadron() {return hadr;}
|
||||
~G4ElasticData() {}
|
||||
|
||||
private:
|
||||
|
||||
void DefineNucleusParameters(G4int A);
|
||||
const G4ParticleDefinition* hadr;
|
||||
|
||||
// hide assignment operator
|
||||
G4ElasticData & operator=(const G4ElasticData &right);
|
||||
G4ElasticData(const G4ElasticData&);
|
||||
|
||||
public:
|
||||
G4double R1, R2, Pnucl, Aeff;
|
||||
G4double limitQ2;
|
||||
G4double dQ2;
|
||||
G4double massA;
|
||||
G4double massA2;
|
||||
G4int dnkE[NENERGY];
|
||||
G4double maxQ2[NENERGY];
|
||||
|
||||
G4double TableQ2[ONQ2];
|
||||
G4double TableCrossSec[NQTABLE];
|
||||
std::vector<G4double> fCumProb[NENERGY];
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
@@ -113,97 +106,81 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
G4double HadronNucleusQ2_2(G4ElasticData * pElD, G4int Z,
|
||||
G4double plabGeV, G4double tmax);
|
||||
G4double HadronNucleusQ2_2(const G4ElasticData *pElD, G4double plabGeV,
|
||||
G4double tmax);
|
||||
|
||||
void DefineHadronValues(G4int Z);
|
||||
G4int FillFq2(G4int A);
|
||||
|
||||
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 GetQ2_2(G4int N, G4int Nmax,
|
||||
const std::vector<G4double>& F, G4double rand);
|
||||
|
||||
G4double LineInterpol(G4double p0, G4double p2,
|
||||
G4double c1, G4double c2,
|
||||
G4double p);
|
||||
|
||||
G4double HadrNucDifferCrSec(G4int Z, G4int Nucleus, G4double Q2);
|
||||
G4double HadrNucDifferCrSec(G4int A, G4double Q2);
|
||||
|
||||
void InterpolateHN(G4int n, const G4double EnP[],
|
||||
const G4double C0P[], const G4double C1P[],
|
||||
const G4double B0P[], const G4double B1P[]);
|
||||
|
||||
// hide assignment operator
|
||||
G4ElasticHadrNucleusHE & operator=(const G4ElasticHadrNucleusHE &right);
|
||||
G4ElasticHadrNucleusHE(const G4ElasticHadrNucleusHE&);
|
||||
|
||||
G4double GetBinomCof( G4int n, G4int m );
|
||||
|
||||
G4double GetFt(G4double Q2);
|
||||
|
||||
G4double GetDistrFun(G4double Q2);
|
||||
|
||||
G4double GetQ2(G4double Ran);
|
||||
|
||||
G4double HadronProtonQ2(const G4ParticleDefinition * aHadron,
|
||||
G4double inLabMom);
|
||||
|
||||
void GetKinematics(const G4ParticleDefinition * aHadron,
|
||||
G4double MomentumH);
|
||||
G4double HadronProtonQ2(G4double plab, G4double tmax);
|
||||
|
||||
void Binom();
|
||||
|
||||
void FillData(const G4ParticleDefinition* p, G4int idx, G4int Z);
|
||||
|
||||
inline G4double LineInterpol(G4double p0, G4double p2,
|
||||
G4double c1, G4double c2, G4double p);
|
||||
|
||||
inline G4double GetBinomCof( G4int n, G4int m );
|
||||
|
||||
// hide assignment operator
|
||||
G4ElasticHadrNucleusHE & operator=(const G4ElasticHadrNucleusHE &right);
|
||||
G4ElasticHadrNucleusHE(const G4ElasticHadrNucleusHE&);
|
||||
|
||||
// fields
|
||||
G4int iHadrCode;
|
||||
G4int iHadron;
|
||||
static const G4int HadronCode[NHADRONS];
|
||||
static const G4int HadronType[NHADRONS];
|
||||
static const G4int HadronType1[NHADRONS];
|
||||
G4int iHadron1;
|
||||
static const G4int fHadronCode[NHADRONS];
|
||||
static const G4int fHadronType[NHADRONS];
|
||||
static const G4int fHadronType1[NHADRONS];
|
||||
|
||||
// momemtum limits
|
||||
G4double plabLowLimit;
|
||||
G4double dQ2;
|
||||
|
||||
// transition between internal and CLHEP units
|
||||
G4double MbToGeV2;
|
||||
G4double sqMbToGeV;
|
||||
G4double Fm2ToGeV2;
|
||||
G4double GeV2;
|
||||
G4double protonM; // GeV
|
||||
G4double protonM2; // GeV^2
|
||||
|
||||
// projectile kinematics in GeV
|
||||
G4double hMass;
|
||||
G4double hMass2;
|
||||
G4double hLabMomentum;
|
||||
G4double hLabMomentum2;
|
||||
G4double MomentumCM;
|
||||
G4double HadrEnergy;
|
||||
|
||||
// elastic parameters
|
||||
G4double HadrTot, HadrSlope, HadrReIm, TotP,
|
||||
DDSect2, DDSect3, ConstU, FmaxT;
|
||||
G4double HadrTot, HadrSlope, HadrReIm, TotP;
|
||||
G4double DDSect2, DDSect3, ConstU;
|
||||
|
||||
// momentum limits for different models of hadron/nucleon scatetring
|
||||
G4double BoundaryP[7], BoundaryTL[7], BoundaryTG[7];
|
||||
|
||||
// parameterisation of scattering
|
||||
G4double Slope1, Slope2, Coeff1, Coeff2, MaxTR;
|
||||
G4double Slope1, Slope2, Coeff1, Coeff2;
|
||||
G4double Slope0, Coeff0;
|
||||
|
||||
G4double aAIm, aDIm, Dtot11;
|
||||
|
||||
// nucleaus parameters
|
||||
G4double R1, R2, Pnucl, Aeff;
|
||||
G4int NumbN;
|
||||
G4double R1, R2, Pnucl, Aeff, Q2max;
|
||||
|
||||
static G4double Energy[NENERGY];
|
||||
static G4double LowEdgeEnergy[NENERGY];
|
||||
static G4double ABinom[240][240];
|
||||
static G4double fLineF[ONQ2];
|
||||
static G4double fEnergy[NENERGY];
|
||||
static G4double fLowEdgeEnergy[NENERGY];
|
||||
static G4double fBinom[240][240];
|
||||
|
||||
static G4ElasticData* SetOfElasticData[NHADRONS][ZMAX];
|
||||
static G4ElasticData* fElasticData[NHADRONS][ZMAX];
|
||||
G4NistManager* nistManager;
|
||||
G4bool isMaster;
|
||||
|
||||
@@ -228,15 +205,7 @@ G4double G4ElasticHadrNucleusHE::LineInterpol(G4double p1, G4double p2,
|
||||
inline
|
||||
G4double G4ElasticHadrNucleusHE::GetBinomCof(G4int numN, G4int numM)
|
||||
{
|
||||
return (numN >= numM && numN < 240) ? ABinom[numN][numM] : 0.0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
inline
|
||||
G4double G4ElasticHadrNucleusHE::GetDistrFun(G4double Q2)
|
||||
{
|
||||
return GetFt(Q2)/FmaxT;
|
||||
return (numN >= numM && numN < 240) ? fBinom[numN][numM] : 0.0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -60,6 +60,8 @@ public:
|
||||
// sample momentum transfer using Lab. momentum
|
||||
G4double SampleInvariantT(const G4ParticleDefinition* p, G4double plab,
|
||||
G4int Z, G4int A) override;
|
||||
|
||||
G4double GetSlopeCof( const G4int pdg );
|
||||
|
||||
inline void SetLowestEnergyLimit(G4double value);
|
||||
|
||||
@@ -82,6 +84,7 @@ private:
|
||||
G4ParticleDefinition* theAlpha;
|
||||
|
||||
G4double lowestEnergyLimit;
|
||||
G4int nwarn;
|
||||
};
|
||||
|
||||
inline void G4HadronElastic::SetLowestEnergyLimit(G4double value)
|
||||
|
||||
+1
-4
@@ -44,9 +44,6 @@
|
||||
#include "G4Nucleus.hh"
|
||||
#include "G4NucleiProperties.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace CLHEP;
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4PhysicsLogVector;
|
||||
class G4PhysicsTable;
|
||||
@@ -106,7 +103,7 @@ inline G4double G4NeutronElectronElModel::CalculateAm( G4double Tkin)
|
||||
fee = (Tkin+fM)*fme/fM;
|
||||
// G4cout<<"fee = "<<fee<<" MeV"<<G4endl;
|
||||
fee2 = fee*fee;
|
||||
G4double momentum = sqrt( fee2 - fme2 );
|
||||
G4double momentum = std::sqrt( fee2 - fme2 );
|
||||
G4double k = momentum/CLHEP::hbarc;
|
||||
G4double ch = 1.13;
|
||||
G4double zn = 1.77*k*CLHEP::Bohr_radius;
|
||||
|
||||
Reference in New Issue
Block a user