00001 #ifndef VertexKinematicConstraintT_H 00002 #define VertexKinematicConstraintT_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraintT.h" 00005 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00006 00014 class VertexKinematicConstraintT: public MultiTrackKinematicConstraintT<2,4> 00015 { 00016 00017 private: 00018 00019 typedef MultiTrackKinematicConstraintT<2,4> super; 00020 00021 // to be optimized 00022 00023 double a_i[2]; 00024 double novera[2], n[2],m[2],k[2], delta[2]; 00025 GlobalVector mom[2]; 00026 GlobalVector dpos[2]; 00027 00028 00029 public: 00030 00031 VertexKinematicConstraintT(); 00032 00033 virtual ~VertexKinematicConstraintT(); 00034 00035 // initialize the constraint so it can precompute common qualtities to the three next call 00036 virtual void init(const std::vector<KinematicState>& states, 00037 const GlobalPoint& point, const GlobalVector& mf); 00038 00039 00043 virtual int numberOfEquations() const; 00044 00045 virtual VertexKinematicConstraintT * clone()const 00046 {return new VertexKinematicConstraintT(*this);} 00047 00048 00049 private: 00055 virtual void fillValue() const; 00056 00062 virtual void fillParametersDerivative() const; 00063 00069 virtual void fillPositionDerivative() const; 00070 00071 00072 private: 00073 00074 }; 00075 #endif