00001 #ifndef CosmicMuonProducer_CosmicMuonUtilities_H 00002 #define CosmicMuonProducer_CosmicMuonUtilities_H 00003 00012 #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" 00013 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h" 00014 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00015 00016 class Propagator; 00017 00018 namespace edm {class ParameterSet; class Event; class EventSetup;} 00019 00020 class Trajectory; 00021 class TrajectoryMeasurement; 00022 00023 typedef MuonTransientTrackingRecHit::MuonRecHitContainer MuonRecHitContainer; 00024 typedef TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer; 00025 typedef TransientTrackingRecHit::ConstRecHitContainer ConstRecHitContainer; 00026 typedef MuonTransientTrackingRecHit::ConstMuonRecHitContainer ConstMuonRecHitContainer; 00027 00028 00029 class CosmicMuonUtilities { 00030 00031 public: 00032 00033 CosmicMuonUtilities(); 00034 00035 virtual ~CosmicMuonUtilities(); 00036 00037 std::string print(const ConstMuonRecHitContainer&) const; 00038 00039 std::string print(const MuonRecHitContainer&) const; 00040 00041 std::string print(const ConstRecHitContainer&) const; 00042 00043 bool isTraversing(const Trajectory&) const; 00044 00045 void reverseDirection(TrajectoryStateOnSurface&,const MagneticField*) const; 00046 00047 TrajectoryStateOnSurface stepPropagate(const TrajectoryStateOnSurface&, 00048 const ConstRecHitPointer&, 00049 const Propagator&) const; 00050 00051 private: 00052 00053 }; 00054 #endif