00001 #ifndef PerigeeRefittedTrackState_H 00002 #define PerigeeRefittedTrackState_H 00003 00004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h" 00005 #include "RecoVertex/VertexPrimitives/interface/RefittedTrackState.h" 00006 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateClosestToPoint.h" 00007 00013 class FreeTrajectoryState; 00014 class TrajectoryStateOnSurface; 00015 class Surface; 00016 class Propagator; 00017 00018 class PerigeeRefittedTrackState : public RefittedTrackState<5> { 00019 00020 public: 00021 00022 typedef ReferenceCountingPointer<RefittedTrackState<5> > RefCountedRefittedTrackState; 00023 00024 PerigeeRefittedTrackState(const TrajectoryStateClosestToPoint & tscp, 00025 const AlgebraicVector3 & aMomentumAtVertex, 00026 const double aWeight = 1.) : 00027 theState(tscp), momentumAtVertex(aMomentumAtVertex), theWeight(aWeight) {} 00028 00029 virtual ~PerigeeRefittedTrackState(){} 00030 00035 virtual FreeTrajectoryState freeTrajectoryState() const 00036 {return theState.theState();} 00037 00041 virtual TrajectoryStateOnSurface trajectoryStateOnSurface( 00042 const Surface & surface) const; 00043 00048 virtual TrajectoryStateOnSurface trajectoryStateOnSurface( 00049 const Surface & surface, const Propagator & propagator) const; 00050 00057 virtual AlgebraicVector5 parameters() const 00058 {return theState.perigeeParameters().vector();} 00059 00064 virtual AlgebraicSymMatrix55 covariance() const 00065 {return theState.perigeeError().covarianceMatrix();} 00066 00071 virtual GlobalPoint position() const 00072 {return theState.referencePoint();} 00073 00079 virtual AlgebraicVector3 momentumVector() const; 00080 00084 virtual double weight() const {return theWeight;} 00085 00090 virtual ReferenceCountingPointer<RefittedTrackState<5> > stateWithNewWeight 00091 (const double newWeight) const; 00092 00093 virtual std::vector<ReferenceCountingPointer<RefittedTrackState<5> > > components() const; 00094 00095 virtual reco::TransientTrack transientTrack() const; 00096 00097 private: 00098 00099 TrajectoryStateClosestToPoint theState; 00100 AlgebraicVector3 momentumAtVertex; 00101 double theWeight; 00102 }; 00103 #endif