00001 #ifndef RecoMuon_TrackerSeedGenerator_L1MuonSeedsMerger_H 00002 #define RecoMuon_TrackerSeedGenerator_L1MuonSeedsMerger_H 00003 00004 #include "RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h" 00005 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00006 #include <vector> 00007 00008 namespace edm {class ParameterSet;} 00009 00010 class L1MuonSeedsMerger { 00011 public: 00012 typedef std::pair<const reco::Track*, SeedingHitSet > TrackAndHits; 00013 typedef std::vector<TrackAndHits> TracksAndHits; 00014 L1MuonSeedsMerger(const edm::ParameterSet& cfg); 00015 virtual ~L1MuonSeedsMerger(){} 00016 virtual void resolve(TracksAndHits &) const; 00017 private: 00018 enum Action { goAhead, killFirst, killSecond, mergeTwo }; 00019 struct Less { bool operator()(const TrackAndHits&, const TrackAndHits&) const; }; 00020 const TrackAndHits* merge(const TrackAndHits*,const TrackAndHits*) const; 00021 Action compare(const TrackAndHits*, const TrackAndHits*) const; 00022 private: 00023 float theDeltaEtaCut; 00024 float theDiffRelPtCut; 00025 }; 00026 #endif