|
|
|||
File indexing completed on 2026-05-27 07:23:58
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 // Project include(s) 0012 #include "detray/definitions/algebra.hpp" 0013 #include "detray/utils/concepts.hpp" 0014 0015 namespace detray { 0016 0017 /// Components of a bound track parameters vector. 0018 /// 0019 enum bound_indices : unsigned int { 0020 // Local position on the reference surface. 0021 // This is intentionally named different from the position components in 0022 // the other data vectors, to clarify that this is defined on a surface 0023 // while the others are defined in free space. 0024 e_bound_loc0 = 0u, 0025 e_bound_loc1 = 1u, 0026 // Direction angles 0027 e_bound_phi = 2u, 0028 e_bound_theta = 3u, 0029 // Global inverse-momentum-like parameter, i.e. q/p or 1/p 0030 // The naming is inconsistent for the case of neutral track parameters where 0031 // the value is interpreted as 1/p not as q/p. This is intentional to avoid 0032 // having multiple aliases for the same element and for lack of an 0033 // acceptable 0034 // common name. 0035 e_bound_qoverp = 4u, 0036 e_bound_time = 5u, 0037 // Last uninitialized value contains the total number of components 0038 e_bound_size, 0039 }; 0040 0041 /// Components of a free track parameters vector. 0042 /// 0043 /// To be used to access components by named indices instead of just numbers. 0044 /// This must be a regular `enum` and not a scoped `enum class` to allow 0045 /// implicit conversion to an integer. The enum value are thus visible directly 0046 /// in `namespace Acts` and are prefixed to avoid naming collisions. 0047 enum free_indices : unsigned int { 0048 // Spatial position 0049 // The spatial position components must be stored as one continuous block. 0050 e_free_pos0 = 0u, 0051 e_free_pos1 = e_free_pos0 + 1u, 0052 e_free_pos2 = e_free_pos0 + 2u, 0053 // Time 0054 e_free_time = 3u, 0055 // (Unit) direction 0056 // The direction components must be stored as one continuous block. 0057 e_free_dir0 = 4u, 0058 e_free_dir1 = e_free_dir0 + 1u, 0059 e_free_dir2 = e_free_dir0 + 2u, 0060 // Global inverse-momentum-like parameter, i.e. q/p or 1/p 0061 // See BoundIndices for further information 0062 e_free_qoverp = 7u, 0063 // Last uninitialized value contains the total number of components 0064 e_free_size, 0065 }; 0066 0067 /// Vector type for free track parametrization 0068 template <concepts::algebra algebra_t> 0069 using free_vector = dmatrix<algebra_t, e_free_size, 1>; 0070 0071 /// Covariance matrix type for free track parametrization 0072 template <concepts::algebra algebra_t> 0073 using free_matrix = dmatrix<algebra_t, e_free_size, e_free_size>; 0074 0075 /// Vector type for bound track parametrization 0076 template <concepts::algebra algebra_t> 0077 using bound_vector = dmatrix<algebra_t, e_bound_size, 1>; 0078 0079 /// Covariance matrix type for bound track parametrization 0080 template <concepts::algebra algebra_t> 0081 using bound_matrix = dmatrix<algebra_t, e_bound_size, e_bound_size>; 0082 0083 /// Mapping from bound to free track parameters. 0084 template <concepts::algebra algebra_t> 0085 using bound_to_free_matrix = dmatrix<algebra_t, e_free_size, e_bound_size>; 0086 0087 /// Submatrix for bound to free Jacobians for d(x,y,z) or d(nx, ny, nz) over 0088 /// d(l0, l1) or d(phi, theta) 0089 template <concepts::algebra algebra_t> 0090 using bound_to_free_jacobian_submatrix = dmatrix<algebra_t, 3, 2>; 0091 0092 /// Mapping from free to bound track parameters. 0093 template <concepts::algebra algebra_t> 0094 using free_to_bound_matrix = dmatrix<algebra_t, e_bound_size, e_free_size>; 0095 0096 /// Submatrix for free to bound Jacobians d(l0, l1) or d(phi, theta) over 0097 /// d(x,y,z) or d(nx, ny, nz) 0098 template <concepts::algebra algebra_t> 0099 using free_to_bound_jacobian_submatrix = dmatrix<algebra_t, 2, 3>; 0100 0101 /// Mapping from free to path 0102 template <concepts::algebra algebra_t> 0103 using free_to_path_matrix = dmatrix<algebra_t, 1, e_free_size>; 0104 0105 /// Mapping from path to free 0106 template <concepts::algebra algebra_t> 0107 using path_to_free_matrix = dmatrix<algebra_t, e_free_size, 1>; 0108 0109 } // namespace detray
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|