Template Class IterativeVertexFinder

Nested Relationships

Nested Types

Class Documentation

template<typename vfitter_t, typename sfinder_t>
class Acts::IterativeVertexFinder

Implements an iterative vertex finder.

Brief description of the algorithm implemented: Iterative vertex finder which iteratively finds and fits vertices:

  1. A list of seed tracks (seedTracks, which is the same as the input track list to the finder at the very first iteration) is used to retrieve a single vertex seed using the ZScanVertexFinder.

  2. All tracks compatible with the current vertex seed are kept and used for fitting the single vertex. 3.1 If the vertex is a ‘good’ vertex (i.e. meets requirements) and no track reassignment after first fit is required, go to step 4. If vertex is not a good vertex, remove all tracks in perigeesToFit from seedTracks. 3.2 If vertex meets requirements and track reassignment after first fit is required, iterate over all previously found vertices (“old vertex”) and over all their tracksAtVertex. Compare compatibility of each track with old vertex and current vertex. If track is more compatible with current vertex, remove track from old vertex, put track back to perigeesToFit and refit current vertex with additional track.

  3. If good vertex, removeUsedCompatibleTracks method is called, which removes all used tracks that are compatible with the fitted vertex from perigeesToFit and seedTracks. It also removes outliers tracks from tracksAtVertex if not compatible.

  4. Add vertex to vertexCollection

  5. Repeat until no seedTracks are left or max. number of vertices found

Template Parameters
  • vfitter_t: Vertex fitter type

  • sfinder_t: Seed finder type

Public Types

using InputTrack_t = typename vfitter_t::InputTrack_t
using IPEstimator = ImpactPointEstimator<InputTrack_t, Propagator_t>

Public Functions

template<typename T = InputTrack_t, std::enable_if_t<std::is_same<T, BoundTrackParameters>::value, int> = 0>
IterativeVertexFinder(Config &cfg, std::unique_ptr<const Logger> logger = getDefaultLogger("IterativeVertexFinder", Logging::INFO))

Constructor used if InputTrack_t type == BoundTrackParameters.

Parameters
  • cfg: Configuration object

  • logger: The logging instance

IterativeVertexFinder(Config &cfg, std::function<BoundTrackParameters(InputTrack_t)> func, std::unique_ptr<const Logger> logger = getDefaultLogger("IterativeVertexFinder", Logging::INFO), )

Constructor for user-defined InputTrack_t type =! BoundTrackParameters.

Parameters
  • cfg: Configuration object

  • func: Function extracting BoundTrackParameters from InputTrack_t object

  • logger: The logging instance

Result<std::vector<Vertex<InputTrack_t>>> find(const std::vector<const InputTrack_t*> &trackVector, const VertexingOptions<InputTrack_t> &vertexingOptions, State &state) const

Finds vertices corresponding to input trackVector.

Return

Collection of vertices found by finder

Parameters
  • trackVector: Input tracks

  • vertexingOptions: Vertexing options

  • state: State for fulfilling interfaces

struct Config

Public Functions

Config(const vfitter_t &fitter, const Linearizer_t &lin, sfinder_t sfinder, const IPEstimator &est)

Config constructor.

Parameters
  • fitter: Vertex fitter

  • lin: Track linearizer

  • sfinder: The seed finder

  • est: ImpactPointEstimator

Public Members

bool createSplitVertices = false
double cutOffTrackWeight = 0.01
bool doMaxTracksCut = false
IPEstimator ipEst

ImpactPointEstimator.

Linearizer_t linearizer

Linearized track factory.

double maximumChi2cutForSeeding = 36.
int maxTracks = 5000
int maxVertices = 50
bool reassignTracksAfterFirstFit = false
sfinder_t seedFinder

Vertex seed finder.

double significanceCutSeeding = 10
int splitVerticesTrkInvFraction = 2
bool useBeamConstraint = false

Vertex finder configuration variables.

vfitter_t vertexFitter

Vertex fitter.

struct State

Public Functions

State(const MagneticFieldProvider &field, const Acts::MagneticFieldContext &magContext)

Public Members

vfitter_t::State fitterState

The fitter state.

IPEstimator::State ipState

The IP estimator state.

Linearizer_t::State linearizerState

The inearizer state.