00001 #ifndef L1GCTHTMISSLUT_H_ 00002 #define L1GCTHTMISSLUT_H_ 00003 00004 #include "L1Trigger/GlobalCaloTrigger/src/L1GctLut.h" 00005 00006 #include <vector> 00007 00019 class L1CaloEtScale; 00020 00021 class L1GctHtMissLut : public L1GctLut<16,12> 00022 00023 { 00024 public: 00025 00026 enum numberOfBits { kHxOrHyMissComponentNBits=8, 00027 kHtMissMagnitudeNBits=7, 00028 kHtMissAngleNBits=5 }; 00029 00030 // Definitions. 00031 static const int NAddress, NData; 00032 00034 L1GctHtMissLut(const L1CaloEtScale* const scale, const double lsb); 00036 L1GctHtMissLut(); 00038 L1GctHtMissLut(const L1GctHtMissLut& lut); 00040 virtual ~L1GctHtMissLut(); 00041 00043 L1GctHtMissLut operator= (const L1GctHtMissLut& lut); 00044 00046 friend std::ostream& operator << (std::ostream& os, const L1GctHtMissLut& lut); 00047 00049 void setEtScale(const L1CaloEtScale* const fn) { m_etScale = fn; if (fn != 0) { m_setupOk = true; } } 00050 void setExEyLsb(const double lsb) { m_componentLsb = lsb; } 00051 00053 const L1CaloEtScale* etScale() const { return m_etScale; } 00054 const double componentLsb() const { return m_componentLsb; } 00055 00057 std::vector<double> getThresholdsGeV() const; 00058 std::vector<unsigned> getThresholdsGct() const; 00059 00060 protected: 00061 00062 00063 virtual uint16_t value (const uint16_t lutAddress) const; 00064 00065 private: 00066 00067 const L1CaloEtScale* m_etScale; 00068 00069 double m_componentLsb; 00070 }; 00071 00072 00073 std::ostream& operator << (std::ostream& os, const L1GctHtMissLut& lut); 00074 00075 #endif /*L1GCTHTMISSLUT_H_*/