32 using namespace genie;
37 ROOT::Math::IBaseFunctionOneDim(),
61 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__ 62 LOG(
"GSLXSecFunc",
pDEBUG) <<
"xsec(Q2 = " << Q2 <<
") = " <<
xsec;
66 ROOT::Math::IBaseFunctionOneDim *
75 ROOT::Math::IBaseFunctionOneDim(),
99 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__ 100 LOG(
"GXSecFunc",
pDEBUG) <<
"xsec(y = " << y <<
") = " <<
xsec;
104 ROOT::Math::IBaseFunctionOneDim *
113 ROOT::Math::IBaseFunctionMultiDim(),
143 ROOT::Math::IBaseFunctionMultiDim *
152 ROOT::Math::IBaseFunctionMultiDim(),
182 ROOT::Math::IBaseFunctionMultiDim *
191 ROOT::Math::IBaseFunctionMultiDim(),
225 ROOT::Math::IBaseFunctionMultiDim *
234 ROOT::Math::IBaseFunctionMultiDim(),
267 ROOT::Math::IBaseFunctionMultiDim *
276 ROOT::Math::IBaseFunctionMultiDim(),
315 ROOT::Math::IBaseFunctionMultiDim *
324 ROOT::Math::IBaseFunctionOneDim(),
352 ROOT::Math::IBaseFunctionOneDim *
361 ROOT::Math::IBaseFunctionOneDim(),
389 ROOT::Math::IBaseFunctionOneDim *
398 ROOT::Math::IBaseFunctionOneDim(),
426 ROOT::Math::IBaseFunctionOneDim *
435 ROOT::Math::IBaseFunctionOneDim(),
463 ROOT::Math::IBaseFunctionOneDim *
475 ROOT::Math::IBaseFunctionMultiDim(),
501 double E_nu = P4_nu->E();
504 double theta_l = xin[1];
505 double phi_l = xin[2];
506 double theta_pi = xin[3];
507 double phi_pi = xin[4];
509 double E_pi= E_nu-E_l;
511 double y = E_pi/E_nu;
528 TVector3 lepton_3vector = TVector3(0,0,0);
529 lepton_3vector.SetMagThetaPhi(p_l,theta_l,phi_l);
530 TLorentzVector P4_lep = TLorentzVector(lepton_3vector , E_l );
533 TVector3 pion_3vector = TVector3(0,0,0);
534 pion_3vector.SetMagThetaPhi(p_pi,theta_pi,phi_pi);
535 TLorentzVector P4_pion = TLorentzVector(pion_3vector , E_pi);
537 double Q2 = -(*P4_nu-P4_lep).
Mag2();
543 if ( x < xlim.min || x > xlim.
max ) {
555 if (xsec>0 &&
flip) {
563 ROOT::Math::IBaseFunctionMultiDim *
576 ROOT::Math::IBaseFunctionMultiDim(),
600 double E_nu = P4_nu->E();
603 double theta_l = xin[1];
604 double phi_l = xin[2];
605 double theta_pi = xin[3];
606 double phi_pi = xin[4];
608 double E_pi= E_nu-E_l;
610 double y = E_pi/E_nu;
626 TVector3 lepton_3vector = TVector3(0,0,0);
627 lepton_3vector.SetMagThetaPhi(p_l,theta_l,phi_l);
628 TLorentzVector P4_lep = TLorentzVector(lepton_3vector , E_l );
631 TVector3 pion_3vector = TVector3(0,0,0);
632 pion_3vector.SetMagThetaPhi(p_pi,theta_pi,phi_pi);
633 TLorentzVector P4_pion = TLorentzVector(pion_3vector , E_pi);
635 double Q2 = -(*P4_nu-P4_lep).
Mag2();
641 if ( x < xlim.min || x > xlim.
max ) {
658 ROOT::Math::IBaseFunctionMultiDim *
673 ROOT::Math::IBaseFunctionMultiDim(),
699 double E_nu = P4_nu->E();
702 double theta_l = xin[1];
704 double theta_pi = xin[2];
705 double phi_pi = xin[3];
707 double sin_theta_l = TMath::Sin(theta_l);
708 double sin_theta_pi = TMath::Sin(theta_pi);
710 double E_pi= E_nu-E_l;
712 double y = E_pi/E_nu;
728 TVector3 lepton_3vector = TVector3(0,0,0);
729 lepton_3vector.SetMagThetaPhi(p_l,theta_l,phi_l);
730 TLorentzVector P4_lep = TLorentzVector(lepton_3vector , E_l );
733 TVector3 pion_3vector = TVector3(0,0,0);
734 pion_3vector.SetMagThetaPhi(p_pi,theta_pi,phi_pi);
735 TLorentzVector P4_pion = TLorentzVector(pion_3vector , E_pi);
737 double Q2 = -(*P4_nu-P4_lep).
Mag2();
743 if ( x < xlim.min || x > xlim.
max ) {
759 ROOT::Math::IBaseFunctionMultiDim *
776 ROOT::Math::IBaseFunctionMultiDim(),
802 double E_nu = P4_nu->E();
806 double theta_l = xin[0];
807 double phi_l = xin[1];
808 double theta_pi = xin[2];
811 double sin_theta_l = TMath::Sin(theta_l);
812 double sin_theta_pi = TMath::Sin(theta_pi);
814 double E_pi= E_nu-E_l;
816 double y = E_pi/E_nu;
832 TVector3 lepton_3vector = TVector3(0,0,0);
833 lepton_3vector.SetMagThetaPhi(p_l,theta_l,phi_l);
834 TLorentzVector P4_lep = TLorentzVector(lepton_3vector , E_l );
837 TVector3 pion_3vector = TVector3(0,0,0);
838 pion_3vector.SetMagThetaPhi(p_pi,theta_pi,phi_pi);
839 TLorentzVector P4_pion = TLorentzVector(pion_3vector , E_pi);
841 double Q2 = -(*P4_nu-P4_lep).
Mag2();
847 if ( x < xlim.min || x > xlim.
max ) {
878 string gsl_nd_integrator_type,
double gsl_relative_tolerance,
879 unsigned int max_n_calls) :
880 ROOT::Math::IBaseFunctionOneDim(),
884 fGSLIntegratorType(gsl_nd_integrator_type),
885 fGSLRelTol(gsl_relative_tolerance),
886 fGSLMaxCalls(max_n_calls)
890 integrator.SetRelTolerance(gsl_relative_tolerance);
907 LOG(
"GSLXSecFunc",
pINFO) <<
"dXSec_dElep_AR >> "<<
func->
NDim()<<
"d integral done. (Elep = " <<Elep<<
" , dxsec/dElep = "<<xsec <<
")";
918 const ROOT::Math::IBaseFunctionMultiDim * fn,
919 bool * ifLog,
double * mins,
double * maxes) :
937 double * toEval =
new double[this->
NDim()];
939 for (
unsigned int i = 0 ;
i < this->
NDim() ;
i++ )
951 double val = (*fFn)(toEval);
unsigned int NDim(void) const
Cross Section Calculation Interface.
const XSecAlgorithmI * fModel
double DoEval(const double *xin) const
unsigned int NDim(void) const
const KPhaseSpace & PhaseSpace(void) const
static const double kNapierConst
const Interaction * fInteraction
unsigned int NDim(void) const
const XSecAlgorithmI * fModel
double DoEval(const double *xin) const
double DoEval(double xin) const
bool IsWeakCC(void) const
const Interaction * fInteraction
dXSec_dQ2_E(const XSecAlgorithmI *m, const Interaction *i)
THE MAIN GENIE PROJECT NAMESPACE
d2XSec_dQ2dydt_E(const XSecAlgorithmI *m, const Interaction *i)
double DoEval(double xin) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
double DoEval(const double *xin) const
static const double kNucleonMass
unsigned int fGSLMaxCalls
double Q2(const Interaction *const i)
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
unsigned int NDim(void) const
void SetQ2(double Q2, bool selected=false)
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
d3Xsec_dOmegaldThetapi * Clone(void) const
Kinematics * KinePtr(void) const
virtual double XSec(const Interaction *i, KinePhaseSpace_t k=kPSfE) const =0
Compute the cross section for the input interaction.
double DoEval(double xin) const
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
A simple [min,max] interval for doubles.
static const double kPi0Mass
unsigned int NDim(void) const
const Interaction * fInteraction
double DoEval(double xin) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
Generated/set kinematical variables for an event.
double DoEval(const double *xin) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
const XSecAlgorithmI * fModel
const XSecAlgorithmI * fModel
d5XSecAR(const XSecAlgorithmI *m, const Interaction *i)
unsigned int NDim(void) const
double DoEval(const double *xin) const
unsigned int NDim(void) const
const Interaction * fInteraction
const Interaction * fInteraction
double DoEval(double xin) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
const Interaction * fInteraction
const XSecAlgorithmI * fModel
double DoEval(double xin) const
double DoEval(const double *xin) const
d3Xsec_dOmegaldThetapi(const XSecAlgorithmI *m, const Interaction *i)
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
double DoEval(double xin) const
d2XSec_dxdy_Ex(const XSecAlgorithmI *m, const Interaction *i, double x)
unsigned int NDim(void) const
const XSecAlgorithmI * fModel
Summary information for an interaction.
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
unsigned int NDim(void) const
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
void SetFSLeptonP4(const TLorentzVector &p4)
static keras::KerasModel * fModel
~d4Xsec_dEldThetaldOmegapi()
const XSecAlgorithmI * fModel
d3XSec_dxdydt_E(const XSecAlgorithmI *m, const Interaction *i)
unsigned int NDim(void) const
dXSec_Log_Wrapper(const ROOT::Math::IBaseFunctionMultiDim *fn, bool *ifLog, double *min, double *maxes)
const XSecAlgorithmI * fModel
void WQ2toXY(double Ev, double M, double W, double Q2, double &x, double &y)
fvar< T > exp(const fvar< T > &x)
d2XSec_dWdQ2_EQ2(const XSecAlgorithmI *m, const Interaction *i, double Q2)
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
void Sett(double t, bool selected=false)
double DoEval(const double *xin) const
const XSecAlgorithmI * fModel
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
const XSecAlgorithmI * fModel
const Interaction * fInteraction
~d5Xsec_dEldOmegaldOmegapi()
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
dXSec_dy_E(const XSecAlgorithmI *m, const Interaction *i)
static const double kASmallNum
void SetE_lep(double E_lepton) const
unsigned int NDim(void) const
d2XSec_dQ2dy_E(const XSecAlgorithmI *m, const Interaction *i)
const Interaction * fInteraction
unsigned int NDim(void) const
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
const Interaction * fInteraction
const XSecAlgorithmI * fModel
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
void SetFactor(double factor)
const Interaction * fInteraction
const XSecAlgorithmI * fModel
bool IsDeepInelastic(void) const
void Setx(double x, bool selected=false)
d2XSec_dxdy_Ey(const XSecAlgorithmI *m, const Interaction *i, double x)
void UpdateWQ2FromXY(const Interaction *in)
void SetW(double W, bool selected=false)
TLorentzVector * HitNucP4Ptr(void) const
const Interaction * fInteraction
const Interaction * fInteraction
d2XSec_dxdy_E(const XSecAlgorithmI *m, const Interaction *i)
static const double kPionMass
string fGSLIntegratorType
const genie::utils::gsl::d3Xsec_dOmegaldThetapi * func
Var Sqrt(const Var &v)
Use to take sqrt of a var.
double DoEval(const double *xin) const
const XSecAlgorithmI * fModel
const XSecAlgorithmI * fModel
d5Xsec_dEldOmegaldOmegapi(const XSecAlgorithmI *m, const Interaction *i)
void Sety(double y, bool selected=false)
void UpdateXFromQ2Y(const Interaction *in)
unsigned int NDim(void) const
d4Xsec_dEldThetaldOmegapi(const XSecAlgorithmI *m, const Interaction *i)
const Interaction * fInteraction
const Interaction * fInteraction
unsigned int NDim(void) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
d2XSec_dWdQ2_E(const XSecAlgorithmI *m, const Interaction *i)
void SetHadSystP4(const TLorentzVector &p4)
const Interaction * fInteraction
double DoEval(const double *xin) const
InitialState * InitStatePtr(void) const
Range1D_t XLim(void) const
x limits
~d3Xsec_dOmegaldThetapi()
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
unsigned int NDim(void) const
double DoEval(const double *xin) const
const ROOT::Math::IBaseFunctionMultiDim * fFn
const Target & Tgt(void) const
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
d2XSec_dWdQ2_EW(const XSecAlgorithmI *m, const Interaction *i, double W)
const Interaction * fInteraction
ROOT::Math::IntegratorMultiDim integrator
bool IsDarkMatterDeepInelastic(void) const
dXSec_dElep_AR * Clone(void) const
double ProbeE(RefFrame_t rf) const
const XSecAlgorithmI * fModel
TLorentzVector * GetProbeP4(RefFrame_t rf=kRfHitNucRest) const
const XSecAlgorithmI * fModel
unsigned int NDim(void) const