EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t > Class Template Reference

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 More...

#include <acts/blob/sPHENIX/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.hpp>

+ Collaboration diagram for Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >:

Classes

struct  Config
 
struct  State
 The fitter state. More...
 

Public Types

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

Public Member Functions

template<typename T = InputTrack_t, std::enable_if_t< std::is_same< T, BoundTrackParameters >::value, int > = 0>
 AdaptiveMultiVertexFitter (Config &cfg, std::unique_ptr< const Logger > logger=getDefaultLogger("AdaptiveMultiVertexFitter", Logging::INFO))
 Constructor used if InputTrack_t type == BoundTrackParameters.
 
 m_logger (std::move(logger))
 
 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.
 
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
 
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):
 

Private Types

using IPEstimator = ImpactPointEstimator< InputTrack_t, Propagator_t >
 

Private Member Functions

const Loggerlogger () const
 Private access to logging instance.
 
Result< void > fitImpl (State &state, const Linearizer_t &linearizer, const VertexingOptions< InputTrack_t > &vertexingOptions) const
 The actual fit function, performs a simultaneous fit of all vertices in state.vertexCollection.
 
bool isAlreadyInList (Vertex< InputTrack_t > *vtx, const std::vector< Vertex< InputTrack_t > * > &verticesVec) const
 Tests if vertex is already in list of vertices or not.
 
Result< void > prepareVertexForFit (State &state, Vertex< InputTrack_t > *vtx, const VertexingOptions< InputTrack_t > &vertexingOptions) const
 Prepares vertex object for the actual fit, i.e. all TrackAtVertex objects at current vertex will obtain ip3dParams from ImpactPointEstimator::estimate3DImpactParameters in order to later faster estimate compatibilities of track with different vertices.
 
Result< void > setAllVertexCompatibilities (State &state, Vertex< InputTrack_t > *currentVtx, const VertexingOptions< input_track_t > &vertexingOptions) const
 Sets vertexCompatibility for all TrackAtVertex objects at current vertex.
 
Result< void > setWeightsAndUpdate (State &state, const Linearizer_t &linearizer, const VertexingOptions< input_track_t > &vertexingOptions) const
 Sets weights to the track according to Eq.(5.46) in Ref.(1) and updates the vertices by calling the VertexUpdater.
 
std::vector< double > collectTrackToVertexCompatibilities (State &state, const InputTrack_t *trk) const
 Collects all compatibility values of the track trk at all vertices it is currently attached to and outputs these values in a vector.
 
bool checkSmallShift (State &state) const
 Determines if vertex position has shifted more than m_cfg.maxRelativeShift in last iteration.
 
void doVertexSmoothing (State &state) const
 Updates tracks for current vertex with knowledge of current vertex position.
 

Private Attributes

const Config m_cfg
 Configuration object.
 
std::function
< BoundTrackParameters(InputTrack_t)> 
m_extractParameters
 Function to extract track parameters, InputTrack_t objects are BoundTrackParameters by default, function to be overwritten to return BoundTrackParameters for other InputTrack_t objects.
 
std::unique_ptr< const Loggerm_logger
 Logging instance.
 

Detailed Description

template<typename input_track_t, typename linearizer_t>
class Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >

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_tTrack object type
linearizer_tTrack linearizer type

Definition at line 39 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 39 of file AdaptiveMultiVertexFitter.hpp

Member Typedef Documentation

template<typename input_track_t, typename linearizer_t>
using Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::InputTrack_t = input_track_t

Definition at line 44 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 44 of file AdaptiveMultiVertexFitter.hpp

template<typename input_track_t, typename linearizer_t>
using Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::IPEstimator = ImpactPointEstimator<InputTrack_t, Propagator_t>
private

Definition at line 49 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 49 of file AdaptiveMultiVertexFitter.hpp

template<typename input_track_t, typename linearizer_t>
using Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::Linearizer_t = linearizer_t

Definition at line 46 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 46 of file AdaptiveMultiVertexFitter.hpp

template<typename input_track_t, typename linearizer_t>
using Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::Propagator_t = typename linearizer_t::Propagator_t

Definition at line 45 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 45 of file AdaptiveMultiVertexFitter.hpp

Constructor & Destructor Documentation

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

Constructor used if InputTrack_t type == BoundTrackParameters.

Parameters
cfgConfiguration object
loggerThe logging instance

Definition at line 145 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 145 of file AdaptiveMultiVertexFitter.hpp

template<typename input_track_t, typename linearizer_t>
Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::AdaptiveMultiVertexFitter ( Config cfg,
std::function< BoundTrackParameters(InputTrack_t)>  func,
std::unique_ptr< const Logger logger = getDefaultLogger("AdaptiveMultiVertexFitter< input_track_t, linearizer_t >", Logging::INFO) 
)
inline

Constructor for user-defined InputTrack_t type != BoundTrackParameters.

Parameters
cfgConfiguration object
funcFunction extracting BoundTrackParameters from InputTrack_t object
loggerThe logging instance

Definition at line 160 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 160 of file AdaptiveMultiVertexFitter.hpp

Member Function Documentation

template<typename input_track_t , typename linearizer_t >
Acts::Result< void > Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::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
stateThe state object
newVertexNew vertex to be added to fit
linearizerThe track linearizer
vertexingOptionsVertexing options
Returns
Result<void> object

Definition at line 120 of file AdaptiveMultiVertexFitter.ipp.

View newest version in sPHENIX GitHub at line 120 of file AdaptiveMultiVertexFitter.ipp

References Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::trackToVerticesMultiMap, Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vertexCollection, and Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vtxInfoMap.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

template<typename input_track_t , typename linearizer_t >
bool Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::checkSmallShift ( State state) const
private

Determines if vertex position has shifted more than m_cfg.maxRelativeShift in last iteration.

Parameters
stateThe state object
Returns
False if shift was larger than maxRelativeShift

Definition at line 324 of file AdaptiveMultiVertexFitter.ipp.

View newest version in sPHENIX GitHub at line 324 of file AdaptiveMultiVertexFitter.ipp

References Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vertexCollection, vtx(), and Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vtxInfoMap.

+ Here is the call graph for this function:

template<typename input_track_t , typename linearizer_t >
std::vector< double > Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::collectTrackToVertexCompatibilities ( State state,
const InputTrack_t trk 
) const
private

Collects all compatibility values of the track trk at all vertices it is currently attached to and outputs these values in a vector.

Parameters
stateThe state object
trkThe track
Returns
Vector of compatibility values

Definition at line 307 of file AdaptiveMultiVertexFitter.ipp.

View newest version in sPHENIX GitHub at line 307 of file AdaptiveMultiVertexFitter.ipp

References Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::tracksAtVerticesMap, Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::trackToVerticesMultiMap, and Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vertexCollection.

template<typename input_track_t , typename linearizer_t >
void Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::doVertexSmoothing ( State state) const
private

Updates tracks for current vertex with knowledge of current vertex position.

Parameters
stateThe state object

Definition at line 340 of file AdaptiveMultiVertexFitter.ipp.

View newest version in sPHENIX GitHub at line 340 of file AdaptiveMultiVertexFitter.ipp

References Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::tracksAtVerticesMap, Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vertexCollection, vtx(), and Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vtxInfoMap.

+ Here is the call graph for this function:

template<typename input_track_t , typename linearizer_t >
Acts::Result< void > Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::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
stateThe state object
verticesToFitVector containing all vertices to be fitted
linearizerThe track linearizer
vertexingOptionsVertexing options
Returns
Result<void> object

Definition at line 15 of file AdaptiveMultiVertexFitter.ipp.

View newest version in sPHENIX GitHub at line 15 of file AdaptiveMultiVertexFitter.ipp

References Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vertexCollection.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

template<typename input_track_t , typename linearizer_t >
Acts::Result< void > Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::fitImpl ( State state,
const Linearizer_t linearizer,
const VertexingOptions< InputTrack_t > &  vertexingOptions 
) const
private
template<typename input_track_t , typename linearizer_t >
bool Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::isAlreadyInList ( Vertex< InputTrack_t > *  vtx,
const std::vector< Vertex< InputTrack_t > * > &  verticesVec 
) const
private

Tests if vertex is already in list of vertices or not.

Parameters
vtxVertex to test
verticesVecVector of vertices to search
Returns
True if vtx is already in verticesVec

Definition at line 188 of file AdaptiveMultiVertexFitter.ipp.

View newest version in sPHENIX GitHub at line 188 of file AdaptiveMultiVertexFitter.ipp

References vtx().

+ Here is the call graph for this function:

template<typename input_track_t, typename linearizer_t>
const Logger& Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::logger ( ) const
inlineprivate

Private access to logging instance.

Definition at line 225 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 225 of file AdaptiveMultiVertexFitter.hpp

References Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::m_logger.

template<typename input_track_t, typename linearizer_t>
Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::m_logger ( std::  movelogger)
inline

Definition at line 151 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 151 of file AdaptiveMultiVertexFitter.hpp

template<typename input_track_t , typename linearizer_t >
Acts::Result< void > Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::prepareVertexForFit ( State state,
Vertex< InputTrack_t > *  vtx,
const VertexingOptions< InputTrack_t > &  vertexingOptions 
) const
private

Prepares vertex object for the actual fit, i.e. all TrackAtVertex objects at current vertex will obtain ip3dParams from ImpactPointEstimator::estimate3DImpactParameters in order to later faster estimate compatibilities of track with different vertices.

Parameters
vtxThe vertex object
vertexingOptionsVertexing options

Definition at line 197 of file AdaptiveMultiVertexFitter.ipp.

View newest version in sPHENIX GitHub at line 197 of file AdaptiveMultiVertexFitter.ipp

References Acts::VertexingOptions< input_track_t >::geoContext, Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::ipState, Acts::VertexingOptions< input_track_t >::magFieldContext, vtx(), and Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vtxInfoMap.

+ Here is the call graph for this function:

template<typename input_track_t , typename linearizer_t >
Acts::Result< void > Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::setAllVertexCompatibilities ( State state,
Vertex< InputTrack_t > *  currentVtx,
const VertexingOptions< input_track_t > &  vertexingOptions 
) const
private
template<typename input_track_t , typename linearizer_t >
Acts::Result< void > Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::setWeightsAndUpdate ( State state,
const Linearizer_t linearizer,
const VertexingOptions< input_track_t > &  vertexingOptions 
) const
private

Sets weights to the track according to Eq.(5.46) in Ref.(1) and updates the vertices by calling the VertexUpdater.

Parameters
stateThe state object
linearizerThe track linearizer
vertexingOptionsVertexing options

Definition at line 260 of file AdaptiveMultiVertexFitter.ipp.

View newest version in sPHENIX GitHub at line 260 of file AdaptiveMultiVertexFitter.ipp

References ACTS_VERBOSE, Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::annealingState, Acts::VertexingOptions< input_track_t >::geoContext, Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::linearizerState, Acts::VertexingOptions< input_track_t >::magFieldContext, Acts::VertexInfo< input_track_t >::trackLinks, Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::tracksAtVerticesMap, Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vertexCollection, vtx(), and Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::State::vtxInfoMap.

+ Here is the call graph for this function:

Member Data Documentation

template<typename input_track_t, typename linearizer_t>
const Config Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::m_cfg
private

Configuration object.

Definition at line 212 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 212 of file AdaptiveMultiVertexFitter.hpp

template<typename input_track_t, typename linearizer_t>
std::function<BoundTrackParameters(InputTrack_t)> Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::m_extractParameters
private

Function to extract track parameters, InputTrack_t objects are BoundTrackParameters by default, function to be overwritten to return BoundTrackParameters for other InputTrack_t objects.

Parameters
InputTrack_tobject to extract track parameters from

Definition at line 219 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 219 of file AdaptiveMultiVertexFitter.hpp

template<typename input_track_t, typename linearizer_t>
std::unique_ptr<const Logger> Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::m_logger
private

Logging instance.

Definition at line 222 of file AdaptiveMultiVertexFitter.hpp.

View newest version in sPHENIX GitHub at line 222 of file AdaptiveMultiVertexFitter.hpp

Referenced by Acts::AdaptiveMultiVertexFitter< input_track_t, linearizer_t >::logger().


The documentation for this class was generated from the following files: