CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/RecoTracker/TransientTrackingRecHit/interface/ProjectedRecHit2D.h

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