Belle II Software  release-05-01-25
TrackFinder.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Oliver Frost *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/trackFindingCDC/findlets/complete/TrackFinder.h>
11 
12 #include <framework/core/ModuleParamList.templateDetails.h>
13 #include <framework/core/ModuleParam.h>
14 
15 #include <vector>
16 
17 using namespace Belle2;
18 using namespace TrackFindingCDC;
19 
21 {
25 
28 
31 
34 
38 
39  const std::string prefix = "";
40  // Setup m_wireHitPreparer
41  {
42  ModuleParamList moduleParamList;
43  m_wireHitPreparer.exposeParameters(&moduleParamList, prefix);
44 
45  moduleParamList.getParameter<std::string>("flightTimeEstimation").setDefaultValue("outwards");
46  }
47 
48  // Setup m_trackQualityAsserter
49  {
50  ModuleParamList moduleParamList;
51  m_trackQualityAsserter.exposeParameters(&moduleParamList, prefix);
52 
53  std::vector<std::string> corrections({"B2B"});
54  moduleParamList.getParameter<std::vector<std::string>>("corrections")
55  .setDefaultValue(corrections);
56  }
57 
58  // Setup m_finalTrackQualityAsserter
59  {
60  ModuleParamList moduleParamList;
61  m_finalTrackQualityAsserter.exposeParameters(&moduleParamList, prefix);
62 
63  std::vector<std::string> corrections({"LayerBreak", "OneSuperlayer", "Small"});
64  moduleParamList.getParameter<std::vector<std::string>>("corrections")
65  .setDefaultValue(corrections);
66  }
67 }
68 
70 {
71  return "Combined track finder using the global legendre finder as well as the cellular automaton "
72  "track finder.";
73 }
74 
75 void TrackFinder::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
76 {
77  // Expose a selection of the parameters
78  m_wireHitPreparer.exposeParameters(moduleParamList, prefix);
79  m_trackExporter.exposeParameters(moduleParamList, prefix);
80 
81  moduleParamList->addParameter("withCA",
83  "Also run the segment linking track finder and combine results.",
85 }
86 
88 {
89  // Reserve some space for the created objects.
90  std::vector<CDCWireHit> m_wireHits;
91  std::vector<CDCWireHitCluster> m_clusters;
92  std::vector<CDCWireHitCluster> m_superClusters;
93  std::vector<CDCSegment2D> m_segments;
94  std::vector<CDCTrack> m_axialTracks;
95  std::vector<CDCTrack> m_tracks;
96  m_wireHits.reserve(2000);
97  m_clusters.reserve(200);
98  m_superClusters.reserve(100);
99  m_segments.reserve(200);
100  m_axialTracks.reserve(30);
101  m_tracks.reserve(30);
102 
103  m_wireHitPreparer.apply(m_wireHits);
104  m_clusterPreparer.apply(m_wireHits, m_clusters, m_superClusters);
105  m_segmentFinderFacetAutomaton.apply(m_clusters, m_segments);
106 
107  m_axialTrackFinderLegendre.apply(m_wireHits, m_axialTracks);
108  m_trackQualityAsserter.apply(m_axialTracks);
109 
110  m_stereoHitFinder.apply(m_wireHits, m_axialTracks);
111  m_segmentTrackCombiner.apply(m_segments, m_axialTracks);
112 
113  if (m_param_withCA) {
114  m_trackFinderSegmentPairAutomaton.apply(m_segments, m_tracks);
115  m_trackCombiner.apply(m_axialTracks, m_tracks, m_tracks);
116  } else {
117  m_tracks.swap(m_axialTracks);
118  }
119 
121 
122  if (m_param_withCA) {
123  m_trackCreatorSingleSegments.apply(m_segments, m_tracks);
124  }
125 
126  m_trackExporter.apply(m_tracks);
127 }
Belle2::TrackFindingCDC::TrackFinder::getDescription
std::string getDescription() override
Short description of the findlet.
Definition: TrackFinder.cc:69
Belle2::TrackFindingCDC::TrackExporter::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: TrackExporter.cc:33
Belle2::TrackFindingCDC::TrackFinder::TrackFinder
TrackFinder()
Constructor registering the subordinary findlets to the processing signal distribution machinery.
Definition: TrackFinder.cc:20
Belle2::TrackFindingCDC::TrackFinder::m_trackExporter
TrackExporter m_trackExporter
Exports the generated CDCTracks as RecoTracks.
Definition: TrackFinder.h:104
Belle2::ModuleParamList::getParameter
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
Definition: ModuleParamList.templateDetails.h:90
Belle2::TrackFindingCDC::TrackFinder::m_trackQualityAsserter
TrackQualityAsserter m_trackQualityAsserter
Improve the quality of the axial tracks.
Definition: TrackFinder.h:83
Belle2::TrackFindingCDC::TrackFinder::m_segmentTrackCombiner
SegmentTrackCombiner m_segmentTrackCombiner
Join the matching segments into the tracks.
Definition: TrackFinder.h:89
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::addProcessingSignalListener
void addProcessingSignalListener(ProcessingSignalListener *psl)
Register a processing signal listener to be notified.
Definition: CompositeProcessingSignalListener.cc:57
Belle2::TrackFindingCDC::TrackQualityAsserter::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: TrackQualityAsserter.cc:36
Belle2::TrackFindingCDC::TrackFinder::m_wireHitPreparer
WireHitPreparer m_wireHitPreparer
Preparation findlet creating the wire hits from the packed CDCHits.
Definition: TrackFinder.h:71
Belle2::TrackFindingCDC::WireHitPreparer::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: WireHitPreparer.cc:29
Belle2::TrackFindingCDC::TrackCreatorSingleSegments::apply
void apply(const std::vector< CDCSegment2D > &segments, std::vector< CDCTrack > &tracks) final
Main algorithm.
Definition: TrackCreatorSingleSegments.cc:43
Belle2::TrackFindingCDC::TrackFinder::apply
void apply() final
Execute the findlet.
Definition: TrackFinder.cc:87
Belle2::TrackFindingCDC::TrackFinder::m_finalTrackQualityAsserter
TrackQualityAsserter m_finalTrackQualityAsserter
Final track quality assertions.
Definition: TrackFinder.h:98
Belle2::TrackFindingCDC::TrackFinder::m_trackFinderSegmentPairAutomaton
TrackFinderSegmentPairAutomaton m_trackFinderSegmentPairAutomaton
Second stage cellular automaton track finder from segments.
Definition: TrackFinder.h:92
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::TrackFindingCDC::TrackFinder::m_stereoHitFinder
StereoHitFinder m_stereoHitFinder
Assoziate the stereo hits that best match to the axial tracks.
Definition: TrackFinder.h:86
Belle2::TrackFindingCDC::TrackExporter::apply
void apply(std::vector< CDCTrack > &tracks) final
Write give tracks into track store array.
Definition: TrackExporter.cc:76
Belle2::TrackFindingCDC::TrackFinderSegmentPairAutomaton::apply
void apply(const std::vector< CDCSegment2D > &inputSegments, std::vector< CDCTrack > &tracks) final
Generates the tracks from segments.
Definition: TrackFinderSegmentPairAutomaton.cc:67
Belle2::TrackFindingCDC::SegmentFinderFacetAutomaton::apply
void apply(std::vector< CDCWireHitCluster > &clusters, std::vector< CDCSegment2D > &outputSegments) final
Generates the segment from wire hits.
Definition: SegmentFinderFacetAutomaton.cc:72
Belle2::TrackFindingCDC::WireHitPreparer::apply
void apply(std::vector< CDCWireHit > &outputWireHits) final
Main function preparing the wire hits.
Definition: WireHitPreparer.cc:38
Belle2::TrackFindingCDC::TrackFinder::m_param_withCA
bool m_param_withCA
Parameter: Activate the combination of the local segment linking.
Definition: TrackFinder.h:66
Belle2::TrackFindingCDC::TrackCombiner::apply
void apply(const std::vector< CDCTrack > &inputTracks, const std::vector< CDCTrack > &secondInputTracks, std::vector< CDCTrack > &tracks) final
Main algorithm.
Definition: TrackCombiner.cc:100
Belle2::TrackFindingCDC::TrackFinder::m_trackCreatorSingleSegments
TrackCreatorSingleSegments m_trackCreatorSingleSegments
Add tracks from the first super layer that are contained with in the first super layer.
Definition: TrackFinder.h:101
Belle2::TrackFindingCDC::StereoHitFinder::apply
void apply(std::vector< CDCWireHit > &inputWireHits, std::vector< CDCTrack > &tracks) final
Generates the segment from wire hits.
Definition: StereoHitFinder.cc:58
Belle2::TrackFindingCDC::TrackFinder::m_segmentFinderFacetAutomaton
SegmentFinderFacetAutomaton m_segmentFinderFacetAutomaton
First stage cellular automaton segment finder.
Definition: TrackFinder.h:77
Belle2::TrackFindingCDC::TrackFinder::m_clusterPreparer
ClusterPreparer m_clusterPreparer
Preparation findlet creating the clusters wire hits forming locally connected groups.
Definition: TrackFinder.h:74
Belle2::TrackFindingCDC::TrackFinder::m_axialTrackFinderLegendre
AxialTrackFinderLegendre m_axialTrackFinderLegendre
Axial track finder.
Definition: TrackFinder.h:80
Belle2::TrackFindingCDC::TrackFinder::m_trackCombiner
TrackCombiner m_trackCombiner
Combine the tracks from the global search with the tracks from the local search.
Definition: TrackFinder.h:95
Belle2::TrackFindingCDC::SegmentTrackCombiner::apply
void apply(std::vector< CDCSegment2D > &segments, std::vector< CDCTrack > &tracks) override
Try to combine the segments and the tracks.
Definition: SegmentTrackCombiner.cc:66
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46
Belle2::TrackFindingCDC::TrackFinder::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: TrackFinder.cc:75
Belle2::TrackFindingCDC::TrackQualityAsserter::apply
void apply(std::vector< CDCTrack > &tracks) final
Main function to clean up the tracks.
Definition: TrackQualityAsserter.cc:54
Belle2::TrackFindingCDC::ClusterPreparer::apply
void apply(std::vector< CDCWireHit > &inputWireHits, std::vector< CDCWireHitCluster > &clusters, std::vector< CDCWireHitCluster > &superClusters) final
Generates the segment from wire hits.
Definition: ClusterPreparer.cc:36
Belle2::TrackFindingCDC::AxialTrackFinderLegendre::apply
void apply(const std::vector< CDCWireHit > &wireHits, std::vector< CDCTrack > &tracks)
Main method to apply the track finding.
Definition: AxialTrackFinderLegendre.cc:45