|
ACTS
Experiment-independent tracking
|
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. | |
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.
|
explicit |
Constructor.
| cfg | The configuration |
| logger | The logger |
| const Config & Acts::TrackletJoiner::config | ( | ) | const |
Get the configuration.
| 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.
| smoother_t | The smoother for the second tracklet |
| track_container_t | The output track container type |
| track_proxy_t | The input track proxy type |
| track_state_proxy_t | The input track state proxy type |
| gctx | The geometry context |
| out | The container that receives the copies |
| first | The first tracklet, smoothed |
| sharedState | The state the second tracklet started from |
| second | The second tracklet |
| smoother | The smoother |
out, or the first error | 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.
| smoother_t | The smoother for the second tracklet |
| track_proxy_t | The track proxy type |
| gctx | The geometry context |
| first | The first tracklet, smoothed |
| sharedState | The state the second tracklet started from |
| second | The second tracklet |
| smoother | The smoother |