18#ifndef ROO_INTEGRATOR_1D
19#define ROO_INTEGRATOR_1D
31std::pair<double, int> integrate1d(std::function<
double(
double)> func,
bool doTrapezoid,
int maxSteps,
int minStepsZero,
32 int fixSteps,
double epsAbs,
double epsRel,
bool doExtrap,
double xmin,
double xmax,
33 std::span<double> hArr, std::span<double> sArr);
41 enum SummationRule { Trapezoid, Midpoint };
43 RooRombergIntegrator(
const RooAbsFunc &function, SummationRule rule = Trapezoid,
int maxSteps = 0,
double eps = 0);
44 RooRombergIntegrator(
const RooAbsFunc &function,
double xmin,
double xmax, SummationRule rule = Trapezoid,
45 int maxSteps = 0,
double eps = 0);
47 RooRombergIntegrator(
const RooAbsFunc &function,
const RooNumIntConfig &config,
int nDim = 1,
48 bool doSegmentation =
false);
49 RooRombergIntegrator(
const RooAbsFunc &function,
double xmin,
double xmax,
const RooNumIntConfig &config,
53 double integral(
const double *yvec =
nullptr)
override;
59 _useIntegrandLimits = flag;
64 friend class RooNumIntFactory;
65 static void registerIntegrator(RooNumIntFactory &fact);
68 double integral(
int iDim,
int nSeg, std::span<double> wksp);
70 bool _useIntegrandLimits;
76 int _minStepsZero = 999;
80 bool _doExtrap =
true;
82 std::vector<double> _xmin;
83 std::vector<double> _xmax;
86 std::vector<double> _wksp;
87 std::vector<double> _x;
Abstract interface for integrators of real-valued functions that implement the RooAbsFunc interface.
virtual bool setUseIntegrandLimits(bool flag)
Interface function that allows to defer limit definition to integrand definition.
virtual bool checkLimits() const
If true, finite limits are required on the observable range.
virtual double integral(const double *yvec=nullptr)=0
virtual bool setLimits(double *, double *)
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...