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