File indexing completed on 2023-10-25 09:55:33
0001 #ifndef OMTF_OMTFSorter_H
0002 #define OMTF_OMTFSorter_H
0003
0004 #include <tuple>
0005 #include <vector>
0006
0007 #include "DataFormats/L1TMuon/interface/RegionalMuonCand.h"
0008 #include "DataFormats/L1TMuon/interface/RegionalMuonCandFwd.h"
0009
0010 #include "L1Trigger/L1TMuonOverlap/interface/OMTFResult.h"
0011 #include "L1Trigger/L1TMuonOverlap/interface/OMTFProcessor.h"
0012 #include "L1Trigger/L1TMuonOverlap/interface/AlgoMuon.h"
0013 #include "L1Trigger/L1TMuonOverlap/interface/GhostBuster.h"
0014
0015 class OMTFConfiguration;
0016
0017 class OMTFSorter {
0018 public:
0019 void initialize(const OMTFConfiguration* cfg) { myOmtfConfig = cfg; }
0020 void setNphiBins(unsigned int phiBins) { nPhiBins = phiBins; }
0021
0022 void sortRefHitResults(const std::vector<OMTFProcessor::resultsMap>& procResults,
0023 std::vector<AlgoMuon>& refHitCleanCands,
0024 int charge = 0);
0025
0026
0027
0028 std::vector<l1t::RegionalMuonCand> candidates(unsigned int iProcessor,
0029 l1t::tftype mtfType,
0030 const std::vector<AlgoMuon>& algoCands);
0031
0032
0033
0034
0035
0036 AlgoMuon sortRefHitResults(const OMTFProcessor::resultsMap& aResultsMap, int charge = 0);
0037
0038 private:
0039
0040
0041
0042
0043
0044
0045 bool checkHitPatternValidity(unsigned int hits);
0046
0047
0048
0049
0050
0051
0052 AlgoMuon sortSingleResult(const OMTFResult& aResult);
0053
0054 unsigned int nPhiBins;
0055 const OMTFConfiguration* myOmtfConfig;
0056 };
0057
0058 #endif