Go to the documentation of this file.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 std::pair<AlgebraicVector, AlgebraicVector> value(const AlgebraicVector& exPoint) const = 0;
00043
00044 virtual std::pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const = 0;
00045
00046
00053 virtual std::pair<AlgebraicVector, AlgebraicVector> value(const std::vector<RefCountedKinematicParticle> par) const = 0;
00054
00055 virtual std::pair<AlgebraicMatrix, AlgebraicVector> derivative(const std::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