Belle II Software development
StereoHitTrackQuadTreeMatcher< AQuadTree > Class Template Referenceabstract

A matcher algorithm for using a stereo quad tree for matching rl tagged wire hits to tracks. More...

#include <StereoHitTrackQuadTreeMatcher.h>

Inheritance diagram for StereoHitTrackQuadTreeMatcher< AQuadTree >:
MatcherInterface< CDCTrack, CDCRLWireHit > Findlet< AIOTypes > CompositeProcessingSignalListener ProcessingSignalListener

Public Types

using WeightedRelationItem = WeightedRelation< CDCTrack, const CDCRLWireHit >
 Shortcut class name for a weighted relation between a collector item and a collection item.
 
using IOTypes = std::tuple< AIOTypes... >
 Types that should be served to apply on invocation.
 
using IOVectors = std::tuple< std::vector< AIOTypes >... >
 Vector types that should be served to apply on invocation.
 

Public Member Functions

void exposeParameters (ModuleParamList *moduleParamList, const std::string &prefix) override
 Expose the parameters to the module.
 
void initialize () override
 Initialize the filter and the quad tree.
 
void terminate () override
 Terminate the filter and the quad tree.
 
void apply (std::vector< CDCTrack > &collectorItems, const std::vector< CDCRLWireHit > &collectionItems, std::vector< WeightedRelationItem > &weightedRelations) override
 Main function: create weighted relations between collectors and collection items using the implemented functionality overridden in a derived class.
 
virtual void apply (ToVector< AIOTypes > &... ioVectors)=0
 Main function executing the algorithm.
 
virtual std::string getDescription ()
 Brief description of the purpose of the concrete findlet.
 
void beginRun () override
 Receive and dispatch signal for the beginning of a new run.
 
void beginEvent () override
 Receive and dispatch signal for the start of a new event.
 
void endRun () override
 Receive and dispatch signal for the end of the run.
 

Protected Types

template<class T >
using ToVector = typename ToVectorImpl< T >::Type
 Short hand for ToRangeImpl.
 

Protected Member Functions

virtual void match (CDCTrack &collectorItem, const std::vector< CDCRLWireHit > &collectionItems, std::vector< WeightedRelationItem > &relationsForCollector)
 Override this function to implement your own matching algorithm between one collector and many collection items.
 
virtual Weight match (CDCTrack &collectorItem, const CDCRLWireHit &collectionItem)
 Override this function to implement your own matching algorithm between one collector and one collection items.
 
void addProcessingSignalListener (ProcessingSignalListener *psl)
 Register a processing signal listener to be notified.
 
int getNProcessingSignalListener ()
 Get the number of currently registered listeners.
 

Private Types

using Super = MatcherInterface< CDCTrack, CDCRLWireHit >
 The parent class.
 

Private Member Functions

void match (CDCTrack &track, const std::vector< CDCRLWireHit > &rlWireHits, std::vector< Super::WeightedRelationItem > &relationsForCollector) override
 Create a QuadTree and fill with each unused stereo hit (to be exact: twice for each stereo hit - right and left).
 
void writeDebugInformation ()
 Use the writeDebugInformation function of the quad tree to write the tree into a root file with a ascending number.
 

Private Attributes

bool m_param_checkForB2BTracks = true
 Parameters Set to false to skip the B2B check (good for curlers).
 
double m_param_checkForInWireBoundsFactor = 1.0
 Set to false to skip the in-wire-bound check (good for second stage).
 
unsigned int m_param_quadTreeLevel = 7
 Maximum level of the quad tree search.
 
unsigned int m_param_minimumNumberOfHits = 5
 Minimal number of hits a quad tree node must have to be called a found bin.
 
bool m_param_writeDebugInformation = false
 Set to true to output debug information.
 
unsigned int m_numberOfPassedDebugCalls = 0
 Store the number of passed calls to the debug function.
 
AQuadTree m_quadTreeInstance
 Quad tree instance.
 
std::vector< ProcessingSignalListener * > m_subordinaryProcessingSignalListeners
 References to subordinary signal processing listener contained in this findlet.
 
bool m_initialized = false
 Flag to keep track whether initialization happened before.
 
bool m_terminated = false
 Flag to keep track whether termination happened before.
 
std::string m_initializedAs
 Name of the type during initialisation.
 

Detailed Description

template<class AQuadTree>
class Belle2::TrackFindingCDC::StereoHitTrackQuadTreeMatcher< AQuadTree >

A matcher algorithm for using a stereo quad tree for matching rl tagged wire hits to tracks.

Definition at line 25 of file StereoHitTrackQuadTreeMatcher.h.

Member Typedef Documentation

◆ IOTypes

using IOTypes = std::tuple<AIOTypes...>
inherited

Types that should be served to apply on invocation.

Definition at line 30 of file Findlet.h.

◆ IOVectors

using IOVectors = std::tuple< std::vector<AIOTypes>... >
inherited

Vector types that should be served to apply on invocation.

Definition at line 53 of file Findlet.h.

◆ Super

The parent class.

Definition at line 28 of file StereoHitTrackQuadTreeMatcher.h.

◆ ToVector

using ToVector = typename ToVectorImpl<T>::Type
protectedinherited

Short hand for ToRangeImpl.

Definition at line 49 of file Findlet.h.

◆ WeightedRelationItem

Shortcut class name for a weighted relation between a collector item and a collection item.

Definition at line 46 of file MatcherInterface.h.

Member Function Documentation

◆ addProcessingSignalListener()

void addProcessingSignalListener ( ProcessingSignalListener psl)
protectedinherited

Register a processing signal listener to be notified.

Definition at line 55 of file CompositeProcessingSignalListener.cc.

56{
58}
std::vector< ProcessingSignalListener * > m_subordinaryProcessingSignalListeners
References to subordinary signal processing listener contained in this findlet.

◆ apply()

void apply ( std::vector< CDCTrack > &  collectorItems,
const std::vector< CDCRLWireHit > &  collectionItems,
std::vector< WeightedRelationItem > &  weightedRelations 
)
inlineoverrideinherited

Main function: create weighted relations between collectors and collection items using the implemented functionality overridden in a derived class.

Definition at line 52 of file MatcherInterface.h.

54 {
55 for (ACollectorItem& collectorItem : collectorItems) {
56 match(collectorItem, collectionItems, weightedRelations);
57 }
58
59 std::sort(weightedRelations.begin(), weightedRelations.end());
60 }
virtual void match(CDCTrack &collectorItem, const std::vector< CDCRLWireHit > &collectionItems, std::vector< WeightedRelationItem > &relationsForCollector)
Override this function to implement your own matching algorithm between one collector and many collec...

◆ beginEvent()

void beginEvent ( )
overridevirtualinherited

Receive and dispatch signal for the start of a new event.

Reimplemented from ProcessingSignalListener.

Reimplemented in SpacePointTagger< Belle2::CKFToPXDResult, Belle2::PXDCluster >, SpacePointTagger< Belle2::CKFToSVDResult, Belle2::SVDCluster >, BaseEventTimeExtractor< RecoTrack * >, BaseEventTimeExtractor< TrackFindingCDC::CDCWireHit & >, SharingHitsMatcher< Belle2::TrackFindingCDC::CDCTrack, Belle2::TrackFindingCDC::CDCSegment2D >, MCSymmetric< BaseAxialSegmentPairFilter >, MCSymmetric< BaseFacetFilter >, MCSymmetric< BaseFacetRelationFilter >, MCSymmetric< BaseSegmentPairFilter >, MCSymmetric< BaseSegmentPairRelationFilter >, MCSymmetric< BaseSegmentRelationFilter >, MCSymmetric< BaseSegmentTripleFilter >, MCSymmetric< BaseSegmentTripleRelationFilter >, MCSymmetric< BaseTrackRelationFilter >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCFacet >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCWireHit, true >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegment2D >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCTrack >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentPair >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentTriple >, RecoTrackStorer, ROIFinder, and SVDHoughTracking.

Definition at line 31 of file CompositeProcessingSignalListener.cc.

32{
35 psl->beginEvent();
36 }
37}
Interface for an algorithm part that needs to receive the module processing signals.
virtual void beginEvent()
Receive signal for the start of a new event.

◆ beginRun()

void beginRun ( )
overridevirtualinherited

Receive and dispatch signal for the beginning of a new run.

Reimplemented from ProcessingSignalListener.

Reimplemented in LayerRelationFilter< AFilter >, FourHitFilter, QualityIndicatorFilter, ThreeHitFilter, TwoHitVirtualIPFilter, TwoHitVirtualIPQIFilter, RecoTrackStorer, ROIFinder, SpacePointLoaderAndPreparer, and TrackCandidateResultRefiner.

Definition at line 23 of file CompositeProcessingSignalListener.cc.

24{
27 psl->beginRun();
28 }
29}
virtual void beginRun()
Receive signal for the beginning of a new run.

◆ endRun()

void endRun ( )
overridevirtualinherited

Receive and dispatch signal for the end of the run.

Reimplemented from ProcessingSignalListener.

Definition at line 39 of file CompositeProcessingSignalListener.cc.

40{
42 psl->endRun();
43 }
45}
virtual void endRun()
Receive signal for the end of the run.

◆ exposeParameters()

void exposeParameters ( ModuleParamList moduleParamList,
const std::string &  prefix 
)
overridevirtual

Expose the parameters to the module.

Reimplemented from Findlet< AIOTypes >.

Definition at line 32 of file StereoHitTrackQuadTreeMatcher.cc.

34{
35 Super::exposeParameters(moduleParamList, prefix);
36
37 moduleParamList->addParameter(prefixed(prefix, "level"), m_param_quadTreeLevel,
38 "The number of levels for the quad tree search.",
40
41 moduleParamList->addParameter(prefixed(prefix, "minimumNumberOfHits"), m_param_minimumNumberOfHits,
42 "The minimum number of hits in a quad tree bin to be called as result.",
44
45 moduleParamList->addParameter(prefixed(prefix, "writeDebugInformation"), m_param_writeDebugInformation,
46 "Set to true to output debug information.",
48
49 moduleParamList->addParameter(prefixed(prefix, "checkForB2BTracks"),
51 "Set to false to skip the check for back-2-back tracks "
52 "(good for cosmics).",
54
55 moduleParamList->addParameter(prefixed(prefix, "checkForInWireBoundsFactor"),
57 "Used to scale the CDC before checking "
58 "whether hits are in the CDC z bounds.",
60}
virtual void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix)
Forward prefixed parameters of this findlet to the module parameter list.
Definition: Findlet.h:69
bool m_param_checkForB2BTracks
Parameters Set to false to skip the B2B check (good for curlers).
bool m_param_writeDebugInformation
Set to true to output debug information.
unsigned int m_param_minimumNumberOfHits
Minimal number of hits a quad tree node must have to be called a found bin.
double m_param_checkForInWireBoundsFactor
Set to false to skip the in-wire-bound check (good for second stage).
unsigned int m_param_quadTreeLevel
Maximum level of the quad tree search.
void addParameter(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.

◆ getDescription()

virtual std::string getDescription ( )
inlinevirtualinherited

Brief description of the purpose of the concrete findlet.

Reimplemented in CosmicsTrackMergerFindlet, CDCTrackingEventLevelMdstInfoFillerFromHitsFindlet, CDCTrackingEventLevelMdstInfoFillerFromSegmentsFindlet, AxialStraightTrackFinder, AxialTrackFinderHough, AxialTrackFinderLegendre, ClusterPreparer, MonopoleAxialTrackFinderLegendre, MonopoleStereoHitFinder, MonopoleStereoHitFinderQuadratic, SegmentFinderFacetAutomaton, SegmentTrackCombiner, StereoHitFinder, TrackFinderSegmentPairAutomaton, TrackFinderSegmentTripleAutomaton, TrackQualityEstimator, WireHitPreparer, AsicBackgroundLibraryCreator, TrackFinderCosmics, AsicBackgroundDetector, AxialSegmentPairCreator, AxialStraightTrackCreator, AxialTrackCreatorHitHough, AxialTrackCreatorHitLegendre, AxialTrackCreatorMCTruth, AxialTrackCreatorSegmentHough, AxialTrackHitMigrator, AxialTrackMerger, CDCMCCloneLookUpFiller, ClusterBackgroundDetector, ClusterCreator< AWireHitRelationFilter >, ClusterRefiner< AWireHitRelationFilter >, ClusterRefiner< BridgingWireHitRelationFilter >, ClusterRefiner< Belle2::TrackFindingCDC::BridgingWireHitRelationFilter >, FacetCreator, HitReclaimer, RLTaggedWireHitCreator, SegmentAliasResolver, SegmentCreatorFacetAutomaton, SegmentCreatorMCTruth, SegmentLinker, SegmentOrienter, SegmentPairCreator, SegmentRejecter, SegmentTripleCreator, SuperClusterCreator, TrackCombiner, TrackCreatorSegmentPairAutomaton, TrackCreatorSegmentTripleAutomaton, TrackCreatorSingleSegments, TrackExporter, TrackFlightTimeAdjuster, TrackInspector, TrackLinker, TrackNormalizer, TrackOrienter, TrackRejecter, TrackSZFitter, WeightedRelationCreator< AObject, ARelationFilter >, WeightedRelationCreator< const Belle2::TrackFindingCDC::WithAutomatonCell, Belle2::PhiRecoTrackRelationFilter >, WeightedRelationCreator< const Belle2::TrackFindingCDC::CDCFacet, Belle2::TrackFindingCDC::ChooseableFilter >, WeightedRelationCreator< const Belle2::TrackFindingCDC::CDCSegment2D, Belle2::TrackFindingCDC::ChooseableFilter >, WeightedRelationCreator< const Belle2::TrackFindingCDC::CDCSegmentPair, Belle2::TrackFindingCDC::ChooseableFilter >, WeightedRelationCreator< const Belle2::TrackFindingCDC::CDCSegmentTriple, Belle2::TrackFindingCDC::ChooseableFilter >, WeightedRelationCreator< const Belle2::TrackFindingCDC::CDCTrack, Belle2::TrackFindingCDC::ChooseableFilter >, WireHitBackgroundBlocker, WireHitBackgroundDetector, WireHitCreator, WireHitMCMultiLoopBlocker, StoreArrayLoader< IOType >, StoreArrayLoader< const Belle2::SpacePoint >, StoreArrayLoader< DataStoreInputTypeRefType >, StoreVectorSwapper< IOType, a_alwaysWrite >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCFacet >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCWireHit, true >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegment2D >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCTrack >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentPair >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentTriple >, TrackFinder, TrackFinderAutomaton, SegmentFitter, SegmentTrackAdderWithNormalization, TrackQualityAsserter, HitBasedT0Extractor, and FindletStoreArrayInput< TWrappedFindlet >.

Definition at line 60 of file Findlet.h.

61 {
62 return "(no description)";
63 }

◆ getNProcessingSignalListener()

int getNProcessingSignalListener ( )
protectedinherited

Get the number of currently registered listeners.

Definition at line 60 of file CompositeProcessingSignalListener.cc.

61{
63}

◆ initialize()

void initialize
overridevirtual

Initialize the filter and the quad tree.

Reimplemented from ProcessingSignalListener.

Definition at line 64 of file StereoHitTrackQuadTreeMatcher.cc.

65{
67
69 m_quadTreeInstance.initialize();
70}
void initialize() override
Receive and dispatch signal before the start of the event processing.

◆ match() [1/3]

virtual Weight match ( CDCTrack collectorItem,
const CDCRLWireHit collectionItem 
)
inlineprotectedvirtualinherited

Override this function to implement your own matching algorithm between one collector and one collection items.

If you override this function, you just have to return a weight - the rest of the logic is handled by the MatcherInterface class.

Definition at line 82 of file MatcherInterface.h.

84 {
85 return NAN;
86 }

◆ match() [2/3]

virtual void match ( CDCTrack collectorItem,
const std::vector< CDCRLWireHit > &  collectionItems,
std::vector< WeightedRelationItem > &  relationsForCollector 
)
inlineprotectedvirtualinherited

Override this function to implement your own matching algorithm between one collector and many collection items.

A reason to override this instead of the other match function could be, if you want to apply some sort of caching for each collector item.

Definition at line 68 of file MatcherInterface.h.

70 {
71 for (const ACollectionItem& collectionItem : collectionItems) {
72 Weight weight = match(collectorItem, collectionItem);
73 relationsForCollector.emplace_back(&collectorItem, weight, &collectionItem);
74 }
75 };

◆ match() [3/3]

void match ( CDCTrack track,
const std::vector< CDCRLWireHit > &  rlWireHits,
std::vector< Super::WeightedRelationItem > &  relationsForCollector 
)
overrideprivate

Create a QuadTree and fill with each unused stereo hit (to be exact: twice for each stereo hit - right and left).

The QuadTree has two dimensions: inverse slope in z-direction and z0. Each bin with a high number of items (= stereo hits) in it is stored. Later, the one node with the highest number of items in it is taken and each hit is assigned to the track.

Definition at line 82 of file StereoHitTrackQuadTreeMatcher.cc.

84{
85 // TODO: Extract this into smaller steps
86 // TODO: Split the filtering from the rest.
87 // This means this method would output WeightedRelations based on the quad tree decision and a second filter step
88 // can be applied on these weighted relations
89
90 // Reconstruct the hits to the track
91 const CDCTrajectory2D& trajectory2D = track.getStartTrajectory3D().getTrajectory2D();
92 const bool isCurler = trajectory2D.isCurler();
93
94 using CDCRecoHitWithRLPointer = std::pair<CDCRecoHit3D, const CDCRLWireHit*>;
95 std::vector<CDCRecoHitWithRLPointer> recoHits;
96 recoHits.reserve(rlWireHits.size() + track.size());
97
98 /*
99 * Use the given trajectory to reconstruct the 2d hits in the vector in z direction
100 * to match the trajectory perfectly. Then add the newly created reconstructed 3D hit to the given list.
101 */
102 for (const CDCRLWireHit& rlWireHit : rlWireHits) {
103 if (rlWireHit.getWireHit().getAutomatonCell().hasTakenFlag()) continue;
104
105 const CDCWire& wire = rlWireHit.getWire();
106 const WireLine& wireLine = wire.getWireLine();
107 double signedDriftLength = rlWireHit.getSignedRefDriftLength();
108 for (const Vector3D& recoPos3D : trajectory2D.reconstructBoth3D(wireLine, signedDriftLength)) {
109 // Skip hits out of CDC
110 if (not wire.isInCellZBounds(recoPos3D, m_param_checkForInWireBoundsFactor)) {
111 continue;
112 }
113
114 // If the track is a curler, shift all perpS values to positive ones.
115 // Else do not use this hit if m_param_checkForB2BTracks is enabled.
116 double perpS = trajectory2D.calcArcLength2D(recoPos3D.xy());
117 if (perpS < 0) {
118 if (isCurler) {
119 perpS += trajectory2D.getArcLength2DPeriod();
120 } else if (m_param_checkForB2BTracks) {
121 continue;
122 }
123 }
124 recoHits.emplace_back(CDCRecoHit3D(rlWireHit, recoPos3D, perpS), &rlWireHit);
125 }
126 }
127
128 // Also add already found stereo hits of the track
129 for (const CDCRecoHit3D& recoHit : track) {
130 if (not recoHit.isAxial()) {
131 recoHit.getWireHit().getAutomatonCell().setAssignedFlag();
132 const CDCRLWireHit& rlWireHit = recoHit.getRLWireHit();
133 recoHits.emplace_back(recoHit, &rlWireHit);
134 }
135 }
136
137 // Do the tree finding
138 m_quadTreeInstance.seed(recoHits);
139
142 }
143
144 const auto& foundStereoHitsWithNode = m_quadTreeInstance.findSingleBest(m_param_minimumNumberOfHits);
145 m_quadTreeInstance.fell();
146
147 if (foundStereoHitsWithNode.size() != 1) {
148 return;
149 }
150
151 // There is the possibility that we have added one cdc hits twice (as left and right one). We search for those cases here:
152 auto foundStereoHits = foundStereoHitsWithNode[0].second;
153 const auto& node = foundStereoHitsWithNode[0].first;
154
156 std::vector<CDCRecoHit3D> allHits;
157 std::vector<CDCRecoHit3D> foundHits;
158 // Turn vector of pairs into vector of first items
159 for (const CDCRecoHitWithRLPointer& recoHitWithRL : recoHits) {
160 const CDCRecoHit3D& recoHit3D = recoHitWithRL.first;
161 allHits.push_back(recoHit3D);
162 }
163 for (const CDCRecoHitWithRLPointer& recoHitWithRL : foundStereoHits) {
164 const CDCRecoHit3D& recoHit3D = recoHitWithRL.first;
165 foundHits.push_back(recoHit3D);
166 }
167 m_quadTreeInstance.drawDebugPlot(allHits, foundHits, node);
168 }
169
170 // Remove all assigned hits, which where already found before (and do not need to be added again)
171 const auto& isAssignedHit = [](const CDCRecoHitWithRLPointer & recoHitWithRLPointer) {
172 const CDCRecoHit3D& recoHit3D = recoHitWithRLPointer.first;
173 const auto& automatonCell = recoHit3D.getWireHit().getAutomatonCell();
174 return automatonCell.hasAssignedFlag();
175 };
176
177 foundStereoHits.erase(std::remove_if(foundStereoHits.begin(),
178 foundStereoHits.end(),
179 isAssignedHit),
180 foundStereoHits.end());
181
182 // Sort the found stereo hits by same CDCHit and smaller distance to the node
183 auto sortByHitAndNodeCenterDistance = [node](const CDCRecoHitWithRLPointer & lhs,
184 const CDCRecoHitWithRLPointer & rhs) {
185
186
187 const CDCRecoHit3D& rhsRecoHit = rhs.first;
188 const CDCRecoHit3D& lhsRecoHit = lhs.first;
189
190 const CDCWireHit& rhsWireHit = rhsRecoHit.getWireHit();
191 const CDCWireHit& lhsWireHit = lhsRecoHit.getWireHit();
192
193 if (lhsWireHit < rhsWireHit) {
194 return true;
195 } else if (rhsWireHit < lhsWireHit) {
196 return false;
197 } else {
198 return AQuadTree::DecisionAlgorithm::BoxAlgorithm::compareDistances(node, lhsRecoHit, rhsRecoHit); //returns true if lhs < rhs
199 }
200 };
201
202 const auto& sameHitComparer = [](const CDCRecoHitWithRLPointer & lhs,
203 const CDCRecoHitWithRLPointer & rhs) {
204 const CDCRecoHit3D& rhsRecoHit = rhs.first;
205 const CDCRecoHit3D& lhsRecoHit = lhs.first;
206
207 return lhsRecoHit.getWireHit() == rhsRecoHit.getWireHit();
208 };
209
210 std::sort(foundStereoHits.begin(),
211 foundStereoHits.end(),
212 sortByHitAndNodeCenterDistance);
213
214 // If the same hit is added as right and left hypothesis, do only use the one with the smaller distance to the node.
215 foundStereoHits.erase(std::unique(foundStereoHits.begin(),
216 foundStereoHits.end(),
217 sameHitComparer),
218 foundStereoHits.end());
219
220 // Add the found stereo hits to the relation vector. In the moment, all hits get the same weight (may change later).
221 for (const CDCRecoHitWithRLPointer& recoHitWithRLPointer : foundStereoHits) {
222 const CDCRLWireHit* rlWireHit = recoHitWithRLPointer.second;
223 relationsForCollector.emplace_back(&track, foundStereoHits.size(), rlWireHit);
224 }
225}
bool hasAssignedFlag() const
Gets the current state of the already assigned marker flag.
Class representing an oriented hit wire including a hypotheses whether the causing track passes left ...
Definition: CDCRLWireHit.h:41
Class representing a three dimensional reconstructed hit.
Definition: CDCRecoHit3D.h:52
const CDCWireHit & getWireHit() const
Getter for the wire hit.
Definition: CDCRecoHit3D.h:238
Particle trajectory as it is seen in xy projection represented as a circle.
double calcArcLength2D(const Vector2D &point) const
Calculate the travel distance from the start position of the trajectory.
bool isCurler(double factor=1) const
Checks if the trajectory leaves the outer radius of the CDC times the given tolerance factor.
std::array< Vector3D, 2 > reconstructBoth3D(const WireLine &wireLine, double distance=0.0, double z=0) const
Gives the two three dimensional points where the drift circle touches the wire line.
double getArcLength2DPeriod() const
Getter for the arc length for one round trip around the trajectory.
Class representing a hit wire in the central drift chamber.
Definition: CDCWireHit.h:55
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
Definition: CDCWireHit.h:286
Class representing a sense wire in the central drift chamber.
Definition: CDCWire.h:58
bool isInCellZBounds(const Vector3D &pos3D, const double factor=1) const
Checks whether the position is in the z bounds of the drift cell (scaled by the factor) surrounding t...
Definition: CDCWire.h:295
const WireLine & getWireLine() const
Getter for the wire line representation of the wire.
Definition: CDCWire.h:188
void writeDebugInformation()
Use the writeDebugInformation function of the quad tree to write the tree into a root file with a asc...
A three dimensional vector.
Definition: Vector3D.h:33
A three dimensional limited line represented by its closest approach to the z-axes (reference positio...
Definition: WireLine.h:31

◆ terminate()

void terminate
overridevirtual

Terminate the filter and the quad tree.

Reimplemented from ProcessingSignalListener.

Definition at line 74 of file StereoHitTrackQuadTreeMatcher.cc.

75{
77
78 m_quadTreeInstance.raze();
79}
void terminate() override
Receive and dispatch Signal for termination of the event processing.

◆ writeDebugInformation()

void writeDebugInformation
private

Use the writeDebugInformation function of the quad tree to write the tree into a root file with a ascending number.

Definition at line 228 of file StereoHitTrackQuadTreeMatcher.cc.

229{
230 std::string outputFileName = "quadTreeContent_call_" + std::to_string(m_numberOfPassedDebugCalls) + ".root";
231 m_quadTreeInstance.writeDebugInfoToFile(outputFileName);
232
234}
unsigned int m_numberOfPassedDebugCalls
Store the number of passed calls to the debug function.

Member Data Documentation

◆ m_initialized

bool m_initialized = false
privateinherited

Flag to keep track whether initialization happened before.

Definition at line 52 of file ProcessingSignalListener.h.

◆ m_initializedAs

std::string m_initializedAs
privateinherited

Name of the type during initialisation.

Definition at line 58 of file ProcessingSignalListener.h.

◆ m_numberOfPassedDebugCalls

unsigned int m_numberOfPassedDebugCalls = 0
private

Store the number of passed calls to the debug function.

Definition at line 66 of file StereoHitTrackQuadTreeMatcher.h.

◆ m_param_checkForB2BTracks

bool m_param_checkForB2BTracks = true
private

Parameters Set to false to skip the B2B check (good for curlers).

Definition at line 55 of file StereoHitTrackQuadTreeMatcher.h.

◆ m_param_checkForInWireBoundsFactor

double m_param_checkForInWireBoundsFactor = 1.0
private

Set to false to skip the in-wire-bound check (good for second stage).

Definition at line 57 of file StereoHitTrackQuadTreeMatcher.h.

◆ m_param_minimumNumberOfHits

unsigned int m_param_minimumNumberOfHits = 5
private

Minimal number of hits a quad tree node must have to be called a found bin.

Definition at line 61 of file StereoHitTrackQuadTreeMatcher.h.

◆ m_param_quadTreeLevel

unsigned int m_param_quadTreeLevel = 7
private

Maximum level of the quad tree search.

Definition at line 59 of file StereoHitTrackQuadTreeMatcher.h.

◆ m_param_writeDebugInformation

bool m_param_writeDebugInformation = false
private

Set to true to output debug information.

Definition at line 63 of file StereoHitTrackQuadTreeMatcher.h.

◆ m_quadTreeInstance

AQuadTree m_quadTreeInstance
private

Quad tree instance.

Definition at line 69 of file StereoHitTrackQuadTreeMatcher.h.

◆ m_subordinaryProcessingSignalListeners

std::vector<ProcessingSignalListener*> m_subordinaryProcessingSignalListeners
privateinherited

References to subordinary signal processing listener contained in this findlet.

Definition at line 52 of file CompositeProcessingSignalListener.h.

◆ m_terminated

bool m_terminated = false
privateinherited

Flag to keep track whether termination happened before.

Definition at line 55 of file ProcessingSignalListener.h.


The documentation for this class was generated from the following files: