00001
00008 #ifndef __SFSETOFH2F_H
00009 #define __SFSETOFH2F_H
00010
00011 #include "jbltools/sfh/SetOfH2F.h"
00012
00013 #include "jbltools/sfh/SFO.h"
00014 #include "jbltools/sfh/FloatFunPoR.h"
00015 #include "jbltools/sfh/BaseCutPoR.h"
00016 #include "jbltools/sfh/FillIteratorPoR.h"
00017
00018 class BinningFun;
00019 class RegH2F;
00020 class TFile;
00021 class TH1;
00022 class TAxis;
00023
00024
00026
00051 class SFSetOfH2F: public SetOfH2F, public SFO {
00052 public:
00054 SFSetOfH2F (const char* name_,
00055 const char* title_,
00056 Int_t nbinsx,
00057 Axis_t xlow,
00058 Axis_t xup,
00059 Int_t nbinsy,
00060 Axis_t ylow,
00061 Axis_t yup,
00062 const ROListPoR& hhl,
00063 const FloatFunPoR& xfun_,
00064 const FloatFunPoR& yfun_,
00065 const BaseCutPoR& cut_,
00066 const FloatFunPoR& wfun_,
00067 const BinningFunPoR& binning_,
00068 const FillIteratorPoR& iter_ = 0
00069 );
00071 SFSetOfH2F (const char* name_,
00072 const char* title_,
00073 Int_t nbinsx,
00074 const Double_t* xbins,
00075 Int_t nbinsy,
00076 Axis_t ylow,
00077 Axis_t yup,
00078 const ROListPoR& hhl,
00079 const FloatFunPoR& xfun_,
00080 const FloatFunPoR& yfun_,
00081 const BaseCutPoR& cut_,
00082 const FloatFunPoR& wfun_,
00083 const BinningFunPoR& binning_,
00084 const FillIteratorPoR& iter_ = 0
00085 );
00087 SFSetOfH2F (const char* name_,
00088 const char* title_,
00089 Int_t nbinsx,
00090 Axis_t xlow,
00091 Axis_t xup,
00092 Int_t nbinsy,
00093 const Double_t* ybins,
00094 const ROListPoR& hhl,
00095 const FloatFunPoR& xfun_,
00096 const FloatFunPoR& yfun_,
00097 const BaseCutPoR& cut_,
00098 const FloatFunPoR& wfun_,
00099 const BinningFunPoR& binning_,
00100 const FillIteratorPoR& iter_ = 0
00101 );
00103 SFSetOfH2F (const char* name_,
00104 const char* title_,
00105 Int_t nbinsx,
00106 const Double_t* xbins,
00107 Int_t nbinsy,
00108 const Double_t* ybins,
00109 const ROListPoR& hhl,
00110 const FloatFunPoR& xfun_,
00111 const FloatFunPoR& yfun_,
00112 const BaseCutPoR& cut_,
00113 const FloatFunPoR& wfun_,
00114 const BinningFunPoR& binning_,
00115 const FillIteratorPoR& iter_ = 0
00116 );
00118 SFSetOfH2F (const char* name_,
00119 const char* title_,
00120 Int_t nbinsx,
00121 const Float_t* xbins,
00122 Int_t nbinsy,
00123 const Float_t* ybins,
00124 const ROListPoR& hhl,
00125 const FloatFunPoR& xfun_,
00126 const FloatFunPoR& yfun_,
00127 const BaseCutPoR& cut_,
00128 const FloatFunPoR& wfun_,
00129 const BinningFunPoR& binning_,
00130 const FillIteratorPoR& iter_ = 0
00131 );
00133 SFSetOfH2F (const char* name_,
00134 const char* title_,
00135 const Binning& xbinning,
00136 const Binning& ybinning,
00137 const ROListPoR& hhl,
00138 const FloatFunPoR& xfun_,
00139 const FloatFunPoR& yfun_,
00140 const BaseCutPoR& cut_,
00141 const FloatFunPoR& wfun_,
00142 const BinningFunPoR& binning_,
00143 const FillIteratorPoR& iter_ = 0
00144 );
00145
00147 virtual ~SFSetOfH2F ();
00148
00150
00158 virtual void Fill ();
00159
00161 FloatFun *getXFun() const {return xfun;}
00163 FloatFun *getYFun() const {return yfun;}
00165 BaseCut *getCut() const {return cut;}
00167 FloatFun *getWFun() const {return wfun;}
00169 FillIterator *getIter() const {return iter;}
00170
00171
00172 protected:
00174 void checkIterators(const char *name
00175 );
00177 template<class Fun1, class Fun2>
00178 void checkTwoIterators(const char *name,
00179 const char *fun1name,
00180 Fun1 *fun1,
00181 const char *fun2name,
00182 Fun2 *fun2
00183 );
00185 template<class Fun>
00186 void checkOneIterator (const char *name,
00187 const char *funname,
00188 Fun *fun
00189 );
00190
00191 FloatFun *xfun;
00192 FloatFun *yfun;
00193 BaseCut *cut;
00194 FloatFun *wfun;
00195 FillIterator *iter;
00196
00197 private:
00199 SFSetOfH2F (const SFSetOfH2F& source);
00201 SFSetOfH2F& operator= (const SFSetOfH2F& source);
00202 };
00203
00204 #endif