Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-19 09:23:17

0001 // This file is part of the Acts project.
0002 //
0003 // Copyright (C) 2023 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/Common.hpp"
0012 #include "Acts/Geometry/GeometryContext.hpp"
0013 #include "Acts/Utilities/BinningData.hpp"
0014 
0015 #include <memory>
0016 #include <vector>
0017 
0018 namespace Acts::Experimental {
0019 
0020 class DetectorVolume;
0021 
0022 namespace detail::DetectorVolumeConsistency {
0023 
0024 /// @brief Helper method to check alignment of the volumes, this method checks
0025 /// if the rotational part of the transform is identical
0026 ///
0027 /// @param gctx the geometry context
0028 /// @param volumes the input volumes to be checked
0029 ///
0030 /// @note this is a strict matching that requires the rotation to be identical
0031 ///
0032 /// @note throws exception if any of checks fails
0033 void checkRotationAlignment(
0034     const GeometryContext& gctx,
0035     const std::vector<std::shared_ptr<Experimental::DetectorVolume>>& volumes);
0036 
0037 /// @brief Helper method to check whether a set of volumes is lined up on
0038 /// a given common axis definition
0039 ///
0040 /// @param gctx the geometry context
0041 /// @param volumes the input volumes to be checked
0042 /// @param axisValue the alignment axist
0043 ///
0044 /// @note this will call checkRotationAlignment first
0045 /// @note throws exception if the volumes are not ordered
0046 ///
0047 /// @return a vector with position differences (ordered)
0048 std::vector<ActsScalar> checkCenterAlignment(
0049     const GeometryContext& gctx,
0050     const std::vector<std::shared_ptr<Experimental::DetectorVolume>>& volumes,
0051     BinningValue axisValue);
0052 
0053 }  // namespace detail::DetectorVolumeConsistency
0054 }  // namespace Acts::Experimental