00001 #ifndef ColinearityKinematicConstraint_H 00002 #define ColinearityKinematicConstraint_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" 00006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00007 00016 class ColinearityKinematicConstraint : public MultiTrackKinematicConstraint{ 00017 00018 public: 00019 00020 enum ConstraintDim {Phi, PhiTheta}; 00021 00022 ColinearityKinematicConstraint(ConstraintDim dim = Phi); 00023 00024 00030 virtual AlgebraicVector value(const std::vector<KinematicState> states, 00031 const GlobalPoint& point) const; 00032 00033 00039 virtual AlgebraicMatrix parametersDerivative(const std::vector<KinematicState> states, 00040 const GlobalPoint& point) const; 00041 00047 virtual AlgebraicMatrix positionDerivative(const std::vector<KinematicState> states, 00048 const GlobalPoint& point) const; 00049 00053 virtual int numberOfEquations() const {return size;} 00054 00055 virtual ColinearityKinematicConstraint * clone()const 00056 {return new ColinearityKinematicConstraint(*this);} 00057 00058 private: 00059 ConstraintDim dimension; 00060 unsigned int size; 00061 00062 }; 00063 #endif