CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/RecoTracker/TransientTrackingRecHit/interface/TSiPixelRecHit.h

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 // class GeomDetUnit;
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     // return theHitData->parametersError();
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   //RC  virtual TSiPixelRecHit* clone (const TrajectoryStateOnSurface& ts) const;
00051   virtual RecHitPointer clone (const TrajectoryStateOnSurface& ts) const;
00052 
00053   virtual const GeomDetUnit* detUnit() const;
00054 
00055   // Extension of the TransientTrackingRecHit interface
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