File CovarianceTransport.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

Typedefs

using VariantCovariance = std::variant<BoundSymMatrix, FreeSymMatrix>
using VariantTransportJacobian = std::variant<BoundMatrix, BoundToFreeMatrix, FreeToBoundMatrix, FreeMatrix>

Functions

std::tuple<VariantCovariance, VariantTransportJacobian> transportCovarianceToBound(const GeometryContext &gctx, const Surface &surface, const FreeVector &parameters, CovarianceCache &cCache)

Transport the covariance to a new (surface) bound definition.

Parameters
  • gctx – [in] The current geometry context

  • surface – [in] The surface of the bound representation

  • parameters – [in] The free parametrisation on the surface

  • cCache – [in,out] the covariance cache (to be modified)

Returns

a variant transport jacobian

std::tuple<VariantCovariance, VariantTransportJacobian> transportCovarianceToCurvilinear(const Vector3 &direction, CovarianceCache &cCache)

Transport the covariance to a new (curvilinear) bound definition.

Parameters
  • direction – [in] The track direction at the new curvilinear definition

  • cCache – [in,out] the covariance cache (to be modified)

std::tuple<VariantCovariance, VariantTransportJacobian> transportCovarianceToFree(CovarianceCache &cCache)

Transport the covariance to a new free definition.

Parameters

cCache – [in,out] the covariance cache (to be modified)

struct CovarianceCache
#include <Acts/Propagator/CovarianceTransport.hpp>

Helper struct holding the necessary cache for the Covariance transport in various parametrisations.

Public Functions

CovarianceCache() = default

Defaulted constructor, gives invalid cache.

CovarianceCache(const GeometryContext &gctx, const Surface &surface, const Vector3 position, const BoundVector &boundParameters, const BoundSymMatrix &boundCovariance)

Constructor from bound & surface.

This constructor will set the variant covariance type to a bound matrix, remember the surface & establish the jacobian between bound and free parametrisation.

Parameters
  • gctx – The current geometry context

  • surface – The surface of the bound representation

  • position – The position of the representaiton

  • boundParameters – The bound parameters at the surface

  • boundCovariance – The bound covariance to be propagated

CovarianceCache(const Vector3 position, const Vector3 &direction, const BoundSymMatrix &boundCovariance)

Constructor from curvilinear.

This constructor will set the variant covariance type to a bound matrix, remember the surface & establish the jacobian between bound and free parametrisation.

Parameters
  • position – The position of the representation

  • direction – The direction of at the representation

  • boundCovariance – The bound covariance to be propagated

CovarianceCache(const FreeVector &freeParameters, const FreeSymMatrix &freeCovariance)

Construction from free.

Parameters
  • freeParameters – The free parameters

  • freeCovariance – The free covariance to be propagated

Public Members

std::optional<ActsMatrix<8, 7>> anglesToDirectionJacobian = std::nullopt

Options for starting from free.

bool applyTransport = false

Internal cache state, indicates correct setup.

Vector3 atPosition = Vector3::Zero()

Internal cache state, at position.

const Surface *atSurface = nullptr

Internal cache state, at surface indication.

std::optional<BoundToFreeMatrix> boundToFreeJacobian = std::nullopt

Optional for starting from bound or curvilinear.

VariantCovariance covariance

Variant: the currently held covariance.

std::optional<ActsMatrix<7, 8>> directionToAnglesJacobian = std::nullopt
FreeVector freeToPathDerivatives = FreeVector::Zero()

Non-variant: the free derivatives.

FreeMatrix freeTransportJacobian = FreeMatrix::Identity()

Non-variant: the free transport jacobian.