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