CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/TrackingTools/TrackRefitter/interface/TrackTransformerForCosmicMuons.h

Go to the documentation of this file.
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