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
00011
00012
00013 class TSiTrackerMultiRecHit : public TransientTrackingRecHit {
00014 public:
00015
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
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
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