CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/RecoVertex/GaussianSumVertexFit/interface/MultiRefittedTS.h

Go to the documentation of this file.
00001 #ifndef MultiRefittedTS_H
00002 #define MultiRefittedTS_H
00003 
00004 #include "RecoVertex/VertexPrimitives/interface/RefittedTrackState.h"
00005 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00006 #include "RecoVertex/VertexPrimitives/interface/LinearizedTrackState.h"
00007 #include "DataFormats/GeometrySurface/interface/Surface.h"
00008 
00015 class Surface;
00016 
00017 class MultiRefittedTS : public RefittedTrackState<5> {
00018 
00019 public:
00020 
00021   typedef ReferenceCountingPointer<RefittedTrackState<5> > RefCountedRefittedTrackState;
00022   typedef ReferenceCountingPointer<LinearizedTrackState<5> > RefCountedLinearizedTrackState;
00023 
00028   MultiRefittedTS(const std::vector<RefCountedRefittedTrackState> & prtsComp,
00029         const Surface & referenceSurface);
00030 
00036   MultiRefittedTS(const std::vector<RefCountedRefittedTrackState> & prtsComp,
00037         const GlobalPoint & referencePosition);
00038 
00039   virtual ~MultiRefittedTS(){}
00040 
00046   virtual FreeTrajectoryState freeTrajectoryState() const;
00047 
00051   virtual TrajectoryStateOnSurface trajectoryStateOnSurface(
00052                 const Surface & surface) const;
00053 
00058   virtual TrajectoryStateOnSurface trajectoryStateOnSurface(
00059                 const Surface & surface, const Propagator & propagator) const;
00060 
00066   virtual reco::TransientTrack transientTrack() const;
00067 
00073   virtual AlgebraicVectorN  parameters() const;
00074 
00080   virtual AlgebraicSymMatrixNN  covariance() const;
00081 
00087   virtual GlobalPoint position() const;
00088 
00095   virtual AlgebraicVectorM momentumVector() const;
00096 
00097   virtual double weight() const;
00098 
00099   virtual std::vector<ReferenceCountingPointer<RefittedTrackState<5> > > components() const
00100   {
00101     return theComponents;
00102   }
00103 
00112   virtual ReferenceCountingPointer<RefittedTrackState<5> > stateWithNewWeight
00113         (const double newWeight) const;
00114 
00115 
00116 private:
00117 
00118   void computeFreeTrajectoryState() const;
00119 
00120 
00121   typedef std::vector<RefCountedRefittedTrackState > RTSvector;
00122 
00123   mutable RTSvector theComponents;
00124   mutable bool totalWeightAvailable, ftsAvailable;
00125   mutable double totalWeight;
00126   mutable FreeTrajectoryState fts;
00127   const GlobalPoint refPosition;
00128   ConstReferenceCountingPointer<Surface> refSurface;
00129   const bool surf;
00130 
00131 };
00132 #endif