00001 #ifndef L1GCTELECTRONLEAFCARD_H_ 00002 #define L1GCTELECTRONLEAFCARD_H_ 00003 00004 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctEmCand.h" 00005 #include "L1Trigger/GlobalCaloTrigger/interface/L1GctElectronSorter.h" 00006 00007 #include <vector> 00008 #include <ostream> 00009 00020 class L1GctEmLeafCard : public L1GctProcessor { 00021 public: 00022 static const unsigned N_SORTERS; 00023 00024 public: 00026 L1GctEmLeafCard(int id); 00029 ~L1GctEmLeafCard(); 00032 void reset(); 00035 virtual void fetchInput(); 00038 virtual void process(); 00041 void setBxRange(const int firstBx, const int numberOfBx); 00044 void setNextBx(const int bxnum); 00047 int id() { return m_id; } 00050 std::vector<L1GctEmCand> getOutputIsoEmCands(int fpga); 00053 std::vector<L1GctEmCand> getOutputNonIsoEmCands(int fpga); 00056 friend std::ostream& operator<<(std::ostream& s,const L1GctEmLeafCard& card); 00057 00058 L1GctElectronSorter* getIsoElectronSorterU1() { return m_sorters.at(0); } 00059 L1GctElectronSorter* getNonIsoElectronSorterU1() { return m_sorters.at(1); } 00060 L1GctElectronSorter* getIsoElectronSorterU2() { return m_sorters.at(2); } 00061 L1GctElectronSorter* getNonIsoElectronSorterU2() { return m_sorters.at(3); } 00062 00063 protected: 00064 00066 virtual void resetProcessor() {} 00067 virtual void resetPipelines() {} 00068 00070 virtual void setupObjects() {} 00071 00072 private: 00074 int m_id; 00077 std::vector<L1GctElectronSorter*> m_sorters; 00078 00079 }; 00080 00081 std::ostream& operator<<(std::ostream& s,const L1GctEmLeafCard& card); 00082 #endif /*L1GCTELECTRONLEAFCARD_H_*/