Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:23:23

0001 #ifndef VertexKinematicConstraint_H
0002 #define VertexKinematicConstraint_H
0003 
0004 #include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h"
0005 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0006 
0007 /**
0008  * Class implementing the vertexing constraint 
0009  * for extended cartesian parametrization
0010  * (x,y,z,p_x,p_y,p_z,m). The equations and
0011  * derivatives in general follow the P.Avery's
0012  * "Applied Fitting Theory-VI" CBX 98-37
0013  */
0014 class VertexKinematicConstraint : public MultiTrackKinematicConstraint {
0015 public:
0016   VertexKinematicConstraint();
0017 
0018   ~VertexKinematicConstraint() override;
0019 
0020   /**
0021  * Returns a vector of values of constraint
0022  * equations at the point where the input
0023  * particles are defined.
0024  */
0025   AlgebraicVector value(const std::vector<KinematicState>& states, const GlobalPoint& point) const override;
0026 
0027   /**
0028  * Returns a matrix of derivatives of
0029  * constraint equations w.r.t. 
0030  * particle parameters
0031  */
0032   AlgebraicMatrix parametersDerivative(const std::vector<KinematicState>& states,
0033                                        const GlobalPoint& point) const override;
0034 
0035   /**
0036  * Returns a matrix of derivatives of
0037  * constraint equations w.r.t. 
0038  * vertex position
0039  */
0040   AlgebraicMatrix positionDerivative(const std::vector<KinematicState>& states,
0041                                      const GlobalPoint& point) const override;
0042   /**
0043  * Number of equations per track used for the fit
0044  */
0045   int numberOfEquations() const override;
0046 
0047   VertexKinematicConstraint* clone() const override { return new VertexKinematicConstraint(*this); }
0048 
0049 private:
0050 };
0051 #endif