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 Stage2Layer2ClusterAlgorithmFirmware_H
0014 #define Stage2Layer2ClusterAlgorithmFirmware_H
0015 
0016 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2ClusterAlgorithm.h"
0017 #include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h"
0018 
0019 namespace l1t {
0020 
0021   // Imp1 is for v1 and v2
0022   class Stage2Layer2ClusterAlgorithmFirmwareImp1 : public Stage2Layer2ClusterAlgorithm {
0023   public:
0024     enum ClusterInput { E = 0, H = 1, EH = 2 };
0025 
0026     Stage2Layer2ClusterAlgorithmFirmwareImp1(CaloParamsHelper const* params, ClusterInput clusterInput);
0027     ~Stage2Layer2ClusterAlgorithmFirmwareImp1() override;
0028     void processEvent(const std::vector<l1t::CaloTower>& towers, std::vector<l1t::CaloCluster>& clusters) override;
0029 
0030   private:
0031     void clustering(const std::vector<l1t::CaloTower>& towers, std::vector<l1t::CaloCluster>& clusters);
0032     void filtering(const std::vector<l1t::CaloTower>& towers, std::vector<l1t::CaloCluster>& clusters);
0033     void refining(const std::vector<l1t::CaloTower>& towers, std::vector<l1t::CaloCluster>& clusters);
0034 
0035     bool idHoverE(const l1t::CaloTower tow);
0036 
0037     // parameters
0038     ClusterInput clusterInput_;
0039     int seedThreshold_;
0040     int clusterThreshold_;
0041     int hcalThreshold_;
0042     CaloParamsHelper const* params_;
0043   };
0044 
0045 }  // namespace l1t
0046 
0047 #endif