CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/RecoVertex/KinematicFit/interface/CombinedKinematicConstraint.h

Go to the documentation of this file.
00001 #ifndef CombinedKinematicConstraint_H
00002 #define CombinedKinematicConstraint_H
00003 
00004 #include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h"
00005 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h"
00006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
00007 #include "RecoVertex/VertexPrimitives/interface/VertexException.h"
00008 
00020 class CombinedKinematicConstraint : public MultiTrackKinematicConstraint{
00021         
00022 public:
00023         CombinedKinematicConstraint(std::vector<MultiTrackKinematicConstraint* > constraintVector):constraints(constraintVector){
00024                 if(constraints.size()<1) throw VertexException("CombinedKinematicConstraint::<1 constraints passed.");
00025         }
00026         
00032         virtual AlgebraicVector  value(const std::vector<KinematicState> states, const GlobalPoint& point) const;
00033         
00039         virtual AlgebraicMatrix parametersDerivative(const std::vector<KinematicState> states, const GlobalPoint& point) const;
00040         
00046         virtual AlgebraicMatrix positionDerivative(const std::vector<KinematicState> states, const GlobalPoint& point) const;
00047         
00051         virtual int numberOfEquations() const;
00052         
00053         virtual CombinedKinematicConstraint * clone()const
00054         {
00055                 return new CombinedKinematicConstraint(*this);
00056         }
00057         
00058 private:
00059         std::vector<MultiTrackKinematicConstraint* > constraints;
00060         
00061 };
00062 #endif