|
|
|||
File indexing completed on 2026-08-31 08:19:20
0001 // This file is part of the ACTS project. 0002 // 0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project 0004 // 0005 // This Source Code Form is subject to the terms of the Mozilla Public 0006 // License, v. 2.0. If a copy of the MPL was not distributed with this 0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/. 0008 0009 #pragma once 0010 0011 #include "Acts/EventData/BoundTrackParameters.hpp" 0012 #include "Acts/EventData/detail/CorrectedTransformationFreeToBound.hpp" 0013 0014 #include <tuple> 0015 0016 namespace Acts { 0017 class Surface; 0018 } 0019 0020 namespace Acts::detail::sympy { 0021 0022 /// @brief These functions perform the transport of a covariance matrix using 0023 /// given Jacobians. The required data is provided by the stepper object 0024 /// with some additional data. Since this is a purely algebraic problem the 0025 /// calculations are identical for @c StraightLineStepper and @c EigenStepper. 0026 /// As a consequence the methods can be located in a separate file. 0027 0028 /// Create and return the bound state at the current position 0029 /// 0030 /// @brief It does not check if the transported state is at the surface, this 0031 /// needs to be guaranteed by the propagator 0032 /// 0033 /// @param [in] geoContext The geometry context 0034 /// @param [in, out] boundCovariance The covariance matrix of the state 0035 /// @param [in, out] fullTransportJacobian Full jacobian since the last reset 0036 /// @param [in, out] freeToPathDerivatives Path length derivatives of the free, 0037 /// nominal parameters 0038 /// @param [in, out] boundToFreeJacobian Projection jacobian of the last bound 0039 /// parametrisation to free parameters 0040 /// @param [in, out] freeParameters Free, nominal parametrisation 0041 /// @param [in] particleHypothesis Particle hypothesis 0042 /// @param [in] covTransport Decision whether the covariance transport should be 0043 /// performed 0044 /// @param [in] accumulatedPath Propagated distance 0045 /// @param [in] surface Target surface on which the state is represented 0046 /// @param [in] freeToBoundCorrection Correction for non-linearity effect during 0047 /// transform from free to bound 0048 /// 0049 /// @return A bound state: 0050 /// - the parameters at the surface 0051 /// - the stepwise jacobian towards it (from last bound) 0052 /// - and the path length (from start - for ordering) 0053 Result<std::tuple<BoundTrackParameters, BoundMatrix, double>> boundState( 0054 const GeometryContext& geoContext, const Surface& surface, 0055 BoundMatrix& boundCovariance, BoundMatrix& fullTransportJacobian, 0056 FreeVector& freeToPathDerivatives, BoundToFreeMatrix& boundToFreeJacobian, 0057 const std::optional<FreeMatrix>& additionalFreeCovariance, 0058 FreeVector& freeParameters, const ParticleHypothesis& particleHypothesis, 0059 bool covTransport, double accumulatedPath, 0060 const FreeToBoundCorrection& freeToBoundCorrection); 0061 0062 /// Create and return a curvilinear state at the current position 0063 /// 0064 /// @brief This creates a curvilinear state. 0065 /// 0066 /// @param [in, out] boundCovariance The covariance matrix of the state 0067 /// @param [in, out] fullTransportJacobian Full jacobian since the last reset 0068 /// @param [in, out] freeToPathDerivatives Path length derivatives of the free, 0069 /// nominal parameters 0070 /// @param [in, out] boundToFreeJacobian Projection jacobian of the last bound 0071 /// parametrisation to free parameters 0072 /// @param [in] freeParameters Free, nominal parametrisation 0073 /// @param [in] particleHypothesis Particle hypothesis 0074 /// @param [in] covTransport Decision whether the covariance transport should be 0075 /// performed 0076 /// @param [in] accumulatedPath Propagated distance 0077 /// 0078 /// @return A curvilinear state: 0079 /// - the curvilinear parameters at given position 0080 /// - the stepweise jacobian towards it (from last bound) 0081 /// - and the path length (from start - for ordering) 0082 std::tuple<BoundTrackParameters, BoundMatrix, double> curvilinearState( 0083 BoundMatrix& boundCovariance, BoundMatrix& fullTransportJacobian, 0084 FreeVector& freeToPathDerivatives, BoundToFreeMatrix& boundToFreeJacobian, 0085 const std::optional<FreeMatrix>& additionalFreeCovariance, 0086 const FreeVector& freeParameters, 0087 const ParticleHypothesis& particleHypothesis, bool covTransport, 0088 double accumulatedPath); 0089 0090 /// @brief Method for on-demand covariance transport of a bound/curvilinear to 0091 /// another bound representation. 0092 /// 0093 /// @param [in] geoContext The geometry context 0094 /// @param [in] surface is the surface to which the covariance is forwarded to 0095 /// @param [in, out] boundCovariance The covariance matrix of the state 0096 /// @param [in, out] fullTransportJacobian Full jacobian since the last reset 0097 /// @param [in, out] freeToPathDerivatives Path length derivatives 0098 /// @param [in, out] boundToFreeJacobian Projection jacobian of the last bound 0099 /// parametrisation to free parameters 0100 /// @param [in, out] freeParameters Free, nominal parametrisation 0101 /// @param [in] freeToBoundCorrection Correction for non-linearity effect during 0102 /// transform from free to bound 0103 /// 0104 /// @note No check is done if the position is actually on the surface 0105 /// 0106 void transportCovarianceToBound( 0107 const GeometryContext& geoContext, const Surface& surface, 0108 BoundMatrix& boundCovariance, BoundMatrix& fullTransportJacobian, 0109 FreeVector& freeToPathDerivatives, BoundToFreeMatrix& boundToFreeJacobian, 0110 const std::optional<FreeMatrix>& additionalFreeCovariance, 0111 FreeVector& freeParameters, 0112 const FreeToBoundCorrection& freeToBoundCorrection); 0113 0114 /// @brief Method for on-demand covariance transport of a bound/curvilinear 0115 /// to a new curvilinear representation. 0116 /// 0117 /// @param [in, out] boundCovariance The covariance matrix of the state 0118 /// @param [in, out] fullTransportJacobian Full jacobian since the last reset 0119 /// @param [in, out] freeToPathDerivatives Path length derivatives 0120 /// @param [in, out] boundToFreeJacobian Projection jacobian of the last bound 0121 /// parametrisation to free parameters 0122 /// @param [in] direction Normalised direction vector 0123 /// 0124 void transportCovarianceToCurvilinear( 0125 BoundMatrix& boundCovariance, BoundMatrix& fullTransportJacobian, 0126 FreeVector& freeToPathDerivatives, BoundToFreeMatrix& boundToFreeJacobian, 0127 const std::optional<FreeMatrix>& additionalFreeCovariance, 0128 const Vector3& direction); 0129 0130 } // namespace Acts::detail::sympy
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|