Belle II Software development
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 <framework/datastore/StoreArray.h>
16#include <framework/gearbox/Const.h>
17
18// ANALYSIS
19#include <analysis/dataobjects/ParticleList.h>
20#include <analysis/VariableManager/Manager.h>
21#include <analysis/VariableManager/Utility.h>
22
23namespace Belle2 {
29 namespace MVA {
30 class Expert;
31 class SingleDataset;
32 }
33
43
44 typedef std::vector<std::unique_ptr<MVA::Expert> > ExpertsList;
45 typedef std::vector<std::unique_ptr<MVA::SingleDataset> > DatasetsList;
46 typedef std::vector<std::unique_ptr<Variable::Cut>> CutsList;
47 typedef std::vector< std::vector<const Variable::Manager::Var*> > VariablesLists;
48
49 public:
50
55
60
67 virtual void initialize() override;
68
74 virtual void beginRun() override;
75
81 virtual void event() override;
82
83 private:
84
90 void initializeMVA();
91
97 const std::string getParticleName(const ParticleList* pList) const
98 {
99
100 auto fullName = pList->getParticleListName();
101 auto delimiter(":");
102 auto signedName = fullName.substr(0, fullName.find(delimiter));
103 signedName.pop_back();
104
105 return signedName;
106 }
107
108 private:
113
120 std::vector<std::string> m_decayStrings;
121
125 std::string m_payload_name;
126
131
136
141
149 std::unique_ptr<DBObjPtr<ChargedPidMVAWeights>> m_weightfiles_representation;
150
157
163
169
175
181
185 std::vector<std::string> m_classes;
186
190 std::map<int, std::string> m_stdChargedInfo = {
191 { Const::electron.getPDGCode(), "electron" },
192 { Const::muon.getPDGCode(), "muon" },
193 { Const::pion.getPDGCode(), "pion" },
194 { Const::kaon.getPDGCode(), "kaon" },
195 { Const::proton.getPDGCode(), "proton" },
196 { Const::deuteron.getPDGCode(), "deuteron" }
197 };
198
203
207 void registerAliases();
208
209 };
210
211}
StoreObjPtr< EventMetaData > m_event_metadata
The event information.
std::vector< std::unique_ptr< Variable::Cut > > CutsList
Typedef.
std::vector< std::string > m_decayStrings
The input list of DecayStrings, where each selected (^) daughter should correspond to a standard char...
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.
std::map< int, std::string > m_stdChargedInfo
Map with standard charged particles' info.
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.
void registerAliases()
Set variable aliases needed by the MVA.
VariablesLists m_variables
List of lists of feature variables.
std::vector< std::vector< const Variable::Manager::Var * > > VariablesLists
Typedef.
void registerAliasesLegacy()
Set variable aliases needed by the MVA.
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.
Class to contain the payload of MVA weightfiles needed for charged particle identification.
static const ChargedStable muon
muon particle
Definition Const.h:660
static const ChargedStable pion
charged pion particle
Definition Const.h:661
static const ChargedStable proton
proton particle
Definition Const.h:663
static const ChargedStable kaon
charged kaon particle
Definition Const.h:662
static const ChargedStable electron
electron particle
Definition Const.h:659
static const ChargedStable deuteron
deuteron particle
Definition Const.h:664
Abstract base class of all Expert Each MVA library has its own implementation of this class,...
Definition Expert.h:31
Wraps the data of a single event into a Dataset.
Definition Dataset.h:135
Module()
Constructor.
Definition Module.cc:30
ParticleList is a container class that stores a collection of Particle objects.
std::string getParticleListName() const
Returns the name this ParticleList.
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:96
Abstract base class for different kinds of events.