File indexing completed on 2024-04-06 12:19:50
0001 #ifndef L1GCTELECTRONLEAFCARD_H_
0002 #define L1GCTELECTRONLEAFCARD_H_
0003
0004 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctEmCand.h"
0005 #include "L1Trigger/GlobalCaloTrigger/interface/L1GctElectronSorter.h"
0006
0007 #include <vector>
0008 #include <ostream>
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 class L1GctEmLeafCard : public L1GctProcessor {
0021 public:
0022 static const unsigned N_SORTERS;
0023
0024 public:
0025
0026 L1GctEmLeafCard(int id);
0027
0028
0029 ~L1GctEmLeafCard() override;
0030
0031
0032 void reset();
0033
0034
0035 void fetchInput() override;
0036
0037
0038 void process() override;
0039
0040
0041 void setBxRange(const int firstBx, const int numberOfBx);
0042
0043
0044 void setNextBx(const int bxnum);
0045
0046
0047 int id() { return m_id; }
0048
0049
0050 std::vector<L1GctEmCand> getOutputIsoEmCands(int fpga);
0051
0052
0053 std::vector<L1GctEmCand> getOutputNonIsoEmCands(int fpga);
0054
0055
0056 friend std::ostream& operator<<(std::ostream& s, const L1GctEmLeafCard& card);
0057
0058 L1GctElectronSorter* getIsoElectronSorterU1() { return m_sorters.at(0); }
0059 L1GctElectronSorter* getNonIsoElectronSorterU1() { return m_sorters.at(1); }
0060 L1GctElectronSorter* getIsoElectronSorterU2() { return m_sorters.at(2); }
0061 L1GctElectronSorter* getNonIsoElectronSorterU2() { return m_sorters.at(3); }
0062
0063 protected:
0064
0065 void resetProcessor() override {}
0066 void resetPipelines() override {}
0067
0068
0069 void setupObjects() override {}
0070
0071 private:
0072
0073 int m_id;
0074
0075
0076 std::vector<L1GctElectronSorter*> m_sorters;
0077 };
0078
0079 std::ostream& operator<<(std::ostream& s, const L1GctEmLeafCard& card);
0080 #endif