00001 #ifndef RefittedTrackState_H 00002 #define RefittedTrackState_H 00003 00004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h" 00005 #include "TrackingTools/TrajectoryState/interface/CopyUsingClone.h" 00006 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h" 00007 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00008 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00009 #include <vector> 00010 00016 class FreeTrajectoryState; 00017 class TrajectoryStateOnSurface; 00018 class Surface; 00019 class Propagator; 00020 00021 template <unsigned int N> 00022 class RefittedTrackState : public ReferenceCounted { 00023 00024 public: 00025 00026 // typedef ROOT::Math::SMatrix<double,N,N,ROOT::Math::MatRepSym<double,N> > AlgebraicMatrixN3; 00027 typedef ROOT::Math::SVector<double,N> AlgebraicVectorN; 00028 typedef ROOT::Math::SVector<double,N-2> AlgebraicVectorM; 00029 // typedef ROOT::Math::SMatrix<double,N,3,ROOT::Math::MatRepStd<double,N,3> > AlgebraicMatrixN3; 00030 // typedef ROOT::Math::SMatrix<double,N-2,3,ROOT::Math::MatRepStd<double,N-2,3> > AlgebraicMatrixM3; 00031 typedef ROOT::Math::SMatrix<double,N,N,ROOT::Math::MatRepSym<double,N> > AlgebraicSymMatrixNN; 00032 00033 virtual ~RefittedTrackState(){} 00034 00038 virtual FreeTrajectoryState freeTrajectoryState() const = 0; 00039 00043 virtual TrajectoryStateOnSurface trajectoryStateOnSurface( 00044 const Surface & surface) const = 0; 00045 00050 virtual TrajectoryStateOnSurface trajectoryStateOnSurface( 00051 const Surface & surface, const Propagator & propagator) const = 0; 00052 00056 virtual AlgebraicVectorN parameters() const = 0; 00057 00061 virtual AlgebraicSymMatrixNN covariance() const = 0; 00062 00066 virtual GlobalPoint position() const = 0; 00067 00072 virtual AlgebraicVectorM momentumVector() const = 0; 00073 00078 virtual double weight() const = 0; 00079 00085 virtual ReferenceCountingPointer<RefittedTrackState> stateWithNewWeight 00086 (const double newWeight) const = 0; 00087 00088 virtual std::vector< ReferenceCountingPointer<RefittedTrackState> > components() const = 0; 00089 00090 virtual reco::TransientTrack transientTrack() const = 0; 00091 00092 }; 00093 #endif