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);
48 bool doSegmentation =
false);
53 double integral(
const double *yvec =
nullptr)
override;
59 _useIntegrandLimits = flag;
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 evaluating a real-valued function of one real variable and performing numerica...
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 *)
Holds the configuration parameters of the various numeric integrators used by RooRealIntegral.
Factory to instantiate numeric integrators from a given function binding and a given configuration.
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
void initialize(typename Architecture_t::Matrix_t &A, EInitialization m)