Belle II Software  release-08-01-10
KLMExpertModule.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 
11 #include <framework/core/Module.h>
12 #include <framework/datastore/StoreArray.h>
13 #include <framework/database/DBObjPtr.h>
14 
15 #include <mdst/dataobjects/KLMCluster.h>
16 #include <mdst/dataobjects/KlId.h>
17 
18 #include <mva/dataobjects/DatabaseRepresentationOfWeightfile.h>
19 #include <mva/interface/Weightfile.h>
20 #include <mva/interface/Expert.h>
21 
22 #include <string>
23 
24 
25 namespace Belle2 {
37  class KLMExpertModule : public Module {
38 
39  public:
40 
43 
45  virtual ~KLMExpertModule();
46 
48  virtual void initialize() override;
49 
51  virtual void beginRun() override;
52 
54  virtual void event() override;
55 
57  virtual void terminate() override
58  {
59  m_expert.reset();
60  m_dataset.reset();
61  }
62 
63  private:
64 
69  void init_mva(MVA::Weightfile& weightfile);
70 
71 
73  // KLM variables
75  float m_KLMnCluster{ -1.};
77  float m_KLMnLayer{ -1.};
79  float m_KLMnInnermostLayer{ -1.};
81  float m_KLMglobalZ{0.};
83  float m_KLMtime{ -1.};
87  float m_KLMhitDepth{ -1.};
89  float m_KLMenergy{ -1.};
91  float m_KLMnextCluster{ -1.};
93  float m_KLMTrackSepDist{ -1.};
96  float m_KLMTrackSepAngle{ -1.};
97 
104 
105  // variables of closest ECL cluster with respect to KLM cluster
107  float m_KLMECLDist{ -1.};
109  float m_KLMECLE{ -1.};
111  float m_KLMECLdeltaL{ -1.}; // new
113  float m_KLMECLminTrackDist{ -1.}; //new
115  float m_KLMECLE9oE25{ -1.};
117  float m_KLMECLTiming{ -1.};
119  float m_KLMECLTerror{ -1.};
121  float m_KLMECLEerror{ -1.};
122 
124  float m_KLMECLZMVA{ -1.};
126  float m_KLMECLZ40{ -1.};
128  float m_KLMECLZ51{ -1.};
129 
134 
136  std::vector<float> m_feature_variables;
137 
139  std::string m_identifier =
140  "KLM_fBDT_10xbkg100k"; // assuming 1 times beambkg and generic BBbar events
141 
143  std::unique_ptr<DBObjPtr<DatabaseRepresentationOfWeightfile>>
146  std::unique_ptr<MVA::Expert> m_expert;
148  std::unique_ptr<MVA::SingleDataset> m_dataset;
149 
150 
151  }; // end class
153 } // end namespace Belle2
Module to perform the KLM KlId classification.
float m_KLMECLE
energy measured in associated ECL cluster
float m_KLMECLdeltaL
distance between track entry pofloat and cluster center, might be removed
StoreArray< KlId > m_klids
storearray
float m_KLMInitialTrackSepAngle
angular distance from track to cluster at track starting point
float m_KLMECLZMVA
output of a BDT fitted on various Z-moments for the closest ECL cluster
float m_KLMTrackRotationAngle
angle between track at poca and trackbeginning
KLMExpertModule()
Constructor.
float m_KLMECLTiming
timing of associated ECL cluster
virtual void terminate() override
terminate and free
std::unique_ptr< MVA::SingleDataset > m_dataset
Pointer to the current dataset.
StoreArray< KLMCluster > m_klmClusters
storearray
virtual void initialize() override
init
float m_KLMECLTerror
uncertanty on time in associated ECL cluster
virtual void event() override
process event
float m_KLMtime
timing of KLM Cluster
float m_KLMECLDist
distance associated ECL <-> KLM cluster, extrapolated by genfit
float m_KLMnLayer
number of layers hit in KLM cluster
float m_KLMhitDepth
hit depth in KLM, distance to IP
float m_KLMECLminTrackDist
track distance between associated ECL cluster and track extrapolated into ECL
float m_KLMenergy
Energy deposit in KLM (0.2 GeV * nHitCells)
float m_KLMTrackSepAngle
angular distance from track separation object.
std::unique_ptr< MVA::Expert > m_expert
Pointer to the current MVA Expert.
float m_KLMECLZ40
zernike moment 4,0 of closest ECL
std::unique_ptr< DBObjPtr< DatabaseRepresentationOfWeightfile > > m_weightfile_representation
Database pointer to the Database representation of the weightfile.
virtual ~KLMExpertModule()
Destructor.
float m_KLMnInnermostLayer
number of innermost layers hit
float m_KLMECLEerror
uncertanty on E in associated ECL cluster
float m_KLMECLE9oE25
E in surrounding 9 crystals divided by surrounding 25 crydtalls.
std::vector< float > m_feature_variables
vars to be classified
float m_KLMECLZ51
zernike moment 5,1 of closest ECL
float m_KLMavInterClusterDist
average distance between all KLM clusters
virtual void beginRun() override
beginn run
float m_KLMTrackSepDist
distance from track separation object
float m_KLMglobalZ
global Z position in KLM
float m_KLMnCluster
varibales to write out.
float m_KLMnextCluster
distance to next KLM cluster
float m_KLMTrackClusterSepAngle
angle between trach momentum and cluster (measured from ip)
void init_mva(MVA::Weightfile &weightfile)
Initialize mva expert, dataset and features Called everytime the weightfile in the database changes i...
std::string m_identifier
mva identifier.
The Weightfile class serializes all information about a training into an xml tree.
Definition: Weightfile.h:38
Base class for Modules.
Definition: Module.h:72
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113
Abstract base class for different kinds of events.