00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_INTEGRATOR_2D
00017 #define ROO_INTEGRATOR_2D
00018
00019 #include "RooIntegrator1D.h"
00020 #include "RooNumIntConfig.h"
00021
00022 class RooIntegrator2D : public RooIntegrator1D {
00023 public:
00024
00025
00026 RooIntegrator2D() ;
00027 RooIntegrator2D(const RooAbsFunc& function, RooIntegrator1D::SummationRule rule=RooIntegrator1D::Trapezoid,
00028 Int_t maxSteps= 0, Double_t eps= 0) ;
00029 RooIntegrator2D(const RooAbsFunc& function, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax,
00030 SummationRule rule= Trapezoid, Int_t maxSteps= 0, Double_t eps= 0) ;
00031
00032 RooIntegrator2D(const RooAbsFunc& function, const RooNumIntConfig& config) ;
00033 RooIntegrator2D(const RooAbsFunc& function, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax,
00034 const RooNumIntConfig& config) ;
00035
00036 virtual RooAbsIntegrator* clone(const RooAbsFunc& function, const RooNumIntConfig& config) const ;
00037 virtual ~RooIntegrator2D() ;
00038
00039 virtual Bool_t checkLimits() const;
00040
00041 virtual Bool_t canIntegrate1D() const { return kFALSE ; }
00042 virtual Bool_t canIntegrate2D() const { return kTRUE ; }
00043 virtual Bool_t canIntegrateND() const { return kFALSE ; }
00044 virtual Bool_t canIntegrateOpenEnded() const { return kFALSE ; }
00045
00046 protected:
00047
00048 friend class RooNumIntFactory ;
00049 static void registerIntegrator(RooNumIntFactory& fact) ;
00050
00051 RooIntegrator1D* _xIntegrator ;
00052 RooAbsFunc* _xint ;
00053
00054 ClassDef(RooIntegrator2D,0)
00055 };
00056
00057 #endif