Belle II Software development
StereoHitFinder.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/trackFindingCDC/findlets/minimal/RLTaggedWireHitCreator.h>
13#include <tracking/trackFindingCDC/findlets/minimal/TrackSZFitter.h>
14
15#include <tracking/trackFindingCDC/collectors/matchers/StereoHitTrackQuadTreeMatcher.h>
16#include <tracking/trackingUtilities/collectors/selectors/SingleMatchSelector.h>
17#include <tracking/trackingUtilities/collectors/selectors/FilterSelector.h>
18#include <tracking/trackFindingCDC/collectors/adders/StereoHitTrackAdder.h>
19
20#include <tracking/trackFindingCDC/filters/stereoHits/BaseStereoHitFilter.h>
21#include <tracking/trackingUtilities/filters/base/ChooseableFilter.dcl.h>
22#include <tracking/trackFindingCDC/filters/stereoHits/StereoHitFilterFactory.h>
23#include <tracking/trackingUtilities/utilities/HitComperator.h>
24
25#include <tracking/trackFindingCDC/hough/z0_tanLambda/HitZ0TanLambdaLegendre.h>
26
27#include <vector>
28
29namespace Belle2 {
34 namespace TrackingUtilities {
35 class CDCTrack;
36 class CDCWireHit;
37 }
38 namespace TrackFindingCDC {
39
40 // Guard to prevent repeated instantiations
41 // extern template class TrackingUtilities::Chooseable<BaseStereoHitFilter>;
42 // extern template class TrackingUtilities::ChooseableFilter<StereoHitFilterFactory>;
43
49 class StereoHitFinder : public TrackingUtilities::Findlet<TrackingUtilities::CDCWireHit&, TrackingUtilities::CDCTrack&> {
50
51 private:
54
55 public:
58
60 std::string getDescription() final;
61
63 void beginEvent() final;
64
66 void exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix) final;
67
69 void apply(std::vector<TrackingUtilities::CDCWireHit>& inputWireHits, std::vector<TrackingUtilities::CDCTrack>& tracks) final;
70
71 private:
72 // Findlets
78 TrackingUtilities::FilterSelector<TrackingUtilities::CDCTrack, TrackingUtilities::CDCRLWireHit, TrackingUtilities::ChooseableFilter<StereoHitFilterFactory>>
81 TrackingUtilities::SingleMatchSelector<TrackingUtilities::CDCTrack, TrackingUtilities::CDCRLWireHit, TrackingUtilities::HitComperator>
87
88 // Object pools
90 std::vector<TrackingUtilities::CDCRLWireHit> m_rlTaggedWireHits;
92 std::vector<TrackingUtilities::WeightedRelation<TrackingUtilities::CDCTrack, const TrackingUtilities::CDCRLWireHit>> m_relations;
93 };
94 }
96}
The Module parameter list class.
Findlet for creating a list of RLWireHits (always bot hypothesis) from a list of WireHits using only ...
Factory that can create appropriate stereo hit to track combination filters from associated names.
TrackSZFitter m_szFitter
Fit the tracks after creation.
TrackingUtilities::FilterSelector< TrackingUtilities::CDCTrack, TrackingUtilities::CDCRLWireHit, TrackingUtilities::ChooseableFilter< StereoHitFilterFactory > > m_filterSelector
Filter for the Stereo Hits added to the track.
std::vector< TrackingUtilities::CDCRLWireHit > m_rlTaggedWireHits
Vector holding all possible wire hits with all possible RL combinations.
TrackingUtilities::Findlet< TrackingUtilities::CDCWireHit &, TrackingUtilities::CDCTrack & > Super
Type of the base class.
StereoHitTrackAdder m_adder
Add the hits to the tracks.
void beginEvent() final
Signal the beginning of a new event.
std::string getDescription() final
Short description of the findlet.
TrackingUtilities::SingleMatchSelector< TrackingUtilities::CDCTrack, TrackingUtilities::CDCRLWireHit, TrackingUtilities::HitComperator > m_singleMatchSelector
Select only those where the relation is unique (or the best one in those groups)
std::vector< TrackingUtilities::WeightedRelation< TrackingUtilities::CDCTrack, const TrackingUtilities::CDCRLWireHit > > m_relations
Vector of relations between tracks and hits.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
void apply(std::vector< TrackingUtilities::CDCWireHit > &inputWireHits, std::vector< TrackingUtilities::CDCTrack > &tracks) final
Generates the segment from wire hits.
RLTaggedWireHitCreator m_rlWireHitCreator
Create RL wire hits out of the wire hits.
StereoHitTrackQuadTreeMatcher< HitZ0TanLambdaLegendre > m_matcher
Find matching hits to a track.
StereoHitFinder()
Constructor registering the subordinary findlets to the processing signal distribution machinery.
Class to add the matched hits to the track and set the taken flag correctly.
A matcher algorithm for using a stereo quad tree for matching rl tagged wire hits to tracks.
Findlet for fitting a list of tracks in the SZ direction and replace their trajectory 3D.
Class representing a sequence of three dimensional reconstructed hits.
Definition CDCTrack.h:39
Class representing a hit wire in the central drift chamber.
Definition CDCWireHit.h:58
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.