CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/RecoVertex/VertexPrimitives/interface/RefittedTrackState.h

Go to the documentation of this file.
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