Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19: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 // Previous definitions and declarations
0012 // ===============================================================================
0013 
0014 // ===============================================================================
0015 // Class declarations
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   // Constructors and destructor
0030   MPSLFilter(const edm::ParameterSet &pset);
0031   ~MPSLFilter() override = default;
0032 
0033   // Main methods
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   // Other public methods
0052 
0053   // Public attributes
0054   void printmP(cmsdt::metaPrimitive mP);
0055 
0056 private:
0057   // Private methods
0058   // std::vector<cmsdt::metaPrimitive> filter(std::map<int, std::vector<cmsdt::metaPrimitive>>);
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   // Private attributes
0068   const bool debug_;
0069 };
0070 
0071 #endif