60 RooCategory extrap(
"extrapolation",
"Extrapolation procedure") ;
64 RooRealVar maxSteps(
"maxSteps",
"Maximum number of steps",20) ;
65 RooRealVar minSteps(
"minSteps",
"Minimum number of steps",999) ;
66 RooRealVar fixSteps(
"fixSteps",
"Fixed number of steps",0) ;
80 _h(0), _s(0), _c(0), _d(0), _x(0)
92 RooAbsIntegrator(function), _rule(rule), _maxSteps(maxSteps), _minStepsZero(999), _fixSteps(0), _epsAbs(eps), _epsRel(eps), _doExtrap(
kTRUE)
130 _epsAbs(config.epsAbs()),
131 _epsRel(config.epsRel())
142 oocoutE((
TObject*)0,Integration) <<
"RooIntegrator1D::ctor() ERROR: fixSteps>maxSteps, fixSteps set to maxSteps" << endl ;
159 _epsAbs(config.epsAbs()),
160 _epsRel(config.epsRel())
203 oocoutE((
TObject*)0,Integration) <<
"RooIntegrator1D::initialize: cannot integrate invalid function" << endl;
243 oocoutE((
TObject*)0,Integration) <<
"RooIntegrator1D::setLimits: cannot override integrand's limits" << endl;
265 oocoutE((
TObject*)0,Integration) <<
"RooIntegrator1D::checkLimits: bad range with min > max (_xmin = " <<
_xmin <<
" _xmax = " <<
_xmax <<
")" << endl;
298 for (
int jj=0 ; jj<=j ; jj++) {
299 if (
_s[j]>=zeroThresh) {
342 ooccoutW((
TObject*)0,Integration) <<
" [" << j <<
"] h = " <<
_h[j] <<
" , s = " <<
_s[j] << endl;
366 for(it=1, j=1; j <
n-1; j++) it*= 3;
371 for(
sum= 0, j= 1; j <= it; j++) {
397 const int nInt = 1 << (
n-2);
398 const double del =
_range/nInt;
403 for (
int j=0; j<nInt; ++j) {
404 double x =
xmin + (0.5+j)*del;
426 if ((dift=fabs(xa[i])) < dif) {
439 if((den=ho-hp) == 0.0) {
440 oocoutE((
TObject*)0,Integration) <<
"RooIntegrator1D::extrapolate: internal error" << endl;
Int_t getCatIndex(const char *name, Int_t defVal=0, Bool_t verbose=kFALSE) const
Get index value of a RooAbsCategory stored in set with given name.
Double_t getRealValue(const char *name, Double_t defVal=0, Bool_t verbose=kFALSE) const
Get value of a RooAbsReal stored in set with given name.
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
virtual Double_t getMinLimit(UInt_t dimension) const =0
virtual Double_t getMaxLimit(UInt_t dimension) const =0
UInt_t getDimension() const
virtual const char * getName() const
RooAbsIntegrator is the abstract interface for integrators of real-valued functions that implement th...
const RooAbsFunc * _function
const RooAbsFunc * integrand() const
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooCategory is an object to represent discrete states.
bool defineType(const std::string &label)
Define a state with given name.
virtual Bool_t setLabel(const char *label, bool printError=true) override
Set value by specifying the name of the desired state.
RooIntegrator1D implements an adaptive one-dimensional numerical integration algorithm.
Double_t addTrapezoids(Int_t n)
Calculate the n-th stage of refinement of the extended trapezoidal summation rule.
Double_t _range
Upper integration bound.
virtual Bool_t checkLimits() const
Check that our integration range is finite and otherwise return kFALSE.
virtual RooAbsIntegrator * clone(const RooAbsFunc &function, const RooNumIntConfig &config) const
Clone integrator with new function binding and configuration. Needed by RooNumIntFactory.
void extrapolate(Int_t n)
Extrapolate result to final value.
Double_t * xvec(Double_t &xx)
Integrator workspace.
Bool_t setLimits(Double_t *xmin, Double_t *xmax)
Change our integration limits.
Double_t _extrapValue
Size of integration range.
virtual ~RooIntegrator1D()
Destructor.
Bool_t initialize()
Initialize the integrator.
virtual Double_t integral(const Double_t *yvec=0)
Calculate numeric integral at given set of function binding parameters.
Double_t addMidpoints(Int_t n)
Calculate the n-th stage of refinement of the Second Euler-Maclaurin summation rule which has the use...
Double_t * _d
Integrator workspace.
Bool_t _useIntegrandLimits
static void registerIntegrator(RooNumIntFactory &fact)
Register RooIntegrator1D, is parameters and capabilities with RooNumIntFactory.
Double_t * _h
Error on extrapolated value.
Double_t _savedResult
Integrator workspace.
Double_t _extrapError
Extrapolated value.
RooIntegrator1D()
coverity[UNINIT_CTOR] Default constructor
Double_t * _c
Integrator workspace.
Double_t * _s
Integrator workspace.
Double_t _xmax
Lower integration bound.
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
const RooArgSet & getConfigSection(const char *name) const
Retrieve configuration information specific to integrator with given name.
static RooNumIntConfig & defaultConfig()
Return reference to instance of default numeric integrator configuration object.
RooNumIntFactory is a factory to instantiate numeric integrators from a given function binding and a ...
Bool_t storeProtoIntegrator(RooAbsIntegrator *proto, const RooArgSet &defConfig, const char *depName="")
Method accepting registration of a prototype numeric integrator along with a RooArgSet of its default...
static Int_t isInfinite(Double_t x)
Return true if x is infinite by RooNumBer internal specification.
RooRealVar represents a variable that can be changed from the outside.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
static uint64_t sum(uint64_t i)