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 <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/VariableManager/Utility.h>
26#include <analysis/dbobjects/ChargedPidMVAWeights.h>
27
28namespace Belle2 {
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;
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 };
211}
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::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.
int getPDGCode() const
PDG code.
Definition: Const.h:473
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
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:277
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.