CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/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                               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                   //                            const SiPixelCluster& clust,
00103                   clusterRef clust,
00104                   const PixelClusterParameterEstimator* cpe,
00105                   float weight, float annealing);
00106 
00107   
00108 
00109   //  TSiPixelRecHit( const TSiPixelRecHit& other ) :
00110   //  TransientTrackingRecHit( other.det()), 
00111   //  theHitData( other.specificHit()->clone()),
00112   //  theCPE( other.cpe())  {}
00113 
00114   virtual TSiPixelRecHit * clone() const {
00115     return new TSiPixelRecHit(*this);
00116   }
00117 
00118 };
00119 
00120 
00121 
00122 #endif