ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::IterativeVertexFinder Class Referencefinal

Implements an iterative vertex finder. More...

#include <Acts/Vertexing/IterativeVertexFinder.hpp>

Inheritance diagram for Acts::IterativeVertexFinder:
[legend]
Collaboration diagram for Acts::IterativeVertexFinder:
[legend]

Classes

struct  Config
 Configuration struct. More...
struct  State
 State struct. More...

Public Member Functions

 IterativeVertexFinder (Config cfg, std::unique_ptr< const Logger > logger=getDefaultLogger("IterativeVertexFinder", Logging::INFO))
 Constructor for user-defined InputTrack type.
Result< std::vector< Vertex > > find (const std::vector< InputTrack > &trackVector, const VertexingOptions &vertexingOptions, IVertexFinder::State &anyState) const override
 Finds vertices corresponding to input trackVector.
IVertexFinder::State makeState (const MagneticFieldContext &mctx) const override
 Function to create a state object for this concrete vertex finder.
void setTracksToRemove (IVertexFinder::State &, const std::vector< InputTrack > &) const override
 For vertex finders that have an internal state of active tracks, this method instructs them to mark used tracks for removal.
Public Member Functions inherited from Acts::IVertexFinder
virtual ~IVertexFinder ()=default
 Virtual destructor.

Additional Inherited Members

Public Types inherited from Acts::IVertexFinder
using State = Acts::AnyBase<128>
 Type-erased wrapper for concrete state objects.

Detailed Description

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 tracksToFit 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 tracksToFit 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 tracksToFit 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

Constructor & Destructor Documentation

◆ IterativeVertexFinder()

Acts::IterativeVertexFinder::IterativeVertexFinder ( Config cfg,
std::unique_ptr< const Logger > logger = getDefaultLogger("IterativeVertexFinder", Logging::INFO) )
explicit

Constructor for user-defined InputTrack type.

Parameters
cfgConfiguration object
loggerThe logging instance

Member Function Documentation

◆ find()

Result< std::vector< Vertex > > Acts::IterativeVertexFinder::find ( const std::vector< InputTrack > & trackVector,
const VertexingOptions & vertexingOptions,
IVertexFinder::State & anyState ) const
overridevirtual

Finds vertices corresponding to input trackVector.

Parameters
trackVectorInput tracks
vertexingOptionsVertexing options
anyStateState for fulfilling interfaces
Returns
Collection of vertices found by finder

Implements Acts::IVertexFinder.

◆ makeState()

IVertexFinder::State Acts::IterativeVertexFinder::makeState ( const MagneticFieldContext & mctx) const
overridevirtual

Function to create a state object for this concrete vertex finder.

Parameters
mctxThe magnetic field context
Returns
The state object

Implements Acts::IVertexFinder.

◆ setTracksToRemove()

void Acts::IterativeVertexFinder::setTracksToRemove ( IVertexFinder::State & anyState,
const std::vector< InputTrack > & removedTracks ) const
overridevirtual

For vertex finders that have an internal state of active tracks, this method instructs them to mark used tracks for removal.

Parameters
anyStateThe state object
removedTracksThe tracks to be removed

Implements Acts::IVertexFinder.