16 #ifndef ROO_GAUSS_KRONROD_INTEGRATOR_1D
17 #define ROO_GAUSS_KRONROD_INTEGRATOR_1D
22 double RooGaussKronrodIntegrator1D_GSL_GlueFunction(
double x,
void *data) ;
24 class RooGaussKronrodIntegrator1D :
public RooAbsIntegrator {
28 RooGaussKronrodIntegrator1D() ;
29 RooGaussKronrodIntegrator1D(
const RooAbsFunc&
function,
const RooNumIntConfig& config) ;
30 RooGaussKronrodIntegrator1D(
const RooAbsFunc&
function, Double_t xmin, Double_t xmax,
const RooNumIntConfig& config) ;
31 virtual RooAbsIntegrator* clone(
const RooAbsFunc&
function,
const RooNumIntConfig& config)
const ;
32 virtual ~RooGaussKronrodIntegrator1D();
34 virtual Bool_t checkLimits()
const;
35 virtual Double_t integral(
const Double_t *yvec=0) ;
37 using RooAbsIntegrator::setLimits ;
38 Bool_t setLimits(Double_t* xmin, Double_t* xmax);
39 virtual Bool_t setUseIntegrandLimits(Bool_t flag) {_useIntegrandLimits = flag ;
return kTRUE ; }
41 virtual Bool_t canIntegrate1D()
const {
return kTRUE ; }
42 virtual Bool_t canIntegrate2D()
const {
return kFALSE ; }
43 virtual Bool_t canIntegrateND()
const {
return kFALSE ; }
44 virtual Bool_t canIntegrateOpenEnded()
const {
return kTRUE ; }
48 friend class RooNumIntFactory ;
49 static void registerIntegrator(RooNumIntFactory& fact) ;
51 friend double RooGaussKronrodIntegrator1D_GSL_GlueFunction(
double x,
void *data) ;
55 Bool_t _useIntegrandLimits;
57 Double_t* xvec(Double_t& xx) { _x[0] = xx ;
return _x ; }
63 mutable Double_t _xmin;
64 mutable Double_t _xmax;
66 ClassDef(RooGaussKronrodIntegrator1D,0)