Belle II Software  release-08-01-10
FullGridChi2TrackTimeExtractor.cc
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 #include <tracking/eventTimeExtraction/findlets/FullGridChi2TrackTimeExtractor.h>
9 #include <tracking/eventTimeExtraction/findlets/BaseEventTimeExtractor.icc.h>
10 #include <tracking/eventTimeExtraction/findlets/GridEventTimeExtractor.icc.h>
11 #include <tracking/eventTimeExtraction/findlets/IterativeEventTimeExtractor.icc.h>
12 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
13 #include <tracking/dataobjects/RecoTrack.h>
14 #include <framework/core/ModuleParamList.templateDetails.h>
15 
16 using namespace Belle2;
17 using namespace TrackFindingCDC;
18 
20 
22 {
23  addProcessingSignalListener(&m_finalExtractor);
24  addProcessingSignalListener(&m_gridExtractor);
25 }
26 
28 void FullGridChi2TrackTimeExtractor::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
29 {
30  m_gridExtractor.exposeParameters(moduleParamList, prefixed("Grid", prefix));
31  m_finalExtractor.exposeParameters(moduleParamList, prefixed("Refiner", prefix));
32 
33  moduleParamList->getParameter<unsigned int>("GridIterations").setDefaultValue(1);
34  moduleParamList->getParameter<bool>("RefinerUseLastEventT0").setDefaultValue(true);
35 }
36 
38 void FullGridChi2TrackTimeExtractor::apply(std::vector<RecoTrack*>& recoTracks)
39 {
40  const auto& temporaryT0Extractions = m_eventT0->getTemporaryEventT0s(Const::CDC);
41  B2ASSERT("There should only be a single or none extraction at this stage!", temporaryT0Extractions.size() <= 1);
42 
43  if (temporaryT0Extractions.empty()) {
44  m_gridExtractor.apply(recoTracks);
45  // if neither the hit based nor the grid based extraction finds something, we can not do anything
46  if (not m_gridExtractor.wasSuccessful()) {
47  m_wasSuccessful = false;
48  return;
49  }
50  } else {
51  // Make sure to actually use the temporary hit based extraction result
52  m_eventT0->setEventT0(temporaryT0Extractions[0]);
53  }
54 
55  m_finalExtractor.apply(recoTracks);
56  m_wasSuccessful = m_finalExtractor.wasSuccessful();
57 
58  if (not wasSuccessful()) {
59  B2DEBUG(25, "Resetting the event t0 as the final extraction was not successful.");
60  resetEventT0();
61  }
62 }
void apply(std::vector< RecoTrack * > &) override final
Timing extraction for this findlet.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override final
Copy the parameters.
Generic findlet applying a certain time extractor multiple times.
The Module parameter list class.
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
Abstract base class for different kinds of events.