00001 #ifndef SingleTrackVertexConstraint_H 00002 #define SingleTrackVertexConstraint_H 00003 00004 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexUpdator.h" 00005 #include "RecoVertex/VertexPrimitives/interface/VertexSmoother.h" 00006 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexTrackUpdator.h" 00007 00008 #include "RecoVertex/VertexTools/interface/LinearizedTrackStateFactory.h" 00009 #include "RecoVertex/VertexTools/interface/VertexTrackFactory.h" 00010 #include "TrackingTools/TransientTrack/interface/TransientTrackFromFTSFactory.h" 00011 00020 class SingleTrackVertexConstraint { 00021 00022 public: 00023 00024 typedef std::pair<reco::TransientTrack, float> TrackFloatPair; 00029 TrackFloatPair constrain(const reco::TransientTrack & track, 00030 const GlobalPoint& priorPos, const GlobalError& priorError) const; 00031 00036 TrackFloatPair constrain(const FreeTrajectoryState & fts, 00037 const GlobalPoint& priorPos, const GlobalError& priorError) const; 00038 00043 TrackFloatPair constrain(const reco::TransientTrack & track, 00044 const VertexState priorVertex) const; 00045 00049 TrackFloatPair constrain(const reco::TransientTrack & track, 00050 const reco::BeamSpot & spot ) const; 00051 00052 00056 TrackFloatPair constrain(const FreeTrajectoryState & fts, 00057 const reco::BeamSpot & spot) const; 00058 00059 00060 00061 SingleTrackVertexConstraint * clone() const { 00062 return new SingleTrackVertexConstraint(* this); 00063 } 00064 00065 private: 00066 00067 KalmanVertexUpdator<5> vertexUpdator; 00068 KalmanVertexTrackUpdator<5> theVertexTrackUpdator; 00069 00070 LinearizedTrackStateFactory theLTrackFactory; 00071 VertexTrackFactory<5> theVTrackFactory; 00072 TransientTrackFromFTSFactory ttFactory; 00073 00074 }; 00075 00076 #endif