21 #ifndef _KINE_UTILS_H_
22 #define _KINE_UTILS_H_
44 Range1D_t
InelWLim (
double Ev,
double M,
double ml);
49 Range1D_t
InelXLim (
double Ev,
double M,
double ml);
50 Range1D_t
InelYLim (
double Ev,
double M,
double ml);
51 Range1D_t
InelYLim_X (
double Ev,
double M,
double ml,
double x);
52 Range1D_t
CohW2Lim (
double Mn,
double m_produced,
double mlep,
double Ev,
double Q2);
53 Range1D_t
CohNuLim (
double W2min,
double W2max,
double Q2,
double Mn,
double xsi);
54 Range1D_t
CohYLim (
double Mn,
double m_produced,
double mlep,
double Ev,
double Q2,
double xsi);
55 Range1D_t
CohYLim (
double EvL,
double ml);
57 Range1D_t
CohQ2Lim (
double Mn,
double m_produced,
double mlep,
double Ev);
58 Range1D_t
Cohq2Lim (
double Mn,
double m_produced,
double mlep,
double Ev);
60 Range1D_t
DarkWLim (
double Ev,
double M,
double ml);
65 Range1D_t
DarkXLim (
double Ev,
double M,
double ml);
66 Range1D_t
DarkYLim (
double Ev,
double M,
double ml);
67 Range1D_t
DarkYLim_X (
double Ev,
double M,
double ml,
double x);
70 double CohW2Min(
double Mn,
double m_produced);
75 void WQ2toXY (
double Ev,
double M,
double W,
double Q2,
double & x,
double & y);
76 void XYtoWQ2 (
double Ev,
double M,
double &
W,
double &
Q2,
double x,
double y);
77 void XQ2toWY (
double Ev,
double M,
double &
W,
double Q2,
double x,
double & y);
78 double XYtoW (
double Ev,
double M,
double x,
double y);
79 double XYtoQ2 (
double Ev,
double M,
double x,
double y);
80 double Q2YtoX (
double Ev,
double M,
double Q2,
double y);
90 double Q2 (
const Interaction *
const i);
91 double W (
const Interaction *
const i);
103 namespace electromagnetic
121 #endif // _KINE_UTILS_H_
double COHImportanceSamplingEnvelope(double *x, double *par)
bool TransformMatched(KinePhaseSpace_t ia, KinePhaseSpace_t ib, KinePhaseSpace_t a, KinePhaseSpace_t b, bool &fwd)
Range1D_t InelXLim(double El, double ml, double M)
Range1D_t InelWLim(double El, double ml, double M)
void XQ2toWY(double Ev, double M, double &W, double Q2, double x, double &y)
void UpdateXYFromWQ2(const Interaction *in)
double Q2(const Interaction *const i)
Range1D_t Inelq2Lim_W(double El, double ml, double M, double W)
double DISImportanceSamplingEnvelope(double *x, double *par)
Range1D_t CohW2Lim(double Mn, double m_produced, double mlep, double Ev, double Q2)
Range1D_t InelWLim(double Ev, double M, double ml)
A simple [min,max] interval for doubles.
Range1D_t Darkq2Lim(double Ev, double M, double ml, double q2min_cut=-1 *controls::kMinQ2Limit)
Range1D_t DarkQ2Lim_W(double Ev, double M, double ml, double W, double Q2min_cut=controls::kMinQ2Limit)
static const double kMinQ2Limit
Range1D_t CEvNSQ2Lim(double Ev)
Range1D_t InelQ2Lim(double Ev, double M, double ml, double Q2min_cut=controls::kMinQ2Limit)
enum genie::EKinePhaseSpace KinePhaseSpace_t
void UpdateWYFromXQ2(const Interaction *in)
double XYtoW(double Ev, double M, double x, double y)
static const double kMinQ2Limit
double PhaseSpaceVolume(const Interaction *const i, KinePhaseSpace_t ps)
Range1D_t InelQ2Lim_W(double Ev, double M, double ml, double W, double Q2min_cut=controls::kMinQ2Limit)
static constexpr double b
double W(const Interaction *const i)
double SlowRescalingVar(double x, double Q2, double M, double mc)
Range1D_t InelXLim(double Ev, double M, double ml)
Range1D_t DarkQ2Lim(double Ev, double M, double ml, double Q2min_cut=controls::kMinQ2Limit)
Range1D_t Inelq2Lim_W(double Ev, double M, double ml, double W, double q2min_cut=-1 *controls::kMinQ2Limit)
Range1D_t CohNuLim(double W2min, double W2max, double Q2, double Mn, double xsi)
double QD2toQ2(double QD2)
Range1D_t Darkq2Lim_W(double Ev, double M, double ml, double W, double q2min_cut=-1 *controls::kMinQ2Limit)
double XYtoQ2(double Ev, double M, double x, double y)
void XYtoWQ2(double Ev, double M, double &W, double &Q2, double x, double y)
void WQ2toXY(double Ev, double M, double W, double Q2, double &x, double &y)
Range1D_t Cohq2Lim(double Mn, double m_produced, double mlep, double Ev)
bool IsAboveCharmThreshold(double x, double Q2, double M, double mc)
static constexpr double ps
double Q2toQD2(double Q2)
Range1D_t InelQ2Lim(double El, double ml, double M)
Range1D_t Inelq2Lim(double El, double ml, double M)
void UpdateWQ2FromXY(const Interaction *in)
Range1D_t InelYLim(double El, double ml, double M)
Range1D_t InelQ2Lim_W(double El, double ml, double M, double W)
double CohW2Min(double Mn, double m_produced)
Range1D_t InelYLim_X(double Ev, double M, double ml, double x)
double Q2YtoX(double Ev, double M, double Q2, double y)
Range1D_t CohYLim(double Mn, double m_produced, double mlep, double Ev, double Q2, double xsi)
Range1D_t DarkYLim(double Ev, double M, double ml)
void UpdateXFromQ2Y(const Interaction *in)
Range1D_t InelYLim_X(double El, double ml, double M, double x)
Range1D_t CohQ2Lim(double Mn, double m_produced, double mlep, double Ev)
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
Range1D_t DarkYLim_X(double Ev, double M, double ml, double x)
Range1D_t Inelq2Lim(double Ev, double M, double ml, double q2min_cut=-1 *controls::kMinQ2Limit)
Range1D_t InelYLim(double Ev, double M, double ml)
Range1D_t DarkXLim(double Ev, double M, double ml)
void ApplyCutsToKineLimits(Range1D_t &r, double min, double max)
Range1D_t DarkWLim(double Ev, double M, double ml)
double RESImportanceSamplingEnvelope(double *x, double *par)