Belle II Software development
SegmentTrackCombiner.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/trackFindingCDC/findlets/combined/SegmentTrackCombiner.h>
9
10#include <tracking/trackingUtilities/eventdata/segments/CDCSegment2D.h>
11#include <tracking/trackingUtilities/eventdata/tracks/CDCTrack.h>
12
13#include <tracking/trackingUtilities/filters/base/ChooseableFilter.icc.h>
14
15using namespace Belle2;
16using namespace TrackFindingCDC;
17using namespace TrackingUtilities;
18
21
23{
31
32 ModuleParamList moduleParamList;
33 const std::string prefix = "";
34 this->exposeParameters(&moduleParamList, prefix);
35 moduleParamList.getParameter<double>("sharedHitsCutValue").setDefaultValue(1.0);
36 moduleParamList.getParameter<bool>("useOnlySingleBestCandidate").setDefaultValue(false);
37 moduleParamList.getParameter<bool>("hitSelectorUseOnlySingleBestCandidate").setDefaultValue(false);
38}
39
41{
42 return "Findlet for the combination of tracks and segments.";
43}
44
51
52void SegmentTrackCombiner::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
53{
54 Super::exposeParameters(moduleParamList, prefix);
55
56 m_sharedHitsMatcher.exposeParameters(moduleParamList, prefix);
57 m_selectPairsWithSharedHits.exposeParameters(moduleParamList, prefixed(prefix, "sharedHits"));
58 m_chooseableSegmentTrackSelector.exposeParameters(moduleParamList, prefixed(prefix, "segmentTrack"));
59 m_singleMatchSelector.exposeParameters(moduleParamList, prefix);
60 m_segmentTrackAdderWithNormalization.exposeParameters(moduleParamList, prefix);
61 m_trackRejecter.exposeParameters(moduleParamList, prefixed(prefix, "track"));
62}
63
64// Do the combination work. See the SegmentTrackCombiner methods for full details.
65void SegmentTrackCombiner::apply(std::vector<CDCSegment2D>& segments,
66 std::vector<TrackingUtilities::CDCTrack>& tracks)
67{
68 m_trackNormalizer.apply(tracks);
69
70 // Add a precut to add segments which are fully taken immediately at this stage
71 for (const CDCSegment2D& segment : segments) {
72 if (segment.isFullyTaken()) {
73 segment.getAutomatonCell().setTakenFlag();
74 } else {
75 segment.getAutomatonCell().unsetTakenFlag();
76 }
77 }
78
79 // After that, relations contains all pairs of segments and tracks, with the number of shared hits as weight
80 m_sharedHitsMatcher.apply(tracks, segments, m_relations);
81
82 // Require a certain (definable) amount of shared hits between segments and tracks
84
85 // Apply a (mva) filter to all combinations
87
88 // Search for the best combinations
90
91 // Add those combinations and remove all hits, that are part of other tracks (non-selected combinations)
93
94 // Reject tracks according to a (mva) filter
95 m_trackRejecter.apply(tracks);
96}
The Module parameter list class.
void beginEvent() final
Signal the beginning of a new event.
TrackingUtilities::FilterSelector< TrackingUtilities::CDCTrack, TrackingUtilities::CDCSegment2D, TrackingUtilities::ChooseableFilter< SegmentTrackFilterFactory > > m_chooseableSegmentTrackSelector
Reference to the chooser to be used for matching segments and tracks in the first step.
SegmentTrackCombiner()
Constructor setting up the filter parameters.
std::string getDescription() final
Short description of the findlet.
std::vector< TrackingUtilities::WeightedRelation< TrackingUtilities::CDCTrack, const TrackingUtilities::CDCSegment2D > > m_relations
Object pools.
TrackingUtilities::CutSelector< TrackingUtilities::CDCTrack, TrackingUtilities::CDCSegment2D > m_selectPairsWithSharedHits
Select only those pairs, which share at least a certain amount of hits.
TrackingUtilities::SingleMatchSelector< TrackingUtilities::CDCTrack, TrackingUtilities::CDCSegment2D > m_singleMatchSelector
Select only the best matching segment-track relations and remove the hits from the other ones.
TrackNormalizer m_trackNormalizer
Findlet for normalizing the tracks.
SegmentTrackAdderWithNormalization m_segmentTrackAdderWithNormalization
Add the matched segments to tracks.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
TrackRejecter m_trackRejecter
Findlet to filter out fake tracks.
void apply(std::vector< TrackingUtilities::CDCSegment2D > &segments, std::vector< TrackingUtilities::CDCTrack > &tracks) override
Try to combine the segments and the tracks.
TrackingUtilities::SharingHitsMatcher< TrackingUtilities::CDCTrack, TrackingUtilities::CDCSegment2D > m_sharedHitsMatcher
Matcher for creating relations between tracks and segments based on the number of shared hits.
A reconstructed sequence of two dimensional hits in one super layer.
Convenvience wrapper to setup a Chooseable filter from a specific factory object.
Filter can delegate to a filter chosen and set up at run time by parameters.
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
Abstract base class for different kinds of events.