00001 #ifndef MultiTrackMassKinematicConstraint_H 00002 #define MultiTrackMassKinematicConstraint_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/KinematicFitPrimitives/interface/ParticleMass.h" 00008 00013 class MultiTrackMassKinematicConstraint : public MultiTrackKinematicConstraint{ 00014 00015 public: 00022 MultiTrackMassKinematicConstraint(const ParticleMass& theMass, const unsigned int nbrParticles) 00023 : mass(theMass), nPart(nbrParticles) 00024 {} 00025 00026 00032 virtual AlgebraicVector value(const std::vector<KinematicState> states, 00033 const GlobalPoint& point) const; 00034 00035 00041 virtual AlgebraicMatrix parametersDerivative(const std::vector<KinematicState> states, 00042 const GlobalPoint& point) const; 00043 00049 virtual AlgebraicMatrix positionDerivative(const std::vector<KinematicState> states, 00050 const GlobalPoint& point) const; 00051 00055 virtual int numberOfEquations() const {return 1;} 00056 00057 virtual MultiTrackMassKinematicConstraint * clone() const 00058 {return new MultiTrackMassKinematicConstraint(*this);} 00059 00060 private: 00061 00062 const ParticleMass mass; 00063 const unsigned int nPart; 00064 00065 }; 00066 #endif