00001 #ifndef XTMDCCALIB_H
00002 #define XTMDCCALIB_H
00003
00004 #include "MdcCalibAlg/MdcCalib.h"
00005 #include <vector>
00006 #include <map>
00007
00008 #include "TFolder.h"
00009
00010 class XtMdcCalib: public MdcCalib {
00011 public:
00012 XtMdcCalib();
00013 ~XtMdcCalib();
00014 void initialize(TObjArray* hlist, IMdcGeomSvc* mdcGeomSvc,
00015 IMdcCalibFunSvc* mdcFunSvc, IMdcUtilitySvc* mdcUtilitySvc);
00016
00017 void setParam(MdcCalParams& param);
00018 int fillHist(MdcCalEvent* event);
00019 int updateConst(MdcCalibConst* calconst);
00020 void clear();
00021
00022 int getHxtKey(int lay, int entr, int lr, int bin) const;
00023
00024 static void fcnXT(Int_t &npar, Double_t *gin, Double_t &f,
00025 Double_t *par, Int_t iflag);
00026 static void fcnXtEdge(Int_t &npar, Double_t *gin, Double_t &f,
00027 Double_t *par, Int_t iflag);
00028 static double xtFun(double t, double xtpar[]);
00029
00030 static std::vector<double> XMEAS;
00031 static std::vector<double> TBINCEN;
00032 static std::vector<double> ERR;
00033
00034 static double Tmax;
00035 static double Dmax;
00036 static std::vector<double> XMEASED;
00037 static std::vector<double> TBINCENED;
00038 static std::vector<double> ERRED;
00039
00040 private:
00041 MdcCalParams m_param;
00042
00043 TObjArray* m_hlist;
00044 IMdcGeomSvc* m_mdcGeomSvc;
00045 IMdcCalibFunSvc* m_mdcFunSvc;
00046 IMdcUtilitySvc* m_mdcUtilitySvc;
00047
00048 int m_nlayer;
00049 int m_nEntr[43];
00050 int m_nLR;
00051 int m_nbin;
00052 int m_nxtpar;
00053 double m_tbinw;
00054
00055 bool m_fgIni;
00056 double m_docaMax[MdcCalNLayer];
00057 double m_tm[MdcCalNLayer][MdcCalNENTRXT][MdcCalLR];
00058
00059 TFolder* m_fdXt;
00060 std::vector<TH1D*> m_hxt;
00061 std::map<int, int> m_hxtmap;
00062
00063
00064
00065 static const int HXTLAYER_INDEX = 13;
00066 static const int HXTLAYER_MASK = 0x7E000;
00067
00068 static const int HXTENTRA_INDEX = 8;
00069 static const int HXTENTRA_MASK = 0x1F00;
00070
00071 static const int HXTLR_INDEX = 6;
00072 static const int HXTLR_MASK = 0xC0;
00073
00074 static const int HXTBIN_INDEX = 0;
00075 static const int HXTBIN_MASK = 0x3F;
00076
00077 };
00078
00079 inline void XtMdcCalib::setParam(MdcCalParams& param){
00080 MdcCalib::setParam(param);
00081 m_param = param;
00082 }
00083
00084 #endif