File indexing completed on 2025-12-16 09:24:56
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <boost/test/unit_test.hpp>
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Geometry/CylinderVolumeBounds.hpp"
0013 #include "Acts/Geometry/GeometryContext.hpp"
0014 #include "Acts/Geometry/GeometryIdentifier.hpp"
0015 #include "Acts/Geometry/TrackingVolume.hpp"
0016 #include "Acts/MagneticField/MagneticFieldContext.hpp"
0017 #include "Acts/Material/IntersectionMaterialAssigner.hpp"
0018 #include "Acts/Surfaces/CylinderSurface.hpp"
0019 #include "Acts/Utilities/Enumerate.hpp"
0020
0021 #include <limits>
0022
0023 using namespace Acts;
0024
0025 namespace ActsTests {
0026
0027 auto tContext = GeometryContext();
0028 auto mContext = MagneticFieldContext();
0029
0030 BOOST_AUTO_TEST_SUITE(MaterialSuite)
0031
0032 BOOST_AUTO_TEST_CASE(FindSurfaceIntersections) {
0033
0034 std::vector<std::shared_ptr<Surface>> surfaces = {
0035 Surface::makeShared<CylinderSurface>(Transform3::Identity(), 20.0, 100.0),
0036 Surface::makeShared<CylinderSurface>(Transform3::Identity(), 30.0, 100.0),
0037 Surface::makeShared<CylinderSurface>(Transform3::Identity(), 50.0,
0038 100.0)};
0039
0040 IntersectionMaterialAssigner::Config imCfg;
0041 for (const auto &surface : surfaces) {
0042 imCfg.surfaces.push_back(surface.get());
0043 }
0044
0045 IntersectionMaterialAssigner imAssigner(imCfg);
0046 auto [surfaceCandides, volumeCandidates] = imAssigner.assignmentCandidates(
0047 tContext, mContext, Vector3(0, 0, 0), Vector3(1, 1, 0).normalized());
0048
0049 BOOST_CHECK_EQUAL(surfaceCandides.size(), 3u);
0050 BOOST_CHECK_EQUAL(volumeCandidates.size(), 0u);
0051 }
0052
0053 BOOST_AUTO_TEST_CASE(FindTrackingVolumeIntersections) {
0054 auto cylinerVolumeBounds =
0055 std::make_shared<CylinderVolumeBounds>(20.0, 100.0, 400.0);
0056 auto volume = std::make_shared<TrackingVolume>(
0057 Transform3::Identity(), cylinerVolumeBounds, nullptr, nullptr, nullptr,
0058 MutableTrackingVolumeVector{}, "CylindricalTrackignVolume");
0059
0060 IntersectionMaterialAssigner::Config imCfg;
0061 imCfg.trackingVolumes.push_back(volume.get());
0062
0063 IntersectionMaterialAssigner imAssigner(imCfg);
0064 auto [surfaceCandides, volumeCandidates] = imAssigner.assignmentCandidates(
0065 tContext, mContext, Vector3(0, 0, 0), Vector3(1, 1, 0).normalized());
0066
0067 BOOST_CHECK_EQUAL(surfaceCandides.size(), 0u);
0068 BOOST_CHECK_EQUAL(volumeCandidates.size(), 1u);
0069 }
0070
0071 BOOST_AUTO_TEST_SUITE_END()
0072
0073 }