CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/L1Trigger/GlobalCaloTrigger/interface/L1GctHtMissLut.h

Go to the documentation of this file.
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_*/