Belle II Software development
FullGridDriftLengthTrackTimeExtractor.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/FullGridDriftLengthTrackTimeExtractor.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
15#include <framework/core/ModuleParamList.templateDetails.h>
16
17using namespace Belle2;
18using namespace TrackFindingCDC;
19
21
23{
26}
27
29void FullGridDriftLengthTrackTimeExtractor::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
30{
31 m_gridExtractor.exposeParameters(moduleParamList, prefixed("Grid", prefix));
32 m_finalExtractor.exposeParameters(moduleParamList, prefixed("Refiner", prefix));
33
34 moduleParamList->getParameter<unsigned int>("GridIterations").setDefaultValue(1);
35 moduleParamList->getParameter<bool>("RefinerUseLastEventT0").setDefaultValue(true);
36}
37
39void FullGridDriftLengthTrackTimeExtractor::apply(std::vector<RecoTrack*>& recoTracks)
40{
41 const auto& temporaryT0Extractions = m_eventT0->getTemporaryEventT0s(Const::CDC);
42 B2ASSERT("There should only be a single or none extraction at this stage!", temporaryT0Extractions.size() <= 1);
43
44 if (temporaryT0Extractions.empty()) {
45 m_gridExtractor.apply(recoTracks);
46 // if neither the hit based nor the grid based extraction finds something, we can not do anything
47 if (not m_gridExtractor.wasSuccessful()) {
48 m_wasSuccessful = false;
49 return;
50 }
51 } else {
52 // Make sure to actually use the temporary hit based extraction result
53 m_eventT0->setEventT0(temporaryT0Extractions[0]);
54 }
55
56 m_finalExtractor.apply(recoTracks);
58
59 if (not wasSuccessful()) {
60 B2DEBUG(25, "Resetting the event t0 as the final extraction was not successful.");
62 }
63}
StoreObjPtr< EventT0 > m_eventT0
Pointer to the storage of the eventwise T0 estimation in the data store.
bool m_wasSuccessful
Variable to show that the execution was successful.
IterativeChi2BasedEventTimeExtractor m_finalExtractor
Refining extractor in the end.
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.
GridEventTimeExtractor< DriftLengthBasedEventTimeExtractor > m_gridExtractor
Slow grid based extractor.
Generic findlet applying a certain time extractor multiple times.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override final
Expose our parameters to the super module.
The Module parameter list class.
void addProcessingSignalListener(ProcessingSignalListener *psl)
Register a processing signal listener to be notified.
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
void apply(std::vector< RecoTrack * > &recoTracks) override final
Timing extraction for this findlet.
bool wasSuccessful() const
Returns true if the last run t0 extraction was successful.
void resetEventT0() const
Reset the t0 value to cached value if it exists or clear it otherwise.
Abstract base class for different kinds of events.