File GreedyAmbiguityResolution.hpp

namespace Acts


This file is foreseen for the Geometry module to replace Extent

class GreedyAmbiguityResolution
#include <Acts/AmbiguityResolution/GreedyAmbiguityResolution.hpp>

Evicts tracks that seem to be duplicates or fakes.

This algorithm takes a greedy approach in the sense that it will remove the track which looks “most

duplicate/fake” first and continues the same process with the rest. That process continues until the final state conditions are met.

The implementation works as follows: 1) Calculate shared hits per track. 2) If the maximum shared hits criteria is met, we are done. This is the configurable amount of shared hits we are ok with in our experiment. 3) Else, remove the track with the highest relative shared hits (i.e. shared hits / hits). 4) Back to square 1.

Public Functions

inline GreedyAmbiguityResolution(const Config &cfg, std::unique_ptr<const Logger> logger = getDefaultLogger("GreedyAmbiguityResolution", Logging::INFO))

Computes the initial state for the input data.

This function accumulates information that will later be used to accelerate the ambiguity resolution.

  • tracks – The input track container.

  • state – An empty state object which is expected to be default constructed.

  • sourceLinkHash – A functor to acquire a hash from a given source link.

  • sourceLinkEquality – A functor to check equality of two source links.

void resolve(State &state) const

Updates the state iteratively by evicting one track after the other until the final state conditions are met.


state – A state object that was previously filled by the initialization.

Private Functions

inline const Logger &logger() const

Private access to logging instance.

Private Members

Config m_cfg
std::unique_ptr<const Logger> m_logger

Logging instance.

struct Config
#include <Acts/AmbiguityResolution/GreedyAmbiguityResolution.hpp>

Public Members

std::uint32_t maximumIterations = 1000

Maximum number of iterations.

std::uint32_t maximumSharedHits = 1

Maximum amount of shared hits per track.

size_t nMeasurementsMin = 7

Minimum number of measurement to form a track.

struct State
#include <Acts/AmbiguityResolution/GreedyAmbiguityResolution.hpp>

Public Members

std::vector<std::vector<std::size_t>> measurementsPerTrack
std::size_t numberOfTracks = {}
boost::container::flat_set<std::size_t> selectedTracks
std::vector<std::size_t> sharedMeasurementsPerTrack
std::vector<float> trackChi2
boost::container::flat_map<std::size_t, boost::container::flat_set<std::size_t>> tracksPerMeasurement
std::vector<int> trackTips