CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2_patch1/src/RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h

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