File indexing completed on 2024-04-06 12:27:17
0001 #ifndef RecoMuon_TrackingTools_MuonTrackFinder_H
0002 #define RecoMuon_TrackingTools_MuonTrackFinder_H
0003
0004
0005
0006
0007
0008
0009
0010 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0011 #include "DataFormats/TrackReco/interface/TrackExtraFwd.h"
0012 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
0013 #include "TrackingTools/PatternTools/interface/Trajectory.h"
0014 #include "RecoMuon/TrackingTools/interface/MuonCandidate.h"
0015 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0016 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0017
0018 #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
0019
0020 #include <vector>
0021
0022 class MuonTrajectoryBuilder;
0023 class MuonTrajectoryCleaner;
0024 class MuonTrackLoader;
0025
0026 class MuonTrackFinder {
0027 public:
0028 typedef MuonCandidate::TrajectoryContainer TrajectoryContainer;
0029 typedef MuonCandidate::CandidateContainer CandidateContainer;
0030 typedef std::pair<const Trajectory*, reco::TrackRef> TrackCand;
0031
0032 public:
0033
0034 MuonTrackFinder(std::unique_ptr<MuonTrajectoryBuilder> ConcreteMuonTrajectoryBuilder,
0035 std::unique_ptr<MuonTrackLoader> trackLoader,
0036 edm::ConsumesCollector iC);
0037
0038
0039 MuonTrackFinder(std::unique_ptr<MuonTrajectoryBuilder> ConcreteMuonTrajectoryBuilder,
0040 std::unique_ptr<MuonTrackLoader> trackLoader,
0041 std::unique_ptr<MuonTrajectoryCleaner> cleaner,
0042 edm::ConsumesCollector iC);
0043
0044
0045 virtual ~MuonTrackFinder();
0046
0047
0048 edm::OrphanHandle<reco::TrackCollection> reconstruct(const edm::Handle<edm::View<TrajectorySeed> >&,
0049 edm::Event&,
0050 const edm::EventSetup&);
0051
0052
0053
0054
0055 void reconstruct(const std::vector<TrackCand>&, edm::Event&, const edm::EventSetup&);
0056
0057 private:
0058
0059 void setEvent(const edm::Event&);
0060
0061
0062 edm::OrphanHandle<reco::TrackCollection> load(TrajectoryContainer&, edm::Event&, const TrackerTopology& ttopo);
0063
0064
0065 void load(CandidateContainer&, edm::Event&, const TrackerTopology& ttopo);
0066
0067 private:
0068 const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> theTtopoToken;
0069
0070 std::unique_ptr<MuonTrajectoryBuilder> theTrajBuilder;
0071
0072 std::unique_ptr<MuonTrajectoryCleaner> theTrajCleaner;
0073
0074 std::unique_ptr<MuonTrackLoader> theTrackLoader;
0075 };
0076 #endif