CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_2_9_HLT1_bphpatch4/src/RecoTracker/TransientTrackingRecHit/interface/TSiTrackerMultiRecHit.h

Go to the documentation of this file.
00001 #ifndef TSiTrackerMultiRecHit_h
00002 #define TSiTrackerMultiRecHit_h
00003 
00004 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
00005 #include "DataFormats/TrackerRecHit2D/interface/SiTrackerMultiRecHit.h"
00006 #include "TrackingTools/TransientTrackingRecHit/interface/HelpertRecHit2DLocalPos.h"
00007 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
00008 
00009 /*
00010 A TransientTrackingRecHit for the SiTrackerMultiRecHit
00011 */
00012 
00013 class TSiTrackerMultiRecHit : public TransientTrackingRecHit {
00014         public:
00015         //virtual ~TSiTrackerMultiRecHit() {delete theHitData;}
00016         virtual ~TSiTrackerMultiRecHit() {}
00017         
00018         virtual AlgebraicVector parameters() const {return theHitData.parameters();}
00019         virtual AlgebraicSymMatrix parametersError() const {
00020                 return HelpertRecHit2DLocalPos().parError( theHitData.localPositionError(), *det());
00021                 //return theHitData.parametersError();
00022         }
00023 
00024         virtual void getKfComponents( KfComponentsHolder & holder ) const {
00025             HelpertRecHit2DLocalPos().getKfComponents(holder, theHitData, *det()); 
00026         }
00027         virtual DetId geographicalId() const {return theHitData.geographicalId();}
00028         virtual AlgebraicMatrix projectionMatrix() const {return theHitData.projectionMatrix();}
00029         virtual int dimension() const {return theHitData.dimension();}
00030 
00031         virtual LocalPoint localPosition() const {return theHitData.localPosition();}
00032         virtual LocalError localPositionError() const {return theHitData.localPositionError();}
00033 
00034         virtual const TrackingRecHit * hit() const {return &theHitData;};
00035         const SiTrackerMultiRecHit* specificHit() const {return &theHitData;}
00036 
00037         virtual bool isValid() const{return theHitData.isValid();}
00038 
00039         virtual std::vector<const TrackingRecHit*> recHits() const {
00040                 return theHitData.recHits();
00041         } 
00042         virtual std::vector<TrackingRecHit*> recHits() {
00043                 return theHitData.recHits();
00044         }       
00045 
00046         virtual const GeomDetUnit* detUnit() const;
00047 
00048         virtual bool canImproveWithTrack() const {return true;}
00049 
00050         virtual RecHitPointer clone(const TrajectoryStateOnSurface& ts) const;
00051 
00052         virtual ConstRecHitContainer transientHits() const {return theComponents;};
00053 
00054         static RecHitPointer build( const GeomDet * geom, const SiTrackerMultiRecHit* rh, 
00055                                     const ConstRecHitContainer& components, float annealing=1.){
00056                 return RecHitPointer(new TSiTrackerMultiRecHit( geom, rh, components, annealing));
00057         }
00058         private:
00059         SiTrackerMultiRecHit theHitData;
00060         //holds the TransientTrackingRecHit components of the MultiRecHit with up-to-date weights 
00061         ConstRecHitContainer theComponents;   
00062         
00063         TSiTrackerMultiRecHit(const GeomDet * geom, const SiTrackerMultiRecHit* rh,  
00064                               const ConstRecHitContainer& components, float annealing):
00065                 TransientTrackingRecHit(geom,1, annealing), theHitData(*rh), theComponents(components){}
00066       
00067         virtual TSiTrackerMultiRecHit* clone() const {
00068                 return new TSiTrackerMultiRecHit(*this);
00069         }
00070 
00071 };              
00072 
00073 #endif