16 #ifndef ROO_ADAPTIVE_INTEGRATOR_ND
17 #define ROO_ADAPTIVE_INTEGRATOR_ND
23 namespace ROOT {
namespace Math {
class AdaptiveIntegratorMultiDim ; } }
24 class RooMultiGenFunction ;
26 class RooAdaptiveIntegratorND :
public RooAbsIntegrator {
30 RooAdaptiveIntegratorND() ;
31 RooAdaptiveIntegratorND(
const RooAbsFunc&
function,
const RooNumIntConfig& config) ;
33 virtual RooAbsIntegrator* clone(
const RooAbsFunc&
function,
const RooNumIntConfig& config)
const ;
34 virtual ~RooAdaptiveIntegratorND();
36 virtual Bool_t checkLimits()
const;
37 virtual Double_t integral(
const Double_t *yvec=0) ;
39 using RooAbsIntegrator::setLimits ;
40 Bool_t setLimits(Double_t* xmin, Double_t* xmax);
42 virtual Bool_t canIntegrate1D()
const {
return kFALSE ; }
43 virtual Bool_t canIntegrate2D()
const {
return kTRUE ; }
44 virtual Bool_t canIntegrateND()
const {
return kTRUE ; }
45 virtual Bool_t canIntegrateOpenEnded()
const {
return kFALSE ; }
47 virtual Bool_t setUseIntegrandLimits(Bool_t flag) {_useIntegrandLimits = flag ;
return kTRUE ; }
51 RooAdaptiveIntegratorND(
const RooAdaptiveIntegratorND&) ;
53 Bool_t _useIntegrandLimits;
55 mutable Double_t* _xmin ;
56 mutable Double_t* _xmax ;
62 RooMultiGenFunction* _func ;
63 ROOT::Math::AdaptiveIntegratorMultiDim* _integrator ;
66 friend class RooNumIntFactory ;
67 static void registerIntegrator(RooNumIntFactory& fact) ;
69 ClassDef(RooAdaptiveIntegratorND,0)