Go to the documentation of this file.00001 #ifndef L1GCTETMISS_H
00002 #define L1GCTETMISS_H
00003
00004 #include <ostream>
00005 #include <stdint.h>
00006
00015
00016
00017
00018 class L1GctEtMiss {
00019 public:
00020
00023 enum numberOfBits {
00024 kEtMissNBits = 12,
00025 kEtMissOFlowBit = 1 << kEtMissNBits,
00026 kEtMissMaxValue = kEtMissOFlowBit - 1,
00027 kEtMissPhiShift = 16,
00028 kEtMissPhiNBits = 7,
00029 kETMissPhiMask = (1 << kEtMissPhiNBits) - 1,
00030 kEtMissPhiNBins = 72,
00031 kRawCtorMask = (kETMissPhiMask << kEtMissPhiShift) | kEtMissOFlowBit | kEtMissMaxValue
00032 };
00033
00034 L1GctEtMiss();
00035
00037 L1GctEtMiss(uint32_t rawData);
00038
00040 L1GctEtMiss(uint32_t rawData, int16_t bx);
00041
00042 L1GctEtMiss(unsigned et, unsigned phi, bool oflow);
00043
00044 L1GctEtMiss(unsigned et, unsigned phi, bool oflow, int16_t bx);
00045
00046 virtual ~L1GctEtMiss();
00047
00049 std::string name() const { return "EtMiss"; }
00050
00052 bool empty() const { return false; }
00053
00055 uint32_t raw() const { return m_data; }
00056
00058 unsigned et() const { return m_data & kEtMissMaxValue; }
00059
00061 bool overFlow() const { return (m_data & kEtMissOFlowBit)!=0; }
00062
00064 unsigned phi() const { return (m_data>>kEtMissPhiShift) & kETMissPhiMask; }
00065
00067 int16_t bx() const { return m_bx; }
00068
00070 int operator==(const L1GctEtMiss& e) const { return m_data==e.raw(); }
00071
00073 int operator!=(const L1GctEtMiss& e) const { return m_data!=e.raw(); }
00074
00075 private:
00076
00077 uint32_t m_data;
00078 int16_t m_bx;
00079
00080 };
00081
00083 std::ostream& operator<<(std::ostream& s, const L1GctEtMiss& c);
00084
00085
00086 #endif