Belle II Software prerelease-11-00-00a
TrackCandidateResultRefiner Class Referenceabstract

Findlet for rejecting wrong SpacePointTrackCands and for removing bad hits. More...

#include <TrackCandidateResultRefiner.h>

Inheritance diagram for TrackCandidateResultRefiner:
Collaboration diagram for TrackCandidateResultRefiner:

Public Types

using IOTypes
 Types that should be served to apply on invocation.
 
using IOVectors
 Vector types that should be served to apply on invocation.
 

Public Member Functions

 TrackCandidateResultRefiner ()
 Find intercepts in the 2D Hough space.
 
 ~TrackCandidateResultRefiner ()
 Default destructor.
 
void exposeParameters (ModuleParamList *moduleParamList, const std::string &prefix) override
 Expose the parameters of the sub findlets.
 
void initialize () override
 Create the store arrays.
 
void beginRun () override
 Check dbobject validity.
 
void apply (std::vector< SpacePointTrackCand > &unrefinedResults, std::vector< SpacePointTrackCand > &refinedResults) override
 Reject bad SpacePointTrackCands and bad hits inside the remaining.
 
virtual std::string getDescription ()
 Brief description of the purpose of the concrete findlet.
 
virtual std::string getDescription ()
 Brief description of the purpose of the concrete findlet.
 
virtual void apply (ToVector< AIOTypes > &... ioVectors)=0
 Main function executing the algorithm.
 
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.
 
void terminate () override
 Receive and dispatch Signal for termination of the event processing.
 

Protected Types

using ToVector
 Short hand for ToRangeImpl.
 

Protected Member Functions

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 = TrackingUtilities::Findlet<SpacePointTrackCand, SpacePointTrackCand>
 Parent class.
 

Private Attributes

std::string m_EstimationMethod = "tripletFit"
 Identifier which estimation method to use.
 
std::string m_MCRecoTracksStoreArrayName = "MCRecoTracks"
 sets the name of the expected StoreArray containing MCRecoTracks. Only required for MCInfo method
 
bool m_MCStrictQualityEstimator = true
 Only required for MCInfo method.
 
std::unique_ptr< QualityEstimatorBasem_estimator
 pointer to the selected QualityEstimator
 
TrackCandidateOverlapResolver m_overlapResolver
 Resolve hit overlaps in track candidates.
 
double m_minQualitiyIndicatorSize3 = 0.5
 Cut on the quality estimator and only further propagate SPTCs with three hits that are above this value.
 
double m_minQualitiyIndicatorSize4 = 0.5
 Cut on the quality estimator and only further propagate SPTCs with four hits that are above this value.
 
double m_minQualitiyIndicatorSize5 = 0.5
 Cut on the quality estimator and only further propagate SPTCs with five hits that are above this value.
 
uint m_maxNumberOfEachPathLength = 15
 Accept nHits for each size at maximum.
 
DBObjPtr< SVDHoughParametersm_SVDHoughParameters
 DB object containing the SVDHough parameters.
 
std::vector< ProcessingSignalListener * > m_subordinaryProcessingSignalListeners
 References to subordinary signal processing listener contained in this findlet.
 
bool m_initialized
 Flag to keep track whether initialization happened before.
 
bool m_terminated
 Flag to keep track whether termination happened before.
 
std::string m_initializedAs
 Name of the type during initialisation.
 

Detailed Description

Findlet for rejecting wrong SpacePointTrackCands and for removing bad hits.

Definition at line 28 of file TrackCandidateResultRefiner.h.

Member Typedef Documentation

◆ IOTypes

using IOTypes
inherited

Types that should be served to apply on invocation.

Definition at line 30 of file Findlet.h.

◆ IOVectors

using IOVectors
inherited

Vector types that should be served to apply on invocation.

Definition at line 53 of file Findlet.h.

◆ Super

Parent class.

Definition at line 30 of file TrackCandidateResultRefiner.h.

◆ ToVector

using ToVector
protectedinherited

Short hand for ToRangeImpl.

Definition at line 49 of file Findlet.h.

Constructor & Destructor Documentation

◆ TrackCandidateResultRefiner()

Find intercepts in the 2D Hough space.

Definition at line 26 of file TrackCandidateResultRefiner.cc.

26 : Super()
27{
29}
TrackingUtilities::Findlet< SpacePointTrackCand, SpacePointTrackCand > Super
Parent class.
TrackCandidateOverlapResolver m_overlapResolver
Resolve hit overlaps in track candidates.

Member Function Documentation

◆ addProcessingSignalListener()

void addProcessingSignalListener ( ProcessingSignalListener * psl)
protectedinherited

Register a processing signal listener to be notified.

Definition at line 53 of file CompositeProcessingSignalListener.cc.

56{
58}
Interface for a minimal algorithm part that wants to expose some parameters to a module.
Definition Findlet.h:26

◆ apply()

void apply ( std::vector< SpacePointTrackCand > & unrefinedResults,
std::vector< SpacePointTrackCand > & refinedResults )
override

Reject bad SpacePointTrackCands and bad hits inside the remaining.

Definition at line 103 of file TrackCandidateResultRefiner.cc.

105{
106 refinedResults.clear();
107 std::vector<SpacePointTrackCand> selectedResults;
108 selectedResults.reserve(unrefinedResults.size());
109 // assign a QI computed using the selected QualityEstimator for each given SpacePointTrackCand
110 for (SpacePointTrackCand& aTrackCandidate : unrefinedResults) {
111 double qi = m_estimator->estimateQuality(aTrackCandidate.getSortedHits());
112 aTrackCandidate.setQualityIndicator(qi);
113
114 // Track candidates of size >= 6 are very rare. If the track candidate already is quite long (>= 6 hits),
115 // it's very likely it's a valid track anyway, so QI is not checked.
116 if ((aTrackCandidate.getNHits() == 3 and qi >= m_minQualitiyIndicatorSize3) or
117 (aTrackCandidate.getNHits() == 4 and qi >= m_minQualitiyIndicatorSize4) or
118 (aTrackCandidate.getNHits() == 5 and qi >= m_minQualitiyIndicatorSize5) or
119 (aTrackCandidate.getNHits() >= 6)) {
120 selectedResults.emplace_back(aTrackCandidate);
121 }
122 }
123
124 // return early if nothing to do
125 if (selectedResults.size() <= 1) {
126 std::swap(selectedResults, refinedResults);
127 return;
128 }
129
130 // sort by number of hits in the track candidate and by the QI
131 std::sort(selectedResults.begin(), selectedResults.end(),
132 [](const SpacePointTrackCand & a, const SpacePointTrackCand & b) {
133 return ((a.getNHits() > b.getNHits()) or
134 (a.getNHits() == b.getNHits() and a.getQualityIndicator() > b.getQualityIndicator()));
135 });
136
137 std::array<uint, 8> numberOfHitsInCheckedSPTCs{{0, 0, 0, 0, 0, 0, 0, 0}};
138 refinedResults.reserve(selectedResults.size());
139 for (auto& currentSPTC : selectedResults) {
140 if (numberOfHitsInCheckedSPTCs[currentSPTC.size()] < m_maxNumberOfEachPathLength) {
141 numberOfHitsInCheckedSPTCs[currentSPTC.size()] += 1;
142 refinedResults.emplace_back(currentSPTC);
143 }
144 }
145
146 m_overlapResolver.apply(refinedResults);
147}
double m_minQualitiyIndicatorSize4
Cut on the quality estimator and only further propagate SPTCs with four hits that are above this valu...
uint m_maxNumberOfEachPathLength
Accept nHits for each size at maximum.
double m_minQualitiyIndicatorSize3
Cut on the quality estimator and only further propagate SPTCs with three hits that are above this val...
std::unique_ptr< QualityEstimatorBase > m_estimator
pointer to the selected QualityEstimator
double m_minQualitiyIndicatorSize5
Cut on the quality estimator and only further propagate SPTCs with five hits that are above this valu...

◆ beginEvent()

void beginEvent ( )
overrideinherited

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

Definition at line 36 of file CompositeProcessingSignalListener.cc.

32{
35 psl->beginEvent();
36 }
37}
void beginEvent() override
Receive and dispatch signal for the start of a new event.
virtual void beginEvent()
Receive signal for the start of a new event.

◆ beginRun()

void beginRun ( )
overridevirtual

Check dbobject validity.

Reimplemented from CompositeProcessingSignalListener.

Definition at line 81 of file TrackCandidateResultRefiner.cc.

82{
84
85 // BField is required by all QualityEstimators
86 double bFieldZ = BFieldManager::getField(0, 0, 0).Z() / Unit::T;
87 m_estimator->setMagneticFieldStrength(bFieldZ);
88
89 if (m_EstimationMethod == "mcInfo") {
90 QualityEstimatorMC* MCestimator = static_cast<QualityEstimatorMC*>(m_estimator.get());
91 MCestimator->forceUpdateClusterNames();
92 }
93 if (!m_SVDHoughParameters.isValid())
94 B2FATAL("SVDHough - TrackCandidateResultRefiner: SVDHoughParameter dbobject not found, using default parameters.");
95 else {
96 m_minQualitiyIndicatorSize3 = m_SVDHoughParameters->getMinQualitiyIndicatorSize3();
97 m_minQualitiyIndicatorSize4 = m_SVDHoughParameters->getMinQualitiyIndicatorSize4();
98 m_minQualitiyIndicatorSize5 = m_SVDHoughParameters->getMinQualitiyIndicatorSize5();
99 }
100
101}
void forceUpdateClusterNames()
Setter to force the class to update its cluster names.
static const double T
[tesla]
Definition Unit.h:120
DBObjPtr< SVDHoughParameters > m_SVDHoughParameters
DB object containing the SVDHough parameters.
std::string m_EstimationMethod
Identifier which estimation method to use.
static void getField(const double *pos, double *field)
return the magnetic field at a given position.

◆ endRun()

void endRun ( )
overrideinherited

Receive and dispatch signal for the end of the run.

Definition at line 39 of file CompositeProcessingSignalListener.cc.

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

◆ exposeParameters()

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

Expose the parameters of the sub findlets.

Reimplemented from CompositeProcessingSignalListener.

Definition at line 31 of file TrackCandidateResultRefiner.cc.

32{
33 Super::exposeParameters(moduleParamList, prefix);
34
35 m_overlapResolver.exposeParameters(moduleParamList, TrackingUtilities::prefixed(prefix, "refinerOverlapResolver"));
36
37 moduleParamList->addParameter(TrackingUtilities::prefixed(prefix, "trackQualityEstimationMethod"), m_EstimationMethod,
38 "Identifier which estimation method to use. Valid identifiers are: [mcInfo, circleFit, tripletFit, helixFit]",
40 moduleParamList->addParameter(TrackingUtilities::prefixed(prefix, "MCRecoTracksStoreArrayName"), m_MCRecoTracksStoreArrayName,
41 "Only required for MCInfo method. Name of StoreArray containing MCRecoTracks.",
43 moduleParamList->addParameter(TrackingUtilities::prefixed(prefix, "MCStrictQualityEstimator"), m_MCStrictQualityEstimator,
44 "Only required for MCInfo method. If false combining several MCTracks is allowed.",
46
47 moduleParamList->addParameter(TrackingUtilities::prefixed(prefix, "minQualitiyIndicatorSize3"), m_minQualitiyIndicatorSize3,
48 "Cut on quality indicator value for track candidates of size 3. Only accept SpacePointTrackCands with QI above this value.",
50 moduleParamList->addParameter(TrackingUtilities::prefixed(prefix, "minQualitiyIndicatorSize4"), m_minQualitiyIndicatorSize4,
51 "Cut on quality indicator value for track candidates of size 4. Only accept SpacePointTrackCands with QI above this value.",
53 moduleParamList->addParameter(TrackingUtilities::prefixed(prefix, "minQualitiyIndicatorSize5"), m_minQualitiyIndicatorSize5,
54 "Cut on quality indicator value for track candidates of size 5. Only accept SpacePointTrackCands with QI above this value.",
56
57 moduleParamList->addParameter(TrackingUtilities::prefixed(prefix, "maxNumberOfEachPathLength"), m_maxNumberOfEachPathLength,
58 "Maximum number of SpacePointTrackCands with a length of 3, 4, 5, or 6 each.",
60}
virtual void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix)
std::string m_MCRecoTracksStoreArrayName
sets the name of the expected StoreArray containing MCRecoTracks. Only required for MCInfo method
void addParameter(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.

◆ getDescription() [1/2]

virtual std::string getDescription ( )
inlinevirtualinherited

Brief description of the purpose of the concrete findlet.

Definition at line 60 of file Findlet.h.

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

◆ getDescription() [2/2]

virtual std::string getDescription ( )
inlinevirtualinherited

Brief description of the purpose of the concrete findlet.

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 56 of file CompositeProcessingSignalListener.cc.

61{
63}

◆ initialize()

void initialize ( )
overridevirtual

Create the store arrays.

Reimplemented from CompositeProcessingSignalListener.

Definition at line 62 of file TrackCandidateResultRefiner.cc.

63{
65
66 // create pointer to chosen estimator
67 if (m_EstimationMethod == "mcInfo") {
68 StoreArray<RecoTrack> mcRecoTracks;
70 m_estimator = std::make_unique<QualityEstimatorMC>(m_MCRecoTracksStoreArrayName, m_MCStrictQualityEstimator);
71 } else if (m_EstimationMethod == "tripletFit") {
72 m_estimator = std::make_unique<QualityEstimatorTripletFit>();
73 } else if (m_EstimationMethod == "circleFit") {
74 m_estimator = std::make_unique<QualityEstimatorCircleFit>();
75 } else if (m_EstimationMethod == "helixFit") {
76 m_estimator = std::make_unique<QualityEstimatorRiemannHelixFit>();
77 }
78 B2ASSERT("QualityEstimator could not be initialized with method: " << m_EstimationMethod, m_estimator);
79}
bool isRequired(const std::string &name="")
Ensure this array/object has been registered previously.

◆ terminate()

void terminate ( )
overrideinherited

Receive and dispatch Signal for termination of the event processing.

Definition at line 42 of file CompositeProcessingSignalListener.cc.

48{
50 psl->terminate();
51 }
53}
void terminate() override
Receive and dispatch Signal for termination of the event processing.
virtual void terminate()
Receive Signal for termination of the event processing.

Member Data Documentation

◆ m_EstimationMethod

std::string m_EstimationMethod = "tripletFit"
private

Identifier which estimation method to use.

Valid identifiers are: mcInfo, circleFit, tripletFit, helixFit

Definition at line 54 of file TrackCandidateResultRefiner.h.

◆ m_estimator

std::unique_ptr<QualityEstimatorBase> m_estimator
private

pointer to the selected QualityEstimator

Definition at line 60 of file TrackCandidateResultRefiner.h.

◆ m_initialized

bool m_initialized
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_maxNumberOfEachPathLength

uint m_maxNumberOfEachPathLength = 15
private

Accept nHits for each size at maximum.

Definition at line 73 of file TrackCandidateResultRefiner.h.

◆ m_MCRecoTracksStoreArrayName

std::string m_MCRecoTracksStoreArrayName = "MCRecoTracks"
private

sets the name of the expected StoreArray containing MCRecoTracks. Only required for MCInfo method

Definition at line 56 of file TrackCandidateResultRefiner.h.

◆ m_MCStrictQualityEstimator

bool m_MCStrictQualityEstimator = true
private

Only required for MCInfo method.

Definition at line 58 of file TrackCandidateResultRefiner.h.

◆ m_minQualitiyIndicatorSize3

double m_minQualitiyIndicatorSize3 = 0.5
private

Cut on the quality estimator and only further propagate SPTCs with three hits that are above this value.

Definition at line 66 of file TrackCandidateResultRefiner.h.

◆ m_minQualitiyIndicatorSize4

double m_minQualitiyIndicatorSize4 = 0.5
private

Cut on the quality estimator and only further propagate SPTCs with four hits that are above this value.

Definition at line 68 of file TrackCandidateResultRefiner.h.

◆ m_minQualitiyIndicatorSize5

double m_minQualitiyIndicatorSize5 = 0.5
private

Cut on the quality estimator and only further propagate SPTCs with five hits that are above this value.

Definition at line 70 of file TrackCandidateResultRefiner.h.

◆ m_overlapResolver

TrackCandidateOverlapResolver m_overlapResolver
private

Resolve hit overlaps in track candidates.

Definition at line 63 of file TrackCandidateResultRefiner.h.

◆ m_subordinaryProcessingSignalListeners

std::vector<ProcessingSignalListener*> m_subordinaryProcessingSignalListeners
privateinherited

References to subordinary signal processing listener contained in this findlet.

Definition at line 60 of file CompositeProcessingSignalListener.h.

◆ m_SVDHoughParameters

DBObjPtr<SVDHoughParameters> m_SVDHoughParameters
private

DB object containing the SVDHough parameters.

Definition at line 76 of file TrackCandidateResultRefiner.h.

◆ m_terminated

bool m_terminated
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: