Belle II Software  release-05-02-19
TrackSetEvaluatorGreedyDEVModule.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2011 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Martin Heck *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #include "tracking/modules/trackSetEvaluatorVXD/TrackSetEvaluatorGreedyDEVModule.h"
12 
13 #include <tracking/trackFindingVXD/trackSetEvaluator/Scrooge.h>
14 #include <tracking/trackFindingVXD/trackSetEvaluator/OverlapResolverNodeInfo.h>
15 
16 #include <vector>
17 
18 using namespace Belle2;
19 
20 
21 REG_MODULE(TrackSetEvaluatorGreedyDEV)
22 
24 {
25  setDescription("Expects a container of SpacePointTrackCandidates,\
26  selects a subset of non-overlapping TCs using the Greedy algorithm.");
27 
28  addParam("NameSpacePointTrackCands", m_nameSpacePointTrackCands, "Name of expected StoreArray of SpacePoint track candidates.",
29  std::string(""));
30 
31  addParam("NameOverlapNetworks", m_nameOverlapNetworks, "Name of expected StoreArray with overlap "
32  "networks.", std::string(""));
33 }
34 
36 {
37  //Create an empty object of the type,
38  //that needs to be given to Scrooge.
39  std::vector<OverlapResolverNodeInfo> qiTrackOverlap;
40  unsigned int const nSpacePointTrackCands = m_spacePointTrackCands.getEntries();
41  qiTrackOverlap.reserve(nSpacePointTrackCands);
42 
43  //fill this object with the necessary information:
44  for (auto && spacePointTrackCand : m_spacePointTrackCands) {
45  qiTrackOverlap.emplace_back(spacePointTrackCand.getQualityIndicator(), spacePointTrackCand.getArrayIndex(),
46  m_overlapNetworks[0]->getOverlapForTrackIndex(spacePointTrackCand.getArrayIndex()),
47  true);
48  }
49 
50  //make a Scrooge and udpate the activity
51  Scrooge scrooge;
52  scrooge.performSelection(qiTrackOverlap);
53 
54  for (auto && track : qiTrackOverlap) {
55  if (track.activityState < 0.75) {
56  m_spacePointTrackCands[track.trackIndex]->removeRefereeStatus(SpacePointTrackCand::c_isActive);
57  }
58  }
59 
60  //-----------------------------------------------------------------------------------------------
61 }
Belle2::TrackSetEvaluatorGreedyDEVModule::event
void event() override final
Application of the algorithm.
Definition: TrackSetEvaluatorGreedyDEVModule.cc:35
REG_MODULE
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:652
Belle2::SpacePointTrackCand::c_isActive
@ c_isActive
bit 11: SPTC is active (i.e.
Definition: SpacePointTrackCand.h:94
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::Scrooge::performSelection
void performSelection(std::vector< OverlapResolverNodeInfo > &overlapResolverNodeInfo)
Sets the isActive flag in m_qiTrackOverlap to false, for killed tracks.
Definition: Scrooge.h:43
Belle2::Scrooge
Executes greedy algorithm for vector of QITrackOverlap structs.
Definition: Scrooge.h:36
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackSetEvaluatorGreedyDEVModule::m_spacePointTrackCands
StoreArray< SpacePointTrackCand > m_spacePointTrackCands
the storeArray for SpacePointTrackCands as member, is faster than recreating link for each event
Definition: TrackSetEvaluatorGreedyDEVModule.h:59
Belle2::TrackSetEvaluatorGreedyDEVModule::m_overlapNetworks
StoreArray< OverlapNetwork > m_overlapNetworks
access to tcNetwork, which will be produced by this module
Definition: TrackSetEvaluatorGreedyDEVModule.h:63
Belle2::TrackSetEvaluatorGreedyDEVModule
The Greedy algoritm Track-set-evaluator.
Definition: TrackSetEvaluatorGreedyDEVModule.h:42
Belle2::StoreArray::getEntries
int getEntries() const
Get the number of objects in the array.
Definition: StoreArray.h:226