00001 #ifndef MultiTrackVertexLinkKinematicConstraint_H 00002 #define MultiTrackVertexLinkKinematicConstraint_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" 00006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00007 00015 //mother constructed from daughters. including propagation in field. 00016 00017 class MultiTrackVertexLinkKinematicConstraint : public MultiTrackKinematicConstraint 00018 { 00019 public: 00020 MultiTrackVertexLinkKinematicConstraint(GlobalPoint& ref):refPoint(ref) 00021 {} 00022 00028 virtual AlgebraicVector value(const std::vector<KinematicState> states, const GlobalPoint& point) const; 00029 00035 virtual AlgebraicMatrix parametersDerivative(const std::vector<KinematicState> states, const GlobalPoint& point) const; 00036 00042 virtual AlgebraicMatrix positionDerivative(const std::vector<KinematicState> states, const GlobalPoint& point) const; 00043 00047 virtual int numberOfEquations() const; 00048 00049 virtual MultiTrackVertexLinkKinematicConstraint * clone()const 00050 { 00051 return new MultiTrackVertexLinkKinematicConstraint(*this); 00052 } 00053 00054 private: 00055 GlobalPoint refPoint; 00056 00057 }; 00058 #endif