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)