File indexing completed on 2024-09-07 04:36:45
0001 #ifndef Phase2L1Trigger_DTTrigger_MPSLFilter_h
0002 #define Phase2L1Trigger_DTTrigger_MPSLFilter_h
0003
0004 #include "L1Trigger/DTTriggerPhase2/interface/MPFilter.h"
0005 #include "L1Trigger/DTTriggerPhase2/interface/vhdl_functions.h"
0006
0007 #include <iostream>
0008 #include <fstream>
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 struct valid_tp_t {
0019 bool valid;
0020 cmsdt::metaPrimitive mp;
0021 valid_tp_t() : valid(false), mp(cmsdt::metaPrimitive()) {}
0022 valid_tp_t(bool valid, cmsdt::metaPrimitive mp) : valid(valid), mp(mp) {}
0023 };
0024
0025 using valid_tp_arr_t = std::vector<valid_tp_t>;
0026
0027 class MPSLFilter : public MPFilter {
0028 public:
0029
0030 MPSLFilter(const edm::ParameterSet &pset);
0031 ~MPSLFilter() override = default;
0032
0033
0034 void initialise(const edm::EventSetup &iEventSetup) override;
0035 void run(edm::Event &iEvent,
0036 const edm::EventSetup &iEventSetup,
0037 std::vector<cmsdt::metaPrimitive> &inMPath,
0038 std::vector<cmsdt::metaPrimitive> &outMPath) override;
0039 void run(edm::Event &iEvent,
0040 const edm::EventSetup &iEventSetup,
0041 std::vector<cmsdt::metaPrimitive> &inSLMPath,
0042 std::vector<cmsdt::metaPrimitive> &inCorMPath,
0043 std::vector<cmsdt::metaPrimitive> &outMPath) override {};
0044 void run(edm::Event &iEvent,
0045 const edm::EventSetup &iEventSetup,
0046 MuonPathPtrs &inMPath,
0047 MuonPathPtrs &outMPath) override {};
0048
0049 void finish() override;
0050
0051
0052
0053
0054 void printmP(cmsdt::metaPrimitive mP);
0055
0056 private:
0057
0058
0059 std::vector<cmsdt::metaPrimitive> filter(std::vector<cmsdt::metaPrimitive> mps);
0060 bool isDead(cmsdt::metaPrimitive mp, std::map<int, valid_tp_arr_t> tps_per_bx);
0061 int killTps(cmsdt::metaPrimitive mp, int bx, std::map<int, valid_tp_arr_t> &tps_per_bx);
0062 int share_hit(cmsdt::metaPrimitive mp, cmsdt::metaPrimitive mp2);
0063 int match(cmsdt::metaPrimitive mp1, cmsdt::metaPrimitive mp2);
0064 int smaller_chi2(cmsdt::metaPrimitive mp, cmsdt::metaPrimitive mp2);
0065 int get_chi2(cmsdt::metaPrimitive mp);
0066
0067
0068 const bool debug_;
0069 };
0070
0071 #endif