Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19:45

0001 #ifndef L1Trigger_DTTriggerPhase2_MuonPathCorFitter_h
0002 #define L1Trigger_DTTriggerPhase2_MuonPathCorFitter_h
0003 
0004 #include "L1Trigger/DTTriggerPhase2/interface/MuonPathFitter.h"
0005 
0006 // ===============================================================================
0007 // Previous definitions and declarations
0008 // ===============================================================================
0009 
0010 inline bool bxSort(const cmsdt::bx_sl_vector &vA, const cmsdt::bx_sl_vector &vB) {
0011   if (vA.bx > vB.bx)
0012     return true;
0013   else if (vA.bx == vB.bx)
0014     return (vA.sl > vB.sl);
0015   else
0016     return false;
0017 }
0018 
0019 using mp_group = std::vector<cmsdt::metaPrimitive>;
0020 
0021 // ===============================================================================
0022 // Class declarations
0023 // ===============================================================================
0024 
0025 class MuonPathCorFitter : public MuonPathFitter {
0026 public:
0027   // Constructors and destructor
0028   MuonPathCorFitter(const edm::ParameterSet &pset,
0029                     edm::ConsumesCollector &iC,
0030                     std::shared_ptr<GlobalCoordsObtainer> &globalcoordsobtainer);
0031   ~MuonPathCorFitter() override;
0032 
0033   // Main methods
0034   void initialise(const edm::EventSetup &iEventSetup) override;
0035   void run(edm::Event &iEvent,
0036            const edm::EventSetup &iEventSetup,
0037            MuonPathPtrs &inMpath,
0038            std::vector<cmsdt::metaPrimitive> &metaPrimitives) override{};
0039   void run(edm::Event &iEvent,
0040            const edm::EventSetup &iEventSetup,
0041            MuonPathPtrs &inMpath,
0042            std::vector<lat_vector> &lateralities,
0043            std::vector<cmsdt::metaPrimitive> &metaPrimitives) override{};
0044   void run(edm::Event &iEvent,
0045            const edm::EventSetup &iEventSetup,
0046            std::vector<cmsdt::metaPrimitive> &inMPaths,
0047            std::vector<cmsdt::metaPrimitive> &outMPaths) override;
0048   void run(edm::Event &iEvent,
0049            const edm::EventSetup &iEventSetup,
0050            MuonPathPtrs &inMpath,
0051            MuonPathPtrs &outMPath) override{};
0052 
0053   void finish() override;
0054 
0055   // Other public methods
0056 
0057   // luts
0058   edm::FileInPath both_sl_filename_;
0059 
0060 private:
0061   // Private methods
0062   void analyze(mp_group mp, std::vector<cmsdt::metaPrimitive> &metaPrimitives);
0063   void fillLuts();
0064   int get_rom_addr(mp_group mps, std::vector<int> missing_hits);
0065   bool canCorrelate(cmsdt::metaPrimitive mp_sl1, cmsdt::metaPrimitive mp_sl3);
0066 
0067   // Private attributes
0068   int dT0_correlate_TP_;
0069 
0070   // double chi2Th_;
0071   std::vector<std::vector<int>> lut_2sl;
0072 };
0073 
0074 #endif