CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/RecoMuon/TrackingTools/interface/MuonTrackFinder.h

Go to the documentation of this file.
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