Class Acts::AdaptiveMultiVertexFitter

template<typename input_track_t, typename linearizer_t>
class AdaptiveMultiVertexFitter

Implements an adaptive multi-vertex fitter as described in detail in Section 5.3.5 in: Ref.

(1): CERN-THESIS-2010-027, Author: Piacquadio, Giacinto: Identification of b-jets and investigation of the discovery potential of a Higgs boson in the WH−−>lvbb¯ channel with the ATLAS experiment

Template Parameters
  • input_track_t – Track object type

  • linearizer_t – Track linearizer type

Public Types

using InputTrack_t = input_track_t
using Linearizer_t = linearizer_t
using Propagator_t = typename linearizer_t::Propagator_t

Public Functions

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

Constructor used if InputTrack_t type == BoundTrackParameters.

Parameters
  • cfg – Configuration object

  • logger – The logging instance

inline AdaptiveMultiVertexFitter(Config &cfg, std::function<BoundTrackParameters(InputTrack_t)> func, std::unique_ptr<const Logger> logger = getDefaultLogger("AdaptiveMultiVertexFitter", 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<void> addVtxToFit(State &state, Vertex<InputTrack_t> &newVertex, const Linearizer_t &linearizer, const VertexingOptions<InputTrack_t> &vertexingOptions) const

Adds new vertex to an existing multi-vertex fit and fits everything together (by invoking the fit_impl method):

  1. The new vertex is added to the fit: all associated tracks get initialized, i.e. ParamsAtIP3d are created (from ImpactPointEstimator) to be later able to estimate in a fast way the compatibility of the tracks to their respective vertices.

  2. All tracks belonging to the new vertex are scanned and all the vertices which share tracks with the new vertex to be fit are also added to the fit.

  3. The multivertex fit is performed with all involved vertices.

This has the advantage that only vertices that are affected by adding the new vertex are refitted.

Note: newVertex has to be properly initialized (seed vertex, constraint vertex, list of MAV)

Parameters
  • state – The state object

  • newVertex – New vertex to be added to fit

  • linearizer – The track linearizer

  • vertexingOptions – Vertexing options

Returns

Result<void> object

Result<void> fit(State &state, const std::vector<Vertex<InputTrack_t>*> &verticesToFit, const Linearizer_t &linearizer, const VertexingOptions<InputTrack_t> &vertexingOptions) const

The actual fit function, performs a simultaneous fit of all vertices in verticesToFit by invoking fitImpl

Parameters
  • state – The state object

  • verticesToFit – Vector containing all vertices to be fitted

  • linearizer – The track linearizer

  • vertexingOptions – Vertexing options

Returns

Result<void> object

struct Config

Public Functions

inline Config(const IPEstimator &est)

Config constructor.

Parameters

est – ImpactPointEstimator

Public Members

AnnealingUtility annealingTool

Annealing tool used for a thermodynamic annealing scheme for the track weight factors in such a way that with high temperature values (at the beginning) only a slight preference is given to tracks compatible with the estimated vertex position.

With lower temperatures the weighting get stricter such that all incompatible tracks will be dropped at the end while keeping all compatible tracks with a weight=1. Ref. (1): CERN-THESIS-2010-027, Author: Piacquadio, Giacinto: Identification of b-jets and investigation of the discovery potential of a Higgs boson in the WH−−>lvbb¯ channel with the ATLAS experiment

bool doSmoothing = {false}
IPEstimator ipEst
double maxDistToLinPoint = {0.5}
unsigned int maxIterations = {30}
double maxRelativeShift = {0.01}
double minWeight = {0.0001}
struct State

The fitter state.

Public Functions

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

Default State constructor.

inline void addVertexToMultiMap(Vertex<InputTrack_t> &vtx)
inline void removeVertexFromMultiMap(Vertex<InputTrack_t> &vtx)

Public Members

AnnealingUtility::State annealingState
IPEstimator::State ipState
Linearizer_t::State linearizerState
std::map<std::pair<const InputTrack_t*, Vertex<InputTrack_t>*>, TrackAtVertex<InputTrack_t>> tracksAtVerticesMap
std::multimap<const InputTrack_t*, Vertex<InputTrack_t>*> trackToVerticesMultiMap
std::vector<Vertex<InputTrack_t>*> vertexCollection
std::map<Vertex<InputTrack_t>*, VertexInfo<InputTrack_t>> vtxInfoMap