File indexing completed on 2024-04-06 12:27:15
0001 #ifndef RecoMuon_TrackerSeedGenerator_L1MuonSeedsMerger_H
0002 #define RecoMuon_TrackerSeedGenerator_L1MuonSeedsMerger_H
0003
0004 #include "RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h"
0005 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0006 #include <vector>
0007
0008 namespace edm {
0009 class ParameterSet;
0010 }
0011
0012 class L1MuonSeedsMerger {
0013 public:
0014 typedef std::pair<const reco::Track*, SeedingHitSet> TrackAndHits;
0015 typedef std::vector<TrackAndHits> TracksAndHits;
0016 L1MuonSeedsMerger(const edm::ParameterSet& cfg);
0017 virtual ~L1MuonSeedsMerger() {}
0018 virtual void resolve(TracksAndHits&) const;
0019
0020 private:
0021 enum Action { goAhead, killFirst, killSecond, mergeTwo };
0022 struct Less {
0023 bool operator()(const TrackAndHits&, const TrackAndHits&) const;
0024 };
0025 const TrackAndHits* merge(const TrackAndHits*, const TrackAndHits*) const;
0026 Action compare(const TrackAndHits*, const TrackAndHits*) const;
0027
0028 private:
0029 float theDeltaEtaCut;
0030 float theDiffRelPtCut;
0031 };
0032 #endif