00001 #ifndef CastorQIECoder_h
00002 #define CastorQIECoder_h
00003
00010 #include <boost/cstdint.hpp>
00011
00012 #include <vector>
00013 #include <algorithm>
00014
00015 class CastorQIEShape;
00016
00017 class CastorQIECoder {
00018 public:
00019 CastorQIECoder (unsigned long fId = 0) : mId (fId) {}
00020 #ifndef __REFLEX__
00022 float charge (const CastorQIEShape& fShape, unsigned fAdc, unsigned fCapId) const;
00024 unsigned adc (const CastorQIEShape& fShape, float fCharge, unsigned fCapId) const;
00025
00026
00027 float offset (unsigned fCapId, unsigned fRange) const;
00028 float slope (unsigned fCapId, unsigned fRange) const;
00029
00030 void setOffset (unsigned fCapId, unsigned fRange, float fValue);
00031 void setSlope (unsigned fCapId, unsigned fRange, float fValue);
00032
00033 uint32_t rawId () const {return mId;}
00034 #endif
00035
00036 private:
00037 uint32_t mId;
00038 float mOffset00;
00039 float mOffset01;
00040 float mOffset02;
00041 float mOffset03;
00042 float mOffset10;
00043 float mOffset11;
00044 float mOffset12;
00045 float mOffset13;
00046 float mOffset20;
00047 float mOffset21;
00048 float mOffset22;
00049 float mOffset23;
00050 float mOffset30;
00051 float mOffset31;
00052 float mOffset32;
00053 float mOffset33;
00054 float mSlope00;
00055 float mSlope01;
00056 float mSlope02;
00057 float mSlope03;
00058 float mSlope10;
00059 float mSlope11;
00060 float mSlope12;
00061 float mSlope13;
00062 float mSlope20;
00063 float mSlope21;
00064 float mSlope22;
00065 float mSlope23;
00066 float mSlope30;
00067 float mSlope31;
00068 float mSlope32;
00069 float mSlope33;
00070 };
00071
00072 #endif