ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::TrackletJoiner Class Reference

Join a second tracklet, filtered from a state of a smoothed first tracklet as prior, behind that shared state, and combine their smoothed estimates without a new propagation. More...

#include <Acts/TrackFitting/TrackletJoiner.hpp>

Classes

struct  Config
 Configuration. More...

Public Member Functions

 TrackletJoiner ()
 Default constructor.
 TrackletJoiner (const Config &cfg, std::unique_ptr< const Logger > logger=getDefaultLogger("TrackletJoiner", Logging::INFO))
 Constructor.
const Config & config () const
 Get the configuration.
template<typename smoother_t = MbfSmoother, TrackContainerFrontend track_container_t, TrackProxyConcept track_proxy_t, TrackStateProxyConcept track_state_proxy_t>
Result< typename track_container_t::TrackProxy > joinCopy (const GeometryContext &gctx, track_container_t &out, const track_proxy_t &first, const track_state_proxy_t &sharedState, const track_proxy_t &second, const smoother_t &smoother=smoother_t{}) const
 Join copies of both tracklets in out and return the joined copy.
template<typename smoother_t = MbfSmoother, TrackProxyConcept track_proxy_t>
Result< void > joinInPlace (const GeometryContext &gctx, track_proxy_t &first, typename track_proxy_t::TrackStateProxy sharedState, track_proxy_t &second, const smoother_t &smoother=smoother_t{}) const
 Join in place: the first tracklet becomes the joined track.

Detailed Description

Join a second tracklet, filtered from a state of a smoothed first tracklet as prior, behind that shared state, and combine their smoothed estimates without a new propagation.

This is the two-way track finding.

A smoother over the stitched chain would count the first tracklet twice. Instead the second tracklet is smoothed alone and one smoothing step carries its information onto the shared state; the change of the shared state is transported to the first tracklet by conditioning (detail::conditionSmoothedStatesOnSharedState); then the chains are linked (detail::linkTrackletBehind).

With smoothing and conditioning enabled, the smoothed states hold both tracklets. Unsmoothed trailing states of the first tracklet stay unchanged. States of the first tracklet before the shared state leave the chain. The predicted and filtered history stays in two filter orders, so a later smoother over the joined chain is invalid. The track-level data is taken from the second tracklet. If the second tracklet has no states, only its track-level data is copied; this covers propagation to the target without another detector surface.

Constructor & Destructor Documentation

◆ TrackletJoiner()

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

Constructor.

Parameters
cfgThe configuration
loggerThe logger

Member Function Documentation

◆ config()

const Config & Acts::TrackletJoiner::config ( ) const

Get the configuration.

Returns
The configuration

◆ joinCopy()

template<typename smoother_t = MbfSmoother, TrackContainerFrontend track_container_t, TrackProxyConcept track_proxy_t, TrackStateProxyConcept track_state_proxy_t>
Result< typename track_container_t::TrackProxy > Acts::TrackletJoiner::joinCopy ( const GeometryContext & gctx,
track_container_t & out,
const track_proxy_t & first,
const track_state_proxy_t & sharedState,
const track_proxy_t & second,
const smoother_t & smoother = smoother_t{} ) const

Join copies of both tracklets in out and return the joined copy.

The inputs stay unchanged.

Template Parameters
smoother_tThe smoother for the second tracklet
track_container_tThe output track container type
track_proxy_tThe input track proxy type
track_state_proxy_tThe input track state proxy type
Parameters
gctxThe geometry context
outThe container that receives the copies
firstThe first tracklet, smoothed
sharedStateThe state the second tracklet started from
secondThe second tracklet
smootherThe smoother
Returns
The joined track in out, or the first error

◆ joinInPlace()

template<typename smoother_t = MbfSmoother, TrackProxyConcept track_proxy_t>
Result< void > Acts::TrackletJoiner::joinInPlace ( const GeometryContext & gctx,
track_proxy_t & first,
typename track_proxy_t::TrackStateProxy sharedState,
track_proxy_t & second,
const smoother_t & smoother = smoother_t{} ) const

Join in place: the first tracklet becomes the joined track.

It must own its states; with several second tracklets use joinCopy. Both tracklets must use the same trajectory and own disjoint states. If the first tracklet is not linked forward, this links it forward. On failure, smoothed states may already have been modified.

Template Parameters
smoother_tThe smoother for the second tracklet
track_proxy_tThe track proxy type
Parameters
gctxThe geometry context
firstThe first tracklet, smoothed
sharedStateThe state the second tracklet started from
secondThe second tracklet
smootherThe smoother
Returns
Success or the first error