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