16 #ifndef ROO_ADAPTIVE_GAUSS_KRONROD_INTEGRATOR_1D
17 #define ROO_ADAPTIVE_GAUSS_KRONROD_INTEGRATOR_1D
22 double RooAdaptiveGaussKronrodIntegrator1D_GSL_GlueFunction(
double x,
void *data) ;
24 class RooAdaptiveGaussKronrodIntegrator1D :
public RooAbsIntegrator {
28 RooAdaptiveGaussKronrodIntegrator1D() ;
29 RooAdaptiveGaussKronrodIntegrator1D(
const RooAbsFunc&
function,
const RooNumIntConfig& config) ;
30 RooAdaptiveGaussKronrodIntegrator1D(
const RooAbsFunc&
function, Double_t xmin, Double_t xmax,
31 const RooNumIntConfig& config) ;
32 virtual RooAbsIntegrator* clone(
const RooAbsFunc&
function,
const RooNumIntConfig& config)
const ;
33 virtual ~RooAdaptiveGaussKronrodIntegrator1D();
35 virtual Bool_t checkLimits()
const;
36 virtual Double_t integral(
const Double_t *yvec=0) ;
38 using RooAbsIntegrator::setLimits ;
39 Bool_t setLimits(Double_t* xmin, Double_t* xmax);
40 virtual Bool_t setUseIntegrandLimits(Bool_t flag) {
42 _useIntegrandLimits = flag ;
return kTRUE ;
45 virtual Bool_t canIntegrate1D()
const {
49 virtual Bool_t canIntegrate2D()
const {
53 virtual Bool_t canIntegrateND()
const {
57 virtual Bool_t canIntegrateOpenEnded()
const {
64 friend class RooNumIntFactory ;
65 static void registerIntegrator(RooNumIntFactory& fact) ;
67 enum DomainType { Closed, OpenLo, OpenHi, Open } ;
68 mutable DomainType _domainType ;
70 friend double RooAdaptiveGaussKronrodIntegrator1D_GSL_GlueFunction(
double x,
void *data) ;
74 Bool_t _useIntegrandLimits;
76 Double_t* xvec(Double_t& xx) {
78 _x[0] = xx ;
return _x ;
88 mutable Double_t _xmin;
89 mutable Double_t _xmax;
91 ClassDef(RooAdaptiveGaussKronrodIntegrator1D,0)