Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-16 08:17:19

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/Utilities/Axis.hpp"
0012 #include "Acts/Utilities/MultiAxis.hpp"
0013 
0014 #include "CreateMultiAxis3.hpp"
0015 
0016 namespace Acts::detail {
0017 
0018 template <typename FirstAxis>
0019 std::unique_ptr<IMultiAxis3D> createMultiAxis3(const FirstAxis& first,
0020                                                const IAxis& second,
0021                                                const IAxis& third) {
0022   return second.visit([&first, &third]<AxisConcept Axis2>(
0023                           const Axis2& a2) -> std::unique_ptr<IMultiAxis3D> {
0024     return third.visit([&first, &a2]<AxisConcept Axis3>(
0025                            const Axis3& a3) -> std::unique_ptr<IMultiAxis3D> {
0026       return std::make_unique<MultiAxis<FirstAxis, Axis2, Axis3>>(first, a2,
0027                                                                   a3);
0028     });
0029   });
0030 }
0031 
0032 }  // namespace Acts::detail