Belle II Software  light-2205-abys
ChargedPidMVAMulticlassModule.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 // FRAMEWORK
12 #include <framework/core/Module.h>
13 #include <framework/dataobjects/EventMetaData.h>
14 #include <framework/database/DBObjPtr.h>
15 #include <analysis/DecayDescriptor/DecayDescriptor.h>
16 #include <framework/datastore/StoreArray.h>
17 
18 // MVA
19 #include <mva/interface/Expert.h>
20 #include <mva/interface/Dataset.h>
21 
22 // ANALYSIS
23 #include <analysis/dataobjects/ParticleList.h>
24 #include <analysis/VariableManager/Manager.h>
25 #include <analysis/dbobjects/ChargedPidMVAWeights.h>
26 
27 namespace Belle2 {
45 
46  typedef std::vector<std::unique_ptr<MVA::Expert> > ExpertsList;
47  typedef std::vector<std::unique_ptr<MVA::SingleDataset> > DatasetsList;
48  typedef std::vector< std::vector<const Variable::Manager::Var*> > VariablesLists;
50  public:
51 
56 
61 
68  virtual void initialize() override;
69 
75  virtual void beginRun() override;
76 
82  virtual void event() override;
83 
84  private:
85 
91  void initializeMVA();
92 
98  const std::string getParticleName(const ParticleList* pList) const
99  {
100 
101  auto fullName = pList->getParticleListName();
102  auto delimiter(":");
103  auto signedName = fullName.substr(0, fullName.find(delimiter));
104  signedName.pop_back();
105 
106  return signedName;
107  }
108 
109  private:
117  std::vector<std::string> m_decayStrings;
121  std::string m_payload_name;
122 
127 
132 
137 
143  std::unique_ptr<DBObjPtr<ChargedPidMVAWeights>> m_weightfiles_representation;
144 
151 
157 
163 
169 
173  std::vector<std::string> m_classes;
174 
175  };
177 }
This module evaluates the response of a multi-class MVA trained for global charged particle identific...
StoreObjPtr< EventMetaData > m_event_metadata
The event information.
std::vector< std::string > m_decayStrings
The input list of decay strings to which MVA weights will be applied.
virtual void initialize() override
Use this to initialize resources or memory your module needs.
bool m_ecl_only
Flag to specify if we use an ECL-only based training.
virtual void event() override
Called once for each event.
std::unique_ptr< DBObjPtr< ChargedPidMVAWeights > > m_weightfiles_representation
Interface to get the database payload with the MVA weight files.
std::vector< std::unique_ptr< MVA::SingleDataset > > DatasetsList
Typedef.
StoreArray< Particle > m_particles
StoreArray of Particles.
DatasetsList m_datasets
List of MVA::SingleDataset objects.
std::vector< std::string > m_classes
List of MVA class names.
ChargedPidMVAMulticlassModule()
Constructor, for setting module description and parameters.
bool m_charge_independent
Flag to specify if we use a charge-independent training.
const std::string getParticleName(const ParticleList *pList) const
Split the particle list name in "particleName", "particleLabel", and return the particle name w/o the...
virtual ~ChargedPidMVAMulticlassModule()
Destructor, use this to clean up anything you created in the constructor.
virtual void beginRun() override
Called once before a new run begins.
VariablesLists m_variables
List of lists of feature variables.
std::vector< std::vector< const Variable::Manager::Var * > > VariablesLists
Typedef.
VariablesLists m_spectators
List of lists of spectator variables.
std::vector< std::unique_ptr< MVA::Expert > > ExpertsList
Typedef.
ExpertsList m_experts
List of MVA::Expert objects.
std::string m_payload_name
The name of the database payload object with the MVA weights.
Base class for Modules.
Definition: Module.h:72
ParticleList is a container class that stores a collection of Particle objects.
Definition: ParticleList.h:140
std::string getParticleListName() const
Returns the name this ParticleList.
Definition: ParticleList.h:276
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113
Type-safe access to single objects in the data store.
Definition: StoreObjPtr.h:95
Abstract base class for different kinds of events.
Definition: ClusterUtils.h:23