00001 #ifndef TrackingTools_TrackRefitter_TrackTransformerForGlobalCosmicMuons_H 00002 #define TrackingTools_TrackRefitter_TrackTransformerForGlobalCosmicMuons_H 00003 00018 #include "TrackingTools/TrackRefitter/interface/TrackTransformerBase.h" 00019 00020 #include "TrackingTools/TrackRefitter/interface/RefitDirection.h" 00021 00022 #include "FWCore/Framework/interface/ESHandle.h" 00023 00024 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h" 00025 #include "MagneticField/Engine/interface/MagneticField.h" 00026 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h" 00027 00028 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00029 00030 namespace edm {class ParameterSet; class EventSetup;} 00031 namespace reco {class TransientTrack;} 00032 00033 class TrajectoryFitter; 00034 class TrajectorySmoother; 00035 class Propagator; 00036 class TransientTrackingRecHitBuilder; 00037 class Trajectory; 00038 00039 class TrackTransformerForGlobalCosmicMuons: public TrackTransformerBase{ 00040 00041 public: 00042 00044 TrackTransformerForGlobalCosmicMuons(const edm::ParameterSet&); 00045 00047 virtual ~TrackTransformerForGlobalCosmicMuons(); 00048 00049 // Operations 00050 00052 virtual std::vector<Trajectory> transform(const reco::Track&) const; 00053 00055 const MagneticField* magneticField() const {return &*theMGField;} 00056 00058 edm::ESHandle<GlobalTrackingGeometry> trackingGeometry() const {return theTrackingGeometry;} 00059 00061 virtual void setServices(const edm::EventSetup&); 00062 00064 edm::ESHandle<TrajectoryFitter> fitter(bool) const; 00065 00067 edm::ESHandle<TrajectorySmoother> smoother(bool) const; 00068 00069 TransientTrackingRecHit::ConstRecHitContainer 00070 getTransientRecHits(const reco::TransientTrack& track) const; 00071 00073 bool TrackerKeep(DetId id) const; 00075 bool MuonKeep(DetId id) const; 00076 00077 protected: 00078 00079 private: 00080 00081 edm::ESHandle<Propagator> thePropagatorIO; 00082 edm::ESHandle<Propagator> thePropagatorOI; 00083 00084 edm::ESHandle<Propagator> propagator(bool) const; 00085 00086 00087 unsigned long long theCacheId_TC; 00088 unsigned long long theCacheId_GTG; 00089 unsigned long long theCacheId_MG; 00090 unsigned long long theCacheId_TRH; 00091 00092 bool theRPCInTheFit; 00093 int theSkipStationDT; 00094 int theSkipStationCSC; 00095 int theSkipWheelDT; 00096 int theTrackerSkipSystem; 00097 int theTrackerSkipSection; 00098 00099 edm::ESHandle<GlobalTrackingGeometry> theTrackingGeometry; 00100 edm::ESHandle<MagneticField> theMGField; 00101 00102 edm::ESHandle<TrajectoryFitter> theFitterIO; 00103 edm::ESHandle<TrajectoryFitter> theFitterOI; 00104 00105 edm::ESHandle<TrajectorySmoother> theSmootherIO; 00106 edm::ESHandle<TrajectorySmoother> theSmootherOI; 00107 00108 std::string theTrackerRecHitBuilderName; 00109 edm::ESHandle<TransientTrackingRecHitBuilder> theTrackerRecHitBuilder; 00110 00111 std::string theMuonRecHitBuilderName; 00112 edm::ESHandle<TransientTrackingRecHitBuilder> theMuonRecHitBuilder; 00113 00114 }; 00115 #endif 00116