00001 #ifndef StripId_H
00002 #define StripId_H
00003
00004 #include "TObject.h"
00005
00019 class StripId : public TObject
00020 {
00021 private:
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 enum {
00042 TKR_K_STRIP = 11,
00043 TKR_V_STRIP = 0,
00044 TKR_M_STRIP = ((1 << TKR_K_STRIP) - 1),
00045 TKR_K_CTRL = 1,
00046 TKR_V_CTRL = (TKR_K_STRIP + TKR_V_STRIP),
00047 TKR_M_CTRL = ((1 << TKR_K_CTRL) - 1),
00048 TKR_K_TOWER = 4,
00049 TKR_V_TOWER = (TKR_K_CTRL + TKR_V_CTRL),
00050 TKR_M_TOWER = ((1 << TKR_K_TOWER) - 1)
00051 };
00053 UShort_t m_tag;
00055 UChar_t m_cable;
00056 public:
00057 enum {
00058 STRIP_CTRL_LEFT = 0,
00059 STRIP_CTRL_RIGHT = 1
00060 };
00061
00062 StripId();
00063 virtual ~StripId() { };
00064
00066 UShort_t getTag() const { return m_tag; };
00068 UShort_t getId() const { return (m_tag >> TKR_V_STRIP) & TKR_M_STRIP; };
00070 UChar_t getCable() const { return m_cable; };
00072 UShort_t getController() const { return (m_tag >> TKR_V_CTRL) & TKR_M_CTRL; };
00074 UShort_t getTower() const { return (m_tag >> TKR_V_TOWER) & TKR_M_TOWER; };
00075
00076 Bool_t setTag(UShort_t tagVal) { m_tag = tagVal; return kTRUE; };
00077 Bool_t setStrip(UShort_t stripVal);
00078 Bool_t setCable(UChar_t cableVal, UChar_t cntrl=0);
00079 Bool_t setController(UShort_t ctrlVal);
00080 Bool_t setTower(UShort_t towerVal);
00081
00082 Int_t Compare(TObject *obj);
00083 Bool_t IsSortable() const;
00084
00085 ClassDef(StripId,4)
00086 };
00087
00088 #endif // !defined StripId_H