File indexing completed on 2024-04-06 12:05:08
0001 #ifndef DataFormats_RPCDigi_DataRecord_H
0002 #define DataFormats_RPCDigi_DataRecord_H
0003
0004 #include <string>
0005 #include <bitset>
0006 #include <sstream>
0007 #include <cstdint>
0008
0009 namespace rpcrawtodigi {
0010 class DataRecord {
0011 public:
0012 typedef uint16_t Data;
0013 enum DataRecordType {
0014 None = 0,
0015 StartOfBXData = 1,
0016 StartOfTbLinkInputNumberData = 2,
0017 ChamberData = 3,
0018 Empty = 4,
0019 RDDM = 5,
0020 SDDM = 6,
0021 RCDM = 7,
0022 RDM = 8,
0023 UndefinedType = 9
0024 };
0025
0026 public:
0027 explicit DataRecord(const Data& data = None) : theData(data) {}
0028
0029 virtual ~DataRecord() {}
0030
0031 const Data& data() const { return theData; }
0032
0033 DataRecordType type() const;
0034
0035 static std::string name(const DataRecordType& code);
0036
0037 std::string print() const {
0038 std::ostringstream str;
0039 str << std::bitset<16>(theData);
0040 return str.str();
0041 }
0042
0043 static std::string print(const DataRecord& record);
0044
0045 protected:
0046 Data theData;
0047 };
0048 }
0049 #endif