File indexing completed on 2024-04-06 12:20:17
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef Stage2MainProcessorFirmware_H
0014 #define Stage2MainProcessorFirmware_H
0015
0016 #include "L1Trigger/L1TCalorimeter/interface/Stage2MainProcessor.h"
0017 #include "L1Trigger/L1TCalorimeter/interface/Stage2TowerDecompressAlgorithm.h"
0018 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2ClusterAlgorithm.h"
0019 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2EGammaAlgorithm.h"
0020 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2TauAlgorithm.h"
0021 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetAlgorithm.h"
0022 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2EtSumAlgorithm.h"
0023 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetSumAlgorithm.h"
0024 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxEGAlgoFirmware.h"
0025 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxTauAlgoFirmware.h"
0026 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxJetAlgoFirmware.h"
0027 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxSumsAlgoFirmware.h"
0028
0029 #include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h"
0030
0031 #include <memory>
0032
0033 namespace l1t {
0034
0035
0036 class Stage2MainProcessorFirmwareImp1 : public Stage2MainProcessor {
0037 public:
0038 Stage2MainProcessorFirmwareImp1(unsigned fwv, CaloParamsHelper const* params);
0039
0040 ~Stage2MainProcessorFirmwareImp1() override = default;
0041
0042 void processEvent(const std::vector<l1t::CaloTower>& inTowers,
0043 std::vector<l1t::CaloTower>& outTowers,
0044 std::vector<l1t::CaloCluster>& clusters,
0045 std::vector<l1t::EGamma>& mpEGammas,
0046 std::vector<l1t::Tau>& mpTaus,
0047 std::vector<l1t::Jet>& mpJets,
0048 std::vector<l1t::EtSum>& mpSums,
0049 std::vector<l1t::EGamma>& egammas,
0050 std::vector<l1t::Tau>& taus,
0051 std::vector<l1t::Jet>& jets,
0052 std::vector<l1t::EtSum>& etSums) override;
0053
0054 void print(std::ostream&) const;
0055
0056 friend std::ostream& operator<<(std::ostream& o, const Stage2MainProcessorFirmwareImp1& p) {
0057 p.print(o);
0058 return o;
0059 }
0060
0061 private:
0062 std::unique_ptr<Stage2TowerDecompressAlgorithm> m_towerAlgo;
0063 std::unique_ptr<Stage2Layer2ClusterAlgorithm> m_egClusterAlgo;
0064 std::unique_ptr<Stage2Layer2EGammaAlgorithm> m_egAlgo;
0065 std::unique_ptr<Stage2Layer2ClusterAlgorithm> m_tauClusterAlgo;
0066 std::unique_ptr<Stage2Layer2TauAlgorithm> m_tauAlgo;
0067 std::unique_ptr<Stage2Layer2JetAlgorithm> m_jetAlgo;
0068 std::unique_ptr<Stage2Layer2EtSumAlgorithm> m_sumAlgo;
0069 std::unique_ptr<Stage2Layer2JetSumAlgorithm> m_jetSumAlgo;
0070
0071 std::unique_ptr<Stage2Layer2DemuxEGAlgo> m_demuxEGAlgo;
0072 std::unique_ptr<Stage2Layer2DemuxTauAlgo> m_demuxTauAlgo;
0073 std::unique_ptr<Stage2Layer2DemuxJetAlgo> m_demuxJetAlgo;
0074 std::unique_ptr<Stage2Layer2DemuxSumsAlgo> m_demuxSumsAlgo;
0075 };
0076
0077 }
0078
0079 #endif