00001 #ifndef FastSimulation_Muons_FastL3MuonTrajectoryBuilder_H 00002 #define FastSimulation_Muons_FastL3MuonTrajectoryBuilder_H 00003 00013 //for debug only 00014 //#define FAMOS_DEBUG 00015 00016 #include "RecoMuon/GlobalTrackingTools/interface/GlobalTrajectoryBuilderBase.h" 00017 #include "TrackingTools/PatternTools/interface/TrajectoryBuilder.h" 00018 00019 #include "TrackingTools/DetLayers/interface/NavigationSchool.h" 00020 #ifdef FAMOS_DEBUG 00021 #include "DQMServices/Core/interface/DQMStore.h" 00022 #include "DQMServices/Core/interface/MonitorElement.h" 00023 #include "FWCore/ServiceRegistry/interface/Service.h" 00024 #endif 00025 00026 namespace edm { 00027 class ParameterSet; 00028 class Event; 00029 class EventSetup; 00030 } 00031 00032 namespace reco { 00033 class Track; 00034 } 00035 00036 class MuonServiceProxy; 00037 class Trajectory; 00038 class TrackerSeedGenerator; 00039 class TrajectoryCleaner; 00040 00041 class FastL3MuonTrajectoryBuilder : public GlobalTrajectoryBuilderBase { 00042 00043 public: 00044 00046 FastL3MuonTrajectoryBuilder(const edm::ParameterSet&, const MuonServiceProxy*); 00047 00049 ~FastL3MuonTrajectoryBuilder(); 00050 00052 MuonTrajectoryBuilder::CandidateContainer trajectories(const TrackCand&); 00053 00055 virtual void setEvent(const edm::Event&); 00056 00058 void clear(); 00059 00060 private: 00061 00063 std::vector<TrackCand> makeTkCandCollection(const TrackCand&); 00064 00066 TC makeTrajsFromSeeds(const std::vector<TrajectorySeed>&) const; 00067 00068 private: 00069 00070 std::vector<TrackCand> regionalTkTracks; 00071 TrackCand dummyStaCand; 00072 00073 bool theTkTrajsAvailableFlag; 00074 bool theFirstEvent; 00075 00076 TrackerSeedGenerator* theTkSeedGenerator; 00077 TrajectoryCleaner* theTrajectoryCleaner; 00078 00079 std::string theTkBuilderName; 00080 edm::ESHandle<TrajectoryBuilder> theTkBuilder; 00081 00082 edm::InputTag theTrackerTrajectoryCollection; 00083 edm::InputTag theSimModule; 00084 const edm::Event* theEvent; 00085 00086 #ifdef FAMOS_DEBUG 00087 DQMStore * dbe; 00088 MonitorElement* matchMuons; 00089 MonitorElement* refitMuons; 00090 #endif 00091 00092 }; 00093 #endif 00094 00095