File MultiTrajectory.hpp

namespace Acts

Set the Geometry Context PLUGIN.

Set the Calibration Context PLUGIN.

Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.

Set the Mangetic Field Context PLUGIN.

Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.

Currently implemented for the two most common formats: rz and xyz.

Typedefs

using TrackStateType = std::bitset<TrackStateFlag::NumTrackStateFlags>

Enums

enum TrackStateFlag

This enum describes the type of TrackState.

Values:

enumerator MeasurementFlag
enumerator ParameterFlag
enumerator OutlierFlag
enumerator HoleFlag
enumerator MaterialFlag
enumerator SharedHitFlag
enumerator NumTrackStateFlags
template<typename source_link_t>
class MultiTrajectory
#include <Acts/EventData/MultiTrajectory.hpp>

Store a trajectory of track states with multiple components.

This container supports both simple, sequential trajectories as well as combinatorial or multi-component trajectories. Each point can store a parent point such that the trajectory forms a directed, acyclic graph of sub-trajectories. From a set of endpoints, all possible sub-components can be easily identified. Some functionality is provided to simplify iterating over specific sub-components.

tparam source_link_t

Type to link back to an original measurement

Public Types

enum [anonymous]

Values:

enumerator MeasurementSizeMax
using ConstTrackStateProxy = detail_lt::TrackStateProxy<SourceLink, MeasurementSizeMax, true>
using ProjectorBitset = std::bitset<eBoundSize * MeasurementSizeMax>
using SourceLink = source_link_t
using TrackStateProxy = detail_lt::TrackStateProxy<SourceLink, MeasurementSizeMax, false>

Public Functions

MultiTrajectory() = default

Create an empty trajectory.

size_t addTrackState(TrackStatePropMask mask = TrackStatePropMask::All, size_t iprevious = SIZE_MAX)

Add a track state without providing explicit information.

Which components of the track state are initialized/allocated can be controlled via mask

Parameters
  • mask – The bitmask that instructs which components to allocate and which to leave invalid

  • iprevious – index of the previous state, SIZE_MAX if first

Returns

Index of the newly added track state

template<typename F>
void applyBackwards(size_t iendpoint, F &&callable)

Apply a function to all previous states starting at a given endpoint.

Warning

If the trajectory contains multiple components with common points, this can have an impact on the other components.

Parameters
  • iendpoint – index of the last state

  • callable – modifying functor to be called with each point

inline ConstTrackStateProxy getTrackState(size_t istate) const

Access a read-only point on the trajectory by index.

Parameters

istate – The index to access

Returns

Read only proxy to the stored track state

inline TrackStateProxy getTrackState(size_t istate)

Access a writable point on the trajectory by index.

Parameters

istate – The index to access

Returns

Read-write proxy to the stored track state

template<typename F>
void visitBackwards(size_t iendpoint, F &&callable) const

Visit all previous states starting at a given endpoint.

Parameters
  • iendpoint – index of the last state

  • callable – non-modifying functor to be called with each point

Private Members

detail_lt::Types<eBoundSize>::StorageCovariance m_cov
std::vector<detail_lt::IndexData> m_index

index to map track states to the corresponding

detail_lt::Types<eBoundSize>::StorageCovariance m_jac
detail_lt::Types<MeasurementSizeMax>::StorageCoefficients m_meas
detail_lt::Types<MeasurementSizeMax>::StorageCovariance m_measCov
detail_lt::Types<eBoundSize>::StorageCoefficients m_params
std::vector<ProjectorBitset> m_projectors
std::vector<std::shared_ptr<const Surface>> m_referenceSurfaces
std::vector<SourceLink> m_sourceLinks

Friends

friend class detail_lt::TrackStateProxy< SourceLink, MeasurementSizeMax, false >
friend class detail_lt::TrackStateProxy< SourceLink, MeasurementSizeMax, true >