Belle II Software  release-08-01-10
PxPyPzMFitObject.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #ifndef __PXPYPZMFITOBJECT_H
10 #define __PXPYPZMFITOBJECT_H
11 
12 #include "analysis/OrcaKinFit/ParticleFitObject.h"
13 
14 // CLHEP
15 #include <CLHEP/Matrix/Matrix.h>
16 #include <CLHEP/Matrix/SymMatrix.h>
17 #include <CLHEP/Vector/LorentzVector.h>
18 
19 namespace Belle2 {
24  namespace OrcaKinFit {
25 
27  public:
28 
29  PxPyPzMFitObject(CLHEP::HepLorentzVector& particle, const CLHEP::HepSymMatrix& covmatrix);
30 
31  // Copy constructor
33  );
34  // Assignment
36  );
37 
38  virtual ~PxPyPzMFitObject();
39 
40  // Return a new copy of itself
41  virtual PxPyPzMFitObject* copy() const override;
42 
43  // Assign from anther object, if of same type
44  virtual PxPyPzMFitObject& assign(const BaseFitObject& source
45  ) override;
46 
47  // Get name of parameter ilocal
48  virtual const char* getParamName(int ilocal
49  ) const override;
50 
51  // Read values from global vector, readjust vector; return: significant change
52  virtual bool updateParams(double p[],
53  int idim
54  ) override;
55 
56  // these depend on actual parametrisation!
57  virtual double getDPx(int ilocal) const override;
58  virtual double getDPy(int ilocal) const override;
59  virtual double getDPz(int ilocal) const override;
60  virtual double getDE(int ilocal) const override;
61 
62  virtual double getFirstDerivative_Meta_Local(int iMeta, int ilocal,
63  int metaSet) const override; // derivative of intermediate variable iMeta wrt local parameter ilocal
64  virtual double getSecondDerivative_Meta_Local(int iMeta, int ilocal, int jlocal,
65  int metaSet) const override; // derivative of intermediate variable iMeta wrt local parameter ilocal
66 
67  virtual int getNPar() const override {return NPAR;}
68 
69  protected:
70 
71  void updateCache() const override;
72 
73  mutable bool cachevalid;
74 
75  mutable double chi2,
76  dEdpx, dEdpy, dEdpz,
77  dE2dpxdpx, dE2dpxdpy, dE2dpxdpz,
78  dE2dpydpy, dE2dpydpz,
79  dE2dpzdpz;
80 
81  enum {NPAR = 3};
82 
83  };
84 
85  }// end OrcaKinFit namespace
87 } // end Belle2 namespace
88 
89 
90 
91 #endif // __PXPYPZMFITOBJECT_H
virtual double getDPx(int ilocal) const override
Return d p_x / d par_ilocal (derivative of px w.r.t. local parameter ilocal)
virtual double getDPy(int ilocal) const override
Return d p_y / d par_ilocal (derivative of py w.r.t. local parameter ilocal)
virtual int getNPar() const override
Get total number of parameters of this FitObject.
virtual PxPyPzMFitObject & assign(const BaseFitObject &source) override
Assign from anther object, if of same type.
virtual double getDE(int ilocal) const override
Return d E / d par_ilocal (derivative of E w.r.t. local parameter ilocal)
virtual PxPyPzMFitObject * copy() const override
Return a new copy of itself.
virtual const char * getParamName(int ilocal) const override
Get name of parameter ilocal.
virtual double getDPz(int ilocal) const override
Return d p_z / d par_ilocal (derivative of pz w.r.t. local parameter ilocal)
virtual bool updateParams(double p[], int idim) override
Read values from global vector, readjust vector; return: significant change.
PxPyPzMFitObject & operator=(const PxPyPzMFitObject &rhs)
Abstract base class for different kinds of events.