59  RooCategory extrap(
"extrapolation",
"Extrapolation procedure") ;
 
   63  RooRealVar maxSteps(
"maxSteps",
"Maximum number of steps",20) ;
 
   64  RooRealVar minSteps(
"minSteps",
"Minimum number of steps",999) ;
 
   65  RooRealVar fixSteps(
"fixSteps",
"Fixed number of steps",0) ;
 
   79             Int_t maxSteps, 
double eps) :
 
   80  RooAbsIntegrator(function), _rule(rule), _maxSteps(maxSteps),  _minStepsZero(999), _fixSteps(0), _epsAbs(eps), _epsRel(eps), _doExtrap(true)
 
  118  _epsAbs(config.epsAbs()),
 
  119  _epsRel(config.epsRel())
 
  130    oocoutE(
nullptr,Integration) << 
"RooIntegrator1D::ctor() ERROR: fixSteps>maxSteps, fixSteps set to maxSteps" << endl ;
 
  147  _epsAbs(config.epsAbs()),
 
  148  _epsRel(config.epsRel())
 
  191    oocoutE(
nullptr,Integration) << 
"RooIntegrator1D::initialize: cannot integrate invalid function" << endl;
 
  217    oocoutE(
nullptr,Integration) << 
"RooIntegrator1D::setLimits: cannot override integrand's limits" << endl;
 
  239    oocoutE(
nullptr,Integration) << 
"RooIntegrator1D::checkLimits: bad range with min > max (_xmin = " << 
_xmin << 
" _xmax = " << 
_xmax << 
")" << endl;
 
  272      for (
int jj=0 ; jj<=j ; jj++) {
 
  273        if (
_s[j]>=zeroThresh) {
 
  313  oocoutW(
nullptr,Integration) << 
"RooIntegrator1D::integral: integral of " << 
_function->
getName() << 
" over range (" << 
_xmin << 
"," << 
_xmax << 
") did not converge after " 
  316    ooccoutW(
nullptr,Integration) << 
"   [" << j << 
"] h = " << 
_h[j] << 
" , s = " << 
_s[j] << endl;
 
  340    for(it=1, j=1; j < 
n-1; j++) it*= 3;
 
  345    for(
sum= 0, j= 1; j <= it; j++) {
 
  371    const int nInt = 1 << (
n-2);
 
  377    for (
int j=0; j<nInt; ++j) {
 
  396  double den,dif,dift,ho,hp,
w;
 
  400    if ((dift=std::abs(xa[i])) < dif) {
 
  413      if((den=ho-hp) == 0.0) {
 
  414   oocoutE(
nullptr,Integration) << 
"RooIntegrator1D::extrapolate: internal error" << endl;
 
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 Int_t Int_t Window_t TString Int_t del
 
double getRealValue(const char *name, double defVal=0.0, bool verbose=false) const
Get value of a RooAbsReal stored in set with given name.
 
Int_t getCatIndex(const char *name, Int_t defVal=0, bool verbose=false) const
Get index value of a RooAbsCategory stored in set with given name.
 
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
 
virtual double getMaxLimit(UInt_t dimension) const =0
 
virtual double getMinLimit(UInt_t dimension) const =0
 
UInt_t getDimension() const
 
virtual const char * getName() const
Name of function binding.
 
RooAbsIntegrator is the abstract interface for integrators of real-valued functions that implement th...
 
bool isValid() const
Is integrator in valid state.
 
const RooAbsFunc * _function
Pointer to function binding of integrand.
 
const RooAbsFunc * integrand() const
Return integrand function binding.
 
bool _valid
Is integrator in valid state?
 
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.
 
bool 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.
 
std::vector< double > _c
! Integrator workspace
 
RooAbsIntegrator * clone(const RooAbsFunc &function, const RooNumIntConfig &config) const override
Clone integrator with new function binding and configuration. Needed by RooNumIntFactory.
 
void extrapolate(Int_t n)
Extrapolate result to final value.
 
double _xmax
! Upper integration bound
 
double addMidpoints(Int_t n)
Calculate the n-th stage of refinement of the Second Euler-Maclaurin summation rule which has the use...
 
double _extrapError
! Error on extrapolated value
 
bool _doExtrap
Apply conversion step?
 
Int_t _minStepsZero
Minimum number of steps to declare convergence to zero.
 
double * xvec(double &xx)
 
double addTrapezoids(Int_t n)
Calculate the n-th stage of refinement of the extended trapezoidal summation rule.
 
std::vector< double > _d
! Integrator workspace
 
double integral(const double *yvec=nullptr) override
Calculate numeric integral at given set of function binding parameters.
 
double _xmin
! Lower integration bound
 
bool _useIntegrandLimits
If true limits of function binding are used.
 
std::vector< double > _h
! Integrator workspace
 
double _epsRel
Relative convergence tolerance.
 
Int_t _maxSteps
Maximum number of steps.
 
Int_t _fixSteps
Fixed number of steps.
 
bool initialize()
Initialize the integrator.
 
double _savedResult
! Integrator workspace
 
double _range
! Size of integration range
 
static void registerIntegrator(RooNumIntFactory &fact)
Register RooIntegrator1D, is parameters and capabilities with RooNumIntFactory.
 
bool setLimits(double *xmin, double *xmax) override
Change our integration limits.
 
std::vector< double > _s
! Integrator workspace
 
bool checkLimits() const override
Check that our integration range is finite and otherwise return false.
 
double _epsAbs
Absolute convergence tolerance.
 
double _extrapValue
! Extrapolated value
 
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 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 constexpr int isInfinite(double x)
Return true if x is infinite by RooNumber internal specification.
 
RooRealVar represents a variable that can be changed from the outside.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
static uint64_t sum(uint64_t i)