16 #ifndef QWEAKSIMEPEVENT_H
17 #define QWEAKSIMEPEVENT_H
20 #include "Randomize.hh"
22 #include "G4ThreeVector.hh"
44 static const G4double
mil;
47 static const G4double
M_n;
48 static const G4double
M_p;
83 G4int
SuperElasticCheck(G4double E_in, G4double E_out, G4double theta, G4double &xsec);
84 G4double
ResMod507(G4int sf,G4double w2,G4double q2,G4double *xval);
85 G4double
Sigma_EEPrime(G4double eni,G4double eprime,G4double theta, G4double &q2);
162 void SetElasticPeakDeltaE(G4double energy = 15*MeV) {
if (energy < 15*MeV) { energy = 15*MeV; G4cout <<
"***** Value Out of Range: ElasticPeakDeltaE set to : 15 MeV *****" << G4endl; }
ElasticPeakDeltaE = energy; } ;
179 std::vector< G4double > &CrossSection,
183 G4ThreeVector &MomentumDirection,
186 G4double &Asymmetry);
213 G4double &E_out1, G4double &E_out2, G4double &theta2,
214 G4double &q2, G4double &fWeightN, G4double &asymmetry);
232 G4double
AlGDR( G4double E_in,
244 G4double
CGDR( G4double E_in,
277 G4int Ain, G4double &fWeightN, G4double &Q2, G4double &E_out);
279 G4int Zin, G4int Ain,
280 G4double &fWeightN, G4double &Q2,
301 const G4String path);
303 void F1F2QE09(G4int Z, G4int A, G4double QSQ,
304 G4double wsq, G4double &F1, G4double &F2);
305 void F1F2IN09(G4int Z, G4int A, G4double QSQ,
306 G4double wsq, G4double &F1, G4double &F2);
308 void christy507(G4double wsq, G4double Q2, G4double &F1,
309 G4double &R, G4double &sigt, G4double &sigl);
310 void resmodd(G4double w2, G4double q2, G4double xval[50], G4double &sig);
311 G4double
resmod507_v2(G4double sf,G4double w2, G4double q2,
313 G4double
MEC2009(G4int a, G4double q2,G4double w2);
314 G4double
fitemc(G4double X, G4int A);
317 G4int Ain, G4double &fWeightN, G4double &Q2,
319 G4double
Fshell(G4int Z, G4int A, G4double q2);
320 G4double
Fgauss(G4int Z, G4int A, G4double q2);
321 G4double
FF_BESSEL(G4int Z, G4int A, G4double q2, G4bool &ofr);
void GetanEvent(G4double E_in, std::vector< G4double > &CrossSection, G4double &weight_n, G4double &Q2, G4double &E_out, G4ThreeVector &MomentumDirection, G4double &theta, G4double &phi, G4double &Asymmetry)
G4int ReactionRegion
reaction region used for event generation
QweakSimEPEventMessenger * EventGen_Messenger
G4double Quasi_Elastic_Bosted(G4double E_in, G4double Theta, G4int Zin, G4int Ain, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4int ReactionType
reaction type used for event generation
void SetEPrime_Max(G4double energy)
G4double GetThetaAngle_Max()
QweakSimFieldMap< value_t, value_n > * fLookupTable
void SetEPrime_Min(G4double energy)
G4double GetSchwingerDeltaE()
void SetReactionType(G4int rt)
void SetPhaseSpace(G4double ps)
G4ThreeVector GetMomentumDirection()
G4double GetThetaAngle_Min()
G4double Fshell(G4int Z, G4int A, G4double q2)
G4double fitemc(G4double X, G4int A)
G4double Moller_Scattering(G4double E_in, G4double theta1, G4double &E_out1, G4double &E_out2, G4double &theta2, G4double &q2, G4double &fWeightN, G4double &asymmetry)
static const G4int value_n
UI control for the event generator.
G4double Pion_PhotoProductionAl(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4double AlNuclInel(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4int SuperElasticCheck(G4double E_in, G4double E_out, G4double theta, G4double &xsec)
G4double GetPhiAngle_Min()
A multi-dimensional grid of values with interpolation methods.
G4double CGDR(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
void CheckLookupTableBounds()
void SetReactionRegion(G4int rr)
G4int GetActiveOctantNumber()
G4double Pion_PhotoProductionCarbon(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4double GetAsymmetry_Pi(G4double Q2_pi)
void SetPhiAngle_Max(G4double ang)
void F1F2QE09(G4int Z, G4int A, G4double QSQ, G4double wsq, G4double &F1, G4double &F2)
G4double Aluminum_Excited_State(G4double E_in, G4double Theta, G4double E_lvl, G4double fit_c, G4double fit_mean, G4double fit_sigma, G4double &fWeightN, G4double &Q2, G4double &E_out)
static const G4double TargetWindowThickness
G4double AlloyScattering(G4double E_in, G4double Theta, G4int Zin, G4int Ain, G4double &fWeightN, G4double &Q2, G4double &E_out)
void SetIsotropy(G4int isot)
G4double Horowitz_DW_Xsect(G4double E_in, G4double theta, const G4String path, G4double &fWeightN, G4double &Q2, G4double &E_out)
static const G4double M_p
G4double GetAsymmetry_AL(G4double theta, G4double energy)
void SetThetaAngle_Min(G4double ang)
G4double ElasticPeakDeltaE
G4double CNuclInel(G4double E_in, G4double Theta, G4int nState, G4double &fWeightN, G4double &Q2, G4double &E_out)
void SetSchwingerDeltaE(G4double energy=15 *MeV)
G4double Elastic_Cross_Section_Carbon(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4double ResMod507(G4int sf, G4double w2, G4double q2, G4double *xval)
void SetActiveOctantNumber(G4int kaot)
void SetElasticPeakDeltaE(G4double energy=15 *MeV)
G4double GetAsymmetry_EP(G4double theta, G4double energy)
G4double Quasi_Elastic_Neutron(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
static const G4double Theta_Min
void SetBeamEnergy(G4double energy=1.160 *GeV)
G4double AlGDR(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4int GetReactionRegion()
static const G4double mil
QweakSimEPEvent(QweakSimUserInformation *myUI)
G4double Delta_Resonance(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
void SetThetaAngle_Max(G4double ang)
void F1F2IN09(G4int Z, G4int A, G4double QSQ, G4double wsq, G4double &F1, G4double &F2)
void christy507(G4double wsq, G4double Q2, G4double &F1, G4double &R, G4double &sigt, G4double &sigl)
G4double Elastic_Cross_Section_Proton(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4double Born_Approx_Nuclei_Asym(G4double Z, G4double A, G4double energy, G4double eprime, G4double qq)
void SetLuminosity(G4double lum)
G4double NuclearInelastic_Bosted(G4double E_in, G4double Theta, G4int Zin, G4int Ain, G4double &fWeightN, G4double &Q2, G4double &E_out)
static const G4double M_n
G4int Isotropy
isotropy used for event generation
G4int kActiveOctantNumber
Active octant number in the simulation, 0 will enable all octants.
G4double GetAsymmetry_Be(G4double theta, G4double energy)
G4double MEC2009(G4int a, G4double q2, G4double w2)
G4double GetAsymmetry_EN(G4double theta, G4double energy)
G4double GetElasticPeakDeltaE()
G4double Horowitz_DW_Asym(G4double theta, const G4String path)
G4double GetPhiAngle_Max()
static const G4int value_d
static const G4double TargetLength
virtual ~QweakSimEPEvent()
G4double Elastic_Cross_Section_Aluminum(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4double FF_BESSEL(G4int Z, G4int A, G4double q2, G4bool &ofr)
const std::vector< G4double > Radiative_Cross_Section_Lookup(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
G4double resmod507_v2(G4double sf, G4double w2, G4double q2, G4double xval[50])
QweakSimUserInformation * myUserInfo
G4double Sigma_EEPrime(G4double eni, G4double eprime, G4double theta, G4double &q2)
G4double Fgauss(G4int Z, G4int A, G4double q2)
G4double Pion_PhotoProduction(G4double E_in, G4double Theta, G4double &fWeightN, G4double &Q2, G4double &E_out)
void resmodd(G4double w2, G4double q2, G4double xval[50], G4double &sig)
void SetPhiAngle_Min(G4double ang)