EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::detail Namespace Reference

These functions perform the transport of a covariance matrix using given Jacobians. The required data is provided by the stepper object with some additional data. Since this is a purely algebraic problem the calculations are identical for StraightLineStepper and EigenStepper. As a consequence the methods can be located in a seperate file. More...

Namespaces

namespace  Test
 
namespace  VerticesHelper
 Helper methods for polyhedron vertices drawing and inside/outside checks.
 

Classes

struct  covariance_helper
 check and correct covariance matrix More...
 
struct  DifferenceCalculator
 
struct  full_parset
 generate ParameterSet type containing all defined parameters More...
 
struct  initialize_parset< T, first, others...>
 
struct  initialize_parset< T, last >
 
struct  make_projection_matrix< columns, i, N...>
 
struct  make_projection_matrix< columns, i >
 
struct  UnrestrictedParameterTraits
 Traits class for an unrestricted parameter. More...
 
struct  RestrictedParameterTraits
 
struct  CyclicParameterTraits
 
struct  PhiBoundParameterLimits
 
struct  ThetaBoundParameterLimits
 
struct  ParameterTraitsImpl< BoundIndices, BoundIndices::eBoundPhi >
 
struct  ParameterTraitsImpl< BoundIndices, BoundIndices::eBoundTheta >
 
struct  ParameterTraitsImpl< BoundIndices, kIndex >
 
struct  ParameterTraitsImpl< FreeIndices, kIndex >
 
struct  ParametersTraitsImpl< BoundIndices >
 
struct  ParametersTraitsImpl< FreeIndices >
 
struct  ValueCorrector
 
struct  ReferenceObject
 Deduction of the measuring geometry object based on the used indices. More...
 
struct  ReferenceObject< BoundIndices >
 
struct  ReferenceObject< FreeIndices >
 
struct  visit_measurement_callable
 
struct  abort_list_impl< first, others...>
 
struct  abort_list_impl< last >
 This is the check call on the a last of all conditions. More...
 
struct  abort_list_impl<>
 This is the empty call list - never abort. More...
 
struct  action_list_impl< first, others...>
 
struct  action_list_impl< last >
 
struct  action_list_impl<>
 The empty action list call implementation. More...
 
struct  VoidAuctioneer
 Auctioneer that takes all extensions as valid that make a valid bid. More...
 
struct  FirstValidAuctioneer
 Auctioneer that states only the first one that makes a valid bid. More...
 
struct  HighestValidAuctioneer
 Auctioneer that makes only the highest bidding extension valid. If multiple elements have the same int, the first one with this value is picked. More...
 
struct  LoopProtection
 
struct  PointwiseMaterialInteraction
 Struct to handle pointwise material interaction. More...
 
struct  stepper_extension_list_impl
 
struct  stepper_extension_list_impl< 0u >
 Template specialized list call implementation. More...
 
struct  Step
 the step information for More...
 
struct  SteppingLogger
 a step length logger for debugging the stepping More...
 
struct  VoidNavigator
 The void navigator struct as a default navigator. More...
 
struct  VolumeMaterialInteraction
 Struct to handle volume material interaction. More...
 
class  EigenStepperErrorCategory
 
class  PropagatorErrorCategory
 
struct  FacesHelper
 Helper for writing out faces for polyhedron representation. More...
 
struct  IntersectionHelper2D
 
class  SurfaceErrorCategory
 
class  CombinatorialKalmanFilterErrorCategory
 
class  KalmanFitterErrorCategory
 
class  NeighborHoodIndices
 
exception  Axis< AxisType::Equidistant, bdt >
 calculate bin indices for an equidistant binning More...
 
exception  Axis< AxisType::Variable, bdt >
 calculate bin indices for a variable binning More...
 
struct  Extendable
 
class  Grid
 class for describing a regular multi-dimensional grid More...
 
class  GlobalNeighborHoodIndices
 
struct  grid_helper_impl
 
struct  grid_helper_impl< 0u >
 
struct  grid_helper
 helper functions for grid-related operations More...
 
struct  can_interpolate
 check types for requirements needed by interpolation More...
 
struct  get_dimension
 determine number of dimension from power of 2 More...
 
struct  result_type_extractor
 
struct  action_type_extractor
 
struct  RealQuadraticEquation
 
struct  nonesuch
 
struct  detector
 
struct  detector< Default, std::void_t< Op< Args...> >, Op, Args...>
 
class  VertexingErrorCategory
 
struct  SpacePointParameters
 Storage container for variables related to the calculation of space points. More...
 

Typedefs

template<typename index_t , index_t kIndex>
using ParameterTraits = typename ParameterTraitsImpl< index_t, kIndex >::Type
 
template<typename indices_t >
using ParametersScalar = typename ParametersTraitsImpl< indices_t >::Scalar
 Scalar type that corresponds to the indices enum.
 
using RotationToAxes = std::tuple< RotationMatrix3D, RotationMatrix3D, RotationMatrix3D >
 
using EquidistantAxis = Axis< AxisType::Equidistant >
 
using VariableAxis = Axis< AxisType::Variable >
 
template<typename T >
using result_type_t = typename result_type_extractor::extractor_impl< T >
 
template<typename T >
using action_type_t = typename action_type_extractor::extractor_impl< T >
 

Enumerations

enum  AxisBoundaryType
 
enum  AxisType
 Enum which determines the binning type of the axis. More...
 

Functions

void printBoundParameters (std::ostream &os, const Surface &surface, const BoundVector &params, const BoundSymMatrix *cov=nullptr)
 
void printFreeParameters (std::ostream &os, const FreeVector &params, const FreeMatrix *cov=nullptr)
 
FreeVector transformBoundToFreeParameters (const Surface &surface, const GeometryContext &geoCtx, const BoundVector &boundParams)
 
BoundVector transformFreeToBoundParameters (const FreeVector &freeParams, const Surface &surface, const GeometryContext &geoCtx)
 
BoundVector transformFreeToBoundParameters (const Vector3D &position, FreeScalar time, const Vector3D &direction, FreeScalar qOverP, const Surface &surface, const GeometryContext &geoCtx)
 
BoundVector transformFreeToCurvilinearParameters (FreeScalar time, const Vector3D &direction, FreeScalar qOverP)
 
BoundVector transformFreeToCurvilinearParameters (FreeScalar time, FreeScalar phi, FreeScalar theta, FreeScalar qOverP)
 
MaterialSlab combineSlabs (const MaterialSlab &slab1, const MaterialSlab &slab2)
 
std::tuple
< BoundTrackParameters,
BoundMatrix, double > 
boundState (std::reference_wrapper< const GeometryContext > geoContext, BoundSymMatrix &covarianceMatrix, BoundMatrix &jacobian, FreeMatrix &transportJacobian, FreeVector &derivatives, BoundToFreeMatrix &jacobianLocalToGlobal, const FreeVector &parameters, bool covTransport, double accumulatedPath, const Surface &surface)
 It does not check if the transported state is at the surface, this needs to be guaranteed by the propagator.
 
std::tuple
< CurvilinearTrackParameters,
BoundMatrix, double > 
curvilinearState (BoundSymMatrix &covarianceMatrix, BoundMatrix &jacobian, FreeMatrix &transportJacobian, FreeVector &derivatives, BoundToFreeMatrix &jacobianLocalToGlobal, const FreeVector &parameters, bool covTransport, double accumulatedPath)
 This creates a curvilinear state.
 
void covarianceTransport (std::reference_wrapper< const GeometryContext > geoContext, BoundSymMatrix &covarianceMatrix, BoundMatrix &jacobian, FreeMatrix &transportJacobian, FreeVector &derivatives, BoundToFreeMatrix &jacobianLocalToGlobal, const FreeVector &parameters, const Surface &surface)
 Method for on-demand transport of the covariance to a new frame at current position in parameter space.
 
void covarianceTransport (BoundSymMatrix &covarianceMatrix, BoundMatrix &jacobian, FreeMatrix &transportJacobian, FreeVector &derivatives, BoundToFreeMatrix &jacobianLocalToGlobal, const Vector3D &direction)
 Method for on-demand transport of the covariance to a new frame at current position in parameter space.
 
template<typename stepper_t >
Acts::Intersection3D::Status updateSingleSurfaceStatus (const stepper_t &stepper, typename stepper_t::State &state, const Surface &surface, const BoundaryCheck &bcheck)
 
template<typename stepper_t , typename object_intersection_t >
void updateSingleStepSize (typename stepper_t::State &state, const object_intersection_t &oIntersection, bool release=true)
 
RotationToAxes rotationToLocalAxesDerivative (const RotationMatrix3D &rotation)
 Evaluate the derivative of local frame axes vector w.r.t. its rotation around global x/y/z axis : add parameter for rotation axis order.
 
template<typename source_link_t , typename parameters_t = BoundTrackParameters>
std::pair< ActsMatrixX
< BoundScalar >
, std::unordered_map< size_t,
size_t > > 
globalTrackParametersCovariance (const Acts::MultiTrajectory< source_link_t > &multiTraj, const size_t &entryIndex)
 
template<typename T >
T wrap_periodic (T value, T start, T range)
 Wrap a periodic value back into the nominal range.
 
template<typename T >
T radian_pos (T x)
 Calculate the equivalent angle in the [0, 2*pi) range.
 
template<typename T >
T radian_sym (T x)
 Calculate the equivalent angle in the [-pi, pi) range.
 
template<typename T >
std::pair< T, TensureThetaBounds (T phi, T theta)
 
double roundWithPrecision (double val, int precision)
 
BoundState boundState (std::reference_wrapper< const GeometryContext > geoContext, Covariance &covarianceMatrix, Jacobian &jacobian, FreeMatrix &transportJacobian, FreeVector &derivatives, BoundToFreeMatrix &jacobianLocalToGlobal, const FreeVector &parameters, bool covTransport, double accumulatedPath, const Surface &surface)
 
CurvilinearState curvilinearState (Covariance &covarianceMatrix, Jacobian &jacobian, FreeMatrix &transportJacobian, FreeVector &derivatives, BoundToFreeMatrix &jacobianLocalToGlobal, const FreeVector &parameters, bool covTransport, double accumulatedPath)
 
void covarianceTransport (Covariance &covarianceMatrix, Jacobian &jacobian, FreeMatrix &transportJacobian, FreeVector &derivatives, BoundToFreeMatrix &jacobianLocalToGlobal, const Vector3D &direction)
 
void covarianceTransport (std::reference_wrapper< const GeometryContext > geoContext, Covariance &covarianceMatrix, Jacobian &jacobian, FreeMatrix &transportJacobian, FreeVector &derivatives, BoundToFreeMatrix &jacobianLocalToGlobal, const FreeVector &parameters, const Surface &surface)
 
double differenceOfClustersChecked (const Vector3D &pos1, const Vector3D &pos2, const Vector3D &posVertex, const double maxDistance, const double maxAngleTheta2, const double maxAnglePhi2)
 Calculates (Delta theta)^2 + (Delta phi)^2 between two clusters.
 
std::pair< Vector2D, Vector2DfindLocalTopAndBottomEnd (const Vector2D &local, const CartesianSegmentation *segment)
 This function finds the top and bottom end of a detector segment in local coordinates.
 
double calcPerpendicularProjection (const Vector3D &a, const Vector3D &c, const Vector3D &q, const Vector3D &r)
 Calculates a space point whithout using the vertex.
 
bool recoverSpacePoint (SpacePointParameters &spaPoPa, double stripLengthGapTolerance)
 This function tests if a space point can be estimated by a more tolerant treatment of construction. In fact, this function indirectly allows shifts of the vertex.
 
bool calculateSpacePoint (const std::pair< Vector3D, Vector3D > &stripEnds1, const std::pair< Vector3D, Vector3D > &stripEnds2, const Vector3D &posVertex, SpacePointParameters &spaPoPa, const double stripLengthTolerance)
 This function performs a straight forward calculation of a space point and returns whether it was succesful or not.
 

Variables

template<typename indices_t >
constexpr unsigned int kParametersSize = ParametersTraitsImpl<indices_t>::kSize
 The maximum parameters vector size definable for an indices enum.
 
static const double _helper [9] = {0., 1., 0., 1., 0., 0., 0., 0., -1.}
 
template<typename T , typename propagator_state_t , typename stepper_t >
constexpr bool action_signature_check_v
 
template<bool... values>
constexpr bool all_of_v = all_of<values...>::value
 
template<bool... values>
constexpr bool any_of_v = any_of<values...>::value
 
template<typename... Args>
constexpr bool has_duplicates_v = has_duplicates<Args...>::value
 
constexpr auto type_collector
 
template<typename helper , typename... items>
constexpr auto type_collector_t
 
template<typename T >
constexpr bool has_result_type_v
 
template<typename T >
constexpr bool has_action_type_v
 

Detailed Description

These functions perform the transport of a covariance matrix using given Jacobians. The required data is provided by the stepper object with some additional data. Since this is a purely algebraic problem the calculations are identical for StraightLineStepper and EigenStepper. As a consequence the methods can be located in a seperate file.

The following operators have to be inplemented in order to satisfy as an actor in the propagation

clang-format off

template <typename propagator_state_t, typename result_t>
void
operator()(propagator_state_t& state, result_t& result)
const
{
return false;
}
template <typename propagator_state_t>
void
operator()(propagator_state_t& state)
const
{
return false;
}

clang-format off

Typedef Documentation

template<typename T >
using Acts::detail::action_type_t = typedef typename action_type_extractor::extractor_impl<T>

Meta function which gets the action for an aborter

Template Parameters
TThe type to extract from

Definition at line 107 of file type_collector.hpp.

View newest version in sPHENIX GitHub at line 107 of file type_collector.hpp

using Acts::detail::EquidistantAxis = typedef Axis<AxisType::Equidistant>

Definition at line 40 of file AxisFwd.hpp.

View newest version in sPHENIX GitHub at line 40 of file AxisFwd.hpp

template<typename indices_t >
using Acts::detail::ParametersScalar = typedef typename ParametersTraitsImpl<indices_t>::Scalar

Scalar type that corresponds to the indices enum.

Definition at line 174 of file ParameterTraits.hpp.

View newest version in sPHENIX GitHub at line 174 of file ParameterTraits.hpp

template<typename index_t , index_t kIndex>
using Acts::detail::ParameterTraits = typedef typename ParameterTraitsImpl<index_t, kIndex>::Type

Parameter traits for one specific parameter in one of the indices enums.

Template Parameters
index_tParameter indices enum
kIndexEnum index value to identify a parameter

This type resolves directly to one of the parameter traits classes defined above and allows for uniform access.

Definition at line 150 of file ParameterTraits.hpp.

View newest version in sPHENIX GitHub at line 150 of file ParameterTraits.hpp

template<typename T >
using Acts::detail::result_type_t = typedef typename result_type_extractor::extractor_impl<T>

Meta function which gets the result type from an action

Template Parameters
TThe type to extract from

Definition at line 92 of file type_collector.hpp.

View newest version in sPHENIX GitHub at line 92 of file type_collector.hpp

Definition at line 24 of file AlignmentHelper.hpp.

View newest version in sPHENIX GitHub at line 24 of file AlignmentHelper.hpp

using Acts::detail::VariableAxis = typedef Axis<AxisType::Variable>

Definition at line 41 of file AxisFwd.hpp.

View newest version in sPHENIX GitHub at line 41 of file AxisFwd.hpp

Enumeration Type Documentation

Enum which determines how the axis handle its outer boundaries possible values values

  • Open is the default behaviour: out of bounds positions are filled into the over or underflow bins
  • Bound: out-of-bounds positions resolve to first/last bin respectively
  • Closed: out-of-bounds positions resolve to the outermost bin on the oppsite side

Definition at line 21 of file AxisFwd.hpp.

View newest version in sPHENIX GitHub at line 21 of file AxisFwd.hpp

Enum which determines the binning type of the axis.

Definition at line 24 of file AxisFwd.hpp.

View newest version in sPHENIX GitHub at line 24 of file AxisFwd.hpp

Function Documentation

std::tuple<BoundTrackParameters, BoundMatrix, double> Acts::detail::boundState ( std::reference_wrapper< const GeometryContext >  geoContext,
BoundSymMatrix &  covarianceMatrix,
BoundMatrix &  jacobian,
FreeMatrix &  transportJacobian,
FreeVector &  derivatives,
BoundToFreeMatrix &  jacobianLocalToGlobal,
const FreeVector &  parameters,
bool  covTransport,
double  accumulatedPath,
const Surface surface 
)

It does not check if the transported state is at the surface, this needs to be guaranteed by the propagator.

Create and return the bound state at the current position

Parameters
[in]geoContextThe geometry context
[in,out]covarianceMatrixThe covariance matrix of the state
[in,out]jacobianFull jacobian since the last reset
[in,out]transportJacobianGlobal jacobian since the last reset
[in,out]derivativesPath length derivatives of the free, nominal parameters
[in,out]jacobianLocalToGlobalProjection jacobian of the last bound parametrisation to free parameters
[in]parametersFree, nominal parametrisation
[in]covTransportDecision whether the covariance transport should be performed
[in]accumulatedPathPropagated distance
[in]surfaceTarget surface on which the state is represented
Returns
A bound state:
  • the parameters at the surface
  • the stepwise jacobian towards it (from last bound)
  • and the path length (from start - for ordering)

Referenced by Acts::CombinatorialKalmanFilter< propagator_t, updater_t, smoother_t, source_link_selector_t, branch_stopper_t, calibrator_t >::Actor< source_link_t, parameters_t >::addHoleState(), Acts::CombinatorialKalmanFilter< propagator_t, updater_t, smoother_t, source_link_selector_t, branch_stopper_t, calibrator_t >::Actor< source_link_t, parameters_t >::addSourcelinkState(), Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::StraightLineStepper::boundState(), Acts::EigenStepper< bfield_t, extensionlist_t, auctioneer_t >::boundState(), Acts::CombinatorialKalmanFilter< propagator_t, updater_t, smoother_t, source_link_selector_t, branch_stopper_t, calibrator_t >::Actor< source_link_t, parameters_t >::filter(), and Acts::Test::StepWiseActor::operator()().

+ Here is the caller graph for this function:

BoundState Acts::detail::boundState ( std::reference_wrapper< const GeometryContext >  geoContext,
Covariance &  covarianceMatrix,
Jacobian &  jacobian,
FreeMatrix &  transportJacobian,
FreeVector &  derivatives,
BoundToFreeMatrix &  jacobianLocalToGlobal,
const FreeVector &  parameters,
bool  covTransport,
double  accumulatedPath,
const Surface surface 
)
static

Definition at line 227 of file CovarianceEngine.cpp.

View newest version in sPHENIX GitHub at line 227 of file CovarianceEngine.cpp

References Acts::Test::cov, covarianceTransport(), Acts::Surface::getSharedPtr(), and transformFreeToBoundParameters().

+ Here is the call graph for this function:

double Acts::detail::calcPerpendicularProjection ( const Vector3D &  a,
const Vector3D &  c,
const Vector3D &  q,
const Vector3D &  r 
)

Calculates a space point whithout using the vertex.

Note
This is mostly to resolve space points from cosmic data
Parameters
avector to the top end of the first SDE
cvector to the top end of the second SDE
qvector from the bottom to the top end of the first SDE
rvector from the bottom to the top end of the second SDE
Returns
parameter that indicates the location of the space point; returns
  1. if it failed
Note
The meaning of the parameter is explained in more detail in the function body

This approach assumes that no vertex is available. This option aims to approximate the space points from cosmic data. The underlying assumption is that the best point is given by the closest distance between both lines describing the SDEs. The point x on the first SDE is parametrized as a + lambda0 * q with the top end a of the strip and the vector q = a - b(ottom end of the strip). An analogous parametrization is performed of the second SDE with y = c + lambda1 * r. x get resolved by resolving lambda0 from the condition that |x-y| is the shortest distance between two skew lines.

Definition at line 136 of file DoubleHitSpacePointBuilder.ipp.

View newest version in sPHENIX GitHub at line 136 of file DoubleHitSpacePointBuilder.ipp

References denom, and Acts::UnitConstants::e.

bool Acts::detail::calculateSpacePoint ( const std::pair< Vector3D, Vector3D > &  stripEnds1,
const std::pair< Vector3D, Vector3D > &  stripEnds2,
const Vector3D &  posVertex,
SpacePointParameters &  spaPoPa,
const double  stripLengthTolerance 
)

This function performs a straight forward calculation of a space point and returns whether it was succesful or not.

Parameters
[in]stripEnds1Top and bottom end of the first strip detector element
[in]stripEnds1Top and bottom end of the second strip detector element
[in]posVertexPosition of the vertex
[in,out]spaPoPaData container of the calculations
[in]stripLengthToleranceTolerance scaling factor on the strip detector element length
Returns
Boolean statement whether the space point calculation was succesful

The following algorithm is meant for finding the position on the first strip if there is a corresponding cluster on the second strip. The resulting point is a point x on the first surfaces. This point is along a line between the points a (top end of the strip) and b (bottom end of the strip). The location can be parametrized as 2 * x = (1 + m) a + (1 - m) b as function of the scalar m. m is a parameter in the interval -1 < m < 1 since the hit was on the strip. Furthermore, the vector from the vertex to the cluster on the second strip y is needed to be a multiple k of the vector from vertex to the hit on the first strip x. As a consequence of this demand y = k * x needs to be on the connecting line between the top (c) and bottom (d) end of the second strip. If both clusters correspond to each other, the condition y * (c X d) = k * x (c X d) = 0 ("X" represents a cross product) needs to be fulfilled. Inserting the first equation into this equation leads to the condition for m as given in the following algorithm and therefore to the calculation of x. The same calculation can be repeated for y. Its corresponding parameter will be named n.

Definition at line 263 of file DoubleHitSpacePointBuilder.ipp.

View newest version in sPHENIX GitHub at line 263 of file DoubleHitSpacePointBuilder.ipp

References Acts::detail::SpacePointParameters::limit, Acts::detail::SpacePointParameters::m, Acts::detail::SpacePointParameters::n, Acts::detail::SpacePointParameters::q, Acts::detail::SpacePointParameters::qs, Acts::detail::SpacePointParameters::r, Acts::detail::SpacePointParameters::rt, Acts::detail::SpacePointParameters::s, and Acts::detail::SpacePointParameters::t.

Acts::MaterialSlab Acts::detail::combineSlabs ( const MaterialSlab &  slab1,
const MaterialSlab &  slab2 
)

Compute the average properties for a combined slab of two materials.

slab1 Properties of the first material slab slab2 Properties of the second material slab

Returns
Material slab with the combined thickness and average parameters

The averaged material slab has the combined thickness of the two input slabs and assumes the two input materials are homogeneously and continously mixed throughout the slab.

Definition at line 11 of file AverageMaterials.cpp.

View newest version in sPHENIX GitHub at line 11 of file AverageMaterials.cpp

References Acts::MaterialSlab::material(), thickness, Acts::MaterialSlab::thickness(), Acts::MaterialSlab::thicknessInL0(), Acts::MaterialSlab::thicknessInX0(), and z.

Referenced by Acts::AccumulatedVolumeMaterial::accumulate(), Acts::AccumulatedMaterialSlab::accumulate(), BOOST_AUTO_TEST_CASE(), Acts::MaterialSlab::MaterialSlab(), and Acts::AccumulatedMaterialSlab::trackAverage().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Acts::detail::covarianceTransport ( std::reference_wrapper< const GeometryContext >  geoContext,
BoundSymMatrix &  covarianceMatrix,
BoundMatrix &  jacobian,
FreeMatrix &  transportJacobian,
FreeVector &  derivatives,
BoundToFreeMatrix &  jacobianLocalToGlobal,
const FreeVector &  parameters,
const Surface surface 
)

Method for on-demand transport of the covariance to a new frame at current position in parameter space.

Parameters
[in]geoContextThe geometry context
[in,out]covarianceMatrixThe covariance matrix of the state
[in,out]jacobianFull jacobian since the last reset
[in,out]transportJacobianGlobal jacobian since the last reset
[in,out]derivativesPath length derivatives of the free, nominal parameters
[in,out]jacobianLocalToGlobalProjection jacobian of the last bound parametrisation to free parameters
[in]parametersFree, nominal parametrisation
[in]surfaceis the surface to which the covariance is forwarded to
Note
No check is done if the position is actually on the surface

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), boundState(), Acts::AtlasStepper< bfield_t >::boundState(), Acts::StraightLineStepper::covarianceTransport(), Acts::EigenStepper< bfield_t, extensionlist_t, auctioneer_t >::covarianceTransport(), curvilinearState(), and Acts::AtlasStepper< bfield_t >::curvilinearState().

+ Here is the caller graph for this function:

void Acts::detail::covarianceTransport ( BoundSymMatrix &  covarianceMatrix,
BoundMatrix &  jacobian,
FreeMatrix &  transportJacobian,
FreeVector &  derivatives,
BoundToFreeMatrix &  jacobianLocalToGlobal,
const Vector3D &  direction 
)

Method for on-demand transport of the covariance to a new frame at current position in parameter space.

Parameters
[in,out]covarianceMatrixThe covariance matrix of the state
[in,out]jacobianFull jacobian since the last reset
[in,out]transportJacobianGlobal jacobian since the last reset
[in,out]derivativesPath length derivatives of the free, nominal parameters
[in,out]jacobianLocalToGlobalProjection jacobian of the last bound parametrisation to free parameters
[in]directionNormalised direction vector
void Acts::detail::covarianceTransport ( Covariance &  covarianceMatrix,
Jacobian &  jacobian,
FreeMatrix &  transportJacobian,
FreeVector &  derivatives,
BoundToFreeMatrix &  jacobianLocalToGlobal,
const Vector3D &  direction 
)

Definition at line 279 of file CovarianceEngine.cpp.

View newest version in sPHENIX GitHub at line 279 of file CovarianceEngine.cpp

void Acts::detail::covarianceTransport ( std::reference_wrapper< const GeometryContext >  geoContext,
Covariance &  covarianceMatrix,
Jacobian &  jacobian,
FreeMatrix &  transportJacobian,
FreeVector &  derivatives,
BoundToFreeMatrix &  jacobianLocalToGlobal,
const FreeVector &  parameters,
const Surface surface 
)

Definition at line 300 of file CovarianceEngine.cpp.

View newest version in sPHENIX GitHub at line 300 of file CovarianceEngine.cpp

std::tuple<CurvilinearTrackParameters, BoundMatrix, double> Acts::detail::curvilinearState ( BoundSymMatrix &  covarianceMatrix,
BoundMatrix &  jacobian,
FreeMatrix &  transportJacobian,
FreeVector &  derivatives,
BoundToFreeMatrix &  jacobianLocalToGlobal,
const FreeVector &  parameters,
bool  covTransport,
double  accumulatedPath 
)

This creates a curvilinear state.

Create and return a curvilinear state at the current position

Parameters
[in,out]covarianceMatrixThe covariance matrix of the state
[in,out]jacobianFull jacobian since the last reset
[in,out]transportJacobianGlobal jacobian since the last reset
[in,out]derivativesPath length derivatives of the free, nominal parameters
[in,out]jacobianLocalToGlobalProjection jacobian of the last bound parametrisation to free parameters
[in]parametersFree, nominal parametrisation
[in]covTransportDecision whether the covariance transport should be performed
[in]accumulatedPathPropagated distance
Returns
A curvilinear state:
  • the curvilinear parameters at given position
  • the stepweise jacobian towards it (from last bound)
  • and the path length (from start - for ordering)

Referenced by Acts::CombinatorialKalmanFilter< propagator_t, updater_t, smoother_t, source_link_selector_t, branch_stopper_t, calibrator_t >::Actor< source_link_t, parameters_t >::addPassiveState(), Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::StraightLineStepper::curvilinearState(), Acts::EigenStepper< bfield_t, extensionlist_t, auctioneer_t >::curvilinearState(), and Acts::CombinatorialKalmanFilter< propagator_t, updater_t, smoother_t, source_link_selector_t, branch_stopper_t, calibrator_t >::Actor< source_link_t, parameters_t >::filter().

+ Here is the caller graph for this function:

CurvilinearState Acts::detail::curvilinearState ( Covariance &  covarianceMatrix,
Jacobian &  jacobian,
FreeMatrix &  transportJacobian,
FreeVector &  derivatives,
BoundToFreeMatrix &  jacobianLocalToGlobal,
const FreeVector &  parameters,
bool  covTransport,
double  accumulatedPath 
)

Definition at line 250 of file CovarianceEngine.cpp.

View newest version in sPHENIX GitHub at line 250 of file CovarianceEngine.cpp

References Acts::Test::cov, covarianceTransport(), Acts::eFreeDir0, Acts::eFreePos0, Acts::eFreePos1, Acts::eFreePos2, Acts::eFreeQOverP, Acts::eFreeTime, Acts::ePos0, Acts::ePos1, Acts::ePos2, Acts::eTime, and Acts::Test::pos4().

+ Here is the call graph for this function:

double Acts::detail::differenceOfClustersChecked ( const Vector3D &  pos1,
const Vector3D &  pos2,
const Vector3D &  posVertex,
const double  maxDistance,
const double  maxAngleTheta2,
const double  maxAnglePhi2 
)

Calculates (Delta theta)^2 + (Delta phi)^2 between two clusters.

Parameters
[in]pos1position of the first cluster
[in]pos2position the second cluster
[in]maxDistanceMaximum distance between two clusters
[in]maxAngleTheta2Maximum squared theta angle between two clusters
[in]maxAnglePhi2Maximum squared phi angle between two clusters
Returns
The squared sum within configuration parameters, otherwise -1

Definition at line 56 of file DoubleHitSpacePointBuilder.ipp.

View newest version in sPHENIX GitHub at line 56 of file DoubleHitSpacePointBuilder.ipp

References Acts::VectorHelpers::phi(), and Acts::VectorHelpers::theta().

+ Here is the call graph for this function:

template<typename T >
std::pair<T, T> Acts::detail::ensureThetaBounds ( T  phi,
T  theta 
)
inline

Calculates the equivalent angles phi and theta in the [-pi, pi) and [0, pi] ranges by ensuring the correct theta bounds

Definition at line 42 of file periodic.hpp.

View newest version in sPHENIX GitHub at line 42 of file periodic.hpp

References kdfinder::abs(), M_PI, radian_sym(), and T.

Referenced by ActsExamples::ParticleSmearing::execute(), Acts::FullBilloirVertexFitter< input_track_t, linearizer_t >::fit(), and Acts::KalmanVertexTrackUpdater::update().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::pair<Vector2D, Vector2D> Acts::detail::findLocalTopAndBottomEnd ( const Vector2D &  local,
const CartesianSegmentation *  segment 
)

This function finds the top and bottom end of a detector segment in local coordinates.

Parameters
[in]localLocal position of the cluster
[in]segmentSegmentation of the detector element
Returns
Pair containing the top and bottom end

Definition at line 96 of file DoubleHitSpacePointBuilder.ipp.

View newest version in sPHENIX GitHub at line 96 of file DoubleHitSpacePointBuilder.ipp

References Acts::BinUtility::binningData(), Acts::CartesianSegmentation::binUtility(), Acts::binX, and Acts::binY.

+ Here is the call graph for this function:

template<typename source_link_t , typename parameters_t = BoundTrackParameters>
std::pair<ActsMatrixX<BoundScalar>, std::unordered_map<size_t, size_t> > Acts::detail::globalTrackParametersCovariance ( const Acts::MultiTrajectory< source_link_t > &  multiTraj,
const size_t &  entryIndex 
)

Calculate the global track parameters covariance for a smoothed trajectory stored in MultiTrajecty based on formulas at Journal of Physics: Conference Series 219 (2010) 032028.

Template Parameters
source_link_tThe source link type of the trajectory
parameters_tThe track parameters type
Parameters
multiTrajThe MultiTrajectory containing the trajectory to be investigated
entryIndexThe trajectory entry index
Returns
The global track parameters covariance matrix and the starting row/column for smoothed states

Definition at line 37 of file KalmanGlobalCovariance.hpp.

View newest version in sPHENIX GitHub at line 37 of file KalmanGlobalCovariance.hpp

References Acts::eBoundSize, G, Acts::MultiTrajectory< source_link_t >::getTrackState(), and Acts::MultiTrajectory< source_link_t >::visitBackwards().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Acts::detail::printBoundParameters ( std::ostream &  os,
const Surface surface,
const BoundVector &  params,
const BoundSymMatrix *  cov = nullptr 
)

Print bound track parameters content to the output stream.

Parameters
osThe output stream
surfaceBound parameters reference surface
paramsBound parameters vector
covOptional bound parameters covariance matrix

Definition at line 15 of file PrintParameters.cpp.

View newest version in sPHENIX GitHub at line 15 of file PrintParameters.cpp

References Acts::GeometryObject::geometryId(), and Acts::Surface::name().

+ Here is the call graph for this function:

void Acts::detail::printFreeParameters ( std::ostream &  os,
const FreeVector &  params,
const FreeMatrix *  cov = nullptr 
)

Print free track parameters content to the output stream.

Parameters
osThe output stream
paramsFree parameters vector
covOptional free parameters covariance matrix

Definition at line 39 of file PrintParameters.cpp.

View newest version in sPHENIX GitHub at line 39 of file PrintParameters.cpp

template<typename T >
T Acts::detail::radian_pos ( T  x)
inline

Calculate the equivalent angle in the [0, 2*pi) range.

Definition at line 28 of file periodic.hpp.

View newest version in sPHENIX GitHub at line 28 of file periodic.hpp

References M_PI, T, and x.

template<typename T >
T Acts::detail::radian_sym ( T  x)
inline
bool Acts::detail::recoverSpacePoint ( SpacePointParameters &  spaPoPa,
double  stripLengthGapTolerance 
)

This function tests if a space point can be estimated by a more tolerant treatment of construction. In fact, this function indirectly allows shifts of the vertex.

Parameters
[in]spaPoPacontainer that stores geometric parameters and rules of the space point formation
[in]stripLengthGapToleranceTolerance scaling factor of the gap between strip detector elements
Returns
indicator if the test was successful

Consider some cases that would allow an easy exit

The following code considers an overshoot of m and n in the same direction of their SDE. The term "overshoot" represents the amount of m or n outside its regular interval (-1, 1). It calculates which overshoot is worse. In order to compare both, the overshoot in n is projected onto the first surface by considering the normalized projection of r onto q. This allows a rescaling of the overshoot. The worse overshoot will be set to +/-1, the parameter with less overshoot will be moved towards 0 by the worse overshoot. In order to treat both SDEs equally, the rescaling eventually needs to be performed several times. If these shifts allows m and n to be in the limits, the space point can be stored.

Note
This shift can be understood as a shift of the particle's trajectory. This is leads to a shift of the vertex. Since these two points are treated independently from other measurement, it is also possible to consider this as a change in the slope of the particle's trajectory. The would also move the vertex position.

Definition at line 171 of file DoubleHitSpacePointBuilder.ipp.

View newest version in sPHENIX GitHub at line 171 of file DoubleHitSpacePointBuilder.ipp

References Acts::detail::SpacePointParameters::limit, Acts::detail::SpacePointParameters::limitExtended, Acts::detail::SpacePointParameters::m, max, Acts::detail::SpacePointParameters::n, Acts::detail::SpacePointParameters::q, Acts::detail::SpacePointParameters::qmag, Acts::detail::SpacePointParameters::qs, Acts::detail::SpacePointParameters::r, and Acts::detail::SpacePointParameters::t.

Acts::detail::RotationToAxes Acts::detail::rotationToLocalAxesDerivative ( const RotationMatrix3D &  rotation)

Evaluate the derivative of local frame axes vector w.r.t. its rotation around global x/y/z axis : add parameter for rotation axis order.

Parameters
rotationThe rotation that help place the surface
Returns
Derivative of local frame x/y/z axis vector w.r.t. its rotation angles (extrinsic Euler angles) around global x/y/z axis

Definition at line 11 of file AlignmentHelper.cpp.

View newest version in sPHENIX GitHub at line 11 of file AlignmentHelper.cpp

References cos().

Referenced by Acts::Surface::alignmentToBoundDerivative(), and Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double Acts::detail::roundWithPrecision ( double  val,
int  precision 
)
inline

Definition at line 224 of file Helpers.hpp.

View newest version in sPHENIX GitHub at line 224 of file Helpers.hpp

References kdfinder::abs().

Referenced by Acts::toString().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Acts::FreeVector Acts::detail::transformBoundToFreeParameters ( const Surface surface,
const GeometryContext &  geoCtx,
const BoundVector &  boundParams 
)

Transform bound track parameters into equivalent free track parameters.

Parameters
surfaceSurface onto which the input parameters are bound
geoCtxGeometry context for the local-to-global transformation
boundParamsBound track parameters vector
Returns
Equivalent free trackparameters vector

Definition at line 14 of file TransformationBoundToFree.cpp.

View newest version in sPHENIX GitHub at line 14 of file TransformationBoundToFree.cpp

References Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::eBoundPhi, Acts::eBoundQOverP, Acts::eBoundTheta, Acts::eBoundTime, Acts::eFreeDir0, Acts::eFreeDir1, Acts::eFreeDir2, Acts::eFreePos0, Acts::eFreePos1, Acts::eFreePos2, Acts::eFreeQOverP, Acts::eFreeTime, Acts::eMom0, Acts::eMom1, Acts::eMom2, Acts::ePos0, Acts::ePos1, Acts::ePos2, Acts::Surface::localToGlobal(), Acts::makeDirectionUnitFromPhiTheta(), and Acts::VectorHelpers::position().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), BOOST_DATA_TEST_CASE(), Acts::MultiTrajectoryHelpers::freeFiltered(), Acts::MultiTrajectoryHelpers::freeSmoothed(), Acts::StraightLineStepper::resetState(), Acts::EigenStepper< bfield_t, extensionlist_t, auctioneer_t >::resetState(), Acts::AtlasStepper< bfield_t >::resetState(), ActsEvaluator::visitTrackStates(), and ActsExamples::RootTrajectoryWriter::writeT().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Acts::BoundVector Acts::detail::transformFreeToBoundParameters ( const FreeVector &  freeParams,
const Surface surface,
const GeometryContext &  geoCtx 
)

Convert free track parameters to bound track parameters.

Parameters
freeParamsFree track parameters vector
surfaceSurface onto which the parameters are bound
geoCtxGeometry context for the global-to-local transformation
Returns
Bound track parameters vector on the given surface
Warning
The position is assumed to be on the surface. If this is not the case, the behaviour is undefined.

Definition at line 15 of file TransformationFreeToBound.cpp.

View newest version in sPHENIX GitHub at line 15 of file TransformationFreeToBound.cpp

References ACTS_FATAL, ACTS_LOCAL_LOGGER, Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::eBoundPhi, Acts::eBoundQOverP, Acts::eBoundTheta, Acts::eBoundTime, Acts::eFreeDir0, Acts::eFreePos0, Acts::eFreeQOverP, Acts::eFreeTime, Acts::ePos0, Acts::ePos1, Acts::getDefaultLogger(), Acts::Surface::globalToLocal(), INFO, phi, Acts::VectorHelpers::position(), and theta().

Referenced by BOOST_DATA_TEST_CASE(), and boundState().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Acts::BoundVector Acts::detail::transformFreeToBoundParameters ( const Vector3D &  position,
FreeScalar  time,
const Vector3D &  direction,
FreeScalar  qOverP,
const Surface surface,
const GeometryContext &  geoCtx 
)

Convert position and direction to bound track parameters.

Parameters
positionGlobal track three-position
timeGlobal track time
directionGlobal direction three-vector; normalization is ignored.
qOverPCharge-over-momentum-like parameter
surfaceSurface onto which the parameters are bound
geoCtxGeometry context for the global-to-local transformation
Returns
Equivalent bound parameters vector on the given surface
Warning
The position is assumed to be on the surface. If this is not the case, the behaviour is undefined.

Definition at line 41 of file TransformationFreeToBound.cpp.

View newest version in sPHENIX GitHub at line 41 of file TransformationFreeToBound.cpp

References ACTS_FATAL, ACTS_LOCAL_LOGGER, Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::eBoundPhi, Acts::eBoundQOverP, Acts::eBoundTheta, Acts::eBoundTime, Acts::ePos0, Acts::ePos1, Acts::getDefaultLogger(), Acts::Surface::globalToLocal(), INFO, phi, theta(), and Acts::Test::time.

+ Here is the call graph for this function:

Acts::BoundVector Acts::detail::transformFreeToCurvilinearParameters ( FreeScalar  time,
const Vector3D &  direction,
FreeScalar  qOverP 
)

Convert direction to curvilinear track parameters.

Parameters
timeGlobal track time
directionGlobal direction three-vector; normalization is ignored.
qOverPCharge-over-momentum-like parameter
Returns
Equivalent bound parameters vector on the curvilinear surface
Note
The parameters are assumed to be defined at the origin of the curvilinear frame derived from the direction vector. The local coordinates are zero by construction.

Definition at line 77 of file TransformationFreeToBound.cpp.

View newest version in sPHENIX GitHub at line 77 of file TransformationFreeToBound.cpp

References Acts::eBoundPhi, Acts::eBoundQOverP, Acts::eBoundTheta, Acts::eBoundTime, phi, theta(), and Acts::Test::time.

Referenced by BOOST_DATA_TEST_CASE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Acts::BoundVector Acts::detail::transformFreeToCurvilinearParameters ( FreeScalar  time,
FreeScalar  phi,
FreeScalar  theta,
FreeScalar  qOverP 
)

Convert direction angles to curvilinear track parameters.

Parameters
timeGlobal track time
phiGlobal transverse direction angle
thetaGlobal longitudinal direction angle
qOverPCharge-over-momentum-like parameter
Returns
Equivalent bound parameters vector on the curvilinear surface
Note
The parameters are assumed to be defined at the origin of the curvilinear frame derived from the direction angles. The local coordinates are zero by construction.

Definition at line 66 of file TransformationFreeToBound.cpp.

View newest version in sPHENIX GitHub at line 66 of file TransformationFreeToBound.cpp

References Acts::eBoundPhi, Acts::eBoundQOverP, Acts::eBoundTheta, Acts::eBoundTime, phi, theta(), and Acts::Test::time.

+ Here is the call graph for this function:

template<typename stepper_t , typename object_intersection_t >
void Acts::detail::updateSingleStepSize ( typename stepper_t::State &  state,
const object_intersection_t &  oIntersection,
bool  release = true 
)

Update the Step size - single component

It takes a (valid) object intersection from the compatibleX(...) calls in the geometry and updates the step size

Parameters
state[in,out] The stepping state (thread-local cache)
oIntersection[in] The object that yielded this step size
release[in] A release flag

Definition at line 75 of file SteppingHelper.hpp.

View newest version in sPHENIX GitHub at line 75 of file SteppingHelper.hpp

References Acts::ConstrainedStep::actor, conf::release, and Acts::Test::stepSize.

template<typename stepper_t >
Acts::Intersection3D::Status Acts::detail::updateSingleSurfaceStatus ( const stepper_t &  stepper,
typename stepper_t::State &  state,
const Surface surface,
const BoundaryCheck &  bcheck 
)

Update surface status - Single component

This method intersect the provided surface and update the navigation step estimation accordingly (hence it changes the state). It also returns the status of the intersection to trigger onSurface in case the surface is reached.

Parameters
state[in,out] The stepping state (thread-local cache)
surface[in] The surface provided
bcheck[in] The boundary check for this status update

Definition at line 32 of file SteppingHelper.hpp.

View newest version in sPHENIX GitHub at line 32 of file SteppingHelper.hpp

References Acts::ConstrainedStep::aborter, Acts::ConstrainedStep::actor, and Acts::Surface::intersect().

+ Here is the call graph for this function:

template<typename T >
T Acts::detail::wrap_periodic ( T  value,
T  start,
T  range 
)
inline

Wrap a periodic value back into the nominal range.

Definition at line 17 of file periodic.hpp.

View newest version in sPHENIX GitHub at line 17 of file periodic.hpp

References start(), and T.

+ Here is the call graph for this function:

Variable Documentation

const double Acts::detail::_helper[9] = {0., 1., 0., 1., 0., 0., 0., 0., -1.}
static

Definition at line 36 of file GeometryStatics.hpp.

View newest version in sPHENIX GitHub at line 36 of file GeometryStatics.hpp

template<typename T , typename propagator_state_t , typename stepper_t >
constexpr bool Acts::detail::action_signature_check_v
Initial value:

Definition at line 80 of file action_signature_check.hpp.

View newest version in sPHENIX GitHub at line 80 of file action_signature_check.hpp

Referenced by Acts::ActionList< actors_t >::operator()().

template<bool... values>
constexpr bool Acts::detail::all_of_v = all_of<values...>::value

Definition at line 30 of file all_of.hpp.

View newest version in sPHENIX GitHub at line 30 of file all_of.hpp

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::ActionList< actors_t >::operator()(), and Acts::AbortList< PathLimitReached >::operator()().

template<bool... values>
constexpr bool Acts::detail::any_of_v = any_of<values...>::value

Definition at line 30 of file any_of.hpp.

View newest version in sPHENIX GitHub at line 30 of file any_of.hpp

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

template<typename T >
constexpr bool Acts::detail::has_action_type_v
Initial value:
=
decltype(action_type_extractor::predicate(hana::type_c<T>))::value

Meta function which returns a compile time bool

Template Parameters
Tthe type to check

Definition at line 99 of file type_collector.hpp.

View newest version in sPHENIX GitHub at line 99 of file type_collector.hpp

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

template<typename... Args>
constexpr bool Acts::detail::has_duplicates_v = has_duplicates<Args...>::value

Definition at line 45 of file has_duplicates.hpp.

View newest version in sPHENIX GitHub at line 45 of file has_duplicates.hpp

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

template<typename T >
constexpr bool Acts::detail::has_result_type_v
Initial value:
=
decltype(result_type_extractor::predicate(hana::type_c<T>))::value

Meta function which returns a compile time bool

Template Parameters
Tthe type to check

Definition at line 84 of file type_collector.hpp.

View newest version in sPHENIX GitHub at line 84 of file type_collector.hpp

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

template<typename indices_t >
constexpr unsigned int Acts::detail::kParametersSize = ParametersTraitsImpl<indices_t>::kSize

The maximum parameters vector size definable for an indices enum.

Definition at line 178 of file ParameterTraits.hpp.

View newest version in sPHENIX GitHub at line 178 of file ParameterTraits.hpp

constexpr auto Acts::detail::type_collector
Initial value:
= [](auto t_, auto predicate, auto extractor) {
constexpr auto have_result =
hana::filter(t_, [&](auto t) { return predicate(t); });
constexpr auto result_types =
hana::to_set(hana::transform(have_result, extractor));
return result_types;
}

The main type collector. This loops over the given tuple of actions or aborters, filters by predicate and uses extracter to construct a resulting output set.

Definition at line 55 of file type_collector.hpp.

View newest version in sPHENIX GitHub at line 55 of file type_collector.hpp

template<typename helper , typename... items>
constexpr auto Acts::detail::type_collector_t
Initial value:
= type_collector(hana::tuple_t<items...>,
helper::predicate,
helper::extractor)

Helper around type_collector which constructrs a hana tuple input from variadic template args, and pre-unpacks the predicate and extractor from the helper type

Template Parameters
helperEither result_type_extractor or action_type_extractor
itemsThe items to filter / collect from.

Definition at line 75 of file type_collector.hpp.

View newest version in sPHENIX GitHub at line 75 of file type_collector.hpp

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().