16#ifndef ROO_INTEGRATOR_1D
17#define ROO_INTEGRATOR_1D
30 Int_t maxSteps= 0,
double eps= 0) ;
41 double integral(
const double *yvec=
nullptr)
override ;
82 std::vector<double>
_h ;
83 std::vector<double>
_s ;
84 std::vector<double>
_c ;
85 std::vector<double>
_d ;
88 double*
xvec(
double& xx) {
_x[0] = xx ;
return _x.data(); }
90 std::vector<double>
_x ;
#define ClassDefOverride(name, id)
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
RooAbsIntegrator is the abstract interface for integrators of real-valued functions that implement th...
virtual bool setLimits(double *, double *)
RooIntegrator1D implements an adaptive one-dimensional numerical integration algorithm.
std::vector< double > _c
! Integrator workspace
bool setUseIntegrandLimits(bool flag) override
Interface function that allows to defer limit definition to integrand definition.
RooAbsIntegrator * clone(const RooAbsFunc &function, const RooNumIntConfig &config) const override
Clone integrator with new function binding and configuration. Needed by RooNumIntFactory.
void extrapolate(Int_t n)
Extrapolate result to final value.
double _xmax
! Upper integration bound
double addMidpoints(Int_t n)
Calculate the n-th stage of refinement of the Second Euler-Maclaurin summation rule which has the use...
double _extrapError
! Error on extrapolated value
bool _doExtrap
Apply conversion step?
Int_t _minStepsZero
Minimum number of steps to declare convergence to zero.
bool canIntegrateND() const override
double * xvec(double &xx)
double addTrapezoids(Int_t n)
Calculate the n-th stage of refinement of the extended trapezoidal summation rule.
std::vector< double > _d
! Integrator workspace
double integral(const double *yvec=nullptr) override
Calculate numeric integral at given set of function binding parameters.
double _xmin
! Lower integration bound
bool _useIntegrandLimits
If true limits of function binding are used.
bool canIntegrate2D() const override
std::vector< double > _h
! Integrator workspace
double _epsRel
Relative convergence tolerance.
Int_t _maxSteps
Maximum number of steps.
Int_t _fixSteps
Fixed number of steps.
bool initialize()
Initialize the integrator.
double _savedResult
! Integrator workspace
double _range
! Size of integration range
bool canIntegrate1D() const override
static void registerIntegrator(RooNumIntFactory &fact)
Register RooIntegrator1D, is parameters and capabilities with RooNumIntFactory.
bool setLimits(double *xmin, double *xmax) override
Change our integration limits.
std::vector< double > _s
! Integrator workspace
bool checkLimits() const override
Check that our integration range is finite and otherwise return false.
bool canIntegrateOpenEnded() const override
double _epsAbs
Absolute convergence tolerance.
double _extrapValue
! Extrapolated value
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
RooNumIntFactory is a factory to instantiate numeric integrators from a given function binding and a ...