Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef MultiTrackPointingKinematicConstraint_H
0002 #define MultiTrackPointingKinematicConstraint_H
0003 
0004 #include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h"
0005 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h"
0006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0007 
0008 /**
0009  *  Topological constraint making a momentum vector to point to
0010  *  the given location in space.
0011  *  Example: if b-meson momentum is reconstructed at b-meson decay position
0012  *  (secondary vertex), making reconstructed momentum be in parallel to the link from primary 
0013  *  vertex to secondary vertex.
0014  *
0015  * 
0016  *  Kirill Prokofiev, March 2004
0017  *  MultiTrack version including propagation to linearization point: Lars Perchalla, Philip Sauerland, Dec 2009
0018  */
0019 //mother constructed from daughters. including propagation in field.
0020 
0021 class MultiTrackPointingKinematicConstraint : public MultiTrackKinematicConstraint {
0022 public:
0023   MultiTrackPointingKinematicConstraint(GlobalPoint& ref) : refPoint(ref) {}
0024 
0025   /**
0026      * Returns a vector of values of constraint
0027      * equations at the point where the input
0028      * particles are defined.
0029      */
0030   AlgebraicVector value(const std::vector<KinematicState>& states, const GlobalPoint& point) const override;
0031 
0032   /**
0033      * Returns a matrix of derivatives of
0034      * constraint equations w.r.t. 
0035      * particle parameters
0036      */
0037   AlgebraicMatrix parametersDerivative(const std::vector<KinematicState>& states,
0038                                        const GlobalPoint& point) const override;
0039 
0040   /**
0041      * Returns a matrix of derivatives of
0042      * constraint equations w.r.t. 
0043      * vertex position
0044      */
0045   AlgebraicMatrix positionDerivative(const std::vector<KinematicState>& states,
0046                                      const GlobalPoint& point) const override;
0047 
0048   /**
0049      * Number of equations per track used for the fit
0050      */
0051   int numberOfEquations() const override;
0052 
0053   MultiTrackPointingKinematicConstraint* clone() const override {
0054     return new MultiTrackPointingKinematicConstraint(*this);
0055   }
0056 
0057 private:
0058   GlobalPoint refPoint;
0059 };
0060 #endif