8 #include <tracking/modules/mcMatcher/MCV0MatcherModule.h>
10 #include <framework/datastore/StoreArray.h>
11 #include <framework/gearbox/Const.h>
12 #include <framework/gearbox/Unit.h>
13 #include <framework/logging/Logger.h>
14 #include <mdst/dataobjects/TrackFitResult.h>
15 #include <mdst/dataobjects/MCParticle.h>
16 #include <mdst/dataobjects/V0.h>
24 setDescription(
"A module matching the V0s found by the V0Finder with MCParticles");
29 "Belle2::Track collection name (input). Note that the V0s use "
30 "pointers indices into these arrays, so all hell may break loose "
31 "if you change this.", std::string(
""));
33 "Belle2::TrackFitResult collection name (input). Note that the V0s "
34 "use pointers indices into these arrays, so all hell may break loose "
35 "if you change this.", std::string(
""));
60 B2WARNING(
"This module is supposed to be used only for the debugging\n \
61 of the V0Finder module, not as MC matching during analysis.");
72 B2DEBUG(200, (v0s.
getEntries() != 0 ?
"V0s has entries." :
" No V0s."));
74 for (
const auto& v0 : v0s) {
77 const std::pair<Track*, Track*> trackPtrs = v0.getTracks();
82 if (mcV0PartPlus ==
nullptr or mcV0PartMinus ==
nullptr) {
83 B2DEBUG(200,
"At least one track of the V0 does not have a MC related particle. It will be skipped for matching.");
90 if (!mcV0PartPlus->
getMother() or !mcV0PartMinusMother) {
91 B2DEBUG(200,
"At least one track of the V0 does not have a mother MCParticle, skipping.");
95 if (mcV0PartPlusMother != mcV0PartMinusMother) {
96 B2DEBUG(200,
"The V0 is most likely built up from combinatoric background, thus no MC relation can be set.");
101 B2DEBUG(200,
"V0 successfully matched.");
102 v0.addRelationTo(mcV0PartPlusMother);
104 B2DEBUG(200,
"V0 did not match anything.");
108 B2DEBUG(200,
"MC matching finished.");
The ParticleType class for identifying different particle types.
A Class to store the Monte Carlo particle information.
int getPDG() const
Return PDG code of particle.
std::string m_TFRColName
Belle2::TrackFitResult collection name (input).
void initialize() override
Use this to initialize resources or memory your module needs.
void event() override
Called once for each event.
void endRun() override
Called once when a run ends.
void terminate() override
Clean up anything you created in initialize().
std::string m_TrackColName
Belle2::Track collection name (input).
void beginRun() override
Called once before a new run begins.
MCV0MatcherModule()
Constructor, for setting module description and parameters.
std::string m_MCParticleColName
MCParticle collection name (input).
std::string m_V0ColName
V0 collection name (input).
~MCV0MatcherModule()
Destructor (empty).
void setDescription(const std::string &description)
Sets the description of the module.
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
TO * getRelatedTo(const std::string &name="", const std::string &namedRelation="") const
Get the object to which this object has a relation.
bool isRequired(const std::string &name="")
Ensure this array/object has been registered previously.
Accessor to arrays stored in the data store.
int getEntries() const
Get the number of objects in the array.
bool registerRelationTo(const StoreArray< TO > &toArray, DataStore::EDurability durability=DataStore::c_Event, DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut, const std::string &namedRelation="") const
Register a relation to the given StoreArray.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
MCParticle * getMother() const
Returns a pointer to the mother particle.
Abstract base class for different kinds of events.