Template Class IterativeVertexFinder¶
Defined in File IterativeVertexFinder.hpp
Nested Relationships¶
Class Documentation¶
-
template<typename
vfitter_t
, typenamesfinder_t
>
classActs
::
IterativeVertexFinder
¶ Implements an iterative vertex finder.
Brief description of the algorithm implemented: Iterative vertex finder which iteratively finds and fits vertices:
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.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.
If good vertex,
removeUsedCompatibleTracks
method is called, which removes all used tracks that are compatible with the fitted vertex fromperigeesToFit
andseedTracks
. It also removes outliers tracks from tracksAtVertex if not compatible.Add vertex to vertexCollection
Repeat until no seedTracks are left or max. number of vertices found
- Template Parameters
vfitter_t
: Vertex fitter typesfinder_t
: Seed finder type
Public Types
-
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 objectlogger
: 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 objectfunc
: Function extracting BoundTrackParameters from InputTrack_t objectlogger
: 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 tracksvertexingOptions
: Vertexing optionsstate
: 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 fitterlin
: Track linearizersfinder
: The seed finderest
: 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¶
-
double
significanceCutSeeding
= 10¶
-
int
splitVerticesTrkInvFraction
= 2¶
-
bool
useBeamConstraint
= false¶ Vertex finder configuration variables.
-
-
struct
State
¶ Public Functions
-
State
(const Acts::MagneticFieldContext &mctx)¶
Public Members
-
IPEstimator::State
ipState
¶ The IP estimator state.
-
Linearizer_t::State
linearizerState
¶ The inearizer state.
-