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