00001 #ifndef TrackFitter_H 00002 #define TrackFitter_H 00003 00004 #include "RecoPixelVertexing/PixelTrackFitting/interface/PixelFitter.h" 00005 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" 00006 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h" 00007 #include "FWCore/Framework/interface/EventSetup.h" 00008 #include "DataFormats/TrackReco/interface/Track.h" 00009 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00010 00011 #include <vector> 00012 00013 class TransientTrackingRecHitBuilder; 00014 class TrackerGeometry; 00015 class MagneticField; 00016 00017 class TrackFitter : public PixelFitter 00018 { 00019 public: 00020 TrackFitter(const edm::ParameterSet& cfg); 00021 virtual ~TrackFitter() { } 00022 virtual reco::Track* run 00023 (const edm::EventSetup& es, 00024 const std::vector<const TrackingRecHit *>& hits, 00025 const TrackingRegion& region) const; 00026 00027 private: 00028 int getCharge(const std::vector<GlobalPoint> & points) const; 00029 float getCotThetaAndUpdateZip 00030 (const GlobalPoint& inner, const GlobalPoint& outer, 00031 float radius, float phi, float d0, float& zip) const; 00032 float getPhi(float xC, float yC, int charge) const; 00033 float getZip(float d0, float curv, 00034 const GlobalPoint& inner, const GlobalPoint& outer) const; 00035 void getErrTipAndErrZip(float pt, float eta, 00036 float & errZip, float & errTip) const; 00037 00038 edm::ParameterSet theConfig; 00039 00040 mutable const TrackerGeometry * theTracker; 00041 mutable const MagneticField * theField; 00042 mutable const TransientTrackingRecHitBuilder * theTTRecHitBuilder; 00043 00044 }; 00045 #endif