00001 #ifndef TwoTrackMassKinematicConstraint_H 00002 #define TwoTrackMassKinematicConstraint_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" 00006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00007 #include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" 00008 00021 class TwoTrackMassKinematicConstraint : public MultiTrackKinematicConstraint{ 00022 00023 public: 00024 TwoTrackMassKinematicConstraint(ParticleMass& ms):mass(ms) 00025 {} 00026 00027 00033 virtual AlgebraicVector value(const vector<KinematicState> states, 00034 const GlobalPoint& point) const; 00035 00036 00042 virtual AlgebraicMatrix parametersDerivative(const vector<KinematicState> states, 00043 const GlobalPoint& point) const; 00044 00050 virtual AlgebraicMatrix positionDerivative(const vector<KinematicState> states, 00051 const GlobalPoint& point) const; 00052 00056 virtual int numberOfEquations() const; 00057 00058 virtual TwoTrackMassKinematicConstraint * clone()const 00059 {return new TwoTrackMassKinematicConstraint(*this);} 00060 00061 private: 00062 00063 ParticleMass mass; 00064 00065 }; 00066 #endif