Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:11

0001 #ifndef VertexKinematicConstraintT_H
0002 #define VertexKinematicConstraintT_H
0003 
0004 #include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraintT.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 VertexKinematicConstraintT : public MultiTrackKinematicConstraintT<2, 4> {
0015 private:
0016   typedef MultiTrackKinematicConstraintT<2, 4> super;
0017 
0018   // to be optimized
0019 
0020   double a_i[2];
0021   double novera[2], n[2], m[2], k[2], delta[2];
0022   GlobalVector mom[2];
0023   GlobalVector dpos[2];
0024 
0025 public:
0026   VertexKinematicConstraintT();
0027 
0028   ~VertexKinematicConstraintT() override;
0029 
0030   // initialize the constraint so it can precompute common qualtities to the three next call
0031   void init(const std::vector<KinematicState>& states, const GlobalPoint& point, const GlobalVector& mf) override;
0032 
0033   /**
0034  * Number of equations per track used for the fit
0035  */
0036   int numberOfEquations() const override;
0037 
0038   VertexKinematicConstraintT* clone() const override { return new VertexKinematicConstraintT(*this); }
0039 
0040 private:
0041   /**
0042  * fills a vector of values of constraint
0043  * equations at the point where the input
0044  * particles are defined.
0045  */
0046   void fillValue() const override;
0047 
0048   /**
0049  * fills a matrix of derivatives of
0050  * constraint equations w.r.t. 
0051  * particle parameters
0052  */
0053   void fillParametersDerivative() const override;
0054 
0055   /**
0056  * fills a matrix of derivatives of
0057  * constraint equations w.r.t. 
0058  * vertex position
0059  */
0060   void fillPositionDerivative() const override;
0061 
0062 private:
0063 };
0064 #endif