00001 #ifndef RecoMuon_TrackingTools_MuonTrackFinder_H 00002 #define RecoMuon_TrackingTools_MuonTrackFinder_H 00003 00012 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00013 #include "DataFormats/TrackReco/interface/TrackExtraFwd.h" 00014 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" 00015 #include "TrackingTools/PatternTools/interface/Trajectory.h" 00016 #include "RecoMuon/TrackingTools/interface/MuonCandidate.h" 00017 00018 #include "FWCore/Framework/interface/ESHandle.h" 00019 00020 #include <vector> 00021 00022 namespace edm {class ParameterSet; class Event; class EventSetup;} 00023 00024 class MuonTrajectoryBuilder; 00025 class MuonTrajectoryCleaner; 00026 class MuonTrackLoader; 00027 00028 class MuonTrackFinder { 00029 00030 public: 00031 00032 typedef MuonCandidate::TrajectoryContainer TrajectoryContainer; 00033 typedef MuonCandidate::CandidateContainer CandidateContainer; 00034 typedef std::pair<const Trajectory*, reco::TrackRef> TrackCand; 00035 00036 public: 00037 00039 MuonTrackFinder(MuonTrajectoryBuilder* ConcreteMuonTrajectoryBuilder, 00040 MuonTrackLoader *trackLoader); 00041 00043 virtual ~MuonTrackFinder(); 00044 00046 edm::OrphanHandle<reco::TrackCollection> reconstruct(const edm::Handle<edm::View<TrajectorySeed> >&, 00047 edm::Event&); 00048 00052 void reconstruct(const std::vector<TrackCand>&, edm::Event&); 00053 00054 private: 00055 00057 void setEvent(const edm::Event&); 00058 00060 edm::OrphanHandle<reco::TrackCollection> load(const TrajectoryContainer&, edm::Event&); 00061 00063 void load(const CandidateContainer&, edm::Event&); 00064 00065 private: 00066 00067 MuonTrajectoryBuilder* theTrajBuilder; 00068 00069 MuonTrajectoryCleaner* theTrajCleaner; 00070 00071 MuonTrackLoader* theTrackLoader; 00072 00073 }; 00074 #endif