Belle II Software development
SegmentTrackCombiner.h
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#pragma once
9
10#include <tracking/trackingUtilities/findlets/base/Findlet.h>
11
12#include <tracking/trackingUtilities/collectors/matchers/SharingHitsMatcher.h>
13#include <tracking/trackingUtilities/collectors/selectors/CutSelector.h>
14#include <tracking/trackingUtilities/collectors/selectors/FilterSelector.h>
15#include <tracking/trackingUtilities/collectors/selectors/SingleMatchSelector.h>
16
17#include <tracking/trackFindingCDC/findlets/minimal/TrackNormalizer.h>
18#include <tracking/trackFindingCDC/findlets/minimal/SegmentTrackAdderWithNormalization.h>
19#include <tracking/trackFindingCDC/findlets/minimal/TrackRejecter.h>
20
21#include <tracking/trackingUtilities/filters/base/ChooseableFilter.dcl.h>
22
23#include <tracking/trackFindingCDC/filters/segmentTrack/BaseSegmentTrackFilter.h>
24#include <tracking/trackFindingCDC/filters/segmentTrack/SegmentTrackFilterFactory.h>
25
26#include <tracking/trackingUtilities/eventdata/segments/CDCSegment2D.h>
27#include <tracking/trackingUtilities/eventdata/tracks/CDCTrack.h>
28
29#include <vector>
30
31namespace Belle2 {
36 namespace TrackingUtilities {
37 class CDCTrack;
38 }
39 namespace TrackFindingCDC {
40
41 // Guard to prevent repeated instantiations
42 // extern template class TrackingUtilities::Chooseable<BaseSegmentTrackFilter>;
43 // extern template class TrackingUtilities::ChooseableFilter<SegmentTrackFilterFactory>;
44
60 class SegmentTrackCombiner : public TrackingUtilities::Findlet<TrackingUtilities::CDCSegment2D&, TrackingUtilities::CDCTrack&> {
61
62 private:
65
66 public:
69
71 std::string getDescription() final;
72
74 void beginEvent() final;
75
77 void exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix) final;
78
80 void apply(std::vector<TrackingUtilities::CDCSegment2D>& segments,
81 std::vector<TrackingUtilities::CDCTrack>& tracks) override;
82
83 private:
84 // Findlets
86 TrackingUtilities::SharingHitsMatcher<TrackingUtilities::CDCTrack, TrackingUtilities::CDCSegment2D> m_sharedHitsMatcher;
87
89 TrackingUtilities::CutSelector<TrackingUtilities::CDCTrack, TrackingUtilities::CDCSegment2D> m_selectPairsWithSharedHits;
90
92 TrackingUtilities::FilterSelector<TrackingUtilities::CDCTrack, TrackingUtilities::CDCSegment2D, TrackingUtilities::ChooseableFilter<SegmentTrackFilterFactory>>
94
96 TrackingUtilities::SingleMatchSelector<TrackingUtilities::CDCTrack, TrackingUtilities::CDCSegment2D> m_singleMatchSelector;
97
100
103
106
108 std::vector<TrackingUtilities::WeightedRelation<TrackingUtilities::CDCTrack, const TrackingUtilities::CDCSegment2D>> m_relations;
109 };
110 }
112}
The Module parameter list class.
Add the matched segments to the tracks and normalize the tracks afterwards.
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::Findlet< TrackingUtilities::CDCSegment2D &, TrackingUtilities::CDCTrack & > Super
Type of the base class.
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.
Factory that can create appropriate segment to track combinations filters from associated names.
Findlet for normalizing the track (trajectory) into common requirements (e.g. let it start at the fir...
Deletes fake tracks that have been rejected by a filter.
Class representing a sequence of three dimensional reconstructed hits.
Definition CDCTrack.h:39
Interface for a minimal algorithm part that wants to expose some parameters to a module.
Definition Findlet.h:26
STL class.
Abstract base class for different kinds of events.
STL namespace.