Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef LagrangeParentParticleFitter_H
0002 #define LagrangeParentParticleFitter_H
0003 
0004 #include "RecoVertex/KinematicFit/interface/ParentParticleFitter.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 
0007 /**
0008  * KinematicParticle refit via LMS minimization with Lagrange multipliers
0009  * method. Tunable for number of iterations and stopping condition.
0010  * Every new iteration
0011  * takes the result of previous iteration as a linearization point.
0012  * This is only needed in case of nonlinear constraints. In the
0013  * linear case result will be reached after the first step.
0014  * Stopping condition at the moment: sum of abs. constraint
0015  * equations values at given point
0016  */
0017 
0018 class LagrangeParentParticleFitter : public ParentParticleFitter {
0019 public:
0020   LagrangeParentParticleFitter();
0021 
0022   ~LagrangeParentParticleFitter() override {}
0023 
0024   /**
0025    * Configuration through PSet: number of iterations(maxDistance) and
0026    * stopping condition (maxNbrOfIterations)
0027    */
0028 
0029   void setParameters(const edm::ParameterSet& pSet);
0030 
0031   /**
0032  * Refit method taking KinematicConstraint and vector
0033  * of trees as imput. Only top particles of corresponding trees are
0034  * refitted, vertex is not created. Number of trees should be one
0035  * (single track refit) or greater (multiple track refit). Some
0036  * constraints may not work with single tracks (back to back for ex.)
0037  */
0038   std::vector<RefCountedKinematicTree> fit(const std::vector<RefCountedKinematicTree>& trees,
0039                                            KinematicConstraint* cs) const override;
0040 
0041   LagrangeParentParticleFitter* clone() const override { return new LagrangeParentParticleFitter(*this); }
0042 
0043 private:
0044   void defaultParameters();
0045 
0046   float theMaxDiff;
0047   int theMaxStep;
0048 };
0049 #endif