00001 #ifndef KinematicRefittedTrackState_H 00002 #define KinematicRefittedTrackState_H 00003 00004 #include "RecoVertex/VertexPrimitives/interface/RefittedTrackState.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h" 00006 #include "RecoVertex/KinematicFitPrimitives/interface/Matrices.h" 00007 00008 00022 class KinematicRefittedTrackState : public RefittedTrackState<6>{ 00023 00024 public: 00025 00026 typedef ReferenceCountingPointer<RefittedTrackState<6> > RefCountedRefittedTrackState; 00027 00028 KinematicRefittedTrackState(const KinematicState& st, const AlgebraicVector4& mv); 00029 00033 AlgebraicVector6 parameters() const; 00034 00038 AlgebraicSymMatrix66 covariance() const ; 00039 00043 AlgebraicVector7 kinematicParameters() const; 00044 00048 AlgebraicSymMatrix77 kinematicParametersCovariance() const ; 00049 00053 FreeTrajectoryState freeTrajectoryState() const; 00054 00055 GlobalPoint position() const; 00056 00060 AlgebraicVector4 kinematicMomentumVector() const; 00061 00065 AlgebraicVector4 momentumVector() const; 00066 00067 TrajectoryStateOnSurface trajectoryStateOnSurface(const Surface & surface) const; 00068 00069 TrajectoryStateOnSurface trajectoryStateOnSurface(const Surface & surface, 00070 const Propagator & propagator) const; 00071 00072 virtual double weight() const; 00073 00074 virtual ReferenceCountingPointer<RefittedTrackState<6> > stateWithNewWeight 00075 (const double newWeight) const; 00076 00077 virtual std::vector< ReferenceCountingPointer<RefittedTrackState<6> > > components() const; 00078 00079 virtual reco::TransientTrack transientTrack() const; 00080 00081 00082 private: 00083 00084 KinematicState state; 00085 AlgebraicVector4 momentumAtVertex; 00086 00087 }; 00088 #endif