1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#ifndef EventFilter_L1TRawToDigi_Omtf_RpcDataWord64_H
#define EventFilter_L1TRawToDigi_Omtf_RpcDataWord64_H
#include <iostream>
#include "DataFormats/L1TMuon/interface/OMTF/OmtfDataWord64.h"
namespace omtf {
class RpcDataWord64 {
public:
RpcDataWord64(Word64 data) : rawData(data) {}
RpcDataWord64() : rawData(Word64(DataWord64::rpc) << 60) {}
unsigned int frame1() const { return frame1_; }
unsigned int frame2() const { return frame2_; }
unsigned int frame3() const { return frame3_; }
unsigned int empty() const { return empty_; }
unsigned int linkNum() const { return linkNum_; }
unsigned int bxNum() const { return bxNum_; }
unsigned int type() const { return type_; }
friend class OmtfPacker;
friend class RpcPacker;
friend std::ostream &operator<<(std::ostream &out, const RpcDataWord64 &o);
private:
union {
uint64_t rawData;
struct {
uint64_t frame3_ : 16;
uint64_t frame2_ : 16;
uint64_t frame1_ : 16;
uint64_t empty_ : 4;
uint64_t linkNum_ : 5;
uint64_t bxNum_ : 3;
uint64_t type_ : 4;
};
};
};
} //namespace omtf
#endif
|