00001
00009 #ifndef __SFHPROF_H
00010 #define __SFHPROF_H
00011
00012 #include "jbltools/sfh/RegHProf.h"
00013 #include "jbltools/sfh/SFO.h"
00014
00015 #include "jbltools/sfh/FloatFunPoR.h"
00016 #include "jbltools/sfh/BaseCutPoR.h"
00017 #include "jbltools/sfh/FillIteratorPoR.h"
00018
00019 class FloatFun;
00020 class BaseCut;
00021 class FillIterator;
00022 class ROListPoR;
00023 class Binning;
00024
00025
00026
00028
00047 class SFHProf : public RegHProf, public SFO {
00048 public:
00050 SFHProf (const char* name,
00051 const char* title,
00052 Int_t nbinsx,
00053 Axis_t xlow,
00054 Axis_t xup,
00055 Option_t *option,
00056 const ROListPoR& hhl,
00057 const FloatFunPoR& xfun_,
00058 const FloatFunPoR& yfun_,
00059 const BaseCutPoR& cut_ = 0,
00060 const FloatFunPoR& wfun_ = 0,
00061 const FillIteratorPoR& iter_ = 0
00062 );
00064 SFHProf (const char* name,
00065 const char* title,
00066 Int_t nbinsx,
00067 Axis_t xlow,
00068 Axis_t xup,
00069 Axis_t ylow,
00070 Axis_t yup,
00071 Option_t *option,
00072 const ROListPoR& hhl,
00073 const FloatFunPoR& xfun_,
00074 const FloatFunPoR& yfun_,
00075 const BaseCutPoR& cut_ = 0,
00076 const FloatFunPoR& wfun_ = 0,
00077 const FillIteratorPoR& iter_ = 0
00078 );
00080 SFHProf (const char* name,
00081 const char* title,
00082 Int_t nbinsx,
00083 const Float_t* xbins,
00084 Option_t *option,
00085 const ROListPoR& hhl,
00086 const FloatFunPoR& xfun_,
00087 const FloatFunPoR& yfun_,
00088 const BaseCutPoR& cut_ = 0,
00089 const FloatFunPoR& wfun_ = 0,
00090 const FillIteratorPoR& iter_ = 0
00091 );
00093 SFHProf (const char* name,
00094 const char* title,
00095 Int_t nbinsx,
00096 const Double_t* xbins,
00097 Option_t *option,
00098 const ROListPoR& hhl,
00099 const FloatFunPoR& xfun_,
00100 const FloatFunPoR& yfun_,
00101 const BaseCutPoR& cut_ = 0,
00102 const FloatFunPoR& wfun_ = 0,
00103 const FillIteratorPoR& iter_ = 0
00104 );
00106 SFHProf (const char* name,
00107 const char* title,
00108 Int_t nbinsx,
00109 const Double_t* xbins,
00110 Axis_t ylow,
00111 Axis_t yup,
00112 Option_t *option,
00113 const ROListPoR& hhl,
00114 const FloatFunPoR& xfun_,
00115 const FloatFunPoR& yfun_,
00116 const BaseCutPoR& cut_ = 0,
00117 const FloatFunPoR& wfun_ = 0,
00118 const FillIteratorPoR& iter_ = 0
00119 );
00120
00122 SFHProf (const char* name,
00123 const char* title,
00124 const Binning& binning,
00125 Option_t *option,
00126 const ROListPoR& hhl,
00127 const FloatFunPoR& xfun_,
00128 const FloatFunPoR& yfun_,
00129 const BaseCutPoR& cut_ = 0,
00130 const FloatFunPoR& wfun_ = 0,
00131 const FillIteratorPoR& iter_ = 0
00132 );
00134 SFHProf (const char* name,
00135 const char* title,
00136 const Binning& binning,
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_ = 0,
00144 const FloatFunPoR& wfun_ = 0,
00145 const FillIteratorPoR& iter_ = 0
00146 );
00147
00148 virtual ~SFHProf ();
00149
00151
00159 virtual void Fill ();
00160
00162 FloatFun *getXFun() const {return xfun;}
00164 FloatFun *getYFun() const {return yfun;}
00166 BaseCut *getCut() const {return cut;}
00168 FloatFun *getWFun() const {return wfun;}
00170 FillIterator *getIter() const {return iter;}
00171
00172 private:
00174 SFHProf (const SFHProf& source);
00176 SFHProf& operator= (const SFHProf& source);
00177
00178 protected:
00180 void checkIterators (const char *name
00181 );
00183 template<class Fun1, class Fun2>
00184 void checkTwoIterators(const char *name,
00185 const char *fun1name,
00186 Fun1 *fun1,
00187 const char *fun2name,
00188 Fun2 *fun2);
00189
00190 template<class Fun>
00191 void checkOneIterator (const char *name,
00192 const char *funname,
00193 Fun *fun);
00194
00195
00196 FloatFun *xfun;
00197 FloatFun *yfun;
00198 BaseCut *cut;
00199 FloatFun *wfun;
00200 FillIterator *iter;
00201 };
00202
00203 #endif