Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // This file is part of the Acts project.
0002 //
0003 // Copyright (C) 2022-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/Algebra.hpp"
0012 #include "Acts/Geometry/VolumeBounds.hpp"
0013 #include "Acts/Utilities/Delegate.hpp"
0014 
0015 #include <memory>
0016 #include <vector>
0017 
0018 namespace Acts {
0019 class VolumeBounds;
0020 
0021 namespace Experimental {
0022 
0023 class DetectorVolume;
0024 class Portal;
0025 
0026 /// The Portal generator definition
0027 using PortalGenerator = Delegate<std::vector<std::shared_ptr<Portal>>(
0028     const Transform3&, const VolumeBounds&,
0029     const std::shared_ptr<DetectorVolume>&)>;
0030 
0031 /// @brief Generator function for creation of portal surfaces
0032 ///
0033 /// @param dTransform a contextually resolved transform
0034 /// @param dBounds the detecor volume bounds
0035 /// @param dVolume the reference to the detector volume which generates this volume
0036 ///
0037 /// @return a vector of newly created portals with registered inside volume
0038 std::vector<std::shared_ptr<Portal>> generatePortals(
0039     const Transform3& dTransform, const VolumeBounds& dBounds,
0040     const std::shared_ptr<DetectorVolume>& dVolume) noexcept(false);
0041 
0042 /// Create a default portal generator that connects to the
0043 /// static method.
0044 ///
0045 PortalGenerator defaultPortalGenerator();
0046 
0047 /// @brief Calls the portal generation and adds registration to sub portals
0048 ///
0049 /// This code is split off the PortalGenerator code in order to allow
0050 /// unit testing of the portal generation without detector volume construction
0051 ///
0052 /// @param dTransform a contextually resolved transform
0053 /// @param dBounds the detecor volume bounds
0054 /// @param dVolume the reference to the detector volume which generates this volume
0055 ///
0056 /// @return a vector of newly created portals with registered inside volume
0057 std::vector<std::shared_ptr<Portal>> generatePortalsUpdateInternals(
0058     const Transform3& dTransform, const VolumeBounds& dBounds,
0059     const std::shared_ptr<DetectorVolume>& dVolume) noexcept(false);
0060 
0061 /// Create a default portal generator that connects to the
0062 /// static method.
0063 ///
0064 /// @note parameters are ignored in this case
0065 PortalGenerator defaultPortalAndSubPortalGenerator();
0066 
0067 }  // namespace Experimental
0068 }  // namespace Acts