Belle II Software  release-05-01-25
TrackQualityEstimator.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2019 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Michael Eliachevitch *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/trackFindingCDC/findlets/combined/TrackQualityEstimator.h>
11 
12 #include <tracking/trackFindingCDC/eventdata/tracks/CDCTrack.h>
13 
14 #include <tracking/trackFindingCDC/filters/base/ChooseableFilter.icc.h>
15 
16 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
17 #include <tracking/trackFindingCDC/utilities/Algorithms.h>
18 
19 #include <framework/core/ModuleParamList.templateDetails.h>
20 
21 using namespace Belle2;
22 using namespace TrackFindingCDC;
23 
25 
26 TrackQualityEstimator::TrackQualityEstimator(const std::string& defaultFilterName)
27  : m_trackQualityFilter(defaultFilterName)
28 {
31 }
32 
34 {
36  // cache output of needsTruthInformation in member variable
37  m_needsTruthInformation = m_trackQualityFilter.needsTruthInformation();
38 }
39 
41 {
42  return "Set the quality indicator for CDC tracks and, if desired, delete tracks with a too low quality value.";
43 }
44 
45 void TrackQualityEstimator::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
46 {
47  m_trackQualityFilter.exposeParameters(moduleParamList, prefix);
48  m_mcCloneLookUpFiller.exposeParameters(moduleParamList, prefix);
49 
50  moduleParamList->addParameter(prefixed(prefix, "deleteTracks"),
52  "Delete tracks below cut instead of just assigning quality indicator.",
54 
55  moduleParamList->addParameter(prefixed(prefix, "resetTakenFlag"),
57  "Reset taken flag for deleted tracks so that hits can be used by subsequent TFs.",
59 }
60 
61 void TrackQualityEstimator::apply(std::vector<CDCTrack>& tracks)
62 {
63 
65  for (CDCTrack& track : tracks) {
66  const double qualityIndicator = m_trackQualityFilter(track);
67  track.setQualityIndicator(qualityIndicator);
68  }
69 
70  if (m_param_deleteTracks) { // delete track with QI below cut threshold
71  auto reject = [this](const CDCTrack & track) {
72  const double qualityIndicator = track.getQualityIndicator();
73  if (m_param_resetTakenFlag && std::isnan(qualityIndicator)) {
74  track.forwardTakenFlag(false);
75  }
76  return std::isnan(qualityIndicator);
77  };
78  erase_remove_if(tracks, reject);
79  }
80 }
Belle2::TrackFindingCDC::TrackQualityEstimator::m_trackQualityFilter
ChooseableFilter< TrackQualityFilterFactory > m_trackQualityFilter
Reference to the filter to be used to filter.
Definition: TrackQualityEstimator.h:74
Belle2::TrackFindingCDC::CDCTrack
Class representing a sequence of three dimensional reconstructed hits.
Definition: CDCTrack.h:51
Belle2::TrackFindingCDC::TrackQualityEstimator::getDescription
std::string getDescription() final
Short description of the findlet.
Definition: TrackQualityEstimator.cc:40
Belle2::TrackFindingCDC::ChooseableFilter
Convenvience wrapper to setup a Chooseable filter from a specific factory object.
Definition: ChooseableFilter.dcl.h:107
Belle2::TrackFindingCDC::TrackQualityEstimator::m_param_deleteTracks
bool m_param_deleteTracks
Delete tracks below threshold instead of just assigning quality indicator.
Definition: TrackQualityEstimator.h:68
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::addProcessingSignalListener
void addProcessingSignalListener(ProcessingSignalListener *psl)
Register a processing signal listener to be notified.
Definition: CompositeProcessingSignalListener.cc:57
Belle2::TrackFindingCDC::TrackQualityEstimator::TrackQualityEstimator
TrackQualityEstimator(const std::string &defaultFilterName="mva")
Constructor adding the filter as a subordinary processing signal listener.
Definition: TrackQualityEstimator.cc:26
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::initialize
void initialize() override
Receive and dispatch signal before the start of the event processing.
Definition: CompositeProcessingSignalListener.cc:17
Belle2::TrackFindingCDC::TrackQualityEstimator::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: TrackQualityEstimator.cc:45
Belle2::TrackFindingCDC::CDCMCCloneLookUpFiller::apply
void apply(std::vector< CDCTrack > &cdcTracks) final
Write give tracks into track store array.
Definition: CDCMCCloneLookUpFiller.cc:30
Belle2::ModuleParamList::addParameter
void addParameter(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.
Definition: ModuleParamList.templateDetails.h:38
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::TrackQualityEstimator::apply
void apply(std::vector< CDCTrack > &tracks) final
Main algorithm.
Definition: TrackQualityEstimator.cc:61
Belle2::TrackFindingCDC::Findlet::exposeParameters
virtual void exposeParameters(ModuleParamList *moduleParamList __attribute__((unused)), const std::string &prefix __attribute__((unused)))
Forward prefixed parameters of this findlet to the module parameter list.
Definition: Findlet.h:79
Belle2::TrackFindingCDC::TrackQualityEstimator::m_needsTruthInformation
bool m_needsTruthInformation
Store output of needsTruthInformation from filter in member variable.
Definition: TrackQualityEstimator.h:65
Belle2::TrackFindingCDC::TrackQualityEstimator::m_param_resetTakenFlag
bool m_param_resetTakenFlag
Reset taken flag for deleted tracks so that hits can be used by subsequent TFs.
Definition: TrackQualityEstimator.h:71
Belle2::TrackFindingCDC::TrackQualityEstimator::m_mcCloneLookUpFiller
CDCMCCloneLookUpFiller m_mcCloneLookUpFiller
Findlet to fill CDCTracks into lookup table (singleton) with clone information.
Definition: TrackQualityEstimator.h:62
Belle2::TrackFindingCDC::TrackQualityEstimator::initialize
void initialize() override
Receive and dispatch signal before the start of the event processing.
Definition: TrackQualityEstimator.cc:33
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46