16 #ifndef ROO_BIN_INTEGRATOR
17 #define ROO_BIN_INTEGRATOR
23 class RooBinIntegrator :
public RooAbsIntegrator {
29 RooBinIntegrator(
const RooAbsFunc&
function) ;
30 RooBinIntegrator(
const RooAbsFunc&
function,
const RooNumIntConfig& config) ;
32 virtual RooAbsIntegrator* clone(
const RooAbsFunc&
function,
const RooNumIntConfig& config)
const ;
33 virtual ~RooBinIntegrator();
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) {_useIntegrandLimits = flag ;
return kTRUE ; }
42 virtual Bool_t canIntegrate1D()
const {
return kTRUE ; }
43 virtual Bool_t canIntegrate2D()
const {
return kTRUE ; }
44 virtual Bool_t canIntegrateND()
const {
return kTRUE ; }
45 virtual Bool_t canIntegrateOpenEnded()
const {
return kFALSE ; }
49 friend class RooNumIntFactory ;
50 static void registerIntegrator(RooNumIntFactory& fact) ;
51 RooBinIntegrator(
const RooBinIntegrator&) ;
54 mutable std::vector<Double_t> _xmin;
55 mutable std::vector<Double_t> _xmax;
56 std::vector<std::list<Double_t>*> _binb ;
57 mutable Int_t _numBins;
59 Bool_t _useIntegrandLimits;
61 Double_t* xvec(Double_t& xx) { _x[0] = xx ;
return _x ; }
62 Double_t* xvec(Double_t& xx, Double_t &yy) { _x[0] = xx ; _x[1] = yy ;
return _x ; }
63 Double_t* xvec(Double_t& xx, Double_t &yy, Double_t &zz) { _x[0] = xx ; _x[1] = yy ; _x[2] = zz ;
return _x ; }
67 ClassDef(RooBinIntegrator,0)