00001
00008 #ifndef __SFMATRIXOFHPROF_H
00009 #define __SFMATRIXOFHPROF_H
00010
00011 #include "jbltools/sfh/MatrixOfHProf.h"
00012 #include "jbltools/sfh/SFO.h"
00013 #include "jbltools/sfh/FloatFunPoR.h"
00014 #include "jbltools/sfh/BaseCutPoR.h"
00015 #include "jbltools/sfh/FillIteratorPoR.h"
00016
00017 class TFile;
00018 class TProfile;
00019 class TAxis;
00020 class BinningFun;
00021 class RegHProf;
00022 class SetOfHistograms;
00023
00024
00025
00027
00060 class SFMatrixOfHProf: public MatrixOfHProf, public SFO {
00061 public:
00063 SFMatrixOfHProf (const char* name_,
00064 const char* title_,
00065 const ROListPoR& rol,
00066 const FloatFunPoR& xfun_,
00067 const FloatFunPoR& yfun_,
00068 const BaseCutPoR& cut_,
00069 const FloatFunPoR& wfun_,
00070 const BinningFunPoR& binning1_,
00071 const BinningFunPoR& binning2_,
00072 const FillIteratorPoR& iter_ = 0
00073 );
00075 SFMatrixOfHProf (const char* name_,
00076 const char* title_,
00077 Int_t nbinsx,
00078 Axis_t xlow,
00079 Axis_t xup,
00080 Option_t *option_,
00081 const ROListPoR& rol,
00082 const FloatFunPoR& xfun_,
00083 const FloatFunPoR& yfun_,
00084 const BaseCutPoR& cut_,
00085 const FloatFunPoR& wfun_,
00086 const BinningFunPoR& binning1_,
00087 const BinningFunPoR& binning2_,
00088 const FillIteratorPoR& iter_ = 0
00089 );
00091 SFMatrixOfHProf (const char* name_,
00092 const char* title_,
00093 Int_t nbinsx,
00094 Axis_t xlow,
00095 Axis_t xup,
00096 Axis_t ylow_,
00097 Axis_t yup_,
00098 Option_t *option_,
00099 const ROListPoR& rol,
00100 const FloatFunPoR& xfun_,
00101 const FloatFunPoR& yfun_,
00102 const BaseCutPoR& cut_,
00103 const FloatFunPoR& wfun_,
00104 const BinningFunPoR& binning1_,
00105 const BinningFunPoR& binning2_,
00106 const FillIteratorPoR& iter_ = 0
00107 );
00109 SFMatrixOfHProf (const char* name_,
00110 const char* title_,
00111 Int_t nbinsx,
00112 const Double_t *xbins,
00113 Option_t *option_,
00114 const ROListPoR& rol,
00115 const FloatFunPoR& xfun_,
00116 const FloatFunPoR& yfun_,
00117 const BaseCutPoR& cut_,
00118 const FloatFunPoR& wfun_,
00119 const BinningFunPoR& binning1_,
00120 const BinningFunPoR& binning2_,
00121 const FillIteratorPoR& iter_ = 0
00122 );
00124 SFMatrixOfHProf (const char* name_,
00125 const char* title_,
00126 Int_t nbinsx,
00127 const Double_t *xbins,
00128 Axis_t ylow_,
00129 Axis_t yup_,
00130 Option_t *option_,
00131 const ROListPoR& rol,
00132 const FloatFunPoR& xfun_,
00133 const FloatFunPoR& yfun_,
00134 const BaseCutPoR& cut_,
00135 const FloatFunPoR& wfun_,
00136 const BinningFunPoR& binning1_,
00137 const BinningFunPoR& binning2_,
00138 const FillIteratorPoR& iter_ = 0
00139 );
00141 SFMatrixOfHProf (const char* name_,
00142 const char* title_,
00143 Int_t nbinsx,
00144 const Float_t *xbins,
00145 Option_t *option_,
00146 const ROListPoR& rol,
00147 const FloatFunPoR& xfun_,
00148 const FloatFunPoR& yfun_,
00149 const BaseCutPoR& cut_,
00150 const FloatFunPoR& wfun_,
00151 const BinningFunPoR& binning1_,
00152 const BinningFunPoR& binning2_,
00153 const FillIteratorPoR& iter_ = 0
00154 );
00156 SFMatrixOfHProf (const char* name_,
00157 const char* title_,
00158 Int_t nbinsx,
00159 const Float_t *xbins,
00160 Axis_t ylow_,
00161 Axis_t yup_,
00162 Option_t *option_,
00163 const ROListPoR& rol,
00164 const FloatFunPoR& xfun_,
00165 const FloatFunPoR& yfun_,
00166 const BaseCutPoR& cut_,
00167 const FloatFunPoR& wfun_,
00168 const BinningFunPoR& binning1_,
00169 const BinningFunPoR& binning2_,
00170 const FillIteratorPoR& iter_ = 0
00171 );
00173 SFMatrixOfHProf (const char* name_,
00174 const char* title_,
00175 const Binning& axisbinning_,
00176 Option_t *option_,
00177 const ROListPoR& rol,
00178 const FloatFunPoR& xfun_,
00179 const FloatFunPoR& yfun_,
00180 const BaseCutPoR& cut_,
00181 const FloatFunPoR& wfun_,
00182 const BinningFunPoR& binning1_,
00183 const BinningFunPoR& binning2_,
00184 const FillIteratorPoR& iter_ = 0
00185 );
00187 SFMatrixOfHProf (const char* name_,
00188 const char* title_,
00189 const Binning& axisbinning_,
00190 Axis_t ylow_,
00191 Axis_t yup_,
00192 Option_t *option_,
00193 const ROListPoR& rol,
00194 const FloatFunPoR& xfun_,
00195 const FloatFunPoR& yfun_,
00196 const BaseCutPoR& cut_,
00197 const FloatFunPoR& wfun_,
00198 const BinningFunPoR& binning1_,
00199 const BinningFunPoR& binning2_,
00200 const FillIteratorPoR& iter_ = 0
00201 );
00202
00204 virtual ~SFMatrixOfHProf ();
00205
00207
00215 virtual void Fill ();
00216
00218 FloatFun *getXFun() const {return xfun;}
00220 FloatFun *getYFun() const {return yfun;}
00222 BaseCut *getCut() const {return cut;}
00224 FloatFun *getWFun() const {return wfun;}
00226 FillIterator *getIter() const {return iter;}
00227
00228 protected:
00229
00230 private:
00232 void checkIterators(const char *name
00233 );
00235 template<class Fun1, class Fun2>
00236 void checkTwoIterators(const char *name,
00237 const char *fun1name,
00238 Fun1 *fun1,
00239 const char *fun2name,
00240 Fun2 *fun2
00241 );
00243 template<class Fun>
00244 void checkOneIterator (const char *name,
00245 const char *funname,
00246 Fun *fun
00247 );
00248
00249
00250 FloatFun *xfun;
00251 FloatFun *yfun;
00252 BaseCut *cut;
00253 FloatFun *wfun;
00254 FillIterator *iter;
00255
00257 SFMatrixOfHProf (const SFMatrixOfHProf& source
00258 );
00260 SFMatrixOfHProf& operator= (const SFMatrixOfHProf& source
00261 );
00262 };
00263
00264
00265
00266 #endif