00001 #ifndef PixelFitterByHelixProjections_H
00002 #define PixelFitterByHelixProjections_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
00014 class TransientTrackingRecHitBuilder;
00015 class TrackerGeometry;
00016 class MagneticField;
00017
00018
00019 class PixelFitterByHelixProjections : public PixelFitter {
00020 public:
00021 PixelFitterByHelixProjections( const edm::ParameterSet& cfg);
00022 virtual ~PixelFitterByHelixProjections() {}
00023 virtual reco::Track* run(
00024 const edm::EventSetup& es,
00025 const std::vector<const TrackingRecHit *>& hits,
00026 const TrackingRegion& region) const;
00027 private:
00028 int charge(const std::vector<GlobalPoint> & points) const;
00029 float cotTheta(const GlobalPoint& pinner, const GlobalPoint& pouter) const;
00030 float phi(float xC, float yC, int charge) const;
00031 float pt(float curvature) const;
00032 float zip(float d0, float curv,
00033 const GlobalPoint& pinner, const GlobalPoint& pouter) const;
00034 double errZip2(float apt, float eta) const;
00035 double errTip2(float apt, float eta) const;
00036
00037 private:
00038 edm::ParameterSet theConfig;
00039
00040 mutable const TrackerGeometry * theTracker;
00041 mutable const MagneticField * theField;
00042 mutable const TransientTrackingRecHitBuilder * theTTRecHitBuilder;
00043
00044 };
00045 #endif