Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:20:17

0001 ///
0002 /// Description: Firmware headers
0003 ///
0004 /// Implementation:
0005 ///    Concrete firmware implementations
0006 ///
0007 /// \author: Jim Brooke - University of Bristol
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   // first iteration
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 }  // namespace l1t
0078 
0079 #endif