18#ifndef ROO_IMPROPER_INTEGRATOR_1D
19#define ROO_IMPROPER_INTEGRATOR_1D
25class RooRombergIntegrator;
29 RooImproperIntegrator1D(
const RooAbsFunc &function);
38 _useIntegrandLimits = flag;
41 double integral(
const double *yvec =
nullptr)
override;
58 LimitsCase limitsCase()
const;
60 mutable double _xmin, _xmax;
61 bool _useIntegrandLimits;
64 std::unique_ptr<RooInvTransform>
_function;
66 mutable std::unique_ptr<RooRombergIntegrator> _integrator1;
67 mutable std::unique_ptr<RooRombergIntegrator> _integrator2;
68 mutable std::unique_ptr<RooRombergIntegrator> _integrator3;
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
const RooAbsFunc * _function
Pointer to function binding of integrand.
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.
void initialize(typename Architecture_t::Matrix_t &A, EInitialization m)