CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/RecoVertex/KinematicFitPrimitives/interface/MultipleKinematicConstraint.h

Go to the documentation of this file.
00001 #ifndef MultipleKinematicConstraint_H
00002 #define MultipleKinematicConstraint_H
00003 
00004 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h"
00005 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h"
00006 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h"
00007 
00008 
00016 class MultipleKinematicConstraint : public KinematicConstraint
00017 {
00018 public:
00019 
00020   MultipleKinematicConstraint()
00021   {em = true;}
00022 
00023 
00028   std::pair<AlgebraicVector,AlgebraicVector> value(const AlgebraicVector& exPoint) const;
00029  
00030   std::pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const;
00031   
00037   std::pair<AlgebraicVector, AlgebraicVector> value(const std::vector<RefCountedKinematicParticle> par) const;
00038 
00039   std::pair<AlgebraicMatrix, AlgebraicVector> derivative(const std::vector<RefCountedKinematicParticle> par) const;
00040 
00041   int numberOfEquations() const;
00042   
00047   void addConstraint(KinematicConstraint * newConst) const; 
00048 
00049   AlgebraicVector deviations(int nStates) const;
00050   
00051   bool isEmpty() const
00052   {return em;}
00053   
00054   MultipleKinematicConstraint * clone() const
00055   {return new MultipleKinematicConstraint(*this);}
00056   
00057 private:
00058 
00059   mutable std::vector<KinematicConstraint *>  cts;
00060   
00061   mutable bool em;
00062 };
00063 #endif