49 return std::make_unique<RooImproperIntegrator1D>(function, config);
52 fact.registerPlugin(
"RooImproperIntegrator1D", creator, {},
67 _useIntegrandLimits(
true),
81 _useIntegrandLimits(
true),
97 _useIntegrandLimits(
false),
112 oocoutE(
nullptr,Integration) <<
"RooImproperIntegrator: cannot integrate invalid function" << std::endl;
117 _function= std::make_unique<RooInvTransform>(*function);
131 newConfig.getConfigSection(
"RooIntegrator1D").setCatIndex(
"sumRule",
rule);
183 oocoutE(
nullptr,Integration) <<
"RooImproperIntegrator1D::setLimits: cannot override integrand's limits" << std::endl;
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
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.
bool isValid() const
Is integrator in valid state.
const RooAbsFunc * integrand() const
Return integrand function binding.
bool _valid
Is integrator in valid state?
Special numeric integrator that can handle integrals over open domains.
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.
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.
std::unique_ptr< RooRombergIntegrator > _integrator3
Piece integrator 3.
void initialize(const RooAbsFunc *function=nullptr)
Initialize the integrator, construct and initialize subintegrators.
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.
Factory to instantiate numeric integrators from a given function binding and a given configuration.
static constexpr int isInfinite(double x)
Return true if x is infinite by RooNumber internal specification.