16#ifndef ROO_IMPROPER_INTEGRATOR_1D
17#define ROO_IMPROPER_INTEGRATOR_1D
39 double integral(
const double *yvec =
nullptr)
override;
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
virtual bool setLimits(double *, double *)
std::unique_ptr< RooRombergIntegrator > _integrator1
Piece integrator 1.
std::unique_ptr< RooInvTransform > _function
Binding with inverse of function.
LimitsCase limitsCase() const
Classify the type of limits we have: OpenBothEnds,ClosedBothEnds,OpenBelow or OpenAbove.
double integral(const double *yvec=nullptr) override
Calculate the integral at the given parameter values of the function binding.
RooImproperIntegrator1D(const RooAbsFunc &function)
Constructor with function binding.
friend class RooNumIntFactory
LimitsCase _case
Configuration of limits.
double _xmax
Value of limits.
bool checkLimits() const override
Check if the limits are valid.
RooAbsFunc * _origFunc
Original function binding.
bool setUseIntegrandLimits(bool flag) override
Interface function that allows to defer limit definition to integrand definition.
std::unique_ptr< RooRombergIntegrator > _integrator3
Piece integrator 3.
bool setLimits(double *xmin, double *xmax) override
Change our integration limits.
std::unique_ptr< RooRombergIntegrator > _integrator2
Piece integrator 2.
RooNumIntConfig _config
Configuration object.
static void registerIntegrator(RooNumIntFactory &fact)
Register RooImproperIntegrator1D, its parameters and capabilities with RooNumIntFactory.
bool _useIntegrandLimits
Use limits in function binding?
Holds the configuration parameters of the various numeric integrators used by RooRealIntegral.
Adaptive numerical integration algorithm.