00001 #ifndef KinematicConstraint_H 00002 #define KinematicConstraint_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" 00006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00007 00022 class KinematicConstraint{ 00023 00024 00025 public: 00026 00031 KinematicConstraint() {} 00032 00033 virtual ~KinematicConstraint() {} 00034 00042 virtual pair<AlgebraicVector, AlgebraicVector> value(const AlgebraicVector& exPoint) const = 0; 00043 00044 virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const = 0; 00045 00046 00053 virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const = 0; 00054 00055 virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const = 0; 00056 00065 virtual AlgebraicVector deviations(int nStates) const = 0; 00066 00073 virtual int numberOfEquations() const = 0; 00074 00078 virtual KinematicConstraint * clone() const = 0; 00079 00080 }; 00081 00082 #endif