Belle II Software  release-06-02-00
MassFourCFitKFit.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 #pragma once
10 #include <analysis/VertexFitting/KFit/KFitConst.h>
11 #include <analysis/VertexFitting/KFit/KFitError.h>
12 #include <analysis/VertexFitting/KFit/KFitBase.h>
13 #include <TLorentzVector.h>
14 
15 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
17 #endif
18 
19 namespace Belle2 {
25  namespace analysis {
26 
30  class MassFourCFitKFit : public KFitBase {
31  public:
36 
37 
38  public:
39 
40 
46  enum KFitError::ECode addMassConstraint(const double m, std::vector<unsigned>& childTrackId);
47 
52  enum KFitError::ECode setVertex(const HepPoint3D& v);
57  enum KFitError::ECode setVertexError(const CLHEP::HepSymMatrix& e);
62  enum KFitError::ECode setInvariantMass(const double m);
67  enum KFitError::ECode setFourMomentum(const TLorentzVector& m);
72  enum KFitError::ECode setFlagAtDecayPoint(const bool flag);
77  enum KFitError::ECode fixMass(void);
82  enum KFitError::ECode unfixMass(void);
87  enum KFitError::ECode setTrackVertexError(const CLHEP::HepMatrix& e);
92  enum KFitError::ECode setCorrelation(const CLHEP::HepMatrix& m) override;
93  enum KFitError::ECode setZeroCorrelation(void) override;
94 
95 
100  const HepPoint3D getVertex(const int flag = KFitConst::kAfterFit) const;
105  const CLHEP::HepSymMatrix getVertexError(const int flag = KFitConst::kAfterFit) const;
109  double getInvariantMass(void) const;
113  bool getFlagAtDecayPoint(void) const;
117  bool getFlagFitWithVertex(void) const;
118  double getCHIsq(void) const override;
124  const CLHEP::HepMatrix getTrackVertexError(const int id, const int flag = KFitConst::kAfterFit) const;
125  double getTrackCHIsq(const int id) const override;
126  const CLHEP::HepMatrix getCorrelation(const int id1, const int id2,
127  const int flag = KFitConst::kAfterFit) const override;
128 
129 
130  public:
134  enum KFitError::ECode doFit(void);
135 
140  enum KFitError::ECode updateMother(Particle* mother);
141 
142  private:
143  enum KFitError::ECode prepareInputMatrix(void) override;
144  enum KFitError::ECode prepareInputSubMatrix(void) override;
145  enum KFitError::ECode prepareCorrelation(void) override;
146  enum KFitError::ECode prepareOutputMatrix(void) override;
147  enum KFitError::ECode makeCoreMatrix(void) override;
148  enum KFitError::ECode calculateNDF(void) override;
149 
150 
151  private:
155  CLHEP::HepSymMatrix m_BeforeVertexError;
157  std::vector<CLHEP::HepMatrix> m_BeforeTrackVertexError;
158 
162  CLHEP::HepSymMatrix m_AfterVertexError;
164  std::vector<CLHEP::HepMatrix> m_AfterTrackVertexError;
165 
172 
175 
177  TLorentzVector m_FourMomentum;
178 
180  std::vector<int> m_IsFixMass;
181 
184 
186  std::vector<double> m_ConstraintMassList;
187 
189  std::vector<std::pair<int, int>> m_ConstraintMassChildLists;
190  };
191 
192  } // namespace analysis
193 
195 } // namespace Belle2
Class to store reconstructed particles.
Definition: Particle.h:74
KFitBase is a base class for kinematical fitters.
Definition: KFitBase.h:37
ECode
ECode is a error code enumerate.
Definition: KFitError.h:34
MassFourCFitKFit is a derived class from KFitBase to perform mass and 4 momentum-constraint kinematic...
enum KFitError::ECode setZeroCorrelation(void) override
Indicate no correlation between tracks.
enum KFitError::ECode setVertex(const HepPoint3D &v)
Set an initial vertex position for the mass-four-momentum-constraint fit.
bool m_FlagTrackVertexError
Flag to indicate if the vertex error matrix of the child particle is preset.
bool m_FlagAtDecayPoint
Flag controlled by setFlagAtDecayPoint().
bool getFlagAtDecayPoint(void) const
Get a flag if to constraint at the decay point in the mass-four-momentum-constraint fit.
enum KFitError::ECode addMassConstraint(const double m, std::vector< unsigned > &childTrackId)
Set an invariant mass of daughter particle for the mass-four-momentum-constraint fit.
enum KFitError::ECode prepareInputMatrix(void) override
Build grand matrices for minimum search from input-track properties.
bool getFlagFitWithVertex(void) const
Get a flag if the fit is allowed with moving the vertex position.
enum KFitError::ECode calculateNDF(void) override
Calculate an NDF of the fit.
double getCHIsq(void) const override
Get a chi-square of the fit.
enum KFitError::ECode setFlagAtDecayPoint(const bool flag)
Set a flag if to constraint at the decay point in the mass-four-momentum-constraint fit.
enum KFitError::ECode setTrackZeroVertexError(void)
Indicate no vertex uncertainty in the child particle in the addTrack'ed order.
std::vector< int > m_IsFixMass
Array of flags whether the track property is fixed at the mass.
enum KFitError::ECode setFourMomentum(const TLorentzVector &m)
Set an 4 Momentum for the mass-four-constraint fit.
enum KFitError::ECode updateMother(Particle *mother)
Update mother particle.
enum KFitError::ECode unfixMass(void)
Tell the object to unfix the last added track property at the invariant mass.
enum KFitError::ECode prepareInputSubMatrix(void) override
Build sub-matrices for minimum search from input-track properties.
bool m_FlagFitIncludingVertex
Flag to indicate if the fit is allowed with moving the vertex position.
~MassFourCFitKFit(void)
Destruct the object.
enum KFitError::ECode doFit(void)
Perform a mass-four-momentum-constraint fit.
double m_InvariantMass
Invariant mass.
enum KFitError::ECode setInvariantMass(const double m)
Set an invariant mass for the mass-four-momentum-constraint fit.
std::vector< CLHEP::HepMatrix > m_BeforeTrackVertexError
array of vertex error matrices before the fit.
enum KFitError::ECode makeCoreMatrix(void) override
Build matrices using the kinematical constraint.
enum KFitError::ECode setVertexError(const CLHEP::HepSymMatrix &e)
Set an initial vertex error matrix for the mass-four-momentum-constraint fit.
enum KFitError::ECode setTrackVertexError(const CLHEP::HepMatrix &e)
Set a vertex error matrix of the child particle in the addTrack'ed order.
enum KFitError::ECode prepareCorrelation(void) override
Build a grand correlation matrix from input-track properties.
HepPoint3D m_AfterVertex
Vertex position after the fit.
enum KFitError::ECode setCorrelation(const CLHEP::HepMatrix &m) override
Set a correlation matrix.
std::vector< std::pair< int, int > > m_ConstraintMassChildLists
Daughter track id of constrainted particle.
std::vector< CLHEP::HepMatrix > m_AfterTrackVertexError
array of vertex error matrices after the fit.
const CLHEP::HepMatrix getCorrelation(const int id1, const int id2, const int flag=KFitConst::kAfterFit) const override
Get a correlation matrix between two tracks.
double getTrackCHIsq(const int id) const override
Get a chi-square of the track.
TLorentzVector m_FourMomentum
Four Momentum.
const CLHEP::HepSymMatrix getVertexError(const int flag=KFitConst::kAfterFit) const
Get a vertex error matrix.
MassFourCFitKFit()
Construct an object with no argument.
const HepPoint3D getVertex(const int flag=KFitConst::kAfterFit) const
Get a vertex position.
std::vector< double > m_ConstraintMassList
constrainted mass
const CLHEP::HepMatrix getTrackVertexError(const int id, const int flag=KFitConst::kAfterFit) const
Get a vertex error matrix of the track.
CLHEP::HepSymMatrix m_AfterVertexError
Vertex error matrix after the fit.
enum KFitError::ECode prepareOutputMatrix(void) override
Build an output error matrix.
CLHEP::HepSymMatrix m_BeforeVertexError
Vertex error matrix before the fit.
HepPoint3D m_BeforeVertex
Vertex position before the fit.
enum KFitError::ECode fixMass(void)
Tell the object to fix the last added track property at the invariant mass.
double getInvariantMass(void) const
Get an invariant mass.
Abstract base class for different kinds of events.
static const int kAfterFit
Input parameter to specify after-fit when setting/getting a track attribute.
Definition: KFitConst.h:36