File indexing completed on 2024-04-06 12:20:17
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef Stage2Layer2TauAlgorithmFirmware_H
0014 #define Stage2Layer2TauAlgorithmFirmware_H
0015
0016 #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2TauAlgorithm.h"
0017 #include "L1Trigger/L1TCalorimeter/interface/CaloStage2Nav.h"
0018 #include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h"
0019
0020 namespace l1t {
0021
0022
0023 class Stage2Layer2TauAlgorithmFirmwareImp1 : public Stage2Layer2TauAlgorithm {
0024 public:
0025 Stage2Layer2TauAlgorithmFirmwareImp1(CaloParamsHelper const* params);
0026 ~Stage2Layer2TauAlgorithmFirmwareImp1() override;
0027 void processEvent(const std::vector<CaloCluster>& clusters,
0028 const std::vector<CaloTower>& towers,
0029 std::vector<Tau>& taus) override;
0030
0031 private:
0032 void merging(const std::vector<l1t::CaloCluster>& clusters,
0033 const std::vector<l1t::CaloTower>& towers,
0034 std::vector<l1t::Tau>& taus);
0035 void dosorting(std::vector<l1t::Tau>& taus);
0036
0037
0038 int isoCalTauHwFootPrint(const l1t::CaloCluster&, const std::vector<l1t::CaloTower>&);
0039
0040
0041 void loadCalibrationLuts();
0042
0043
0044
0045
0046 CaloParamsHelper const* params_;
0047 std::vector<std::vector<float>> coefficients_;
0048
0049 float offsetBarrelEH_;
0050 float offsetBarrelH_;
0051 float offsetEndcapsEH_;
0052 float offsetEndcapsH_;
0053 unsigned int isoLutIndex(int Et, int hweta, unsigned int nrTowers);
0054 unsigned int trimMainLutIndex(int neighPos, bool isWe);
0055 static bool compareTowers(l1t::CaloTower TT1, l1t::CaloTower TT2);
0056 bool is3x3Maximum(const l1t::CaloTower& tower,
0057 const std::vector<CaloTower>& towers,
0058 l1t::CaloStage2Nav& caloNav);
0059 std::vector<std::unique_ptr<l1t::CaloCluster>> makeSecClusters(
0060 const std::vector<l1t::CaloTower>& towers,
0061 std::vector<int>& sites,
0062 const l1t::CaloCluster& mainCluster,
0063 l1t::CaloStage2Nav& caloNav);
0064 unsigned int calibLutIndex(int ieta, int Et, int hasEM, int isMerged);
0065 int calibratedPt(const l1t::CaloCluster& clus, const std::vector<l1t::CaloTower>& towers, int hwPt, bool isMerged);
0066 };
0067
0068 }
0069
0070 #endif