CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/RecoVertex/GaussianSumVertexFit/interface/PerigeeMultiLTS.h

Go to the documentation of this file.
00001 #ifndef PerigeeMultiLTS_H
00002 #define PerigeeMultiLTS_H
00003 
00004 #include "RecoVertex/VertexPrimitives/interface/LinearizedTrackState.h"
00005 #include "RecoVertex/VertexTools/interface/LinearizedTrackStateFactory.h"
00006 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00007 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00008 #include <vector>
00009 
00014 class PerigeeMultiLTS : public LinearizedTrackState<5> {
00015 
00016 
00017 public:
00018 
00019   typedef ReferenceCountingPointer<LinearizedTrackState<5> > RefCountedLinearizedTrackState;
00020 
00024   friend class MultiPerigeeLTSFactory;
00025 
00031   virtual  RefCountedLinearizedTrackState stateWithNewLinearizationPoint
00032         (const GlobalPoint & newLP) const;
00033 
00034 
00038   const GlobalPoint & linearizationPoint() const { return theLinPoint; }
00039 
00040   virtual reco::TransientTrack track() const { return theTrack; }
00041 
00046   const TrajectoryStateOnSurface state() const { return theTSOS; }
00047 
00051   virtual const AlgebraicVectorN & constantTerm() const;
00052 
00056   virtual const AlgebraicMatrixN3 & positionJacobian() const;
00057 
00061   virtual const AlgebraicMatrixNM & momentumJacobian() const;
00062 
00066   virtual const AlgebraicVectorN & parametersFromExpansion() const;
00067 
00072   const TrajectoryStateClosestToPoint & predictedState() const;
00073 
00077   AlgebraicVectorN predictedStateParameters() const;
00078 
00082   virtual AlgebraicVectorM predictedStateMomentumParameters() const;
00083 
00088   AlgebraicSymMatrixNN predictedStateWeight(int & error) const;
00089 
00093   AlgebraicSymMatrixNN predictedStateError() const;
00094 
00098   AlgebraicSymMatrixMM predictedStateMomentumError() const;
00099 
00100   TrackCharge charge() const {return theCharge;}
00101 
00102   bool hasError() const;
00103 
00104   bool operator ==(LinearizedTrackState<5>& other)const;
00105 
00109   virtual RefCountedRefittedTrackState createRefittedTrackState(
00110         const GlobalPoint & vertexPosition,
00111         const AlgebraicVectorM & vectorParameters,
00112         const AlgebraicSymMatrixOO & covarianceMatrix) const;
00113 
00114   virtual AlgebraicVector5 refittedParamFromEquation(
00115         const RefCountedRefittedTrackState & theRefittedState) const;
00116 
00117   virtual void inline checkParameters(AlgebraicVector5 & parameters) const;
00123   virtual double weightInMixture() const {return theTSOS.weight();}
00124 
00129   virtual std::vector<ReferenceCountingPointer<LinearizedTrackState<5> > > components()
00130                                 const {return ltComp;}
00131 
00132 private:
00133 
00140    PerigeeMultiLTS(const GlobalPoint & linP, const reco::TransientTrack & track,
00141         const TrajectoryStateOnSurface& tsos);
00142 
00145   void prepareCollapsedState() const;
00146 
00147   GlobalPoint theLinPoint;
00148   reco::TransientTrack theTrack;
00149 
00150 
00151   const TrajectoryStateOnSurface theTSOS;
00152   std::vector<RefCountedLinearizedTrackState> ltComp;
00153   mutable RefCountedLinearizedTrackState collapsedStateLT;
00154   LinearizedTrackStateFactory theLTSfactory;
00155   TrackCharge theCharge;
00156   mutable bool collapsedStateAvailable;
00157 };
00158 
00159 #endif