00001
00008 #ifndef __SFSETOFHPROF_H
00009 #define __SFSETOFHPROF_H
00010
00011 #include "jbltools/sfh/SetOfHProf.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 RegHProf;
00020 class TFile;
00021 class TH1;
00022 class TAxis;
00023
00024
00026
00059 class SFSetOfHProf: public SetOfHProf, public SFO {
00060 public:
00062 SFSetOfHProf (const char* name_,
00063 const char* title_,
00064 const ROListPoR& hhl,
00065 const FloatFunPoR& xfun_,
00066 const FloatFunPoR& yfun_,
00067 const BaseCutPoR& cut_,
00068 const FloatFunPoR& wfun_,
00069 const BinningFunPoR& binning_,
00070 const FillIteratorPoR& iter_ = 0
00071 );
00073 SFSetOfHProf (const char* name_,
00074 const char* title_,
00075 Int_t nbinsx,
00076 Axis_t xlow,
00077 Axis_t xup,
00078 Option_t *option_,
00079 const ROListPoR& hhl,
00080 const FloatFunPoR& xfun_,
00081 const FloatFunPoR& yfun_,
00082 const BaseCutPoR& cut_,
00083 const FloatFunPoR& wfun_,
00084 const BinningFunPoR& binning_,
00085 const FillIteratorPoR& iter_ = 0
00086 );
00088 SFSetOfHProf (const char* name_,
00089 const char* title_,
00090 Int_t nbinsx,
00091 Axis_t xlow,
00092 Axis_t xup,
00093 Axis_t ylow_,
00094 Axis_t yup_,
00095 Option_t *option_,
00096 const ROListPoR& hhl,
00097 const FloatFunPoR& xfun_,
00098 const FloatFunPoR& yfun_,
00099 const BaseCutPoR& cut_,
00100 const FloatFunPoR& wfun_,
00101 const BinningFunPoR& binning_,
00102 const FillIteratorPoR& iter_ = 0
00103 );
00105 SFSetOfHProf (const char* name_,
00106 const char* title_,
00107 Int_t nbinsx,
00108 const Float_t* xbins,
00109 Option_t *option_,
00110 const ROListPoR& hhl,
00111 const FloatFunPoR& xfun_,
00112 const FloatFunPoR& yfun_,
00113 const BaseCutPoR& cut_,
00114 const FloatFunPoR& wfun_,
00115 const BinningFunPoR& binning_,
00116 const FillIteratorPoR& iter_ = 0
00117 );
00119 SFSetOfHProf (const char* name_,
00120 const char* title_,
00121 Int_t nbinsx,
00122 const Double_t* xbins,
00123 Option_t *option_,
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 SFSetOfHProf (const char* name_,
00134 const char* title_,
00135 Int_t nbinsx,
00136 const Double_t* xbins,
00137 Axis_t ylow_,
00138 Axis_t yup_,
00139 Option_t *option_,
00140 const ROListPoR& hhl,
00141 const FloatFunPoR& xfun_,
00142 const FloatFunPoR& yfun_,
00143 const BaseCutPoR& cut_,
00144 const FloatFunPoR& wfun_,
00145 const BinningFunPoR& binning_,
00146 const FillIteratorPoR& iter_ = 0
00147 );
00149 SFSetOfHProf (const char* name_,
00150 const char* title_,
00151 const Binning& axisbinning_,
00152 Option_t *option_,
00153 const ROListPoR& hhl,
00154 const FloatFunPoR& xfun_,
00155 const FloatFunPoR& yfun_,
00156 const BaseCutPoR& cut_,
00157 const FloatFunPoR& wfun_,
00158 const BinningFunPoR& binning_,
00159 const FillIteratorPoR& iter_ = 0
00160 );
00162 SFSetOfHProf (const char* name_,
00163 const char* title_,
00164 const Binning& axisbinning_,
00165 Axis_t ylow_,
00166 Axis_t yup_,
00167 Option_t *option_,
00168 const ROListPoR& hhl,
00169 const FloatFunPoR& xfun_,
00170 const FloatFunPoR& yfun_,
00171 const BaseCutPoR& cut_,
00172 const FloatFunPoR& wfun_,
00173 const BinningFunPoR& binning_,
00174 const FillIteratorPoR& iter_ = 0
00175 );
00177 virtual ~SFSetOfHProf ();
00178
00179
00181
00189 virtual void Fill ();
00190
00192 FloatFun *getXFun() const {return xfun;}
00194 FloatFun *getYFun() const {return yfun;}
00196 BaseCut *getCut() const {return cut;}
00198 FloatFun *getWFun() const {return wfun;}
00200 FillIterator *getIter() const {return iter;}
00201
00202 protected:
00204 void checkIterators(const char *name
00205 );
00207 template<class Fun1, class Fun2>
00208 void checkTwoIterators(const char *name,
00209 const char *fun1name,
00210 Fun1 *fun1,
00211 const char *fun2name,
00212 Fun2 *fun2
00213 );
00215 template<class Fun>
00216 void checkOneIterator (const char *name,
00217 const char *funname,
00218 Fun *fun
00219 );
00220
00221 FloatFun *xfun;
00222 FloatFun *yfun;
00223 BaseCut *cut;
00224 FloatFun *wfun;
00225 FillIterator *iter;
00226
00227 private:
00229 SFSetOfHProf (const SFSetOfHProf& source);
00231 SFSetOfHProf& operator= (const SFSetOfHProf& source);
00232 };
00233
00234 #endif