Go to the documentation of this file.00001 #ifndef RECOTRACKER_TRANSIENTRACKINGRECHIT_ProjectedRecHit2D_H
00002 #define RECOTRACKER_TRANSIENTRACKINGRECHIT_ProjectedRecHit2D_H
00003
00004 #include "DataFormats/TrackerRecHit2D/interface/ProjectedSiStripRecHit2D.h"
00005 #include "TrackingTools/TransientTrackingRecHit/interface/GenericTransientTrackingRecHit.h"
00006 #include "TrackingTools/TransientTrackingRecHit/interface/HelpertRecHit2DLocalPos.h"
00007 #include "RecoLocalTracker/ClusterParameterEstimator/interface/StripClusterParameterEstimator.h"
00008
00009 class SiStripRecHit2D;
00010
00011 class ProjectedRecHit2D : public GenericTransientTrackingRecHit {
00012 public:
00013
00014 virtual void getKfComponents( KfComponentsHolder & holder ) const {
00015 HelpertRecHit2DLocalPos().getKfComponents(holder, *hit(), *det());
00016 }
00017
00018
00019 virtual AlgebraicSymMatrix parametersError() const {
00020 return HelpertRecHit2DLocalPos().parError( localPositionError(), *det());
00021 }
00022
00023 const GeomDetUnit* detUnit() const {return 0;}
00024 const GeomDet* originalDet() const {return theOriginalDet;}
00025
00026 static RecHitPointer build( const GeomDet * geom,
00027 const GeomDet* originaldet,
00028 const ProjectedSiStripRecHit2D* rh,
00029 const StripClusterParameterEstimator* cpe,
00030 float weight=1., float annealing=1.,
00031 bool computeCoarseLocalPosition=false) {
00032 return RecHitPointer( new ProjectedRecHit2D( geom, originaldet, rh, cpe, weight, annealing, computeCoarseLocalPosition));
00033 }
00034
00035 static RecHitPointer build( const LocalPoint& pos, const LocalError& err,
00036 const GeomDet* det, const GeomDet* originaldet,
00037 const TransientTrackingRecHit& originalHit,
00038 float weight=1., float annealing=1.) {
00039 return RecHitPointer( new ProjectedRecHit2D( pos, err, det, originaldet, originalHit, weight, annealing));
00040 }
00041
00042 RecHitPointer clone( const TrajectoryStateOnSurface& ts) const;
00043
00044 const SiStripRecHit2D& originalHit() const { return static_cast<const ProjectedSiStripRecHit2D*>( hit() )->originalHit();}
00045
00046 virtual ConstRecHitContainer transientHits () const;
00047
00048 private:
00049 const StripClusterParameterEstimator* theCPE;
00050 const GeomDet* theOriginalDet;
00051
00052 ProjectedRecHit2D( const LocalPoint& pos, const LocalError& err,
00053 const GeomDet* det, const GeomDet* originaldet,
00054 const TransientTrackingRecHit& originalHit,
00055 float weight, float annealing);
00056
00057 ProjectedRecHit2D( const GeomDet * geom, const GeomDet* originaldet,
00058 const ProjectedSiStripRecHit2D* rh,
00059 const StripClusterParameterEstimator* cpe,
00060 float weight, float annealing,
00061 bool computeCoarseLocalPosition);
00062
00063 virtual ProjectedRecHit2D* clone() const {
00064 return new ProjectedRecHit2D(*this);
00065 }
00066
00067 };
00068
00069
00070
00071 #endif