CMS 3D CMS Logo

RPCAMCRecord.h
Go to the documentation of this file.
1 #ifndef EventFilter_RPCRawToDigi_RPCAMCRecord_h
2 #define EventFilter_RPCRawToDigi_RPCAMCRecord_h
3 
4 #include <cstdint>
5 
6 namespace rpcamc {
7 
8 class Header
9 { // http://joule.bu.edu/~hazen/CMS/AMC13/UpdatedDAQPath.pdf
10 protected:
11  // First Word
12  static std::uint64_t const amc_number_mask_ = 0x0f00000000000000;
13  static std::uint64_t const event_counter_mask_ = 0x00ffffff00000000;
14  static std::uint64_t const bx_counter_mask_ = 0x00000000fff00000;
15  static std::uint64_t const data_length_mask_ = 0x00000000000fffff;
16 
17  static unsigned int const amc_number_offset_ = 56;
18  static unsigned int const event_counter_offset_ = 32;
19  static unsigned int const bx_counter_offset_ = 20;
20  static unsigned int const data_length_offset_ = 0;
21 
22  // Second word
23  static std::uint64_t const orbit_counter_mask_ = 0x00000000ffff0000;
24  static std::uint64_t const board_id_mask_ = 0x000000000000ffff;
25 
26  static unsigned int const orbit_counter_offset_ = 16;
27  static unsigned int const board_id_offset_ = 0;
28 
29 public:
30  Header();
31  Header(std::uint64_t const record[2]);
32  Header(unsigned int amc_number
33  , unsigned int event_counter
34  , unsigned int bx_counter
35  , unsigned int data_length
36  , unsigned int orbit_counter
37  , unsigned int board_id);
38  virtual ~Header();
39 
40  void set(unsigned int nword, std::uint64_t const word);
41  virtual void reset();
42 
43  std::uint64_t const * getRecord() const;
44 
45  unsigned int getAMCNumber() const;
46  unsigned int getEventCounter() const;
47  unsigned int getBXCounter() const;
48  unsigned int getDataLength() const;
49  bool hasDataLength() const; // derived
50 
51  unsigned int getOrbitCounter() const;
52  unsigned int getBoardId() const;
53 
54  void setAMCNumber(unsigned int amc_number);
55  void setEventCounter(unsigned int event_counter);
56  void setBXCounter(unsigned int bx_counter);
57  void setDataLength(unsigned int data_length);
58 
59  void setOrbitCounter(unsigned int orbit_counter);
60  void setBoardId(unsigned int board_id);
61 
62 protected:
64 };
65 
66 class Trailer
67 { // http://joule.bu.edu/~hazen/CMS/AMC13/UpdatedDAQPath.pdf
68 protected:
69  static std::uint64_t const crc_mask_ = 0xffffffff00000000;
70  static std::uint64_t const event_counter_mask_ = 0x00000000ff000000;
71  static std::uint64_t const data_length_mask_ = 0x00000000000fffff;
72 
73  static unsigned int const crc_offset_ = 32;
74  static unsigned int const event_counter_offset_ = 24;
75  static unsigned int const data_length_offset_ = 0;
76 
77 public:
78  Trailer(std::uint64_t const record = 0x0);
79  Trailer(std::uint32_t crc
80  , unsigned int event_counter
81  , unsigned int data_length);
82 
83  void set(std::uint64_t const record);
84  void reset();
85 
86  std::uint64_t const & getRecord() const;
87 
88  std::uint32_t getCRC() const;
89  unsigned int getEventCounter() const;
90  unsigned int getDataLength() const;
91 
92  void setCRC(std::uint32_t crc);
93  void setEventCounter(unsigned int event_counter);
94  void setDataLength(unsigned int data_length);
95 
96 protected:
98 };
99 
100 } // namespace rpcamc
101 
102 #include "EventFilter/RPCRawToDigi/interface/RPCAMCRecord.icc"
103 
104 #endif // EventFilter_RPCRawToDigi_RPCAMCRecord_h
unsigned int getDataLength() const
static std::uint64_t const bx_counter_mask_
Definition: RPCAMCRecord.h:14
static unsigned int const amc_number_offset_
Definition: RPCAMCRecord.h:17
JetCorrectorParameters::Record record
Definition: classes.h:7
static std::uint64_t const board_id_mask_
Definition: RPCAMCRecord.h:24
virtual void reset()
void setDataLength(unsigned int data_length)
static unsigned int const data_length_offset_
Definition: RPCAMCRecord.h:20
unsigned int getBXCounter() const
unsigned int getEventCounter() const
static unsigned int const orbit_counter_offset_
Definition: RPCAMCRecord.h:26
static unsigned int const bx_counter_offset_
Definition: RPCAMCRecord.h:19
void setBXCounter(unsigned int bx_counter)
static std::uint64_t const orbit_counter_mask_
Definition: RPCAMCRecord.h:23
bool hasDataLength() const
std::uint64_t record_[2]
Definition: RPCAMCRecord.h:63
std::uint64_t record_
Definition: RPCAMCRecord.h:97
unsigned int getOrbitCounter() const
void setAMCNumber(unsigned int amc_number)
unsigned int getAMCNumber() const
void setOrbitCounter(unsigned int orbit_counter)
static std::uint64_t const amc_number_mask_
Definition: RPCAMCRecord.h:12
static unsigned int const board_id_offset_
Definition: RPCAMCRecord.h:27
unsigned long long uint64_t
Definition: Time.h:15
void setEventCounter(unsigned int event_counter)
static unsigned int const event_counter_offset_
Definition: RPCAMCRecord.h:18
void setBoardId(unsigned int board_id)
static std::uint64_t const event_counter_mask_
Definition: RPCAMCRecord.h:13
static std::uint64_t const data_length_mask_
Definition: RPCAMCRecord.h:15
unsigned int getBoardId() const
std::uint64_t const * getRecord() const
virtual ~Header()
Definition: RPCAMCRecord.cc:36