Belle II Software development
TrackFinderSegmentTripleAutomaton.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/trackFindingCDC/findlets/minimal/AxialSegmentPairCreator.h>
11#include <tracking/trackFindingCDC/findlets/minimal/SegmentTripleCreator.h>
12
13#include <tracking/trackFindingCDC/findlets/minimal/TrackCreatorSegmentTripleAutomaton.h>
14#include <tracking/trackFindingCDC/findlets/minimal/TrackCreatorSingleSegments.h>
15#include <tracking/trackFindingCDC/findlets/minimal/TrackLinker.h>
16#include <tracking/trackFindingCDC/findlets/minimal/TrackOrienter.h>
17
18#include <tracking/trackFindingCDC/filters/segmentTripleRelation/ChooseableSegmentTripleRelationFilter.h>
19
20#include <tracking/trackingUtilities/eventdata/tracks/CDCTrack.h>
21#include <tracking/trackingUtilities/eventdata/tracks/CDCSegmentTriple.h>
22#include <tracking/trackingUtilities/eventdata/tracks/CDCAxialSegmentPair.h>
23
24#include <tracking/trackingUtilities/findlets/minimal/WeightedRelationCreator.h>
25#include <tracking/trackingUtilities/findlets/base/StoreVectorSwapper.h>
26
27#include <vector>
28
29namespace Belle2 {
34 namespace TrackingUtilities {
35 class CDCTrack;
36 }
37 namespace TrackFindingCDC {
38
41 TrackingUtilities::Findlet<const TrackingUtilities::CDCSegment2D, TrackingUtilities::CDCTrack> {
42
43 private:
46
47 public:
50
52 std::string getDescription() final;
53
55 void exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix) final;
56
58 void beginEvent() final;
59
61 void apply(const std::vector<TrackingUtilities::CDCSegment2D>& inputSegments,
62 std::vector<TrackingUtilities::CDCTrack>& tracks) final;
63
64 private:
65 // Findlets
68
71
73 TrackingUtilities::WeightedRelationCreator<const TrackingUtilities::CDCSegmentTriple, TrackFindingCDC::ChooseableSegmentTripleRelationFilter>
75
78
81
84
87
89 TrackingUtilities::StoreVectorSwapper<TrackingUtilities::CDCSegmentTriple> m_segmentTripleSwapper{"CDCSegmentTripleVector"};
90
91 // object pools
93 std::vector<TrackingUtilities::CDCAxialSegmentPair> m_axialSegmentPairs;
94
96 std::vector<TrackingUtilities::CDCSegmentTriple> m_segmentTriples;
97
99 std::vector<TrackingUtilities::WeightedRelation<const TrackingUtilities::CDCSegmentTriple> > m_segmentTripleRelations;
100
102 std::vector<TrackingUtilities::CDCTrack> m_preLinkingTracks;
103
105 std::vector<TrackingUtilities::CDCTrack> m_orientedTracks;
106 };
107 }
109}
The Module parameter list class.
Class providing construction combinatorics for the axial stereo segment pairs.
Class providing construction combinatorics for the axial stereo segment pairs.
Findlet that generates tracks based on a cellular automaton of segment triples.
Searches for segments that have not been used at all and creates tracks from them.
TrackingUtilities::WeightedRelationCreator< const TrackingUtilities::CDCSegmentTriple, TrackFindingCDC::ChooseableSegmentTripleRelationFilter > m_segmentTripleRelationCreator
Instance of the segment triple relation creator.
TrackOrienter m_trackOrienter
Fixes the direction of flight of tracks by a simple chooseable heuristic.
TrackCreatorSingleSegments m_trackCreatorSingleSegments
Creates tracks from left over segments.
TrackCreatorSegmentTripleAutomaton m_trackCreatorSegmentTripleAutomaton
Instance of the cellular automaton creating creating tracks over segment triple.
std::vector< TrackingUtilities::CDCTrack > m_preLinkingTracks
Memory for the tracks before linking was applied.
TrackLinker m_trackLinker
Findlet responsible for the linking of tracks.
void apply(const std::vector< TrackingUtilities::CDCSegment2D > &inputSegments, std::vector< TrackingUtilities::CDCTrack > &tracks) final
Generates the tracks.
std::vector< TrackingUtilities::CDCAxialSegmentPair > m_axialSegmentPairs
Memory for the axial to axial segment pairs.
AxialSegmentPairCreator m_axialSegmentPairCreator
Instance of the axial to axial segment pair creator.
std::string getDescription() final
Short description of the findlet.
std::vector< TrackingUtilities::WeightedRelation< const TrackingUtilities::CDCSegmentTriple > > m_segmentTripleRelations
Memory for the segment triple relations.
TrackingUtilities::StoreVectorSwapper< TrackingUtilities::CDCSegmentTriple > m_segmentTripleSwapper
Helper to swap the local segment triples out to the DataStore.
SegmentTripleCreator m_segmentTripleCreator
Instance of the segment triple creator.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
std::vector< TrackingUtilities::CDCTrack > m_orientedTracks
Memory for the tracks after orientation was applied.
TrackFinderSegmentTripleAutomaton()
Constructor registering the subordinary findlets to the processing signal distribution machinery.
TrackingUtilities::Findlet< const TrackingUtilities::CDCSegment2D, TrackingUtilities::CDCTrack > Super
Type of the base class.
std::vector< TrackingUtilities::CDCSegmentTriple > m_segmentTriples
Memory for the segment triples.
Links tracks based on a filter criterion.
Definition TrackLinker.h:34
Fixes the orientation of tracks by a simple heuristic.
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.