File indexing completed on 2024-09-07 04:36:46
0001 #ifndef L1Trigger_DTTriggerPhase2_MuonPathCorFitter_h
0002 #define L1Trigger_DTTriggerPhase2_MuonPathCorFitter_h
0003
0004 #include "L1Trigger/DTTriggerPhase2/interface/MuonPathFitter.h"
0005
0006
0007
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
0023
0024
0025 class MuonPathCorFitter : public MuonPathFitter {
0026 public:
0027
0028 MuonPathCorFitter(const edm::ParameterSet &pset,
0029 edm::ConsumesCollector &iC,
0030 std::shared_ptr<GlobalCoordsObtainer> &globalcoordsobtainer);
0031 ~MuonPathCorFitter() override;
0032
0033
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
0056
0057
0058 edm::FileInPath both_sl_filename_;
0059
0060 private:
0061
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
0068 int dT0_correlate_TP_;
0069
0070
0071 std::vector<std::vector<int>> lut_2sl;
0072 };
0073
0074 #endif