00001
00017 #ifndef __SFMATRIXOFHISTOGRAMS_H
00018 #define __SFMATRIXOFHISTOGRAMS_H
00019
00020 #include "jbltools/sfh/MatrixOfHistograms.h"
00021 #include "jbltools/sfh/SFO.h"
00022
00023 #include "jbltools/sfh/FloatFunPoR.h"
00024 #include "jbltools/sfh/BaseCutPoR.h"
00025 #include "jbltools/sfh/FillIteratorPoR.h"
00026
00027 class ROList;
00028 class BinningFun;
00029 class Binning;
00030 class FloatFun;
00031 class BaseCut;
00032 class FillIterator;
00033
00034
00036
00074 class SFMatrixOfHistograms: public MatrixOfHistograms, public SFO {
00075 public:
00077 SFMatrixOfHistograms (const char* name_,
00078 const char* title_,
00079 const ROListPoR& hhl,
00080 const FloatFunPoR& xfun_,
00081 const BaseCutPoR& cut_,
00082 const FloatFunPoR& wfun_,
00083 const BinningFunPoR& binning1_,
00084 const BinningFunPoR& binning2_,
00085 const FillIteratorPoR& iter_ = 0
00086 );
00087
00089 SFMatrixOfHistograms (const char* name_,
00090 const char* title_,
00091 Int_t nbinsx,
00092 Axis_t xlow,
00093 Axis_t xup,
00094 const ROListPoR& hhl,
00095 const FloatFunPoR& xfun_,
00096 const BaseCutPoR& cut_,
00097 const FloatFunPoR& wfun_,
00098 const BinningFunPoR& binning1_,
00099 const BinningFunPoR& binning2_,
00100 const FillIteratorPoR& iter_ = 0
00101 );
00102
00104 SFMatrixOfHistograms (const char* name_,
00105 const char* title_,
00106 Int_t nbinsx,
00107 const Double_t* xbins,
00108 const ROListPoR& hhl,
00109 const FloatFunPoR& xfun_,
00110 const BaseCutPoR& cut_,
00111 const FloatFunPoR& wfun_,
00112 const BinningFunPoR& binning1_,
00113 const BinningFunPoR& binning2_,
00114 const FillIteratorPoR& iter_ = 0
00115 );
00116
00118 SFMatrixOfHistograms (const char* name_,
00119 const char* title_,
00120 Int_t nbinsx,
00121 const Float_t* xbins,
00122 const ROListPoR& hhl,
00123 const FloatFunPoR& xfun_,
00124 const BaseCutPoR& cut_,
00125 const FloatFunPoR& wfun_,
00126 const BinningFunPoR& binning1_,
00127 const BinningFunPoR& binning2_,
00128 const FillIteratorPoR& iter_ = 0
00129 );
00130
00132 SFMatrixOfHistograms (const char* name_,
00133 const char* title_,
00134 const Binning& axisbinning,
00135 const ROListPoR& hhl,
00136 const FloatFunPoR& xfun_,
00137 const BaseCutPoR& cut_,
00138 const FloatFunPoR& wfun_,
00139 const BinningFunPoR& binning1_,
00140 const BinningFunPoR& binning2_,
00141 const FillIteratorPoR& iter_ = 0
00142 );
00143
00145 virtual ~SFMatrixOfHistograms ();
00146
00148
00156 virtual void Fill ();
00157
00159 FloatFun *getXFun() const {return xfun;}
00161 BaseCut *getCut() const {return cut;}
00163 FloatFun *getWFun() const {return wfun;}
00165 FillIterator *getIter() const {return iter;}
00166 protected:
00168 void checkIterators (const char *name
00169 );
00171 template<class Fun1, class Fun2>
00172 void checkTwoIterators(const char *name,
00173 const char *fun1name,
00174 Fun1 *fun1,
00175 const char *fun2name,
00176 Fun2 *fun2);
00177
00178 template<class Fun>
00179 void checkOneIterator (const char *name,
00180 const char *funname,
00181 Fun *fun);
00182
00183
00184
00185 FloatFun *xfun;
00186 BaseCut *cut;
00187 FloatFun *wfun;
00188 FillIterator *iter;
00189
00190 private:
00192 SFMatrixOfHistograms (const SFMatrixOfHistograms& source);
00194 SFMatrixOfHistograms& operator= (const SFMatrixOfHistograms& source);
00195 };
00196
00197 #endif