Belle II Software  release-05-01-25
SegmentTrackCombiner.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - 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 #include <tracking/trackFindingCDC/findlets/combined/SegmentTrackCombiner.h>
11 
12 #include <tracking/trackFindingCDC/eventdata/segments/CDCSegment2D.h>
13 #include <tracking/trackFindingCDC/eventdata/tracks/CDCTrack.h>
14 
15 #include <tracking/trackFindingCDC/filters/base/ChooseableFilter.icc.h>
16 
17 using namespace Belle2;
18 using namespace TrackFindingCDC;
19 
22 
24 {
32 
33  ModuleParamList moduleParamList;
34  const std::string prefix = "";
35  this->exposeParameters(&moduleParamList, prefix);
36  moduleParamList.getParameter<double>("sharedHitsCutValue").setDefaultValue(1.0);
37  moduleParamList.getParameter<bool>("useOnlySingleBestCandidate").setDefaultValue(false);
38  moduleParamList.getParameter<bool>("hitSelectorUseOnlySingleBestCandidate").setDefaultValue(false);
39 }
40 
42 {
43  return "Findlet for the combination of tracks and segments.";
44 }
45 
47 {
48  m_relations.clear();
49 
51 }
52 
53 void SegmentTrackCombiner::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
54 {
55  Super::exposeParameters(moduleParamList, prefix);
56 
57  m_sharedHitsMatcher.exposeParameters(moduleParamList, prefix);
58  m_selectPairsWithSharedHits.exposeParameters(moduleParamList, prefixed(prefix, "sharedHits"));
59  m_chooseableSegmentTrackSelector.exposeParameters(moduleParamList, prefixed(prefix, "segmentTrack"));
60  m_singleMatchSelector.exposeParameters(moduleParamList, prefix);
62  m_trackRejecter.exposeParameters(moduleParamList, prefixed(prefix, "track"));
63 }
64 
65 // Do the combination work. See the SegmentTrackCombiner methods for full details.
66 void SegmentTrackCombiner::apply(std::vector<TrackFindingCDC::CDCSegment2D>& segments,
67  std::vector<TrackFindingCDC::CDCTrack>& tracks)
68 {
69  m_trackNormalizer.apply(tracks);
70 
71  // Add a precut to add segments which are fully taken immediately at this stage
72  for (const CDCSegment2D& segment : segments) {
73  if (segment.isFullyTaken()) {
74  segment.getAutomatonCell().setTakenFlag();
75  } else {
76  segment.getAutomatonCell().unsetTakenFlag();
77  }
78  }
79 
80  // After that, relations contains all pairs of segments and tracks, with the number of shared hits as weight
81  m_sharedHitsMatcher.apply(tracks, segments, m_relations);
82 
83  // Require a certain (definable) amount of shared hits between segments and tracks
85 
86  // Apply a (mva) filter to all combinations
88 
89  // Search for the best combinations
91 
92  // Add those combinations and remove all hits, that are part of other tracks (non-selected combinations)
94 
95  // Reject tracks according to a (mva) filter
96  m_trackRejecter.apply(tracks);
97 }
Belle2::TrackFindingCDC::SegmentTrackCombiner::m_relations
std::vector< WeightedRelation< CDCTrack, const CDCSegment2D > > m_relations
Object pools.
Definition: SegmentTrackCombiner.h:115
Belle2::TrackFindingCDC::SegmentTrackAdderWithNormalization::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Expose the parameters of the sub-findlets.
Definition: SegmentTrackAdderWithNormalization.cc:31
Belle2::TrackFindingCDC::ChooseableFilter
Convenvience wrapper to setup a Chooseable filter from a specific factory object.
Definition: ChooseableFilter.dcl.h:107
Belle2::ModuleParamList::getParameter
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
Definition: ModuleParamList.templateDetails.h:90
Belle2::TrackFindingCDC::SegmentTrackCombiner::m_singleMatchSelector
SingleMatchSelector< CDCTrack, CDCSegment2D > m_singleMatchSelector
Select only the best matching segment-track relations and remove the hits from the other ones.
Definition: SegmentTrackCombiner.h:103
Belle2::TrackFindingCDC::SegmentTrackCombiner::m_selectPairsWithSharedHits
CutSelector< CDCTrack, CDCSegment2D > m_selectPairsWithSharedHits
Select only those pairs, which share at least a certain amount of hits.
Definition: SegmentTrackCombiner.h:97
Belle2::TrackFindingCDC::SegmentTrackCombiner::beginEvent
void beginEvent() final
Signal the beginning of a new event.
Definition: SegmentTrackCombiner.cc:46
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::addProcessingSignalListener
void addProcessingSignalListener(ProcessingSignalListener *psl)
Register a processing signal listener to be notified.
Definition: CompositeProcessingSignalListener.cc:57
Belle2::TrackFindingCDC::SegmentTrackCombiner::m_sharedHitsMatcher
SharingHitsMatcher< CDCTrack, CDCSegment2D > m_sharedHitsMatcher
Matcher for creating relations between tracks and segments based on the number of shared hits.
Definition: SegmentTrackCombiner.h:94
Belle2::TrackFindingCDC::SegmentTrackCombiner::m_trackRejecter
TrackRejecter m_trackRejecter
Findlet to filter out fake tracks.
Definition: SegmentTrackCombiner.h:109
Belle2::TrackFindingCDC::SegmentTrackCombiner::m_segmentTrackAdderWithNormalization
SegmentTrackAdderWithNormalization m_segmentTrackAdderWithNormalization
Add the matched segments to tracks.
Definition: SegmentTrackCombiner.h:106
Belle2::TrackFindingCDC::SegmentTrackCombiner::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: SegmentTrackCombiner.cc:53
Belle2::TrackFindingCDC::SegmentTrackCombiner::getDescription
std::string getDescription() final
Short description of the findlet.
Definition: SegmentTrackCombiner.cc:41
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::Findlet< CDCSegment2D &, CDCTrack & >::exposeParameters
virtual void exposeParameters(ModuleParamList *moduleParamList __attribute__((unused)), const std::string &prefix __attribute__((unused)))
Forward prefixed parameters of this findlet to the module parameter list.
Definition: Findlet.h:79
Belle2::TrackFindingCDC::TrackNormalizer::apply
void apply(std::vector< CDCTrack > &tracks) final
Fit the tracks.
Definition: TrackNormalizer.cc:25
Belle2::TrackFindingCDC::TrackRejecter::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: TrackRejecter.cc:38
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::beginEvent
void beginEvent() override
Receive and dispatch signal for the start of a new event.
Definition: CompositeProcessingSignalListener.cc:33
Belle2::TrackFindingCDC::SegmentTrackCombiner::m_chooseableSegmentTrackSelector
FilterSelector< CDCTrack, CDCSegment2D, ChooseableFilter< SegmentTrackFilterFactory > > m_chooseableSegmentTrackSelector
Reference to the chooser to be used for matching segments and tracks in the first step.
Definition: SegmentTrackCombiner.h:100
Belle2::TrackFindingCDC::CDCSegment2D
A reconstructed sequence of two dimensional hits in one super layer.
Definition: CDCSegment2D.h:40
Belle2::TrackFindingCDC::Chooseable
Filter can delegate to a filter chosen and set up at run time by parameters.
Definition: ChooseableFilter.dcl.h:39
Belle2::TrackFindingCDC::SegmentTrackAdderWithNormalization::apply
void apply(std::vector< WeightedRelation< CDCTrack, const CDCSegment2D >> &relations, std::vector< CDCTrack > &tracks, const std::vector< CDCSegment2D > &segment) override
Apply the findlet.
Definition: SegmentTrackAdderWithNormalization.cc:47
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::SegmentTrackCombiner::SegmentTrackCombiner
SegmentTrackCombiner()
Constructor setting up the filter parameters.
Definition: SegmentTrackCombiner.cc:23
Belle2::TrackFindingCDC::TrackRejecter::apply
void apply(std::vector< CDCTrack > &tracks) final
Main algorithm.
Definition: TrackRejecter.cc:47
Belle2::TrackFindingCDC::SegmentTrackCombiner::m_trackNormalizer
TrackNormalizer m_trackNormalizer
Findlet for normalizing the tracks.
Definition: SegmentTrackCombiner.h:112