|
|
|||
File indexing completed on 2026-04-17 07:59:04
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/Definitions/Algebra.hpp" 0012 #include "Acts/Utilities/AxisDefinitions.hpp" 0013 #include "Acts/Utilities/Enumerate.hpp" 0014 #include "Acts/Utilities/GridAccessHelpers.hpp" 0015 0016 #include <algorithm> 0017 #include <array> 0018 0019 namespace Acts { 0020 0021 /// @brief This is an index grid based navigation state updator, it uses 0022 /// an extractor type and a filler type to handle the navigation state 0023 /// 0024 /// @note a transform is applied `p3l = transform * p3` in order to allow 0025 /// shifted, transformed grids 0026 /// 0027 /// It can be used for volumes, surfaces at convenience 0028 /// 0029 /// @tparam navigation_type distinguishes between internal and external navigation 0030 /// @tparam grid_t is the type of the grid 0031 /// @tparam extractor_type is the helper to extract the object 0032 /// @tparam filler_type is the helper to fill the object into the nState 0033 template <typename grid_t> 0034 class IndexGridNavigation { 0035 public: 0036 /// Broadcast the grid type 0037 using grid_type = grid_t; 0038 0039 /// The grid where the indices are stored 0040 grid_type grid; 0041 0042 /// These are the cast parameters - copied from constructor 0043 std::array<AxisDirection, grid_type::DIM> casts{}; 0044 0045 /// A transform to be applied to the position 0046 Transform3 transform = Transform3::Identity(); 0047 0048 /// @brief Constructor for a grid based surface attacher 0049 /// @param igrid the grid that is moved into this attacher 0050 /// @param icasts is the cast values array 0051 /// @param itr a transform applied to the global position 0052 IndexGridNavigation(grid_type&& igrid, 0053 const std::array<AxisDirection, grid_type::DIM>& icasts, 0054 const Transform3& itr = Transform3::Identity()) 0055 : grid(std::move(igrid)), casts(icasts), transform(itr) {} 0056 0057 IndexGridNavigation() = delete; 0058 }; 0059 0060 } // namespace Acts
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|