File indexing completed on 2023-10-25 09:39:15
0001 #ifndef L1GCTINTERNHFDATA_H
0002 #define L1GCTINTERNHFDATA_H
0003
0004 #include <ostream>
0005 #include <string>
0006 #include <cstdint>
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 class L1GctInternHFData {
0017 public:
0018
0019 enum L1GctInternHFDataType {
0020 null,
0021 conc_hf_ring_et_sums,
0022 conc_hf_bit_counts,
0023 wheel_hf_ring_et_sums,
0024 wheel_hf_bit_counts
0025 };
0026
0027
0028 L1GctInternHFData();
0029
0030
0031 ~L1GctInternHFData();
0032
0033 static L1GctInternHFData fromConcRingSums(const uint16_t capBlock,
0034 const uint16_t capIndex,
0035 const int16_t bx,
0036 const uint32_t data);
0037
0038 static L1GctInternHFData fromConcBitCounts(const uint16_t capBlock,
0039 const uint16_t capIndex,
0040 const int16_t bx,
0041 const uint32_t data);
0042
0043 static L1GctInternHFData fromWheelRingSums(const uint16_t capBlock,
0044 const uint16_t capIndex,
0045 const int16_t bx,
0046 const uint32_t data);
0047
0048 static L1GctInternHFData fromWheelBitCounts(const uint16_t capBlock,
0049 const uint16_t capIndex,
0050 const int16_t bx,
0051 const uint32_t data);
0052
0053
0054
0055
0056 L1GctInternHFData::L1GctInternHFDataType type() const { return type_; }
0057
0058
0059 uint16_t capBlock() const { return capBlock_; }
0060
0061
0062 uint16_t capIndex() const { return capIndex_; }
0063
0064
0065 int16_t bx() const { return bx_; }
0066
0067
0068 bool empty() const { return (data_ == 0); }
0069
0070
0071
0072
0073 bool isRingSums() const { return (type_ == conc_hf_ring_et_sums || type_ == wheel_hf_ring_et_sums); }
0074
0075
0076 uint32_t raw() const { return data_; }
0077
0078
0079 uint16_t value(unsigned i) const;
0080
0081
0082 uint16_t et(unsigned i) const;
0083
0084
0085 uint16_t count(unsigned i) const;
0086
0087
0088
0089
0090 void setCapBlock(uint16_t const capBlock) { capBlock_ = capBlock; }
0091
0092
0093 void setCapIndex(uint16_t const capIndex) { capIndex_ = capIndex; }
0094
0095
0096 void setBx(int16_t const bx) { bx_ = bx; }
0097
0098
0099 void setType(L1GctInternHFDataType type) { type_ = type; }
0100
0101
0102 void setValue(unsigned const i, uint16_t const val);
0103
0104
0105 void setEt(unsigned const i, uint16_t const et);
0106
0107
0108 void setCount(unsigned const i, uint16_t const count);
0109
0110 void setData(uint32_t const data) { data_ = data; }
0111
0112
0113
0114
0115 bool operator==(const L1GctInternHFData& c) const;
0116
0117
0118 bool operator!=(const L1GctInternHFData& c) const { return !(*this == c); }
0119
0120 private:
0121
0122 L1GctInternHFDataType type_;
0123
0124
0125 uint16_t capBlock_;
0126 uint16_t capIndex_;
0127 int16_t bx_;
0128
0129
0130 uint32_t data_;
0131 };
0132
0133 std::ostream& operator<<(std::ostream& s, const L1GctInternHFData& cand);
0134
0135 #endif