Class Acts::CombinatorialKalmanFilter::Actor

template<typename source_link_accessor_t, typename parameters_t>
class Actor

Propagator Actor plugin for the CombinatorialKalmanFilter.

The CombinatorialKalmanFilter Actor does not rely on the measurements to be sorted along the track.

Template Parameters
  • source_link_accessor_t – The type of source link accessor

  • parameters_t – The type of parameters used for “local” parameters.

Public Types

using BoundState = std::tuple<parameters_t, BoundMatrix, double>
using CurvilinearState = std::tuple<CurvilinearTrackParameters, BoundMatrix, double>
using result_type = CombinatorialKalmanFilterResult<traj_t>

Broadcast the result_type.

using TipState = CombinatorialKalmanFilterTipState

Public Functions

inline size_t addNonSourcelinkState(const TrackStatePropMask &stateMask, const BoundState &boundState, result_type &result, bool isSensitive, size_t prevTip = SIZE_MAX, LoggerWrapper logger = getDummyLogger()) const

CombinatorialKalmanFilter actor operation : add hole or material track state.

Parameters
  • stateMask – The bitmask that instructs which components to allocate

  • boundState – The bound state on current surface

  • result – is the mutable result state object and which to leave invalid

  • isSensitive – The surface is sensitive or passive

  • prevTip – The index of the previous state

  • logger – The logger wrapper

Returns

The tip of added state

Create and fill track states for all source links.

Parameters
  • gctx – The current geometry context

  • result – Reference to the result struct of the actor

  • boundState – Bound state from the propagation on this surface

  • prevTip – Index pointing at previous trajectory state (i.e. tip)

  • slBegin – Begin iterator for sourcelinks

  • slEnd – End iterator for sourcelinks

template<typename propagator_state_t, typename stepper_t>
inline Result<void> filter(const Surface *surface, propagator_state_t &state, const stepper_t &stepper, result_type &result) const

CombinatorialKalmanFilter actor operation :

  • filtering for all measurement(s) on surface

  • store selected track states in multiTrajectory

  • update propagator state to the (last) selected track state

Template Parameters
  • propagator_state_t – Type of the Propagagor state

  • stepper_t – Type of the stepper

Parameters
  • surface – The surface where the update happens

  • state – The mutable propagator state object

  • stepper – The stepper in use

  • result – The mutable result state object

template<typename propagator_state_t, typename stepper_t>
inline Result<void> finalize(propagator_state_t &state, const stepper_t &stepper, result_type &result) const

Kalman actor operation : finalize.

Template Parameters
  • propagator_state_t – is the type of Propagagor state

  • stepper_t – Type of the stepper

Parameters
  • state – is the mutable propagator state object

  • stepper – The stepper in use

  • result – is the mutable result state object

template<typename propagator_state_t, typename stepper_t>
inline void materialInteractor(const Surface *surface, propagator_state_t &state, stepper_t &stepper, const MaterialUpdateStage &updateStage = MaterialUpdateStage::FullUpdate) const

CombinatorialKalmanFilter actor operation : material interaction.

Template Parameters
  • propagator_state_t – is the type of Propagagor state

  • stepper_t – Type of the stepper

Parameters
  • surface – The surface where the material interaction happens

  • state – The mutable propagator state object

  • stepper – The stepper in use

  • updateStage – The materal update stage

template<typename propagator_state_t, typename stepper_t>
inline void operator()(propagator_state_t &state, const stepper_t &stepper, result_type &result) const

CombinatorialKalmanFilter actor operation.

Template Parameters
  • propagator_state_t – Type of the Propagagor state

  • stepper_t – Type of the stepper

Parameters
  • state – is the mutable propagator state object

  • stepper – is the stepper in use

  • result – is the mutable result state object

inline Result<void> processSelectedTrackStates(const Acts::GeometryContext &gctx, typename std::vector<typename MultiTrajectory<traj_t>::TrackStateProxy>::const_iterator begin, typename std::vector<typename MultiTrajectory<traj_t>::TrackStateProxy>::const_iterator end, result_type &result, bool isOutlier, const TipState &prevTipState, size_t &nBranchesOnSurface, LoggerWrapper logger) const

Handle the list of selected track states.

Parameters
  • gctx – The current geometry context

  • begin – The start iterator for selected track states

  • end – The end iterator for selected track states

  • result – Reference to the actor result struct

  • isOutlier – If this track state is a single outlier one

  • prevTipState – Tip state prior to this surface

  • nBranchesOnSurface[inout] Number of branches on surface, will be updated

  • logger – A logging instance

template<typename propagator_state_t, typename stepper_t>
inline void reset(propagator_state_t &state, stepper_t &stepper, result_type &result) const

Kalman actor operation : reset propagation.

Template Parameters
  • propagator_state_t – Type of Propagagor state

  • stepper_t – Type of the stepper

Parameters
  • state – is the mutable propagator state object

  • stepper – is the stepper in use

  • result – is the mutable result state object

Public Members

bool energyLoss = true

Whether to consider energy loss.

CombinatorialKalmanFilterExtensions<traj_t> m_extensions
source_link_accessor_t m_sourcelinkAccessor

The source link accesor.

bool multipleScattering = true

Whether to consider multiple scattering.

bool smoothing = true

Whether to run smoothing to get fitted parameter.

SurfaceReached targetReached

The Surface being targeted.

const Surface *targetSurface = nullptr

The target surface.