Belle II Software  release-05-01-25
ParticleKinematicFitterModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Torben Ferber (torben.ferber@desy.de) *
7  * Yu Hu (yu.hu@desy.de) *
8  * *
9  * This software is provided "as is" without any warranty. *
10  **************************************************************************/
11 
12 #pragma once
13 
14 #include <framework/core/Module.h>
15 #include <string>
16 #include <analysis/DecayDescriptor/DecayDescriptor.h>
17 
18 // OrcaKinFit
19 #include <analysis/OrcaKinFit/BaseFitter.h>
20 #include <analysis/OrcaKinFit/TextTracer.h>
21 
22 // Constraints
23 #include <analysis/OrcaKinFit/MomentumConstraint.h>
24 #include <analysis/OrcaKinFit/RecoilMassConstraint.h>
25 #include <analysis/OrcaKinFit/MassConstraint.h>
26 
27 // Fitobjects
28 #include <analysis/OrcaKinFit/ParticleFitObject.h>
29 
30 // extrainfo
31 #include <analysis/dataobjects/EventExtraInfo.h>
32 
33 // framework datastore
34 #include <framework/datastore/StoreObjPtr.h>
35 
36 // ROOT
37 #include <TLorentzVector.h>
38 #include <TMatrixFSym.h>
39 
40 // CLHEOP
41 #include <CLHEP/Matrix/SymMatrix.h>
42 #include <CLHEP/Vector/LorentzVector.h>
43 
44 namespace Belle2 {
49  class Particle;
50  namespace OrcaKinFit {
51 
58  class ParticleKinematicFitterModule : public Module {
59 
60  public:
61 
66 
71  virtual void initialize() override;
72 
77  virtual void beginRun() override;
78 
82  virtual void endRun() override;
83 
87  virtual void terminate() override;
88 
92  virtual void event() override;
93 
94  private:
95 
96  // module parameters
97  std::string m_listName;
98  std::string m_kinematicFitter;
99  std::string m_orcaFitterEngine;
100  std::string m_orcaTracer;
101  std::string m_orcaConstraint;
102  bool m_debugFitter;
103  int m_debugFitterLevel;
104  bool m_addUnmeasuredPhoton;
105  bool m_add3CPhoton;
108  double m_recoilMass;
109  double m_invMass;
111  // internal variables
114  std::vector <double> m_unmeasuredLeptonFitObject;
115  std::vector <double> m_unmeasuredGammaFitObject;
117  // hard constraints
127  // UNUSED YET
128  std::string m_decayString;
136  bool doKinematicFit(Particle* p);
137 
143  bool doOrcaKinFitFit(Particle* p);
144 
148  bool fillFitParticles(Particle* mother, std::vector<Particle*>& particleChildren);
149 
154  bool AddFour(Particle* mother);
155 
162  void addParticleToOrcaKinFit(BaseFitter& fitter, Particle* particle, const int index);
163 
169 
174  void addConstraintsToFitter(BaseFitter& fitter);
175 
180  void addTracerToFitter(BaseFitter& fitter);
181 
185  void setConstraints();
186 
190  TLorentzVector getTLorentzVectorConstraints();
191 
192 
197  void resetFitter(BaseFitter& fitter);
198 
205 
212  void updateOrcaKinFitMother(BaseFitter& fitter, std::vector<Particle*>& particleChildren, Particle* mother);
213 
214 
220  bool updateOrcaKinFitDaughters(BaseFitter& fitter, Particle* mother);
221 
230  void updateMapOfTrackAndDaughter(unsigned& l, std::vector<std::vector<unsigned>>& pars, std::vector<unsigned>& pard,
231  std::vector<Particle*>& allparticles, const Particle* daughter);
232 
240  bool storeOrcaKinFitParticles(const std::string& prefix, BaseFitter& fitter, std::vector<Particle*>& particleChildren,
241  Particle* mother);
242 
243 
248  CLHEP::HepSymMatrix getCLHEPMomentumErrorMatrix(Particle* particle);
249 
254  CLHEP::HepSymMatrix getCLHEPMomentumVertexErrorMatrix(Particle* particle);
255 
260  CLHEP::HepLorentzVector getCLHEPLorentzVector(Particle* particle);
261 
266  TLorentzVector getTLorentzVector(ParticleFitObject* fitobject);
267 
273  float getFitObjectError(ParticleFitObject* fitobject, int ilocal);
274 
279  TMatrixFSym getFitObjectCovMat(ParticleFitObject* fitobject);
280 
285  TMatrixFSym getCovMat7(ParticleFitObject* fitobject);
286 
290  TMatrixFSym getTMatrixFSymMomentumErrorMatrix();
291 
296 
297  };
298 
299  }// end OrcaKinFit namespace
301 } // Belle2 namespace
302 
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_orcaTracer
std::string m_orcaTracer
Tracer (None, Text or ROOT)
Definition: ParticleKinematicFitterModule.h:109
Belle2::OrcaKinFit::BaseFitter
Abstract base class for fitting engines of kinematic fits.
Definition: BaseFitter.h:61
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_hardConstraintPy
MomentumConstraint m_hardConstraintPy
hard beam constraint py
Definition: ParticleKinematicFitterModule.h:128
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_hardConstraintRecoilMass
RecoilMassConstraint m_hardConstraintRecoilMass
hard recoil mass constraint
Definition: ParticleKinematicFitterModule.h:132
Belle2::OrcaKinFit::ParticleKinematicFitterModule::updateMapOfTrackAndDaughter
void updateMapOfTrackAndDaughter(unsigned &l, std::vector< std::vector< unsigned >> &pars, std::vector< unsigned > &pard, std::vector< Particle * > &allparticles, const Particle *daughter)
update the map of daughter and tracks, find out which tracks belong to each daughter.
Definition: ParticleKinematicFitterModule.cc:698
Belle2::OrcaKinFit::MassConstraint
Implements constraint 0 = mass1 - mass2 - m.
Definition: MassConstraint.h:60
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_kinematicFitter
std::string m_kinematicFitter
Kinematic Fitter name.
Definition: ParticleKinematicFitterModule.h:107
Belle2::OrcaKinFit::ParticleKinematicFitterModule::addConstraintsToFitter
void addConstraintsToFitter(BaseFitter &fitter)
Adds Orca fit object to the constraints.
Definition: ParticleKinematicFitterModule.cc:574
Belle2::OrcaKinFit::ParticleKinematicFitterModule::doKinematicFit
bool doKinematicFit(Particle *p)
Main steering routine for any kinematic fitter.
Definition: ParticleKinematicFitterModule.cc:147
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_unmeasuredLeptonFitObject
std::vector< double > m_unmeasuredLeptonFitObject
unmeasured fit object
Definition: ParticleKinematicFitterModule.h:123
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getTMatrixFSymMomentumErrorMatrix
TMatrixFSym getTMatrixFSymMomentumErrorMatrix()
Returns particle's 7x7 momentum-error matrix as a TMatrixFSym.
Definition: ParticleKinematicFitterModule.cc:461
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getFitObjectError
float getFitObjectError(ParticleFitObject *fitobject, int ilocal)
Returns fit object error on the parameter ilocal.
Definition: ParticleKinematicFitterModule.cc:782
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_decaydescriptor
DecayDescriptor m_decaydescriptor
Decay descriptor of decays to look for.
Definition: ParticleKinematicFitterModule.h:138
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_textTracer
TextTracer * m_textTracer
internal text output variable
Definition: ParticleKinematicFitterModule.h:121
Belle2::OrcaKinFit::ParticleKinematicFitterModule::AddFour
bool AddFour(Particle *mother)
Added four vectors and calcuated a covariance matrix for a combined particles.
Definition: ParticleKinematicFitterModule.cc:333
Belle2::OrcaKinFit::MomentumConstraint
Implements a constraint of the form efact*sum(E)+pxfact*sum(px)+pyfact*sum(py)+pzfact*sum(pz)=value.
Definition: MomentumConstraint.h:55
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_recoilMass
double m_recoilMass
Recoil mass for RecoilMass constraint.
Definition: ParticleKinematicFitterModule.h:117
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getCLHEPMomentumVertexErrorMatrix
CLHEP::HepSymMatrix getCLHEPMomentumVertexErrorMatrix(Particle *particle)
Returns particle's 7x7 momentum-vertex-error matrix as a HepSymMatrix.
Definition: ParticleKinematicFitterModule.cc:431
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_eventextrainfo
StoreObjPtr< EventExtraInfo > m_eventextrainfo
StoreObjPtr for the EventExtraInfo in this mode.
Definition: ParticleKinematicFitterModule.h:122
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getCLHEPLorentzVector
CLHEP::HepLorentzVector getCLHEPLorentzVector(Particle *particle)
Returns particle's 4-momentum as a HepLorentzVector.
Definition: ParticleKinematicFitterModule.cc:446
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_unmeasuredGammaFitObject
std::vector< double > m_unmeasuredGammaFitObject
unmeasured fit object
Definition: ParticleKinematicFitterModule.h:124
Belle2::OrcaKinFit::ParticleKinematicFitterModule::terminate
virtual void terminate() override
termination.
Definition: ParticleKinematicFitterModule.cc:112
Belle2::OrcaKinFit::TextTracer
Definition: TextTracer.h:59
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getCLHEPMomentumErrorMatrix
CLHEP::HepSymMatrix getCLHEPMomentumErrorMatrix(Particle *particle)
Returns particle's 4x4 momentum-error matrix as a HepSymMatrix.
Definition: ParticleKinematicFitterModule.cc:416
Belle2::OrcaKinFit::ParticleKinematicFitterModule::addUnmeasuredGammaToOrcaKinFit
void addUnmeasuredGammaToOrcaKinFit(BaseFitter &fitter)
Adds an unmeasured gamma (E, phi, theta) to the fit (-3C) stored as EventExtraInfo TODO.
Definition: ParticleKinematicFitterModule.cc:603
Belle2::OrcaKinFit::ParticleKinematicFitterModule::addParticleToOrcaKinFit
void addParticleToOrcaKinFit(BaseFitter &fitter, Particle *particle, const int index)
Adds given particle to the OrcaKinFit.
Definition: ParticleKinematicFitterModule.cc:355
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_debugFitter
bool m_debugFitter
activate internal debugging (for New and Newton fitter only)
Definition: ParticleKinematicFitterModule.h:111
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_updateMother
bool m_updateMother
update mother kinematics
Definition: ParticleKinematicFitterModule.h:115
Belle2::OrcaKinFit::ParticleKinematicFitterModule::initialize
virtual void initialize() override
Initialize the Module.
Definition: ParticleKinematicFitterModule.cc:91
Belle2::OrcaKinFit::ParticleKinematicFitterModule::updateOrcaKinFitMother
void updateOrcaKinFitMother(BaseFitter &fitter, std::vector< Particle * > &particleChildren, Particle *mother)
Update the mother: momentum is sum of daughters TODO update covariance matrix.
Definition: ParticleKinematicFitterModule.cc:721
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_hardConstraintE
MomentumConstraint m_hardConstraintE
hard beam constraint E
Definition: ParticleKinematicFitterModule.h:130
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_listName
std::string m_listName
particle list name
Definition: ParticleKinematicFitterModule.h:106
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getFitObjectCovMat
TMatrixFSym getFitObjectCovMat(ParticleFitObject *fitobject)
Returns covariance matrix.
Definition: ParticleKinematicFitterModule.cc:794
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::OrcaKinFit::ParticleKinematicFitterModule::addTracerToFitter
void addTracerToFitter(BaseFitter &fitter)
Adds tracer to the fitter.
Definition: ParticleKinematicFitterModule.cc:593
Belle2::StoreObjPtr
Type-safe access to single objects in the data store.
Definition: ParticleList.h:33
Belle2::OrcaKinFit::ParticleKinematicFitterModule::resetFitter
void resetFitter(BaseFitter &fitter)
Resets all objects associated with the OrcaKinFit fitter.
Definition: ParticleKinematicFitterModule.cc:548
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getCovMat7
TMatrixFSym getCovMat7(ParticleFitObject *fitobject)
Returns covariance matrix.
Definition: ParticleKinematicFitterModule.cc:818
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_updateDaughters
bool m_updateDaughters
update daughter kinematics
Definition: ParticleKinematicFitterModule.h:116
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_orcaConstraint
std::string m_orcaConstraint
Constraint (softBeam, hardBeam (default))
Definition: ParticleKinematicFitterModule.h:110
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_addUnmeasuredPhoton
bool m_addUnmeasuredPhoton
add one unmeasured photon to the fit (costs 3 constraints)
Definition: ParticleKinematicFitterModule.h:113
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getTLorentzVectorConstraints
TLorentzVector getTLorentzVectorConstraints()
Get constraints (at whatever stage before/after fitting)
Definition: ParticleKinematicFitterModule.cc:488
Belle2::OrcaKinFit::RecoilMassConstraint
Definition: RecoilMassConstraint.h:39
Belle2::Particle
Class to store reconstructed particles.
Definition: Particle.h:77
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getTMatrixFSymMomentumVertexErrorMatrix
TMatrixFSym getTMatrixFSymMomentumVertexErrorMatrix()
Returns particle's 7x7 momentum-vertex-error matrix as a TMatrixFSym.
Definition: ParticleKinematicFitterModule.cc:475
Belle2::OrcaKinFit::ParticleKinematicFitterModule::getTLorentzVector
TLorentzVector getTLorentzVector(ParticleFitObject *fitobject)
Definition: ParticleKinematicFitterModule.cc:453
Belle2::OrcaKinFit::ParticleKinematicFitterModule::event
virtual void event() override
Event processor.
Definition: ParticleKinematicFitterModule.cc:118
Belle2::DecayDescriptor
The DecayDescriptor stores information about a decay tree or parts of a decay tree.
Definition: DecayDescriptor.h:43
Belle2::OrcaKinFit::ParticleKinematicFitterModule::storeOrcaKinFitParticles
bool storeOrcaKinFitParticles(const std::string &prefix, BaseFitter &fitter, std::vector< Particle * > &particleChildren, Particle *mother)
store fit object information as ExtraInfo
Definition: ParticleKinematicFitterModule.cc:747
Belle2::OrcaKinFit::ParticleKinematicFitterModule::endRun
virtual void endRun() override
Called when ending a new run.
Definition: ParticleKinematicFitterModule.cc:107
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_hardConstraintPz
MomentumConstraint m_hardConstraintPz
hard beam constraint pz
Definition: ParticleKinematicFitterModule.h:129
Belle2::OrcaKinFit::ParticleKinematicFitterModule::fillFitParticles
bool fillFitParticles(Particle *mother, std::vector< Particle * > &particleChildren)
Fills valid particle's children (with valid error matrix) in the vector of Particles that will enter ...
Definition: ParticleKinematicFitterModule.cc:311
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_invMass
double m_invMass
Inviriant mass for Mass constraint.
Definition: ParticleKinematicFitterModule.h:118
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_add3CPhoton
bool m_add3CPhoton
add one photon with unmeasured energy to the fit (costs 1 constraints)
Definition: ParticleKinematicFitterModule.h:114
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_decayString
std::string m_decayString
daughter particles selection
Definition: ParticleKinematicFitterModule.h:137
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_debugFitterLevel
int m_debugFitterLevel
internal debugging level (for New and Newton fitter only)
Definition: ParticleKinematicFitterModule.h:112
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_hardConstraintMass
MassConstraint m_hardConstraintMass
hard mass constraint
Definition: ParticleKinematicFitterModule.h:134
Belle2::OrcaKinFit::ParticleKinematicFitterModule::doOrcaKinFitFit
bool doOrcaKinFitFit(Particle *p)
Kinematic fit using OrcaKinFit.
Definition: ParticleKinematicFitterModule.cc:192
Belle2::OrcaKinFit::ParticleKinematicFitterModule::updateOrcaKinFitDaughters
bool updateOrcaKinFitDaughters(BaseFitter &fitter, Particle *mother)
Update the daughters: momentum is sum of daughters TODO update covariance matrix.
Definition: ParticleKinematicFitterModule.cc:630
Belle2::OrcaKinFit::ParticleKinematicFitterModule::addFitObjectToConstraints
void addFitObjectToConstraints(ParticleFitObject &fitobject)
Adds Orca fit object to the constraints.
Definition: ParticleKinematicFitterModule.cc:555
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_hardConstraintPx
MomentumConstraint m_hardConstraintPx
hard beam constraint px
Definition: ParticleKinematicFitterModule.h:127
Belle2::OrcaKinFit::ParticleKinematicFitterModule::setConstraints
void setConstraints()
Sets constraints, this is not connect to particles or a fitter at this stage.
Definition: ParticleKinematicFitterModule.cc:506
Belle2::OrcaKinFit::ParticleKinematicFitterModule::m_orcaFitterEngine
std::string m_orcaFitterEngine
Orca Fitter Engine name.
Definition: ParticleKinematicFitterModule.h:108
Belle2::OrcaKinFit::ParticleKinematicFitterModule::ParticleKinematicFitterModule
ParticleKinematicFitterModule()
Constructor.
Definition: ParticleKinematicFitterModule.cc:65
Belle2::OrcaKinFit::ParticleFitObject
Definition: ParticleFitObject.h:93
Belle2::OrcaKinFit::ParticleKinematicFitterModule::beginRun
virtual void beginRun() override
Called when entering a new run.
Definition: ParticleKinematicFitterModule.cc:102