File indexing completed on 2026-05-27 07:24:25
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include "detray/core/detector.hpp"
0011 #include "detray/geometry/mask.hpp"
0012 #include "detray/geometry/shapes.hpp"
0013
0014
0015 #include "detray/plugins/svgtools/conversion/surface.hpp"
0016 #include "detray/plugins/svgtools/writer.hpp"
0017
0018
0019 #include "detray/test/common/build_toy_detector.hpp"
0020 #include "detray/test/framework/types.hpp"
0021
0022
0023 #include <vecmem/memory/host_memory_resource.hpp>
0024
0025
0026 #include <actsvg/core.hpp>
0027 #include <actsvg/meta.hpp>
0028
0029
0030 #include <gtest/gtest.h>
0031
0032
0033 #include <array>
0034 #include <string>
0035
0036 GTEST_TEST(svgtools, masks) {
0037
0038
0039
0040 const auto axes = actsvg::draw::x_y_axes("axes", {-250, 250}, {-250, 250},
0041 actsvg::style::stroke());
0042
0043 using toy_detector_t = detray::detector<detray::test::toy_metadata>;
0044 using algebra_t = typename toy_detector_t::algebra_type;
0045 using transform3_t = detray::dtransform3D<algebra_t>;
0046
0047 const detray::dvector3D<algebra_t> tr{50.f, 100.f, 0.f};
0048 const transform3_t transform(tr);
0049 const actsvg::views::x_y view{};
0050
0051
0052
0053
0054 detray::mask<detray::annulus2D, algebra_t> ann2D{0u, 100.f, 200.f, -0.5f,
0055 0.5f, 0.f, 4.f, 30.f};
0056 const auto ann2D_proto =
0057 detray::svgtools::conversion::surface(transform, ann2D);
0058 const auto ann2D_svg = actsvg::display::surface("", ann2D_proto, view);
0059 detray::svgtools::write_svg("test_svgtools_annulus2D", {axes, ann2D_svg});
0060
0061
0062
0063 detray::mask<detray::cylinder2D, algebra_t> cyl2D{0u, 100.f, -10.f, 10.f};
0064 const auto cyl2D_proto =
0065 detray::svgtools::conversion::surface(transform, cyl2D);
0066 const auto cyl2D_svg = actsvg::display::surface("", cyl2D_proto, view);
0067 detray::svgtools::write_svg("test_svgtools_cylinder2D", {axes, cyl2D_svg});
0068
0069
0070
0071 detray::mask<detray::rectangle2D, algebra_t> rec2D{0u, 100.f, 100.f};
0072 const auto rec2D_proto =
0073 detray::svgtools::conversion::surface(transform, rec2D);
0074 const auto rec2D_svg = actsvg::display::surface("", rec2D_proto, view);
0075 detray::svgtools::write_svg("test_svgtools_rectangle2D", {axes, rec2D_svg});
0076
0077
0078
0079 detray::mask<detray::ring2D, algebra_t> rin2D{0u, 50.f, 100.f};
0080 const auto rin2D_proto =
0081 detray::svgtools::conversion::surface(transform, rin2D);
0082 const auto rin2D_svg = actsvg::display::surface("", rin2D_proto, view);
0083 detray::svgtools::write_svg("test_svgtools_ring2D", {axes, rin2D_svg});
0084
0085
0086
0087 detray::mask<detray::trapezoid2D, algebra_t> tra2D{0u, 100.f, 50.f, 200.f,
0088 1.f / 400.f};
0089 const auto tra2D_proto =
0090 detray::svgtools::conversion::surface(transform, tra2D);
0091 const auto tra2D_svg = actsvg::display::surface("", tra2D_proto, view);
0092 detray::svgtools::write_svg("test_svgtools_trapezoid2D", {axes, tra2D_svg});
0093
0094
0095
0096 detray::mask<detray::line_circular, algebra_t> lin2D{0u, 10.f, 100.f};
0097 const auto lin2D_proto =
0098 detray::svgtools::conversion::surface(transform, lin2D);
0099 const auto lin2D_svg = actsvg::display::surface("", lin2D_proto, view);
0100 detray::svgtools::write_svg("test_svgtools_line2D", {axes, lin2D_svg});
0101 }