CMS 3D CMS Logo

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     return RecHitPointer( new ProjectedRecHit2D( geom, originaldet, rh, cpe, weight, annealing));
00032   }
00033 
00034   static RecHitPointer build( const LocalPoint& pos, const LocalError& err, 
00035                               const GeomDet* det, const GeomDet* originaldet,
00036                               const TransientTrackingRecHit& originalHit,
00037                               float weight=1., float annealing=1.) {
00038     return RecHitPointer( new ProjectedRecHit2D( pos, err, det, originaldet, originalHit, weight, annealing));
00039   }
00040 
00041   RecHitPointer clone( const TrajectoryStateOnSurface& ts) const;
00042 
00043   const SiStripRecHit2D& originalHit() const { return static_cast<const ProjectedSiStripRecHit2D*>( hit() )->originalHit();}
00044 
00045   virtual ConstRecHitContainer  transientHits () const;
00046 
00047 private:
00048   const StripClusterParameterEstimator* theCPE;
00049   const GeomDet* theOriginalDet;
00050 
00051   ProjectedRecHit2D( const LocalPoint& pos, const LocalError& err,
00052                      const GeomDet* det, const GeomDet* originaldet, 
00053                      const TransientTrackingRecHit& originalHit,
00054                      float weight, float annealing);
00055 
00056   ProjectedRecHit2D( const GeomDet * geom, const GeomDet* originaldet,
00057                      const ProjectedSiStripRecHit2D* rh,
00058                      const StripClusterParameterEstimator* cpe,
00059                      float weight=1., float annealing=1.) :
00060     GenericTransientTrackingRecHit( geom, *rh,weight, annealing), theCPE(cpe), theOriginalDet(originaldet) {}
00061 
00062   virtual ProjectedRecHit2D* clone() const {
00063     return new ProjectedRecHit2D(*this);
00064   }
00065 
00066 };
00067 
00068 
00069 
00070 #endif

Generated on Tue Jun 9 17:46:01 2009 for CMSSW by  doxygen 1.5.4