00001 #ifndef MomentumKinematicConstraint_H 00002 #define MomentumKinematicConstraint_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" 00005 00006 00016 class MomentumKinematicConstraint : public KinematicConstraint 00017 { 00018 00019 public: 00020 00025 MomentumKinematicConstraint(const AlgebraicVector& momentum, 00026 const AlgebraicVector& dev); 00027 00032 virtual pair<AlgebraicVector,AlgebraicVector> value(const AlgebraicVector& exPoint) const; 00033 00034 virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; 00035 00040 virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; 00041 00042 virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; 00043 00044 virtual AlgebraicVector deviations(int nStates) const; 00045 00050 virtual int numberOfEquations() const; 00051 00052 virtual MomentumKinematicConstraint * clone() const 00053 {return new MomentumKinematicConstraint(*this);} 00054 00055 private: 00056 00057 AlgebraicVector mm; 00058 AlgebraicVector dd; 00059 00060 }; 00061 00062 00063 #endif