12 #include <tracking/eventTimeExtraction/findlets/GridEventTimeExtractor.dcl.h>
13 #include <tracking/eventTimeExtraction/findlets/BaseEventTimeExtractor.icc.h>
14 #include <tracking/eventTimeExtraction/utilities/TimeExtractionUtils.h>
15 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
16 #include <framework/core/ModuleParamList.h>
17 #include <framework/logging/Logger.h>
24 template <
class AFindlet>
27 Super::addProcessingSignalListener(&m_findlet);
30 template <
class AFindlet>
33 m_wasSuccessful =
false;
35 m_eventT0WithQuality.clear();
39 const double eventT0Delta = (m_param_maximalT0Value - m_param_minimalT0Value) /
static_cast<double>(m_param_gridSteps);
41 for (
unsigned int gridIndex = 0; gridIndex <= m_param_gridSteps; gridIndex++) {
42 const double eventT0Hypothesis = eventT0Delta *
static_cast<double>(gridIndex) + m_param_minimalT0Value;
47 for (
unsigned int iteration = 0; iteration < m_param_iterations; iteration++) {
49 m_findlet.apply(recoTracks);
51 if (m_findlet.wasSuccessful()) {
53 }
else if (m_param_abortOnUnsuccessfulStep) {
54 B2DEBUG(50,
"Aborting because time extraction was not successful.");
60 if (not m_eventT0WithQuality.empty()) {
61 m_wasSuccessful =
true;
63 const auto& bestChi2 = std::max_element(m_eventT0WithQuality.begin(), m_eventT0WithQuality.end(),
64 [](
const auto & lhs,
const auto & rhs) {
65 return lhs.quality < rhs.quality;
67 m_eventT0->setEventT0(*bestChi2);
74 template <
class AFindlet>
77 Super::exposeParameters(moduleParamList, prefix);
79 moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix,
"iterations"),
81 "How many iterations should be done?",
83 moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix,
"abortOnUnsuccessfulStep"),
84 m_param_abortOnUnsuccessfulStep,
85 "Abort on a single unsuccessful step. Otherwise, the success is defined by the last step",
86 m_param_abortOnUnsuccessfulStep);
87 moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix,
"maximalT0Value"),
88 m_param_maximalT0Value,
89 "Maximal Grid Value of the T0 extraction",
90 m_param_maximalT0Value);
91 moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix,
"minimalT0Value"),
92 m_param_minimalT0Value,
93 "Maximal Grid Value of the T0 extraction",
94 m_param_minimalT0Value);
95 moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix,
"gridSteps"),
97 "Number of steps in the grid",
100 m_findlet.exposeParameters(moduleParamList, TrackFindingCDC::prefixed(
"sub", prefix));