Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:27:37

0001 // This file is part of the Acts project.
0002 //
0003 // Copyright (C) 2024 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 http://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Definitions/Tolerance.hpp"
0013 #include "Acts/Definitions/TrackParametrization.hpp"
0014 #include "Acts/Geometry/GeometryContext.hpp"
0015 #include "Acts/Utilities/Result.hpp"
0016 
0017 namespace Acts {
0018 
0019 class Surface;
0020 
0021 /// Transform bound track parameters into equivalent free track parameters.
0022 ///
0023 /// @param surface Surface onto which the input parameters are bound
0024 /// @param geoCtx Geometry context for the local-to-global transformation
0025 /// @param boundParams Bound track parameters vector
0026 /// @return Equivalent free trackparameters vector
0027 FreeVector transformBoundToFreeParameters(const Surface& surface,
0028                                           const GeometryContext& geoCtx,
0029                                           const BoundVector& boundParams);
0030 
0031 /// Convert free track parameters to bound track parameters.
0032 ///
0033 /// @param freeParams Free track parameters vector
0034 /// @param surface Surface onto which the parameters are bound
0035 /// @param geoCtx Geometry context for the global-to-local transformation
0036 /// @param tolerance Tolerance used for globalToLocal
0037 ///
0038 /// @return Bound track parameters vector on the given surface
0039 Result<BoundVector> transformFreeToBoundParameters(
0040     const FreeVector& freeParams, const Surface& surface,
0041     const GeometryContext& geoCtx, ActsScalar tolerance = s_onSurfaceTolerance);
0042 
0043 /// Convert position and direction to bound track parameters.
0044 ///
0045 /// @param position Global track three-position
0046 /// @param time Global track time
0047 /// @param direction Global direction three-vector; normalization is ignored.
0048 /// @param qOverP Charge-over-momentum-like parameter
0049 /// @param surface Surface onto which the parameters are bound
0050 /// @param geoCtx Geometry context for the global-to-local transformation
0051 /// @param tolerance Tolerance used for globalToLocal
0052 ///
0053 /// @return Equivalent bound parameters vector on the given surface
0054 Result<BoundVector> transformFreeToBoundParameters(
0055     const Vector3& position, ActsScalar time, const Vector3& direction,
0056     ActsScalar qOverP, const Surface& surface, const GeometryContext& geoCtx,
0057     ActsScalar tolerance = s_onSurfaceTolerance);
0058 
0059 /// Convert direction to curvilinear track parameters.
0060 ///
0061 /// @param time Global track time
0062 /// @param direction Global direction three-vector; normalization is ignored.
0063 /// @param qOverP Charge-over-momentum-like parameter
0064 /// @return Equivalent bound parameters vector on the curvilinear surface
0065 ///
0066 /// @note The parameters are assumed to be defined at the origin of the
0067 ///       curvilinear frame derived from the direction vector. The local
0068 ///       coordinates are zero by construction.
0069 BoundVector transformFreeToCurvilinearParameters(ActsScalar time,
0070                                                  const Vector3& direction,
0071                                                  ActsScalar qOverP);
0072 
0073 /// Convert direction angles to curvilinear track parameters.
0074 ///
0075 /// @param time Global track time
0076 /// @param phi Global transverse direction angle
0077 /// @param theta Global longitudinal direction angle
0078 /// @param qOverP Charge-over-momentum-like parameter
0079 /// @return Equivalent bound parameters vector on the curvilinear surface
0080 ///
0081 /// @note The parameters are assumed to be defined at the origin of the
0082 ///       curvilinear frame derived from the direction angles. The local
0083 ///       coordinates are zero by construction.
0084 BoundVector transformFreeToCurvilinearParameters(ActsScalar time,
0085                                                  ActsScalar phi,
0086                                                  ActsScalar theta,
0087                                                  ActsScalar qOverP);
0088 
0089 }  // namespace Acts