File indexing completed on 2024-04-06 12:05:08
0001 #ifndef DataFormats_RPCDigi_RecordSLD_H
0002 #define DataFormats_RPCDigi_RecordSLD_H
0003
0004 #include "DataFormats/RPCDigi/interface/DataRecord.h"
0005
0006 namespace rpcrawtodigi {
0007 class RecordSLD : public DataRecord {
0008 private:
0009 static const int SLD_TYPE_FLAG = 0x1F;
0010 static const int SLD_TYPE_SHIFT = 11;
0011 static const int TB_LINK_INPUT_NUMBER_MASK = 0x1F;
0012 static const int TB_LINK_INPUT_NUMBER_SHIFT = 0;
0013 static const int TB_RMB_MASK = 0X3F;
0014 static const int TB_RMB_SHIFT = 5;
0015
0016 public:
0017
0018 RecordSLD() : DataRecord() {}
0019
0020
0021 RecordSLD(int tbLinkInputNumber, int rmb) : DataRecord(0) {
0022 theData = SLD_TYPE_FLAG << SLD_TYPE_SHIFT;
0023 theData |= (tbLinkInputNumber << TB_LINK_INPUT_NUMBER_SHIFT);
0024 theData |= (rmb << TB_RMB_SHIFT);
0025 }
0026
0027
0028 RecordSLD(const DataRecord& rec) : DataRecord(rec) {}
0029
0030 ~RecordSLD() override {}
0031
0032 int tbLinkInputNumber() const { return (theData >> TB_LINK_INPUT_NUMBER_SHIFT) & TB_LINK_INPUT_NUMBER_MASK; }
0033
0034 int rmb() const { return (theData >> TB_RMB_SHIFT) & TB_RMB_MASK; }
0035
0036 static bool matchType(const DataRecord& record) { return (SLD_TYPE_FLAG == (record.data() >> SLD_TYPE_SHIFT)); }
0037 std::string print() const;
0038 };
0039 }
0040 #endif