00001 #ifndef MDCCALIBCONST_H
00002 #define MDCCALIBCONST_H
00003
00004 #include <map>
00005 #include <vector>
00006
00007 class MdcCalibConst {
00008
00009 public:
00010 MdcCalibConst();
00011 MdcCalibConst(const MdcCalibConst& calconst);
00012
00013 void initCalibConst();
00014
00015 void fillXtpar(int key, double val);
00016 void resetXtpar(int lay, int entr, int lr, int order, double val);
00017 int getXtSize() const { return m_xtmap.size(); }
00018 void setXtBegin();
00019 int getNextXtpar(int& key, double& xtpar);
00020 double getXtpar(int lay, int entr, int lr, int order);
00021 int getXtKey(int lay, int entr, int lr, int order) const;
00022
00023 void fillT0(double val) { m_t0.push_back( val ); }
00024 void fillDelT0(double val) { m_delt0.push_back( val ); }
00025 void resetT0(int wireid, double val) { m_t0[wireid] = val; }
00026 void resetDelT0(int wireid, double val) { m_delt0[wireid] = val; }
00027 double getT0(int wireid) const { return m_t0[wireid]; }
00028 double getDelT0(int wireid) const { return m_delt0[wireid]; }
00029 int getT0Size() const { return m_t0.size(); }
00030
00031 void fillQtpar(int order, double val);
00032 void fillQtpar0(double val) { m_qtpar0.push_back( val ); }
00033 void fillQtpar1(double val) { m_qtpar1.push_back( val ); }
00034 void resetQtpar(int lay, int order, double val);
00035 void resetQtpar0(int lay, double val) { m_qtpar0[lay] = val; }
00036 void resetQtpar1(int lay, double val) { m_qtpar1[lay] = val; }
00037 double getQtpar(int lay, int order) const;
00038 double getQtpar0(int lay) const { return m_qtpar0[lay]; }
00039 double getQtpar1(int lay) const { return m_qtpar1[lay]; }
00040 int getQtSize() const { return m_qtpar0.size(); }
00041
00042 void fillSdpar(int key, double val);
00043 void resetSdpar(int lay, int entr, int lr, int bin, double val);
00044 int getSdSize() const { return m_sdmap.size(); }
00045 void setSdBegin();
00046 int getNextSdpar(int& key, double& sdpar);
00047 double getSdpar(int lay, int entr, int lr, int bin);
00048 int getSdKey(int lay, int entr, int lr, int bin) const;
00049
00050 void clear();
00051
00052 private:
00053 std::map<int, double> m_xtmap;
00054 std::vector<double> m_t0;
00055 std::vector<double> m_delt0;
00056 std::vector<double> m_qtpar0;
00057 std::vector<double> m_qtpar1;
00058 std::map<int, double> m_sdmap;
00059
00060 std::map<int, double>::iterator m_xtiter;
00061 std::map<int, double>::iterator m_sditer;
00062
00063 static const int XTLAYER_INDEX = 11;
00064 static const int XTLAYER_MASK = 0x1F800;
00065
00066 static const int XTENTRA_INDEX = 6;
00067 static const int XTENTRA_MASK = 0x7C0;
00068
00069 static const int XTLR_INDEX = 4;
00070 static const int XTLR_MASK = 0x30;
00071
00072 static const int XTORDER_INDEX = 0;
00073 static const int XTORDER_MASK = 0xF;
00074
00075
00076 static const int SDLAYER_INDEX = 10;
00077 static const int SDLAYER_MASK = 0xFC00;
00078
00079 static const int SDENTRA_INDEX = 7;
00080 static const int SDENTRA_MASK = 0x380;
00081
00082 static const int SDLR_INDEX = 5;
00083 static const int SDLR_MASK = 0x60;
00084
00085 static const int SDBIN_INDEX = 0;
00086 static const int SDBIN_MASK = 0x1F;
00087 };
00088
00089 #endif