00001 #ifndef MDCCALIBDATA_H
00002 #define MDCCALIBDATA_H
00003
00004 #include <map>
00005 #include <vector>
00006 #include "TTree.h"
00007 #include "TObjArray.h"
00008 #include "TBufferFile.h"
00009 #include "GaudiKernel/DataObject.h"
00010 #include "CalibData/CalibModel.h"
00011 #include "CalibData/CalibBase1.h"
00012 typedef std::map<int, double>::value_type valType;
00013 namespace CalibData {
00014 class MdcCalibData: public CalibBase1{
00015 public:
00016 MdcCalibData();
00017 ~MdcCalibData();
00018
00019
00020 inline virtual const CLID& clID() const { return classID(); }
00021
00022 inline static const CLID& classID() { return CLID_Calib_MdcCal; }
00023
00024 virtual StatusCode update(CalibBase1& other, MsgStream* log);
00025
00026 void setXtpar(int xtkey,double val);
00027 void setNewXtpar(TObjArray* newXtTrees);
00028 void setR2tpar(TObjArray* r2tTrees);
00029 void setT0(double val);
00030 void setDelT0(double val);
00031 void setQtpar0(double val);
00032 void setQtpar1(double val);
00033
00034 void setSdpar(int sdkey,double val);
00035
00036 double getXtpar(int layid, int entr, int lr, int order);
00037 TTree* getNewXtpar(int layid, int entr, int lr);
00038 TTree* getR2tpar(int layid);
00039 double getT0(int wireid) { return m_t0[wireid]; }
00040 double getDelT0(int wireid) { return m_delt0[wireid]; }
00041 double getQtpar0(int layid) { return m_qtpar0[layid]; }
00042 double getQtpar1(int layid) { return m_qtpar1[layid]; }
00043 double getSdpar(int layid, int entr, int lr, int bin);
00044 void clear();
00045
00046 int getXtKey(int layid, int entr, int lr, int order);
00047 void setXtBegin();
00048 int getNextXtpar(int& key, double& xtpar);
00049
00050 int getSdKey(int layid, int entr, int lr, int bin);
00051 void setSdBegin();
00052 int getNextSdpar(int& key, double& sdpar);
00053
00054
00055
00056
00057 int getqtparNo() {return m_qtpar0.size();}
00058 int getxtNo() { return m_xtmap.size(); }
00059 int gett0No() { return m_t0.size(); }
00060
00061 private:
00062 std::map<int, double> m_xtmap;
00063
00064 TBufferFile* newXtTreesBuf;
00065 TBufferFile* r2tTreesBuf;
00066 TObjArray* newXtTreesArray;
00067 TObjArray* r2tTreesArray;
00068 TTree* m_newxt[43][18][2];
00069 TTree* m_r2t[43];
00070
00071
00072
00073
00074
00075
00076
00077 std::vector<double> m_t0;
00078 std::vector<double> m_delt0;
00079 std::vector<double> m_qtpar0;
00080 std::vector<double> m_qtpar1;
00081 std::map<int, double> m_sdmap;
00082
00083 std::map<int, double>::iterator m_xtiter;
00084 std::map<int, double>::iterator m_sditer;
00085 static const int XTLAYER_INDEX = 11;
00086 static const int XTLAYER_MASK = 0x1F800;
00087
00088 static const int XTENTRA_INDEX = 6;
00089 static const int XTENTRA_MASK = 0x7C0;
00090
00091 static const int XTLR_INDEX = 4;
00092 static const int XTLR_MASK = 0x30;
00093
00094 static const int XTORDER_INDEX = 0;
00095 static const int XTORDER_MASK = 0xF;
00096
00097
00098 static const int SDLAYER_INDEX = 10;
00099 static const int SDLAYER_MASK = 0xFC00;
00100
00101 static const int SDENTRA_INDEX = 7;
00102 static const int SDENTRA_MASK = 0x380;
00103
00104 static const int SDLR_INDEX = 5;
00105 static const int SDLR_MASK = 0x60;
00106
00107 static const int SDBIN_INDEX = 0;
00108 static const int SDBIN_MASK = 0x1F;
00109 };
00110 }
00111 #endif