CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_6/src/RecoTracker/TransientTrackingRecHit/interface/TSiStripRecHit1D.h

Go to the documentation of this file.
00001 #ifndef RECOTRACKER_TRANSIENTRACKINGRECHIT_TSiStripRecHit1D_H
00002 #define RECOTRACKER_TRANSIENTRACKINGRECHIT_TSiStripRecHit1D_H
00003 
00004 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit1D.h"
00005 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
00006 #include "RecoLocalTracker/ClusterParameterEstimator/interface/StripClusterParameterEstimator.h"
00007 #include "TrackingTools/TransientTrackingRecHit/interface/HelpertRecHit2DLocalPos.h"
00008 #include "DataFormats/Common/interface/RefGetter.h"
00009 
00010 class TSiStripRecHit1D GCC11_FINAL : public TransientTrackingRecHit{
00011 public:
00012 
00013   typedef SiStripRecHit1D::ClusterRef SiStripClusterRef;
00014   
00015   typedef edm::LazyGetter<SiStripCluster>::value_ref  SiStripRegionalClusterRef;
00016 
00017   virtual ~TSiStripRecHit1D() {}
00018 
00019   
00020   virtual void getKfComponents( KfComponentsHolder & holder ) const {
00021       HelpertRecHit2DLocalPos().getKfComponents(holder, theHitData, *det()); 
00022   }
00023  
00024 
00025   virtual AlgebraicVector parameters() const {return theHitData.parameters();}
00026 
00027   
00028   virtual AlgebraicSymMatrix parametersError() const {
00029     return HelpertRecHit2DLocalPos().parError( theHitData.localPositionError(), *det()); 
00030     //    return theHitData->parametersError();
00031   }
00032   
00033 
00034   virtual AlgebraicMatrix projectionMatrix() const {return theHitData.projectionMatrix();}
00035   virtual int dimension() const {return theHitData.dimension();}
00036 
00037   virtual LocalPoint localPosition() const {return theHitData.localPosition();}
00038   virtual LocalError localPositionError() const {return theHitData.localPositionError();}
00039 
00040   virtual const TrackingRecHit * hit() const {return &theHitData;};
00041   
00042   virtual std::vector<const TrackingRecHit*> recHits() const {
00043     return hit()->recHits();
00044   }
00045   virtual std::vector<TrackingRecHit*> recHits() {
00046     return theHitData.recHits();
00047   }
00048 
00049   virtual const GeomDetUnit* detUnit() const;
00050 
00051   virtual bool canImproveWithTrack() const {return true;}
00052 
00053   //RC virtual TSiStripRecHit2DLocalPos* clone(const TrajectoryStateOnSurface& ts) const;
00054   virtual RecHitPointer clone(const TrajectoryStateOnSurface& ts) const;
00055 
00056   // Extension of the TransientTrackingRecHit interface
00057 
00058   const SiStripRecHit1D* specificHit() const {return &theHitData;};
00059   const StripClusterParameterEstimator* cpe() const {return theCPE;}
00060 
00061   static RecHitPointer build( const GeomDet * geom, const SiStripRecHit1D* rh,
00062                               const StripClusterParameterEstimator* cpe,
00063                               bool computeCoarseLocalPosition=false) {
00064     return RecHitPointer( new TSiStripRecHit1D( geom, rh, cpe,computeCoarseLocalPosition));
00065   }
00066 
00067   static RecHitPointer build( const LocalPoint& pos, const LocalError& err,
00068                               const GeomDet* det,
00069                               const OmniClusterRef & clust,
00070                               const StripClusterParameterEstimator* cpe) {
00071     return RecHitPointer( new TSiStripRecHit1D( pos, err, det, clust, cpe));
00072   }
00073 
00074   static RecHitPointer build( const LocalPoint& pos, const LocalError& err,
00075                               const GeomDet* det,
00076                               const SiStripClusterRef & clust,
00077                               const StripClusterParameterEstimator* cpe) {
00078     return RecHitPointer( new TSiStripRecHit1D( pos, err, det, OmniClusterRef(clust), cpe));
00079   }
00080 
00081   static RecHitPointer build( const LocalPoint& pos, const LocalError& err,
00082                               const GeomDet* det,
00083                               const SiStripRegionalClusterRef & clust,
00084                               const StripClusterParameterEstimator* cpe) {
00085     return RecHitPointer( new TSiStripRecHit1D( pos, err, det, OmniClusterRef(clust), cpe));
00086   }
00087 
00088 
00089 
00090 private:
00091 
00092   const StripClusterParameterEstimator* theCPE;
00093   SiStripRecHit1D              theHitData;
00094 
00095   TSiStripRecHit1D (const GeomDet * geom, const SiStripRecHit1D* rh,
00096                     const StripClusterParameterEstimator* cpe,
00097                     bool computeCoarseLocalPosition);
00098 
00100   TSiStripRecHit1D( const LocalPoint& pos, const LocalError& err,
00101                     const GeomDet* det,
00102                     const OmniClusterRef & clust,
00103                     const StripClusterParameterEstimator* cpe) :
00104     TransientTrackingRecHit(det), 
00105     theCPE(cpe), theHitData(pos, err, det->geographicalId(), clust){} 
00106 
00107 
00108   
00109 
00110   virtual TSiStripRecHit1D* clone() const {
00111     return new TSiStripRecHit1D(*this);
00112   }
00113 
00114 };
00115 
00116 #endif