00001 #ifndef RecoMuon_L3TrackFinder_L3MuonTrajectoryBuilder_H 00002 #define RecoMuon_L3TrackFinder_L3MuonTrajectoryBuilder_H 00003 00015 #include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeedCollection.h" 00016 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h" 00017 00018 #include "RecoMuon/GlobalTrackingTools/interface/GlobalTrajectoryBuilderBase.h" 00019 #include "TrackingTools/PatternTools/interface/TrajectoryBuilder.h" 00020 00021 #include "TrackingTools/DetLayers/interface/NavigationSchool.h" 00022 00023 namespace edm {class ParameterSet; class Event; class EventSetup;} 00024 00025 class MuonServiceProxy; 00026 class Trajectory; 00027 class TrackerSeedGenerator; 00028 class TrajectoryCleaner; 00029 00030 class L3MuonTrajectoryBuilder : public GlobalTrajectoryBuilderBase { 00031 00032 public: 00033 00035 L3MuonTrajectoryBuilder(const edm::ParameterSet&, const MuonServiceProxy*); 00036 00038 ~L3MuonTrajectoryBuilder(); 00039 00041 MuonTrajectoryBuilder::CandidateContainer trajectories(const TrackCand&); 00042 00044 virtual void setEvent(const edm::Event&); 00045 00046 private: 00047 00049 std::vector<TrackCand> makeTkCandCollection(const TrackCand&); 00050 00052 TC makeTrajsFromSeeds(const std::vector<TrajectorySeed>&) const; 00053 // TC makeTrajsFromSeeds(const std::vector<L3MuonTrajectorySeed>&) const; 00054 00055 private: 00056 00057 bool theFirstEvent; 00058 bool theSeedsAvailable; 00059 bool theTrajsAvailable; 00060 bool theTkCandsAvailable; 00061 00062 TrackerSeedGenerator* theTkSeedGenerator; 00063 TrajectoryCleaner* theTrajectoryCleaner; 00064 00065 std::string theTkBuilderName; 00066 edm::ESHandle<TrajectoryBuilder> theTkBuilder; 00067 00068 edm::InputTag theSeedName; 00069 edm::Handle<L3MuonTrajectorySeedCollection> theSeedCollection; 00070 00071 edm::InputTag theTkCollName; 00072 edm::Handle<TC> theTkTrajCollection; 00073 edm::Handle<TrackCandidateCollection> theTkTrackCandCollection; 00074 00075 }; 00076 #endif