00001 #ifndef L1GCTJETCOUNTERLUT_H_ 00002 #define L1GCTJETCOUNTERLUT_H_ 00003 00004 #define JET_COUNTER_LUT_ADD_BITS 16 00005 00006 #include "CondFormats/L1TObjects/interface/L1GctJetCounterSetup.h" 00007 00008 #include "L1Trigger/GlobalCaloTrigger/src/L1GctLut.h" 00009 00010 class L1GctJetCand; 00011 00012 #include <vector> 00013 00042 class L1GctJetCounterLut : public L1GctLut<JET_COUNTER_LUT_ADD_BITS,1> 00043 00044 { 00045 public: 00046 00047 // Definitions. 00048 static const int NAddress; 00049 00051 L1GctJetCounterLut(const L1GctJetCounterSetup::cutsListForJetCounter& cuts); 00053 L1GctJetCounterLut(const L1GctJetCounterSetup::cutDescription& cut); 00055 L1GctJetCounterLut(); 00057 L1GctJetCounterLut(const L1GctJetCounterLut& lut); 00059 virtual ~L1GctJetCounterLut(); 00060 00062 L1GctJetCounterLut operator= (const L1GctJetCounterLut& lut); 00063 00065 friend std::ostream& operator << (std::ostream& os, const L1GctJetCounterLut& lut); 00066 00068 bool passesCut(const L1GctJetCand jet) const; 00069 bool passesCut(const uint16_t lutAddress) const; 00070 00072 unsigned nCuts() const { return m_cutList.size(); } 00073 00075 L1GctJetCounterSetup::cutsListForJetCounter cutList() const { return m_cutList; } 00076 00077 protected: 00078 00079 00080 virtual uint16_t value (const uint16_t lutAddress) const; 00081 00082 private: 00083 00084 L1GctJetCounterSetup::cutsListForJetCounter m_cutList; 00085 00086 // PRIVATE MEMBER FUNCTIONS 00087 bool checkCut (const L1GctJetCounterSetup::cutDescription cut) const; 00088 bool jetPassesThisCut (const L1GctJetCand jet, const unsigned i) const; 00089 00090 // locally calculated jet properties 00091 unsigned rctEta(const L1GctJetCand jet) const; 00092 unsigned globalPhi(const L1GctJetCand jet) const; 00093 00094 }; 00095 00096 00097 std::ostream& operator << (std::ostream& os, const L1GctJetCounterLut& lut); 00098 00099 #endif /*L1GCTJETCOUNTERLUT_H_*/