00001
00009 #ifndef __SFH1F_H
00010 #define __SFH1F_H
00011
00012 #include "jbltools/sfh/SFO.h"
00013 #include "jbltools/sfh/RegH1F.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 Binning;
00023
00024
00026
00047 class SFH1F : public RegH1F, public SFO {
00048 public:
00050 SFH1F (const char* name,
00051 const char* title,
00052 Int_t nbinsx,
00053 Axis_t xlow,
00054 Axis_t xup,
00055 const ROListPoR& hhl,
00056 const FloatFunPoR& xfun_,
00057 const BaseCutPoR& cut_ = 0,
00058 const FloatFunPoR& wfun_ = 0,
00059 const FillIteratorPoR& iter_ = 0
00060 );
00062 SFH1F (const char* name,
00063 const char* title,
00064 Int_t nbinsx,
00065 const Float_t* xbins,
00066 const ROListPoR& hhl,
00067 const FloatFunPoR& xfun_,
00068 const BaseCutPoR& cut_ = 0,
00069 const FloatFunPoR& wfun_ = 0,
00070 const FillIteratorPoR iter_ = 0
00071 );
00073 SFH1F (const char* name,
00074 const char* title,
00075 Int_t nbinsx,
00076 const Double_t* xbins,
00077 const ROListPoR& hhl,
00078 const FloatFunPoR& xfun_,
00079 const BaseCutPoR& cut_ = 0,
00080 const FloatFunPoR& wfun_ = 0,
00081 FillIteratorPoR iter_ = 0
00082 );
00084 SFH1F (const char* name,
00085 const char* title,
00086 const Binning& binning,
00087 const ROListPoR& hhl,
00088 const FloatFunPoR& xfun_,
00089 const BaseCutPoR& cut_ = 0,
00090 const FloatFunPoR& wfun_ = 0,
00091 FillIteratorPoR iter_ = 0
00092 );
00094 SFH1F (const char* name,
00095 const char* title,
00096 const TH1F& source,
00097 const ROListPoR& hhl,
00098 const FloatFunPoR& xfun_,
00099 const BaseCutPoR& cut_ = 0,
00100 const FloatFunPoR& wfun_ = 0,
00101 FillIteratorPoR iter_ = 0
00102 );
00103
00104
00105 virtual ~SFH1F ();
00107
00115 virtual void Fill ();
00116
00118 FloatFun *getXFun() const {return xfun;}
00120 BaseCut *getCut() const {return cut;}
00122 FloatFun *getWFun() const {return wfun;}
00124 FillIterator *getIter() const {return iter;}
00125
00126 protected:
00127
00128 private:
00130 SFH1F (const SFH1F& source);
00132 SFH1F& operator= (const SFH1F& source);
00133
00134 protected:
00136 void checkIterators (const char *name
00137 );
00139 template<class Fun1, class Fun2>
00140 void checkTwoIterators(const char *name,
00141 const char *fun1name,
00142 Fun1 *fun1,
00143 const char *fun2name,
00144 Fun2 *fun2);
00145
00146 template<class Fun>
00147 void checkOneIterator (const char *name,
00148 const char *funname,
00149 Fun *fun);
00150
00151
00152 FloatFun *xfun;
00153 BaseCut *cut;
00154 FloatFun *wfun;
00155 FillIterator *iter;
00156 };
00157
00158 #endif