|
||||
File indexing completed on 2025-01-18 09:10:56
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 // Workaround for building on clang+libstdc++ 0012 #include "Acts/Utilities/detail/ReferenceWrapperAnyCompat.hpp" 0013 0014 #include "Acts/Definitions/TrackParametrization.hpp" 0015 #include "Acts/Geometry/GeometryContext.hpp" 0016 0017 namespace Acts { 0018 class Surface; 0019 } // namespace Acts 0020 0021 namespace Acts::detail::sympy { 0022 0023 /// @brief These functions perform the calculation of the Jacobians for the 0024 /// the covariance transport. 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 /// @brief This function calculates the full transport jacobian from a bound 0029 /// curvilinear representation to a new bound representation 0030 /// 0031 /// @note Modifications of the jacobian related to the projection onto a surface is 0032 /// considered. Since a variation of the start parameters within a given 0033 /// uncertainty would lead to a variation of the end parameters, these need to 0034 /// be propagated onto the target surface. This an approximated approach to 0035 /// treat the (assumed) small change. 0036 /// 0037 /// @param [in] geoContext The geometry Context 0038 /// @param [in] surface Target surface 0039 /// @param [in] freeParameters Free, nominal parametrisation 0040 /// @param [in] boundToFreeJacobian Jacobian from bound to free at start 0041 /// @param [in] freeTransportJacobian Transport jacobian free to free 0042 /// @param [in] freeToPathDerivatives Path length derivatives for free parameters 0043 /// @param [out] fullTransportJacobian A 6x6 transport jacobian from bound to bound 0044 /// 0045 /// @note jac(locA->locB) = jac(gloB->locB)*(1+ 0046 /// pathCorrectionFactor(gloB))*jacTransport(gloA->gloB) *jac(locA->gloA) 0047 void boundToBoundTransportJacobian(const GeometryContext& geoContext, 0048 const Surface& surface, 0049 const FreeVector& freeParameters, 0050 const BoundToFreeMatrix& boundToFreeJacobian, 0051 const FreeMatrix& freeTransportJacobian, 0052 const FreeVector& freeToPathDerivatives, 0053 BoundMatrix& fullTransportJacobian); 0054 0055 /// @brief This function calculates the full jacobian from a given 0056 /// bound/curvilinear parameterisation from a surface to new curvilinear 0057 /// parameterisation. 0058 /// 0059 /// @note Modifications of the jacobian related to the 0060 /// projection onto a curvilinear surface is considered. Since a variation of 0061 /// the start parameters within a given uncertainty would lead to a variation of 0062 /// the end parameters, these need to be propagated onto the target surface. 0063 /// This is an approximated approach to treat the (assumed) small change. 0064 /// 0065 /// @param [in] direction Normalised direction vector 0066 /// @param [in] boundToFreeJacobian Jacobian from bound to free at start 0067 /// @param [in] freeTransportJacobian Transport jacobian free to free 0068 /// @param [in] freeToPathDerivatives Path length derivatives for free parameters 0069 /// @param [out] fullTransportJacobian A 6x6 transport jacobian from curilinear to bound 0070 /// 0071 /// @note The parameter @p surface is only required if projected to bound 0072 /// parameters. In the case of curvilinear parameters the geometry and the 0073 /// position is known and the calculation can be simplified 0074 void boundToCurvilinearTransportJacobian( 0075 const Vector3& direction, const BoundToFreeMatrix& boundToFreeJacobian, 0076 const FreeMatrix& freeTransportJacobian, 0077 const FreeVector& freeToPathDerivatives, 0078 BoundMatrix& fullTransportJacobian); 0079 0080 } // 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 |