47 return std::make_unique<RooImproperIntegrator1D>(function, config);
50 fact.registerPlugin(
"RooImproperIntegrator1D", creator, {},
63RooImproperIntegrator1D::RooImproperIntegrator1D(
const RooAbsFunc& function) :
65 _useIntegrandLimits(
true),
79 _useIntegrandLimits(
true),
95 _useIntegrandLimits(
false),
107void RooImproperIntegrator1D::initialize(
const RooAbsFunc* function)
110 oocoutE(
nullptr,Integration) <<
"RooImproperIntegrator: cannot integrate invalid function" << std::endl;
115 _function= std::make_unique<RooInvTransform>(*function);
127 RooRombergIntegrator::SummationRule
rule) {
129 newConfig.getConfigSection(
"RooIntegrator1D").setCatIndex(
"sumRule",
rule);
138 _integrator1 = std::make_unique<RooRombergIntegrator>(*function,_xmin,_xmax,_config);
178bool RooImproperIntegrator1D::setLimits(
double *
xmin,
double *
xmax)
180 if(_useIntegrandLimits) {
181 oocoutE(
nullptr,Integration) <<
"RooImproperIntegrator1D::setLimits: cannot override integrand's limits" << std::endl;
187 return checkLimits();
197bool RooImproperIntegrator1D::checkLimits()
const
200 if (_useIntegrandLimits) {
201 if(_xmin == integrand()->getMinLimit(0) &&
202 _xmax == integrand()->getMaxLimit(0))
return true;
243RooImproperIntegrator1D::LimitsCase RooImproperIntegrator1D::limitsCase()
const
246 if(
nullptr == integrand() || !integrand()->isValid())
return Invalid;
248 if (_useIntegrandLimits) {
249 _xmin= integrand()->getMinLimit(0);
250 _xmax= integrand()->getMaxLimit(0);
286double RooImproperIntegrator1D::integral(
const double*
yvec)
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.
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.
void initialize(typename Architecture_t::Matrix_t &A, EInitialization m)