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 float weight=1., float annealing=1.,
00063 bool computeCoarseLocalPosition=false) {
00064 return RecHitPointer( new TSiPixelRecHit( geom, rh, cpe,weight, annealing, computeCoarseLocalPosition));
00065 }
00066
00067 static RecHitPointer build( const LocalPoint& pos, const LocalError& err,
00068 const GeomDet* det,
00069 clusterRef cluster,
00070 const PixelClusterParameterEstimator* cpe,
00071 float weight=1., float annealing=1.) {
00072 return RecHitPointer( new TSiPixelRecHit( pos, err, det, cluster, cpe,weight, annealing));
00073 }
00074
00075
00077 virtual float clusterProbability() const {
00078 return theHitData.clusterProbability( theClusterProbComputationFlag );
00079 }
00080
00081
00082
00083 private:
00084
00085 SiPixelRecHit theHitData;
00086 const PixelClusterParameterEstimator* theCPE;
00087 unsigned int theClusterProbComputationFlag;
00088
00091 TSiPixelRecHit(const GeomDet * geom, const SiPixelRecHit* rh,
00092 const PixelClusterParameterEstimator* cpe,
00093 float weight, float annealing,
00094 bool computeCoarseLocalPosition);
00095
00096
00097
00100 TSiPixelRecHit( const LocalPoint& pos, const LocalError& err,
00101 const GeomDet* det,
00102
00103 clusterRef clust,
00104 const PixelClusterParameterEstimator* cpe,
00105 float weight, float annealing);
00106
00107
00108
00109
00110
00111
00112
00113
00114 virtual TSiPixelRecHit * clone() const {
00115 return new TSiPixelRecHit(*this);
00116 }
00117
00118 };
00119
00120
00121
00122 #endif