CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/RecoVertex/VertexTools/interface/PerigeeRefittedTrackState.h

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