File indexing completed on 2024-04-06 12:10:47
0001 #ifndef EventFilter_L1TRawToDigi_Omtf_DtDataWord64_H
0002 #define EventFilter_L1TRawToDigi_Omtf_DtDataWord64_H
0003
0004 #include <iostream>
0005 #include "DataFormats/L1TMuon/interface/OMTF/OmtfDataWord64.h"
0006
0007 namespace omtf {
0008
0009 class DtDataWord64 {
0010 public:
0011 DtDataWord64(Word64 data) : rawData(data) {}
0012 DtDataWord64() : rawData(Word64(DataWord64::dt) << 60) {}
0013 int phi() const { return st_phi_; }
0014 int phiB() const { return st_phib_; }
0015 unsigned int quality() const { return st_q_; }
0016 unsigned int eta() const { return eta_hit_; }
0017 unsigned int etaQuality() const { return eta_qbit_; }
0018 unsigned int bcnt_st() const { return bcnt_st_; }
0019 unsigned int bcnt_e0() const { return bcnt_e0_; }
0020 unsigned int bcnt_e1() const { return bcnt_e1_; }
0021 unsigned int valid() const { return valid_; }
0022 unsigned int station() const { return st_; }
0023 unsigned int fiber() const { return fiber_; }
0024 unsigned int sector() const { return sector_; }
0025 unsigned int bxNum() const { return bxNum_; }
0026 unsigned int type() const { return type_; }
0027 friend class OmtfPacker;
0028 friend class DtPacker;
0029 friend std::ostream &operator<<(std::ostream &out, const DtDataWord64 &o);
0030
0031 private:
0032 union {
0033 uint64_t rawData;
0034 struct {
0035 int64_t st_phi_ : 12;
0036 int64_t st_phib_ : 10;
0037 uint64_t st_q_ : 5;
0038 uint64_t st_cal_ : 1;
0039 uint64_t eta_qbit_ : 7;
0040 uint64_t eta_hit_ : 7;
0041 uint64_t dummy1_ : 1;
0042 uint64_t bcnt_st_ : 2;
0043 uint64_t bcnt_e0_ : 2;
0044 uint64_t bcnt_e1_ : 2;
0045 uint64_t valid_ : 3;
0046 uint64_t st_ : 2;
0047 uint64_t fiber_ : 1;
0048 uint64_t sector_ : 2;
0049 uint64_t bxNum_ : 3;
0050 uint64_t type_ : 4;
0051 };
0052 };
0053 };
0054
0055 }
0056 #endif