Belle II Software  release-05-01-25
CKFToSVDSeedFindlet.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Nils Braun *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #include <tracking/ckf/svd/findlets/CKFToSVDSeedFindlet.h>
12 
13 #include <tracking/ckf/general/findlets/StateCreator.icc.h>
14 #include <tracking/ckf/general/findlets/TreeSearcher.icc.h>
15 #include <tracking/ckf/general/findlets/StateRejecter.icc.h>
16 #include <tracking/ckf/general/findlets/StateCreatorWithReversal.icc.h>
17 
18 #include <tracking/trackFindingCDC/utilities/ParameterVariant.h>
19 
20 #include <framework/core/ModuleParamList.h>
21 
22 using namespace Belle2;
23 using namespace TrackFindingCDC;
24 
26 
28 {
29  addProcessingSignalListener(&m_dataHandler);
30  addProcessingSignalListener(&m_hitsLoader);
31  addProcessingSignalListener(&m_stateCreatorFromTracks);
32  addProcessingSignalListener(&m_stateCreatorFromHits);
33  addProcessingSignalListener(&m_relationCreator);
34  addProcessingSignalListener(&m_treeSearchFindlet);
35  addProcessingSignalListener(&m_recoTrackRelator);
36  addProcessingSignalListener(&m_bestMatchSelector);
37  addProcessingSignalListener(&m_relationApplier);
38 }
39 
40 void CKFToSVDSeedFindlet::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
41 {
42  Super::exposeParameters(moduleParamList, prefix);
43 
44  m_dataHandler.exposeParameters(moduleParamList, prefix);
45  m_hitsLoader.exposeParameters(moduleParamList, prefix);
46  m_stateCreatorFromTracks.exposeParameters(moduleParamList, prefix);
47  m_stateCreatorFromHits.exposeParameters(moduleParamList, prefix);
48  m_relationCreator.exposeParameters(moduleParamList, prefix);
49  m_treeSearchFindlet.exposeParameters(moduleParamList, prefix);
50  m_bestMatchSelector.exposeParameters(moduleParamList, prefix);
51  m_recoTrackRelator.exposeParameters(moduleParamList, prefix);
52  m_relationApplier.exposeParameters(moduleParamList, prefix);
53 
54  moduleParamList->addParameter("minimalHitRequirement", m_param_minimalHitRequirement,
55  "Minimal Hit requirement for the results (counted in space points)",
56  m_param_minimalHitRequirement);
57 
58  moduleParamList->getParameter<std::string>("firstHighFilter").setDefaultValue("non_ip_crossing");
59  moduleParamList->getParameter<std::string>("advanceHighFilter").setDefaultValue("advance");
60  moduleParamList->getParameter<std::string>("secondHighFilter").setDefaultValue("all");
61  moduleParamList->getParameter<std::string>("updateHighFilter").setDefaultValue("fit");
62  moduleParamList->getParameter<std::string>("thirdHighFilter").setDefaultValue("all");
63 
64  moduleParamList->getParameter<std::string>("hitsSpacePointsStoreArrayName").setDefaultValue("SVDSpacePoints");
65 
66  moduleParamList->getParameter<bool>("endEarly").setDefaultValue(false);
67 }
68 
70 {
71  Super::beginEvent();
72 
73  m_cdcRecoTrackVector.clear();
74  m_spacePointVector.clear();
75 
76  m_seedStates.clear();
77  m_states.clear();
78  m_relations.clear();
79 
80  m_results.clear();
81 
82  m_relationsCDCToSVD.clear();
83 }
84 
86 {
87  m_dataHandler.apply(m_cdcRecoTrackVector);
88  m_hitsLoader.apply(m_spacePointVector);
89 
90  if (m_spacePointVector.empty() or m_cdcRecoTrackVector.empty()) {
91  return;
92  }
93 
94  m_stateCreatorFromTracks.apply(m_cdcRecoTrackVector, m_seedStates);
95  m_stateCreatorFromHits.apply(m_spacePointVector, m_states);
96 
97  m_relationCreator.apply(m_seedStates, m_states, m_relations);
98  B2DEBUG(50, "Created " << m_relations.size() << " relations.");
99 
100  m_treeSearchFindlet.apply(m_seedStates, m_states, m_relations, m_results);
101  B2DEBUG(50, "Having found " << m_results.size() << " results before overlap check");
102 
103  const auto hasLowHitNumber = [this](const CKFResult<RecoTrack, SpacePoint>& result) {
104  return result.getHits().size() < m_param_minimalHitRequirement;
105  };
106  TrackFindingCDC::erase_remove_if(m_results, hasLowHitNumber);
107  B2DEBUG(50, "After filtering: Having found " << m_results.size() << " results before overlap check");
108 
109  m_recoTrackRelator.apply(m_results, m_relationsCDCToSVD);
110  m_bestMatchSelector.apply(m_relationsCDCToSVD);
111  m_relationApplier.apply(m_relationsCDCToSVD);
112 }
Belle2::ModuleParamList::getParameter
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
Definition: ModuleParamList.templateDetails.h:90
Belle2::CKFResult< RecoTrack, SpacePoint >
Belle2::CKFToSVDSeedFindlet::~CKFToSVDSeedFindlet
~CKFToSVDSeedFindlet()
Default desctructor.
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::CKFToSVDSeedFindlet::CKFToSVDSeedFindlet
CKFToSVDSeedFindlet()
Constructor, for setting module description and parameters.
Definition: CKFToSVDSeedFindlet.cc:27
Belle2::CKFToSVDSeedFindlet::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Expose the parameters (also of the sub findlets).
Definition: CKFToSVDSeedFindlet.cc:40
Belle2::CKFToSVDSeedFindlet::beginEvent
void beginEvent() override
Clear the object pools.
Definition: CKFToSVDSeedFindlet.cc:69
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46
Belle2::CKFToSVDSeedFindlet::apply
void apply() override
Do the track merging.
Definition: CKFToSVDSeedFindlet.cc:85