Belle II Software  release-05-01-25
CKFToSVDFindlet.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, Christian Wessel *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #include <tracking/ckf/svd/findlets/CKFToSVDFindlet.h>
12 
13 #include <tracking/ckf/general/findlets/SpacePointTagger.icc.h>
14 #include <tracking/ckf/general/findlets/StateCreatorWithReversal.icc.h>
15 #include <tracking/ckf/general/findlets/StateCreator.icc.h>
16 #include <tracking/ckf/general/findlets/CKFRelationCreator.icc.h>
17 #include <tracking/ckf/general/findlets/TreeSearcher.icc.h>
18 #include <tracking/ckf/general/findlets/OverlapResolver.icc.h>
19 #include <tracking/ckf/general/findlets/StateRejecter.icc.h>
20 #include <tracking/ckf/general/findlets/ResultStorer.icc.h>
21 
22 #include <tracking/trackFindingCDC/filters/base/ChooseableFilter.icc.h>
23 #include <tracking/ckf/svd/filters/relations/LayerSVDRelationFilter.icc.h>
24 
25 #include <framework/core/ModuleParamList.h>
26 
27 using namespace Belle2;
28 using namespace TrackFindingCDC;
29 
31 
33 {
34  addProcessingSignalListener(&m_dataHandler);
35  addProcessingSignalListener(&m_hitsLoader);
36  addProcessingSignalListener(&m_stateCreatorFromTracks);
37  addProcessingSignalListener(&m_stateCreatorFromHits);
38  addProcessingSignalListener(&m_relationCreator);
39  addProcessingSignalListener(&m_treeSearchFindlet);
40  addProcessingSignalListener(&m_overlapResolver);
41  addProcessingSignalListener(&m_spacePointTagger);
42  addProcessingSignalListener(&m_resultStorer);
43 }
44 
45 void CKFToSVDFindlet::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
46 {
47  Super::exposeParameters(moduleParamList, prefix);
48 
49  m_dataHandler.exposeParameters(moduleParamList, prefix);
50  m_hitsLoader.exposeParameters(moduleParamList, prefix);
51  m_stateCreatorFromTracks.exposeParameters(moduleParamList, prefix);
52  m_stateCreatorFromHits.exposeParameters(moduleParamList, prefix);
53  m_relationCreator.exposeParameters(moduleParamList, prefix);
54  m_treeSearchFindlet.exposeParameters(moduleParamList, prefix);
55  m_overlapResolver.exposeParameters(moduleParamList, prefix);
56  m_spacePointTagger.exposeParameters(moduleParamList, prefix);
57  m_resultStorer.exposeParameters(moduleParamList, prefix);
58 
59  moduleParamList->addParameter("minimalHitRequirement", m_param_minimalHitRequirement,
60  "Minimal Hit requirement for the results (counted in space points)",
61  m_param_minimalHitRequirement);
62 
63  moduleParamList->getParameter<std::string>("firstHighFilter").setDefaultValue("mva_with_direction_check");
64  moduleParamList->getParameter<std::string>("advanceHighFilter").setDefaultValue("advance");
65  moduleParamList->getParameter<std::string>("secondHighFilter").setDefaultValue("mva");
66  moduleParamList->getParameter<std::string>("updateHighFilter").setDefaultValue("fit");
67  moduleParamList->getParameter<std::string>("thirdHighFilter").setDefaultValue("mva");
68 
69  moduleParamList->getParameter<std::string>("filter").setDefaultValue("mva");
70 
71  moduleParamList->getParameter<std::string>("hitFilter").setDefaultValue("sensor");
72  moduleParamList->getParameter<std::string>("seedFilter").setDefaultValue("all");
73  moduleParamList->getParameter<std::string>("preSeedFilter").setDefaultValue("loose");
74  moduleParamList->getParameter<std::string>("preHitFilter").setDefaultValue("loose");
75 
76  moduleParamList->getParameter<std::string>("hitsSpacePointsStoreArrayName").setDefaultValue("SVDSpacePoints");
77 
78  moduleParamList->getParameter<bool>("useAssignedHits").setDefaultValue(false);
79 }
80 
82 {
83  Super::beginEvent();
84 
85  m_cdcRecoTrackVector.clear();
86  m_spacePointVector.clear();
87 
88  m_seedStates.clear();
89  m_states.clear();
90  m_relations.clear();
91 
92  m_results.clear();
93  m_filteredResults.clear();
94 }
95 
97 {
98  m_dataHandler.apply(m_cdcRecoTrackVector);
99  m_hitsLoader.apply(m_spacePointVector);
100 
101  B2DEBUG(50, "Now have " << m_spacePointVector.size() << " hits.");
102 
103  if (m_spacePointVector.empty() or m_cdcRecoTrackVector.empty()) {
104  return;
105  }
106 
107  m_stateCreatorFromTracks.apply(m_cdcRecoTrackVector, m_seedStates);
108  m_stateCreatorFromHits.apply(m_spacePointVector, m_states);
109  m_relationCreator.apply(m_seedStates, m_states, m_relations);
110 
111  B2DEBUG(50, "Created " << m_relations.size() << " relations.");
112  m_treeSearchFindlet.apply(m_seedStates, m_states, m_relations, m_results);
113 
114  B2DEBUG(50, "Having found " << m_results.size() << " results before overlap check");
115 
116  const auto hasLowHitNumber = [this](const CKFResult<RecoTrack, SpacePoint>& result) {
117  return result.getHits().size() < m_param_minimalHitRequirement;
118  };
119  TrackFindingCDC::erase_remove_if(m_results, hasLowHitNumber);
120 
121  m_overlapResolver.apply(m_results, m_filteredResults);
122 
123  B2DEBUG(50, "Having found " << m_filteredResults.size() << " results");
124 
125  m_resultStorer.apply(m_filteredResults);
126  m_spacePointTagger.apply(m_filteredResults, m_spacePointVector);
127 }
Belle2::CKFToSVDFindlet::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Expose the parameters of the sub findlets.
Definition: CKFToSVDFindlet.cc:45
Belle2::CKFToSVDFindlet::beginEvent
void beginEvent() override
Clear the object pools.
Definition: CKFToSVDFindlet.cc:81
Belle2::ModuleParamList::getParameter
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
Definition: ModuleParamList.templateDetails.h:90
Belle2::CKFToSVDFindlet::CKFToSVDFindlet
CKFToSVDFindlet()
Constructor, for setting module description and parameters.
Definition: CKFToSVDFindlet.cc:32
Belle2::CKFResult< RecoTrack, SpacePoint >
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::CKFToSVDFindlet::apply
void apply() override
Do the track/hit finding/merging.
Definition: CKFToSVDFindlet.cc:96
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46
Belle2::CKFToSVDFindlet::~CKFToSVDFindlet
~CKFToSVDFindlet() override
Default desctructor.