File indexing completed on 2024-04-06 12:19:50
0001 #ifndef L1GCTELECTRONFINALSORT_H_
0002 #define L1GCTELECTRONFINALSORT_H_
0003
0004 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctEmCand.h"
0005
0006 #include "L1Trigger/GlobalCaloTrigger/interface/L1GctProcessor.h"
0007 #include "L1Trigger/GlobalCaloTrigger/interface/L1GctElectronSorter.h"
0008
0009 #include <vector>
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 class L1GctEmLeafCard;
0027
0028 class L1GctElectronFinalSort : public L1GctProcessor {
0029 public:
0030
0031 typedef L1GctElectronSorter::prioritisedEmCand prioritisedEmCand;
0032
0033
0034 L1GctElectronFinalSort(bool iso, L1GctEmLeafCard* posEtaCard, L1GctEmLeafCard* negEtaCard);
0035
0036
0037 ~L1GctElectronFinalSort() override;
0038
0039
0040 void fetchInput() override;
0041
0042
0043 void process() override;
0044
0045
0046 void setInputEmCand(unsigned i, const L1GctEmCand& cand);
0047
0048
0049 inline std::vector<L1GctEmCand> getInputCands() const { return m_inputCands; }
0050
0051
0052 inline std::vector<L1GctEmCand> getOutputCands() const { return m_outputCands.contents; }
0053
0054
0055 friend std::ostream& operator<<(std::ostream& s, const L1GctElectronFinalSort& cand);
0056
0057
0058 bool setupOk() const { return m_setupOk; }
0059
0060 protected:
0061
0062 void resetProcessor() override;
0063 void resetPipelines() override;
0064
0065
0066 void setupObjects() override {}
0067
0068 private:
0069
0070
0071 bool m_emCandsType;
0072
0073
0074 L1GctEmLeafCard* m_thePosEtaLeafCard;
0075 L1GctEmLeafCard* m_theNegEtaLeafCard;
0076
0077
0078 std::vector<L1GctEmCand> m_inputCands;
0079
0080
0081 Pipeline<L1GctEmCand> m_outputCands;
0082
0083
0084 bool m_setupOk;
0085 };
0086
0087 std::ostream& operator<<(std::ostream& s, const L1GctElectronFinalSort& cand);
0088
0089 #endif