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 MuonTrackFinder(MuonTrajectoryBuilder* ConcreteMuonTrajectoryBuilder, 00044 MuonTrackLoader *trackLoader, 00045 MuonTrajectoryCleaner* cleaner); 00046 00048 virtual ~MuonTrackFinder(); 00049 00051 edm::OrphanHandle<reco::TrackCollection> reconstruct(const edm::Handle<edm::View<TrajectorySeed> >&, 00052 edm::Event&); 00053 00057 void reconstruct(const std::vector<TrackCand>&, edm::Event&); 00058 00059 private: 00060 00062 void setEvent(const edm::Event&); 00063 00065 edm::OrphanHandle<reco::TrackCollection> load(const TrajectoryContainer&, edm::Event&); 00066 00068 void load(const CandidateContainer&, edm::Event&); 00069 00070 private: 00071 00072 MuonTrajectoryBuilder* theTrajBuilder; 00073 00074 MuonTrajectoryCleaner* theTrajCleaner; 00075 00076 MuonTrackLoader* theTrackLoader; 00077 00078 }; 00079 #endif