Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 14:28:16

0001 #ifndef MultiTrackKinematicConstraint_H
0002 #define MultiTrackKinematicConstraint_H
0003 
0004 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h"
0005 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h"
0006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0007 
0008 /**
0009  * Pure abstract class implementing constraint application 
0010  * on multiple tracks (back to back, collinearity etc.)
0011  * To be used by KinematicConstraindeVertexFitter only
0012  * Class caches the information about calculation of
0013  * of constraint equation derivatives and values at given
0014  * linearization point. Point should be of 7*n+3 dimensions
0015  * Where n - number of particles. 7 - parametrization for 
0016  * particles is (x,y,z,p_x,p_y,p_z,m), for vertex (x_v,y_v,z_v)
0017  * Fitter usually takes current parameters as the first step point
0018  * and the change it to the result of the first iteration.
0019  *
0020  * Kirill Prokofiev, October 2003
0021  */
0022 
0023 class MultiTrackKinematicConstraint {
0024 public:
0025   /**
0026  *  Default constructor and destructor
0027  */
0028 
0029   MultiTrackKinematicConstraint() {}
0030 
0031   virtual ~MultiTrackKinematicConstraint() {}
0032 
0033   /**
0034  * Methods making vector of values
0035  * and derivative matrices with
0036  * respect to vertex position and
0037  * particle parameters.
0038  * Input paramters are put into one vector: 
0039  * (Vertex position, particle_parameters_1,..., particle_parameters_n)
0040  */
0041   virtual AlgebraicVector value(const std::vector<KinematicState>&, const GlobalPoint&) const = 0;
0042 
0043   virtual AlgebraicMatrix parametersDerivative(const std::vector<KinematicState>&, const GlobalPoint&) const = 0;
0044 
0045   virtual AlgebraicMatrix positionDerivative(const std::vector<KinematicState>&, const GlobalPoint&) const = 0;
0046 
0047   virtual int numberOfEquations() const = 0;
0048 
0049   virtual MultiTrackKinematicConstraint* clone() const = 0;
0050 };
0051 
0052 #endif