File Measurement.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

Typedefs

using BoundVariantMeasurement = VariantMeasurement<BoundIndices>

Variant that can hold all possible bound measurements.

using FreeVariantMeasurement = VariantMeasurement<FreeIndices>

Variant that can hold all possible free measurements.

using VariantMeasurement = typename detail::VariantMeasurementGenerator<indices_t, detail::kParametersSize<indices_t>>::Type

Variant that can contain all possible measurements in a parameter space.

Template Parameters

indices_t – Parameter index type, determines the full parameter space

Functions

template<typename parameters_t, typename covariance_t, typename indices_t, typename ...tail_indices_t>
auto makeMeasurement(SourceLink source, const Eigen::MatrixBase<parameters_t> &params, const Eigen::MatrixBase<covariance_t> &cov, indices_t index0, tail_indices_t... tailIndices) -> Measurement<indices_t, 1u + sizeof...(tail_indices_t)>

Construct a fixed-size measurement for the given indices.

This helper function can be used to create a fixed-size measurement using an explicit set of indices, e.g.

auto m = makeMeasurement(s, p, c, eBoundLoc0, eBoundTime);

for a 2d measurement w/ one position and time.

Note

The indices must be ordered and must be consistent with the content of parameters and covariance.

Template Parameters
  • parameters_t – Input parameters vector type

  • covariance_t – Input covariance matrix type

  • indices_t – Parameter index type, determines the full parameter space

  • tail_indices_t – Helper types required to support variadic arguments; all types must be convertibale to indices_t.

Parameters
  • source – The link that connects to the underlying detector readout

  • params – Measured parameters values

  • cov – Measured parameters covariance

  • index0 – Required parameter index, measurement must be at least 1d

  • tailIndices – Additional parameter indices for larger measurements

Returns

Fixed-size measurement w/ the correct type and given inputs

template<typename indices_t>
std::ostream &operator<<(std::ostream &os, const VariantMeasurement<indices_t> &vm)
template<typename indices_t, size_t kSize>
class Measurement
#include <Acts/EventData/Measurement.hpp>

A measurement of a fixed-size subspace of the full parameters.

The measurement intentionally does not store a pointer/reference to the reference object in the geometry hierarchy, i.e. the surface or volume. The reference object can already be identified via the geometry identifier provided by the source link. Since a measurement must be anchored within the geometry hierarchy, all measurement surfaces and volumes must provide valid geometry identifiers. In all use-cases, e.g. Kalman filtering, a pointer/reference to the reference object is available before the measurement is accessed; e.g. the propagator provides the surface pointer during navigation, which is then used to lookup possible measurements.

The pointed-to geometry object would differ depending on the parameter type. This means either, that there needs to be an additional variable type or that a pointer to a base object is stored (requiring a dynamic_cast later on). Both variants add additional complications. Since the geometry object is not required anyways (as discussed above), not storing it removes all these complications altogether.

Template Parameters
  • indices_t – Parameter index type, determines the full parameter space

  • kSize – Size of the parameter subset.

Public Types

using CovarianceMatrix = ActsSymMatrix<kSize>

Matrix type for the measurement covariance.

using ExpansionMatrix = ActsMatrix<kFullSize, kSize>
using FullParametersVector = ActsVector<kFullSize>

Vector type containing all parameters in the same space.

using ParametersVector = ActsVector<kSize>

Vector type containing for measured parameter values.

using ProjectionMatrix = ActsMatrix<kSize, kFullSize>
using Scalar = ActsScalar

Public Functions

template<typename parameters_t, typename covariance_t>
inline Measurement(SourceLink source, const std::array<indices_t, kSize> &indices, const Eigen::MatrixBase<parameters_t> &params, const Eigen::MatrixBase<covariance_t> &cov)

Construct from source link, subset indices, and measured data.

Note

The indices must be ordered and must describe/match the content of parameters and covariance.

Template Parameters
  • parameters_t – Input parameters vector type

  • covariance_t – Input covariance matrix type

Parameters
  • source – The link that connects to the underlying detector readout

  • indices – Which parameters are measured

  • params – Measured parameters values

  • cov – Measured parameters covariance

Measurement() = delete

A measurement can only be constructed with valid parameters.

Measurement(const Measurement&) = default
Measurement(Measurement&&) = default
~Measurement() = default
inline bool contains(indices_t i) const

Check if a specific parameter is part of this measurement.

inline const CovarianceMatrix &covariance() const

Measured parameters covariance.

inline ExpansionMatrix expander() const

Expansion matrix from the measured subspace into the full space.

This is equivalent to the tranpose of the projection matrix only in the case of a trivial projection matrix. While this is the case here, it is still recommended to use the expansion matrix directly in cases where it is explicitely used.

inline std::ostream &operator<<(std::ostream &os) const
Measurement &operator=(const Measurement&) = default
Measurement &operator=(Measurement&&) = default
inline const ParametersVector &parameters() const

Measured parameters values.

inline ProjectionMatrix projector() const

Projection matrix from the full space into the measured subspace.

inline ParametersVector residuals(const FullParametersVector &reference) const

Compute residuals in the measured subspace.

This computes the difference measured - reference taking into account the allowed parameter ranges. Only the reference values in the measured subspace are used for the computation.

Parameters

reference – Reference parameters in the full space.

inline const SourceLink &sourceLink() const

Source link that connects to the underlying detector readout.

Public Static Functions

static inline constexpr size_t size()

Number of measured parameters.

Private Types

using Subspace = detail::FixedSizeSubspace<kFullSize, kSize>

Private Members

CovarianceMatrix m_cov
ParametersVector m_params
SourceLink m_source
Subspace m_subspace

Private Static Attributes

static constexpr size_t kFullSize = detail::kParametersSize<indices_t>