File indexing completed on 2024-04-06 12:21:26
0001 #ifndef PFALGO3_REF_H
0002 #define PFALGO3_REF_H
0003
0004 #include "pfalgo_common_ref.h"
0005
0006 namespace edm {
0007 class ParameterSet;
0008 class ParameterSetDescription;
0009 }
0010
0011 namespace l1ct {
0012
0013 class PFAlgo3Emulator : public PFAlgoEmulatorBase {
0014 public:
0015 PFAlgo3Emulator(unsigned int nTrack,
0016 unsigned int nEmCalo,
0017 unsigned int nCalo,
0018 unsigned int nMu,
0019 unsigned int nPhoton,
0020 unsigned int nSelCalo,
0021 unsigned int nAllNeutral,
0022 unsigned int dR2Max_Tk_Mu,
0023 unsigned int dR2Max_Tk_Em,
0024 unsigned int dR2Max_Em_Calo,
0025 unsigned int dR2Max_Tk_Calo,
0026 pt_t tk_MaxInvPt_Loose,
0027 pt_t tk_MaxInvPt_Tight)
0028 : PFAlgoEmulatorBase(
0029 nTrack, nCalo, nMu, nSelCalo, dR2Max_Tk_Mu, dR2Max_Tk_Calo, tk_MaxInvPt_Loose, tk_MaxInvPt_Tight),
0030 nEMCALO_(nEmCalo),
0031 nPHOTON_(nPhoton),
0032 nALLNEUTRAL_(nAllNeutral),
0033 dR2MAX_TK_EM_(dR2Max_Tk_Em),
0034 dR2MAX_EM_CALO_(dR2Max_Em_Calo) {}
0035
0036
0037 PFAlgo3Emulator(const edm::ParameterSet& iConfig);
0038
0039 ~PFAlgo3Emulator() override {}
0040
0041 static edm::ParameterSetDescription getParameterSetDescription();
0042
0043 void run(const PFInputRegion& in, OutputRegion& out) const override;
0044
0045 void toFirmware(const PFInputRegion& in,
0046 PFRegion& region,
0047 HadCaloObj calo[],
0048 EmCaloObj emcalo[],
0049 TkObj track[],
0050 MuObj mu[]) const;
0051 void toFirmware(const OutputRegion& out,
0052 PFChargedObj outch[],
0053 PFNeutralObj outpho[],
0054 PFNeutralObj outne[],
0055 PFChargedObj outmu[]) const;
0056
0057
0058 void mergeNeutrals(OutputRegion& out) const override;
0059
0060 protected:
0061 unsigned int nEMCALO_, nPHOTON_, nALLNEUTRAL_;
0062 unsigned int dR2MAX_TK_EM_;
0063 unsigned int dR2MAX_EM_CALO_;
0064
0065 int tk_best_match_ref(unsigned int dR2MAX,
0066 const std::vector<l1ct::EmCaloObjEmu>& calo,
0067 const l1ct::TkObjEmu& track) const;
0068 int em_best_match_ref(unsigned int dR2MAX,
0069 const std::vector<l1ct::HadCaloObjEmu>& calo,
0070 const l1ct::EmCaloObjEmu& em) const;
0071
0072 void pfalgo3_em_ref(const PFInputRegion& in,
0073 const std::vector<int>& iMu ,
0074 std::vector<int>& iEle ,
0075 OutputRegion& out,
0076 std::vector<HadCaloObjEmu>& hadcalo_out ) const;
0077 };
0078
0079 }
0080
0081 #endif