CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoVertex/VertexPrimitives/interface/LinearizedTrackState.h

Go to the documentation of this file.
00001 #ifndef LinearizedTrackState_H
00002 #define LinearizedTrackState_H
00003 
00004 //#include "CommonReco/CommonVertex/interface/ImpactPointMeasurement.h"
00005 
00006 //#include "TrackingTools/TrajectoryState/interface/ProxyBase.h"
00007 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00008 #include "TrackingTools/TrajectoryState/interface/CopyUsingClone.h"
00009 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00010 #include "DataFormats/TrajectoryState/interface/TrackCharge.h"
00011 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00012 #include "Math/SMatrix.h"
00013 #include "DataFormats/CLHEP/interface/Migration.h"
00014 
00015 #include "RecoVertex/VertexPrimitives/interface/RefittedTrackState.h"
00016 #include <vector>
00017 
00036 template <unsigned int N>
00037 class LinearizedTrackState : public ReferenceCounted {
00038 
00039 public:
00040 
00041   typedef ROOT::Math::SVector<double,N> AlgebraicVectorN;
00042   typedef ROOT::Math::SVector<double,N-2> AlgebraicVectorM;
00043   typedef ROOT::Math::SMatrix<double,N,3,ROOT::Math::MatRepStd<double,N,3> > AlgebraicMatrixN3;
00044   typedef ROOT::Math::SMatrix<double,N,N-2,ROOT::Math::MatRepStd<double,N,N-2> > AlgebraicMatrixNM;
00045   typedef ROOT::Math::SMatrix<double,N-2,3,ROOT::Math::MatRepStd<double,N-2,3> > AlgebraicMatrixM3;
00046   typedef ROOT::Math::SMatrix<double,N,N,ROOT::Math::MatRepSym<double,N> > AlgebraicSymMatrixNN;
00047   typedef ROOT::Math::SMatrix<double,N-2,N-2,ROOT::Math::MatRepSym<double,N-2> > AlgebraicSymMatrixMM;
00048   typedef ROOT::Math::SMatrix<double,N+1,N+1,ROOT::Math::MatRepSym<double,N+1> > AlgebraicSymMatrixOO;
00049 
00050   typedef ReferenceCountingPointer<RefittedTrackState<N> > RefCountedRefittedTrackState;
00051 
00052   virtual ~LinearizedTrackState(){}
00053 
00058   virtual  ReferenceCountingPointer<LinearizedTrackState<N> > stateWithNewLinearizationPoint
00059     (const GlobalPoint & newLP) const = 0;
00060 
00063   virtual const GlobalPoint & linearizationPoint() const = 0;
00064 
00068   virtual const AlgebraicVectorN & constantTerm() const = 0;
00069 
00073   virtual const AlgebraicMatrixN3 & positionJacobian() const = 0;
00074 
00078   virtual const AlgebraicMatrixNM & momentumJacobian() const = 0;
00079 
00082   virtual const AlgebraicVectorN & parametersFromExpansion() const = 0;
00083 
00087   virtual AlgebraicVectorN predictedStateParameters() const = 0;
00088 
00092   virtual AlgebraicVectorM predictedStateMomentumParameters() const = 0;
00093 
00098   virtual AlgebraicSymMatrixNN predictedStateWeight(int & error) const = 0;
00099 
00103   virtual AlgebraicSymMatrixMM predictedStateMomentumError() const = 0;
00104 
00108   virtual AlgebraicSymMatrixNN predictedStateError() const = 0;
00109 
00110   virtual bool hasError() const = 0;
00111 
00112   virtual TrackCharge charge() const = 0;
00113 
00116 //   virtual ImpactPointMeasurement impactPointMeasurement() const = 0;
00117 
00118   virtual bool operator ==(LinearizedTrackState<N> & other) const = 0;
00119 
00123   virtual RefCountedRefittedTrackState createRefittedTrackState(
00124         const GlobalPoint & vertexPosition,
00125         const AlgebraicVectorM & vectorParameters,
00126         const AlgebraicSymMatrixOO & covarianceMatrix) const = 0;
00127 
00131   virtual AlgebraicVectorN refittedParamFromEquation(
00132         const RefCountedRefittedTrackState & theRefittedState) const = 0;
00133 
00134   virtual inline void checkParameters(AlgebraicVectorN & parameters) const
00135         {}
00136 
00137   virtual double weightInMixture() const = 0;
00138 
00139   virtual std::vector< ReferenceCountingPointer<LinearizedTrackState<N> > > components()
00140                                                                 const = 0;
00141 
00142   virtual reco::TransientTrack track() const = 0;
00143 
00144   virtual bool isValid() const { return true; }
00145 };
00146 
00147 #endif