From 7670ea13fc7b2b826b2001fdaae0d3b4ff744a52 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Fri, 9 Aug 2024 09:40:48 +0200 Subject: [PATCH 1/6] fix: Avoid unused local typedef This also removes the `-Wno-unused-local-typedefs` compile flag. --- CMakeLists.txt | 2 +- meta/include/actsvg/display/sheets.hpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 86b2b1e..35898ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ project (actsvg VERSION 0.4.41 LANGUAGES CXX ) set( CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use" ) set( CMAKE_CXX_EXTENSIONS FALSE CACHE BOOL "Disable C++ extensions" ) -set(ACTSVG_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow -Wno-unused-local-typedefs") +set(ACTSVG_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow") # This adds some useful conversion checks like float-to-bool, float-to-int, etc. # However, at the moment this is only added to clang builds, since GCC's -Wfloat-conversion # is much more aggressive and also triggers on e.g., double-to-float diff --git a/meta/include/actsvg/display/sheets.hpp b/meta/include/actsvg/display/sheets.hpp index b303d60..cc7e302 100644 --- a/meta/include/actsvg/display/sheets.hpp +++ b/meta/include/actsvg/display/sheets.hpp @@ -52,8 +52,6 @@ svg::object surface_sheet_xy(const std::string& id_, so._tag = "g"; so._id = id_; - using point3 = typename point3_container::value_type; - views::x_y x_y_view; std::vector contours = {range_contour(s_, fs_)}; From 87d30511571703c39381a68aa3be687757824cf1 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 14 Aug 2024 11:03:45 +0200 Subject: [PATCH 2/6] ci: Add OS build matrix --- .github/workflows/build.yml | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0bfd1f3..8c0c15f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,14 +11,26 @@ env: CTEST_OUTPUT_ON_FAILURE: 1 jobs: - ubuntu: - runs-on: ubuntu-latest + build: + strategy: + matrix: + os: + - macos-14 + - ubuntu-22.04 + - ubuntu-24.04 + + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: Install Dependencies - run: sudo apt-get install libboost-all-dev + run: | + if [[ "$OSTYPE" == "darwin"* ]]; then + brew install boost + else + sudo apt-get install libboost-all-dev + fi - name: Initialize Workspace run: cd $GITHUB_WORKSPACE @@ -29,7 +41,10 @@ jobs: - name: Configure CMake shell: bash working-directory: ${{runner.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DACTSVG_USE_SYSTEM_BOOST=Off -DACTSVG_BUILD_TESTING=On -DACTSVG_BUILD_EXAMPLES=On + run: | + cmake $GITHUB_WORKSPACE \ + -DACTSVG_BUILD_TESTING=ON \ + -DACTSVG_BUILD_EXAMPLES=ON - name: Build working-directory: ${{runner.workspace}}/build From 4b0fefd11c554bc0cbd55ec0ed64b7e925b294e3 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 14 Aug 2024 11:52:36 +0200 Subject: [PATCH 3/6] change compile flag propagation, tighten up compile flags --- .github/workflows/build.yml | 2 + CMakeLists.txt | 42 +++++++++--------- cmake/actsvg-functions.cmake | 69 ++++++++++++++++-------------- core/include/actsvg/core/views.hpp | 2 +- extern/googletest/CMakeLists.txt | 9 ++-- 5 files changed, 63 insertions(+), 61 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8c0c15f..aaa1688 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,6 +44,8 @@ jobs: run: | cmake $GITHUB_WORKSPACE \ -DACTSVG_BUILD_TESTING=ON \ + -DACTSVG_BUILD_META=ON \ + -DACTSVG_BUILD_WEB=ON \ -DACTSVG_BUILD_EXAMPLES=ON - name: Build diff --git a/CMakeLists.txt b/CMakeLists.txt index 35898ed..234498e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,15 +6,13 @@ project (actsvg VERSION 0.4.41 LANGUAGES CXX ) set( CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use" ) set( CMAKE_CXX_EXTENSIONS FALSE CACHE BOOL "Disable C++ extensions" ) -set(ACTSVG_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow") -# This adds some useful conversion checks like float-to-bool, float-to-int, etc. -# However, at the moment this is only added to clang builds, since GCC's -Wfloat-conversion -# is much more aggressive and also triggers on e.g., double-to-float -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang") - set(ACTSVG_CXX_FLAGS "${ACTSVG_CXX_FLAGS} -Wfloat-conversion") -endif() +set(ACTSVG_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow -Wzero-as-null-pointer-constant -Wold-style-cast -Wnull-dereference -Wfloat-conversion") + -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ACTSVG_CXX_FLAGS}") +# Controls behavior of DOWNLOAD_EXTRACT_TIMESTAMP +if(POLICY CMP0135) + cmake_policy(SET CMP0135 NEW) +endif() # CMake include(s). include( CMakeDependentOption ) @@ -45,19 +43,19 @@ add_subdirectory(core) option(ACTSVG_BUILD_META "Build the meta level interface of ACTSVG" ON ) if ( ACTSVG_BUILD_META ) - add_subdirectory(meta) + add_subdirectory(meta) endif() option(ACTSVG_BUILD_WEB "Build the webpage builder interface of ACTSVG" ON ) if ( ACTSVG_BUILD_WEB ) - add_subdirectory(web) + add_subdirectory(web) endif() option(ACTSVG_BUILD_TESTING "Build the (unit) tests of ACTSVG" OFF ) if (ACTSVG_BUILD_TESTING OR ACTSVG_BUILD_EXAMPLES) - add_subdirectory(data) + add_subdirectory(data) endif() # Set up the test(s). @@ -67,26 +65,26 @@ if( ACTSVG_BUILD_TESTING ) endif() if (ACTSVG_BUILD_TESTING OR ACTSVG_BUILD_EXAMPLES) - # Set up GoogleTest. - option( ACTSVG_SETUP_GOOGLETEST + # Set up GoogleTest. + option( ACTSVG_SETUP_GOOGLETEST "Set up the GoogleTest target(s) explicitly" TRUE ) - option( ACTSVG_USE_SYSTEM_GOOGLETEST + option( ACTSVG_USE_SYSTEM_GOOGLETEST "Pick up an existing installation of GoogleTest from the build environment" ${ACTSVG_USE_SYSTEM_LIBS} ) - if( ACTSVG_SETUP_GOOGLETEST ) - if( ACTSVG_USE_SYSTEM_GOOGLETEST ) - find_package( GTest REQUIRED ) - else() - add_subdirectory( extern/googletest ) - endif() - endif() + if( ACTSVG_SETUP_GOOGLETEST ) + if( ACTSVG_USE_SYSTEM_GOOGLETEST ) + find_package( GTest REQUIRED ) + else() + add_subdirectory( extern/googletest ) + endif() + endif() endif() option(ACTSVG_BUILD_PYTHON_BINDINGS "Build the python bindings of ACTSVG" OFF) if(ACTSVG_BUILD_PYTHON_BINDINGS) find_package(Python 3.8 REQUIRED COMPONENTS Interpreter Development) option(ACTSVG_USE_SYSTEM_PYBIND11 "Pick up an existing installation of pybind11") - if(ACTSVG_USE_SYSTEM_PYBIND11) + if(ACTSVG_USE_SYSTEM_PYBIND11) find_package(pybind11 CONFIG REQUIRED) else() add_subdirectory(extern/pybind11) diff --git a/cmake/actsvg-functions.cmake b/cmake/actsvg-functions.cmake index 32f99d2..daa3d27 100644 --- a/cmake/actsvg-functions.cmake +++ b/cmake/actsvg-functions.cmake @@ -6,28 +6,33 @@ include( CMakeParseArguments ) # Usage: actsvg_add_library( actsvg_core core "header1.cpp"... ) # function( actsvg_add_library fullname basename ) - cmake_parse_arguments( ARG "" "" "" ${ARGN} ) + cmake_parse_arguments( ARG "" "" "" ${ARGN} ) - # Create the library. - add_library( ${fullname} SHARED ${ARG_UNPARSED_ARGUMENTS} ) + # Create the library. + add_library( ${fullname} SHARED ${ARG_UNPARSED_ARGUMENTS} ) - # Set up how clients should find its headers. - target_include_directories( ${fullname} PUBLIC + # Set up how clients should find its headers. + target_include_directories( ${fullname} PUBLIC $ $ ) - # Make sure that the library is available as "actsvg::${basename}" in every - # situation. - set_target_properties( ${fullname} PROPERTIES EXPORT_NAME ${basename} ) - add_library( actsvg::${basename} ALIAS ${fullname} ) + set_target_properties(${fullname} + PROPERTIES + COMPILE_FLAGS ${ACTSVG_CXX_FLAGS}) - # Set up the installation of the library and its headers. - install( TARGETS ${fullname} + # Make sure that the library is available as "actsvg::${basename}" in every + # situation. + set_target_properties( ${fullname} PROPERTIES EXPORT_NAME ${basename} ) + add_library( actsvg::${basename} ALIAS ${fullname} ) + + + # Set up the installation of the library and its headers. + install( TARGETS ${fullname} EXPORT actsvg-exports LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" ) - install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" + install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" OPTIONAL ) endfunction( actsvg_add_library ) @@ -44,15 +49,15 @@ endfunction( actsvg_add_library ) # function( actsvg_add_executable name ) - # Parse the function's options. - cmake_parse_arguments( ARG "" "" "LINK_LIBRARIES" ${ARGN} ) + # Parse the function's options. + cmake_parse_arguments( ARG "" "" "LINK_LIBRARIES" ${ARGN} ) - # Create the executable. - set( exe_name "actsvg_${name}" ) - add_executable( ${exe_name} ${ARG_UNPARSED_ARGUMENTS} ) - if( ARG_LINK_LIBRARIES ) - target_link_libraries( ${exe_name} PRIVATE ${ARG_LINK_LIBRARIES} ) - endif() + # Create the executable. + set( exe_name "actsvg_${name}" ) + add_executable( ${exe_name} ${ARG_UNPARSED_ARGUMENTS} ) + if( ARG_LINK_LIBRARIES ) + target_link_libraries( ${exe_name} PRIVATE ${ARG_LINK_LIBRARIES} ) + endif() endfunction( actsvg_add_executable ) @@ -64,22 +69,22 @@ endfunction( actsvg_add_executable ) # function( actsvg_add_test name ) - # Parse the function's options. - cmake_parse_arguments( ARG "" "" "LINK_LIBRARIES" ${ARGN} ) + # Parse the function's options. + cmake_parse_arguments( ARG "" "" "LINK_LIBRARIES" ${ARGN} ) - # Create the test executable. - set( test_exe_name "actsvg_test_${name}" ) - add_executable( ${test_exe_name} ${ARG_UNPARSED_ARGUMENTS} ) - if( ARG_LINK_LIBRARIES ) - target_link_libraries( ${test_exe_name} PRIVATE ${ARG_LINK_LIBRARIES} ) - endif() + # Create the test executable. + set( test_exe_name "actsvg_test_${name}" ) + add_executable( ${test_exe_name} ${ARG_UNPARSED_ARGUMENTS} ) + if( ARG_LINK_LIBRARIES ) + target_link_libraries( ${test_exe_name} PRIVATE ${ARG_LINK_LIBRARIES} ) + endif() - # Run the executable as the test. - add_test( NAME ${test_exe_name} + # Run the executable as the test. + add_test( NAME ${test_exe_name} COMMAND ${test_exe_name} ) - # Set all properties for the test. - set_tests_properties( ${test_exe_name} PROPERTIES + # Set all properties for the test. + set_tests_properties( ${test_exe_name} PROPERTIES ENVIRONMENT actsvg_TEST_DATA_DIR=${PROJECT_SOURCE_DIR}/data/ ) endfunction( actsvg_add_test ) diff --git a/core/include/actsvg/core/views.hpp b/core/include/actsvg/core/views.hpp index 0e5ca14..795a126 100644 --- a/core/include/actsvg/core/views.hpp +++ b/core/include/actsvg/core/views.hpp @@ -276,7 +276,7 @@ struct z_rphi { r = std::sqrt(point_[0] * point_[0] + point_[1] * point_[1]); } scalar phi = std::atan2(point_[1], point_[0]); - return point2{point_[2], r * phi}; + return point2{static_cast(point_[2]), r * phi}; } /** A z-rphi view operator diff --git a/extern/googletest/CMakeLists.txt b/extern/googletest/CMakeLists.txt index 68b5d95..cc13aaf 100644 --- a/extern/googletest/CMakeLists.txt +++ b/extern/googletest/CMakeLists.txt @@ -1,4 +1,3 @@ -cmake_minimum_required( VERSION 3.11 ) include( FetchContent ) # Tell the user what's happening. @@ -9,13 +8,13 @@ set( ACTSVG_GOOGLETEST_SOURCE "URL;https://github.com/google/googletest/archive/release-1.11.0.tar.gz;URL_MD5;e8a8df240b6938bb6384155d4c37d937" CACHE STRING "Source for GoogleTest, when built as part of this project" ) mark_as_advanced( ACTSVG_GOOGLETEST_SOURCE ) -FetchContent_Declare( GoogleTest ${ACTSVG_GOOGLETEST_SOURCE} ) +FetchContent_Declare( GoogleTest "${ACTSVG_GOOGLETEST_SOURCE};EXCLUDE_FROM_ALL" ) # Options used in the build of GoogleTest. set( BUILD_GMOCK TRUE CACHE BOOL "Turn off the build of GMock" ) set( INSTALL_GTEST FALSE CACHE BOOL "Turn off the installation of GoogleTest" ) if( WIN32 ) - set( gtest_force_shared_crt TRUE CACHE BOOL + set( gtest_force_shared_crt TRUE CACHE BOOL "Use shared (DLL) run-time library, even with static libraries" ) endif() @@ -23,9 +22,7 @@ endif() set( CMAKE_MACOSX_RPATH TRUE ) # Get it into the current directory. -FetchContent_Populate( GoogleTest ) -add_subdirectory( "${googletest_SOURCE_DIR}" "${googletest_BINARY_DIR}" - EXCLUDE_FROM_ALL ) +FetchContent_MakeAvailable( GoogleTest ) # Set up aliases for the GTest targets with the same name that they have # when we find GTest pre-installed. From a389f81c20b45541deb384e547245b31bb9bc3de Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 14 Aug 2024 11:56:21 +0200 Subject: [PATCH 4/6] switch back to only running float-conversion on clang --- CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 234498e..4cb9dad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,8 +6,14 @@ project (actsvg VERSION 0.4.41 LANGUAGES CXX ) set( CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use" ) set( CMAKE_CXX_EXTENSIONS FALSE CACHE BOOL "Disable C++ extensions" ) -set(ACTSVG_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow -Wzero-as-null-pointer-constant -Wold-style-cast -Wnull-dereference -Wfloat-conversion") +set(ACTSVG_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow -Wzero-as-null-pointer-constant -Wold-style-cast -Wnull-dereference") +# This adds some useful conversion checks like float-to-bool, float-to-int, etc. +# However, at the moment this is only added to clang builds, since GCC's -Wfloat-conversion +# is much more aggressive and also triggers on e.g., double-to-float +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang") + set(ACTSVG_CXX_FLAGS "${ACTSVG_CXX_FLAGS} -Wfloat-conversion") +endif() # Controls behavior of DOWNLOAD_EXTRACT_TIMESTAMP if(POLICY CMP0135) From 01f595ed790aeeefb07828754d4789c1ac278dba Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 14 Aug 2024 11:56:51 +0200 Subject: [PATCH 5/6] fail build on warnings --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aaa1688..e89234d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,6 +43,7 @@ jobs: working-directory: ${{runner.workspace}}/build run: | cmake $GITHUB_WORKSPACE \ + -DCOMPILE_WARNING_AS_ERROR=ON \ -DACTSVG_BUILD_TESTING=ON \ -DACTSVG_BUILD_META=ON \ -DACTSVG_BUILD_WEB=ON \ From f2f6f83c0777cd74047a5dba3b62ce7c83c2008a Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 14 Aug 2024 16:23:04 +0200 Subject: [PATCH 6/6] Compile with `-Wfloat-conversion` --- CMakeLists.txt | 8 +- core/include/actsvg/core/defs.hpp | 10 + core/include/actsvg/core/style.hpp | 2 +- core/include/actsvg/core/views.hpp | 2 +- core/src/core/draw.cpp | 28 +- core/src/core/generators.cpp | 2 +- core/src/core/style.cpp | 18 +- core/src/core/svg.cpp | 8 +- data/include/actsvg/data/odd_pixel_barrel.hpp | 2 - data/include/actsvg/data/odd_pixel_endcap.hpp | 4 - data/src/data/odd_pixel_barrel.cpp | 1821 +++++++++-------- data/src/data/odd_pixel_endcap.cpp | 508 ++--- meta/include/actsvg/display/datamodel.hpp | 31 +- meta/include/actsvg/display/geometry.hpp | 10 +- meta/include/actsvg/display/helpers.hpp | 2 +- meta/include/actsvg/display/sheets.hpp | 48 +- meta/include/actsvg/display/tools.hpp | 22 +- meta/include/actsvg/proto/surface.hpp | 2 +- tests/common/helix.hpp | 3 +- tests/core/barrel.cpp | 4 +- tests/core/bezier.cpp | 2 +- tests/core/endcap.cpp | 4 +- tests/core/infobox.cpp | 4 +- tests/core/markers.cpp | 18 +- tests/core/polygon.cpp | 2 +- tests/core/views.cpp | 4 +- tests/meta/barrel_sheet.cpp | 26 +- tests/meta/clusters.cpp | 97 +- tests/meta/detector.cpp | 2 +- tests/meta/endcap_sheet.cpp | 2 +- tests/meta/grid.cpp | 4 +- tests/meta/seeds.cpp | 16 +- tests/meta/surface_materials.cpp | 2 +- tests/meta/surface_sheet.cpp | 16 +- tests/meta/surfaces.cpp | 10 +- tests/meta/trajectories.cpp | 6 +- tests/meta/volume.cpp | 18 +- tests/meta/wire_chamber.cpp | 8 +- 38 files changed, 1417 insertions(+), 1359 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 86b2b1e..83068a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,13 +6,7 @@ project (actsvg VERSION 0.4.41 LANGUAGES CXX ) set( CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use" ) set( CMAKE_CXX_EXTENSIONS FALSE CACHE BOOL "Disable C++ extensions" ) -set(ACTSVG_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow -Wno-unused-local-typedefs") -# This adds some useful conversion checks like float-to-bool, float-to-int, etc. -# However, at the moment this is only added to clang builds, since GCC's -Wfloat-conversion -# is much more aggressive and also triggers on e.g., double-to-float -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang") - set(ACTSVG_CXX_FLAGS "${ACTSVG_CXX_FLAGS} -Wfloat-conversion") -endif() +set(ACTSVG_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow -Wno-unused-local-typedefs -Wfloat-conversion") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ACTSVG_CXX_FLAGS}") diff --git a/core/include/actsvg/core/defs.hpp b/core/include/actsvg/core/defs.hpp index 1ac5531..926ee4e 100644 --- a/core/include/actsvg/core/defs.hpp +++ b/core/include/actsvg/core/defs.hpp @@ -9,6 +9,7 @@ #pragma once #include +#include #include namespace actsvg { @@ -26,6 +27,15 @@ const std::string __d = "."; /// @todo make configurable via compile time using scalar = float; +scalar constexpr operator""_scalar(long double v) { + return static_cast(v); +} +scalar constexpr operator""_scalar(unsigned long long v) { + return static_cast(v); +} + +static constexpr scalar pi = static_cast(M_PI); + using point2 = std::array; } // namespace actsvg diff --git a/core/include/actsvg/core/style.hpp b/core/include/actsvg/core/style.hpp index 32199bb..c721dca 100644 --- a/core/include/actsvg/core/style.hpp +++ b/core/include/actsvg/core/style.hpp @@ -186,7 +186,7 @@ struct font { unsigned int _size = 12; - scalar _line_spacing = 1.4; + scalar _line_spacing = 1.4f; std::string _style = ""; diff --git a/core/include/actsvg/core/views.hpp b/core/include/actsvg/core/views.hpp index 0e5ca14..a9d6e06 100644 --- a/core/include/actsvg/core/views.hpp +++ b/core/include/actsvg/core/views.hpp @@ -225,7 +225,7 @@ struct z_phi { ((*max_phi) - (*min_phi)) > M_PI) { for (auto &cv : c) { if (cv[1] < 0.) { - cv[1] += 2 * M_PI; + cv[1] += 2_scalar * pi; } } } diff --git a/core/src/core/draw.cpp b/core/src/core/draw.cpp index e0066f9..b0de3ca 100644 --- a/core/src/core/draw.cpp +++ b/core/src/core/draw.cpp @@ -809,12 +809,12 @@ svg::object marker(const std::string &id_, const point2 &at_, } else if (marker_._type.find("o") != std::string::npos) { // A dot marker svg::object dot = - circle(id_, at_, 0.5 * size, marker_._fill, marker_._stroke); + circle(id_, at_, 0.5_scalar * size, marker_._fill, marker_._stroke); marker_group.add_object(dot); } else if (marker_._type.find("x") != std::string::npos) { scalar a_x = at_[0]; scalar a_y = at_[1]; - scalar h_s = 0.5 * size; + scalar h_s = 0.5_scalar * size; marker_group.add_object(line(id_ + "_ml0", {a_x - h_s, a_y - h_s}, {a_x + h_s, a_y + h_s}, marker_._stroke)); marker_group.add_object(line(id_ + "_ml1", {a_x - h_s, a_y + h_s}, @@ -855,12 +855,11 @@ svg::object measure(const std::string &id_, const point2 &start_, scalar theta = std::atan2(end_[1] - start_[1], end_[0] - start_[0]); if (std::abs(end_[1] - start_[1]) < std::numeric_limits::epsilon()) { - theta = (end_[0] > start_[0]) ? 0. : M_PI; + theta = (end_[0] > start_[0]) ? 0.0_scalar : pi; } measure_group.add_object(marker(id_ + "_start_tag", {start_[0], start_[1]}, - start_marker_, - M_PI + static_cast(theta))); + start_marker_, pi + theta)); measure_group.add_object(marker(id_ + "_end_tag", {end_[0], end_[1]}, end_marker_, static_cast(theta))); @@ -888,16 +887,16 @@ svg::object arc_measure(const std::string &id_, scalar r_, const point2 &start_, // Arrow is at end point if (not start_marker_._type.empty() and start_marker_._type != std::string("none")) { - scalar theta_start = atan2(start_[1], start_[0]); + scalar theta_start = static_cast(atan2(start_[1], start_[0])); measure_group.add_object( marker(id_ + "_start_tag", {start_[0], start_[1]}, start_marker_, static_cast(theta_start - 0.5 * M_PI))); } - scalar theta_end = atan2(end_[1], end_[0]); + scalar theta_end = static_cast(atan2(end_[1], end_[0])); measure_group.add_object( marker(id_ + "_end_tag", {end_[0], end_[1]}, end_marker_, - static_cast(theta_end + 0.5 * M_PI))); + static_cast(theta_end + 0.5_scalar * pi))); if (not label_.empty()) { auto ltext = text(id_ + "_label", label_pos_, {label_}, font_); @@ -950,10 +949,10 @@ svg::object x_y_axes(const std::string &id_, }; // Add the markers to the arrows - add_marker({x_range_[0], 0.}, 0, 0, M_PI, id_ + "_neg_x_head"); + add_marker({x_range_[0], 0.}, 0, 0, pi, id_ + "_neg_x_head"); add_marker({x_range_[1], 0.}, 0, 1, 0., id_ + "pos_x_head"); - add_marker({0., y_range_[0]}, 1, 0, -0.5 * M_PI, id_ + "neg_y_head"); - add_marker({0., y_range_[1]}, 1, 1, 0.5 * M_PI, id_ + "pos_y_head"); + add_marker({0., y_range_[0]}, 1, 0, -0.5_scalar * pi, id_ + "neg_y_head"); + add_marker({0., y_range_[1]}, 1, 1, 0.5_scalar * pi, id_ + "pos_y_head"); // Add the labels: x if (not x_label_.empty()) { @@ -1026,10 +1025,9 @@ svg::object gradient_box( bool label_on = not label_._text.empty(); // Create the box - by hand this time - svg::object gbox = draw::rectangle(id_ + "_box", - {static_cast(p_[0u] + 0.5 * w_), - static_cast(p_[1u] + 0.5 * h_)}, - 0.5 * w_, 0.5 * h_); + svg::object gbox = draw::rectangle( + id_ + "_box", {p_[0u] + 0.5_scalar * w_, p_[1u] + 0.5_scalar * h_}, + 0.5_scalar * w_, 0.5_scalar * h_); gbox._sterile = true; gbox._attribute_map["fill"] = "url(#" + gradient._id + ")"; gbox._transform = t_; diff --git a/core/src/core/generators.cpp b/core/src/core/generators.cpp index 30a6e7c..0515ccf 100644 --- a/core/src/core/generators.cpp +++ b/core/src/core/generators.cpp @@ -32,7 +32,7 @@ std::vector sector_contour(scalar inner_r, scalar outer_r, // Re-bound phi if (start_phi > 0. and end_phi < 0.) { - end_phi += 2 * M_PI; + end_phi += 2_scalar * pi; } auto inner_phi = phi_values(end_phi, start_phi, lseg); diff --git a/core/src/core/style.cpp b/core/src/core/style.cpp index 8e93974..320acf2 100644 --- a/core/src/core/style.cpp +++ b/core/src/core/style.cpp @@ -38,7 +38,8 @@ fill::fill(bool s_) : _sterile(s_) { } rgb gradient::rgb_from_scale(scalar s_) const { - scalar s_reg = s_ < 0. ? 0. : (s_ > 1. ? 1. : s_); + scalar s_reg = + s_ < 0._scalar ? 0._scalar : (s_ > 1._scalar ? 1._scalar : s_); // find our stops unsigned int is = 1u; for (; is <= _stops.size(); ++is) { @@ -117,25 +118,26 @@ void label::place(const std::array &lhc_, // First determine the y position if (_vertical == vertical::top) { - y = rhc_[1] + 0.6 * _font._size; + y = rhc_[1] + 0.6_scalar * _font._size; } else if (_vertical == vertical::bottom) { - y = lhc_[1] - 1.1 * _font._size; + y = lhc_[1] - 1.1_scalar * _font._size; } else if (_vertical == vertical::center) { - y = 0.5 * (lhc_[1] + rhc_[1] - _font._size); + y = 0.5_scalar * (lhc_[1] + rhc_[1] - _font._size); } if (_horizontal == horizontal::left) { x = lhc_[0]; if (_vertical == vertical::center) { - x -= 0.64 * _font._size * _text.size(); + x -= 0.64_scalar * _font._size * _text.size(); } } else if (_horizontal == horizontal::right) { - x = rhc_[0] - 0.6 * _font._size * _text.size(); + x = rhc_[0] - 0.6_scalar * _font._size * _text.size(); if (_vertical == vertical::center) { - x += 0.64 * _font._size * _text.size(); + x += 0.64_scalar * _font._size * _text.size(); } } else if (_horizontal == horizontal::center) { - x = 0.5 * (lhc_[0] + rhc_[0] - 0.6 * _font._size * _text.size()); + x = 0.5_scalar * + (lhc_[0] + rhc_[0] - 0.6_scalar * _font._size * _text.size()); } _position = {x, y}; diff --git a/core/src/core/svg.cpp b/core/src/core/svg.cpp index eec4df2..cfba969 100644 --- a/core/src/core/svg.cpp +++ b/core/src/core/svg.cpp @@ -157,12 +157,12 @@ std::ostream &operator<<(std::ostream &os_, const file &f_) { } } // Enlarge the view box by 10 percent - viewBox[2] = 1.2 * (x_range[1] - x_range[0]); - viewBox[3] = 1.2 * (y_range[1] - y_range[0]); + viewBox[2] = 1.2_scalar * (x_range[1] - x_range[0]); + viewBox[3] = 1.2_scalar * (y_range[1] - y_range[0]); // Include a fixed size border - viewBox[0] = (x_range[0] - 0.1 * viewBox[2]) - f_._border; - viewBox[1] = (y_range[0] - 0.1 * viewBox[3]) - f_._border; + viewBox[0] = (x_range[0] - 0.1_scalar * viewBox[2]) - f_._border; + viewBox[1] = (y_range[0] - 0.1_scalar * viewBox[3]) - f_._border; viewBox[2] += f_._border; viewBox[3] += f_._border; diff --git a/data/include/actsvg/data/odd_pixel_barrel.hpp b/data/include/actsvg/data/odd_pixel_barrel.hpp index 8a2d3af..2929b98 100644 --- a/data/include/actsvg/data/odd_pixel_barrel.hpp +++ b/data/include/actsvg/data/odd_pixel_barrel.hpp @@ -18,8 +18,6 @@ namespace actsvg { /// This file is generated from the Open Data detector and /// depicts one Pixel barrel layer namespace data { -extern std::vector> odd_pixel_barrel; - using rectangle = std::vector>; std::vector generate_barrel_modules(); diff --git a/data/include/actsvg/data/odd_pixel_endcap.hpp b/data/include/actsvg/data/odd_pixel_endcap.hpp index 1b5079e..323436c 100644 --- a/data/include/actsvg/data/odd_pixel_endcap.hpp +++ b/data/include/actsvg/data/odd_pixel_endcap.hpp @@ -19,10 +19,6 @@ namespace actsvg { /// depicts one Pixel endcap layer namespace data { -extern std::vector> odd_pixel_endcap; - -extern std::vector> odd_pixel_endcap_assoc; - using trapezoid = std::vector>; std::vector generate_endcap_modules(); diff --git a/data/src/data/odd_pixel_barrel.cpp b/data/src/data/odd_pixel_barrel.cpp index 435fa61..2d52a47 100644 --- a/data/src/data/odd_pixel_barrel.cpp +++ b/data/src/data/odd_pixel_barrel.cpp @@ -8,6 +8,7 @@ #include "actsvg/data/odd_pixel_barrel.hpp" +#include #include #include @@ -17,914 +18,928 @@ namespace actsvg { /// This file is generated from the Open Data detector and /// depicts one Pixel barrel layer -namespace data { -std::vector> odd_pixel_barrel = { - {69.2185, -8.55507, -504}, {67.2074, 8.12411, -504}, - {67.2074, 8.12411, -432}, {69.2185, -8.55507, -432}, - {69.2185, -8.55507, -431.5}, {67.2074, 8.12411, -431.5}, - {67.2074, 8.12411, -359.5}, {69.2185, -8.55507, -359.5}, - {69.2185, -8.55507, 221}, {67.2074, 8.12411, 221}, - {67.2074, 8.12411, 293}, {69.2185, -8.55507, 293}, - {69.2185, -8.55507, 293.5}, {67.2074, 8.12411, 293.5}, - {67.2074, 8.12411, 365.5}, {69.2185, -8.55507, 365.5}, - {69.2185, -8.55507, 366}, {67.2074, 8.12411, 366}, - {67.2074, 8.12411, 438}, {69.2185, -8.55507, 438}, - {69.2185, -8.55507, 438.5}, {67.2074, 8.12411, 438.5}, - {67.2074, 8.12411, 510.5}, {69.2185, -8.55507, 510.5}, - {69.2185, -8.55507, -359}, {67.2074, 8.12411, -359}, - {67.2074, 8.12411, -287}, {69.2185, -8.55507, -287}, - {69.2185, -8.55507, -286.5}, {67.2074, 8.12411, -286.5}, - {67.2074, 8.12411, -214.5}, {69.2185, -8.55507, -214.5}, - {69.2185, -8.55507, -214}, {67.2074, 8.12411, -214}, - {67.2074, 8.12411, -142}, {69.2185, -8.55507, -142}, - {69.2185, -8.55507, -141.5}, {67.2074, 8.12411, -141.5}, - {67.2074, 8.12411, -69.5}, {69.2185, -8.55507, -69.5}, - {69.2185, -8.55507, -69}, {67.2074, 8.12411, -69}, - {67.2074, 8.12411, 3}, {69.2185, -8.55507, 3}, - {69.2185, -8.55507, 3.5}, {67.2074, 8.12411, 3.5}, - {67.2074, 8.12411, 75.5}, {69.2185, -8.55507, 75.5}, - {69.2185, -8.55507, 76}, {67.2074, 8.12411, 76}, - {67.2074, 8.12411, 148}, {69.2185, -8.55507, 148}, - {69.2185, -8.55507, 148.5}, {67.2074, 8.12411, 148.5}, - {67.2074, 8.12411, 220.5}, {69.2185, -8.55507, 220.5}, - {69.5575, 5.11317, -504}, {64.3311, 21.0795, -504}, - {64.3311, 21.0795, -432}, {69.5575, 5.11317, -432}, - {69.5575, 5.11317, -431.5}, {64.3311, 21.0795, -431.5}, - {64.3311, 21.0795, -359.5}, {69.5575, 5.11317, -359.5}, - {69.5575, 5.11317, 221}, {64.3311, 21.0795, 221}, - {64.3311, 21.0795, 293}, {69.5575, 5.11317, 293}, - {69.5575, 5.11317, 293.5}, {64.3311, 21.0795, 293.5}, - {64.3311, 21.0795, 365.5}, {69.5575, 5.11317, 365.5}, - {69.5575, 5.11317, 366}, {64.3311, 21.0795, 366}, - {64.3311, 21.0795, 438}, {69.5575, 5.11317, 438}, - {69.5575, 5.11317, 438.5}, {64.3311, 21.0795, 438.5}, - {64.3311, 21.0795, 510.5}, {69.5575, 5.11317, 510.5}, - {69.5575, 5.11317, -359}, {64.3311, 21.0795, -359}, - {64.3311, 21.0795, -287}, {69.5575, 5.11317, -287}, - {69.5575, 5.11317, -286.5}, {64.3311, 21.0795, -286.5}, - {64.3311, 21.0795, -214.5}, {69.5575, 5.11317, -214.5}, - {69.5575, 5.11317, -214}, {64.3311, 21.0795, -214}, - {64.3311, 21.0795, -142}, {69.5575, 5.11317, -142}, - {69.5575, 5.11317, -141.5}, {64.3311, 21.0795, -141.5}, - {64.3311, 21.0795, -69.5}, {69.5575, 5.11317, -69.5}, - {69.5575, 5.11317, -69}, {64.3311, 21.0795, -69}, - {64.3311, 21.0795, 3}, {69.5575, 5.11317, 3}, - {69.5575, 5.11317, 3.5}, {64.3311, 21.0795, 3.5}, - {64.3311, 21.0795, 75.5}, {69.5575, 5.11317, 75.5}, - {69.5575, 5.11317, 76}, {64.3311, 21.0795, 76}, - {64.3311, 21.0795, 148}, {69.5575, 5.11317, 148}, - {69.5575, 5.11317, 148.5}, {64.3311, 21.0795, 148.5}, - {64.3311, 21.0795, 220.5}, {69.5575, 5.11317, 220.5}, - {-18.5849, 67.2235, -504}, {-33.2248, 58.9825, -504}, - {-33.2248, 58.9825, -432}, {-18.5849, 67.2235, -432}, - {-18.5849, 67.2235, -431.5}, {-33.2248, 58.9825, -431.5}, - {-33.2248, 58.9825, -359.5}, {-18.5849, 67.2235, -359.5}, - {-18.5849, 67.2235, 221}, {-33.2248, 58.9825, 221}, - {-33.2248, 58.9825, 293}, {-18.5849, 67.2235, 293}, - {-18.5849, 67.2235, 293.5}, {-33.2248, 58.9825, 293.5}, - {-33.2248, 58.9825, 365.5}, {-18.5849, 67.2235, 365.5}, - {-18.5849, 67.2235, 366}, {-33.2248, 58.9825, 366}, - {-33.2248, 58.9825, 438}, {-18.5849, 67.2235, 438}, - {-18.5849, 67.2235, 438.5}, {-33.2248, 58.9825, 438.5}, - {-33.2248, 58.9825, 510.5}, {-18.5849, 67.2235, 510.5}, - {-18.5849, 67.2235, -359}, {-33.2248, 58.9825, -359}, - {-33.2248, 58.9825, -287}, {-18.5849, 67.2235, -287}, - {-18.5849, 67.2235, -286.5}, {-33.2248, 58.9825, -286.5}, - {-33.2248, 58.9825, -214.5}, {-18.5849, 67.2235, -214.5}, - {-18.5849, 67.2235, -214}, {-33.2248, 58.9825, -214}, - {-33.2248, 58.9825, -142}, {-18.5849, 67.2235, -142}, - {-18.5849, 67.2235, -141.5}, {-33.2248, 58.9825, -141.5}, - {-33.2248, 58.9825, -69.5}, {-18.5849, 67.2235, -69.5}, - {-18.5849, 67.2235, -69}, {-33.2248, 58.9825, -69}, - {-33.2248, 58.9825, 3}, {-18.5849, 67.2235, 3}, - {-18.5849, 67.2235, 3.5}, {-33.2248, 58.9825, 3.5}, - {-33.2248, 58.9825, 75.5}, {-18.5849, 67.2235, 75.5}, - {-18.5849, 67.2235, 76}, {-33.2248, 58.9825, 76}, - {-33.2248, 58.9825, 148}, {-18.5849, 67.2235, 148}, - {-18.5849, 67.2235, 148.5}, {-33.2248, 58.9825, 148.5}, - {-33.2248, 58.9825, 220.5}, {-18.5849, 67.2235, 220.5}, - {-31.3425, 62.306, -504}, {-44.0934, 51.3674, -504}, - {-44.0934, 51.3674, -432}, {-31.3425, 62.306, -432}, - {-31.3425, 62.306, -431.5}, {-44.0934, 51.3674, -431.5}, - {-44.0934, 51.3674, -359.5}, {-31.3425, 62.306, -359.5}, - {-31.3425, 62.306, 221}, {-44.0934, 51.3674, 221}, - {-44.0934, 51.3674, 293}, {-31.3425, 62.306, 293}, - {-31.3425, 62.306, 293.5}, {-44.0934, 51.3674, 293.5}, - {-44.0934, 51.3674, 365.5}, {-31.3425, 62.306, 365.5}, - {-31.3425, 62.306, 366}, {-44.0934, 51.3674, 366}, - {-44.0934, 51.3674, 438}, {-31.3425, 62.306, 438}, - {-31.3425, 62.306, 438.5}, {-44.0934, 51.3674, 438.5}, - {-44.0934, 51.3674, 510.5}, {-31.3425, 62.306, 510.5}, - {-31.3425, 62.306, -359}, {-44.0934, 51.3674, -359}, - {-44.0934, 51.3674, -287}, {-31.3425, 62.306, -287}, - {-31.3425, 62.306, -286.5}, {-44.0934, 51.3674, -286.5}, - {-44.0934, 51.3674, -214.5}, {-31.3425, 62.306, -214.5}, - {-31.3425, 62.306, -214}, {-44.0934, 51.3674, -214}, - {-44.0934, 51.3674, -142}, {-31.3425, 62.306, -142}, - {-31.3425, 62.306, -141.5}, {-44.0934, 51.3674, -141.5}, - {-44.0934, 51.3674, -69.5}, {-31.3425, 62.306, -69.5}, - {-31.3425, 62.306, -69}, {-44.0934, 51.3674, -69}, - {-44.0934, 51.3674, 3}, {-31.3425, 62.306, 3}, - {-31.3425, 62.306, 3.5}, {-44.0934, 51.3674, 3.5}, - {-44.0934, 51.3674, 75.5}, {-31.3425, 62.306, 75.5}, - {-31.3425, 62.306, 76}, {-44.0934, 51.3674, 76}, - {-44.0934, 51.3674, 148}, {-31.3425, 62.306, 148}, - {-31.3425, 62.306, 148.5}, {-44.0934, 51.3674, 148.5}, - {-44.0934, 51.3674, 220.5}, {-31.3425, 62.306, 220.5}, - {-42.8955, 54.9942, -504}, {-53.2674, 41.7782, -504}, - {-53.2674, 41.7782, -432}, {-42.8955, 54.9942, -432}, - {-42.8955, 54.9942, -431.5}, {-53.2674, 41.7782, -431.5}, - {-53.2674, 41.7782, -359.5}, {-42.8955, 54.9942, -359.5}, - {-42.8955, 54.9942, 221}, {-53.2674, 41.7782, 221}, - {-53.2674, 41.7782, 293}, {-42.8955, 54.9942, 293}, - {-42.8955, 54.9942, 293.5}, {-53.2674, 41.7782, 293.5}, - {-53.2674, 41.7782, 365.5}, {-42.8955, 54.9942, 365.5}, - {-42.8955, 54.9942, 366}, {-53.2674, 41.7782, 366}, - {-53.2674, 41.7782, 438}, {-42.8955, 54.9942, 438}, - {-42.8955, 54.9942, 438.5}, {-53.2674, 41.7782, 438.5}, - {-53.2674, 41.7782, 510.5}, {-42.8955, 54.9942, 510.5}, - {-42.8955, 54.9942, -359}, {-53.2674, 41.7782, -359}, - {-53.2674, 41.7782, -287}, {-42.8955, 54.9942, -287}, - {-42.8955, 54.9942, -286.5}, {-53.2674, 41.7782, -286.5}, - {-53.2674, 41.7782, -214.5}, {-42.8955, 54.9942, -214.5}, - {-42.8955, 54.9942, -214}, {-53.2674, 41.7782, -214}, - {-53.2674, 41.7782, -142}, {-42.8955, 54.9942, -142}, - {-42.8955, 54.9942, -141.5}, {-53.2674, 41.7782, -141.5}, - {-53.2674, 41.7782, -69.5}, {-42.8955, 54.9942, -69.5}, - {-42.8955, 54.9942, -69}, {-53.2674, 41.7782, -69}, - {-53.2674, 41.7782, 3}, {-42.8955, 54.9942, 3}, - {-42.8955, 54.9942, 3.5}, {-53.2674, 41.7782, 3.5}, - {-53.2674, 41.7782, 75.5}, {-42.8955, 54.9942, 75.5}, - {-42.8955, 54.9942, 76}, {-53.2674, 41.7782, 76}, - {-53.2674, 41.7782, 148}, {-42.8955, 54.9942, 148}, - {-42.8955, 54.9942, 148.5}, {-53.2674, 41.7782, 148.5}, - {-53.2674, 41.7782, 220.5}, {-42.8955, 54.9942, 220.5}, - {-52.8002, 45.569, -504}, {-60.3944, 30.5835, -504}, - {-60.3944, 30.5835, -432}, {-52.8002, 45.569, -432}, - {-52.8002, 45.569, -431.5}, {-60.3944, 30.5835, -431.5}, - {-60.3944, 30.5835, -359.5}, {-52.8002, 45.569, -359.5}, - {-52.8002, 45.569, 221}, {-60.3944, 30.5835, 221}, - {-60.3944, 30.5835, 293}, {-52.8002, 45.569, 293}, - {-52.8002, 45.569, 293.5}, {-60.3944, 30.5835, 293.5}, - {-60.3944, 30.5835, 365.5}, {-52.8002, 45.569, 365.5}, - {-52.8002, 45.569, 366}, {-60.3944, 30.5835, 366}, - {-60.3944, 30.5835, 438}, {-52.8002, 45.569, 438}, - {-52.8002, 45.569, 438.5}, {-60.3944, 30.5835, 438.5}, - {-60.3944, 30.5835, 510.5}, {-52.8002, 45.569, 510.5}, - {-52.8002, 45.569, -359}, {-60.3944, 30.5835, -359}, - {-60.3944, 30.5835, -287}, {-52.8002, 45.569, -287}, - {-52.8002, 45.569, -286.5}, {-60.3944, 30.5835, -286.5}, - {-60.3944, 30.5835, -214.5}, {-52.8002, 45.569, -214.5}, - {-52.8002, 45.569, -214}, {-60.3944, 30.5835, -214}, - {-60.3944, 30.5835, -142}, {-52.8002, 45.569, -142}, - {-52.8002, 45.569, -141.5}, {-60.3944, 30.5835, -141.5}, - {-60.3944, 30.5835, -69.5}, {-52.8002, 45.569, -69.5}, - {-52.8002, 45.569, -69}, {-60.3944, 30.5835, -69}, - {-60.3944, 30.5835, 3}, {-52.8002, 45.569, 3}, - {-52.8002, 45.569, 3.5}, {-60.3944, 30.5835, 3.5}, - {-60.3944, 30.5835, 75.5}, {-52.8002, 45.569, 75.5}, - {-52.8002, 45.569, 76}, {-60.3944, 30.5835, 76}, - {-60.3944, 30.5835, 148}, {-52.8002, 45.569, 148}, - {-52.8002, 45.569, 148.5}, {-60.3944, 30.5835, 148.5}, - {-60.3944, 30.5835, 220.5}, {-52.8002, 45.569, 220.5}, - {-60.6757, 34.3926, -504}, {-65.2005, 18.2134, -504}, - {-65.2005, 18.2134, -432}, {-60.6757, 34.3926, -432}, - {-60.6757, 34.3926, -431.5}, {-65.2005, 18.2134, -431.5}, - {-65.2005, 18.2134, -359.5}, {-60.6757, 34.3926, -359.5}, - {-60.6757, 34.3926, 221}, {-65.2005, 18.2134, 221}, - {-65.2005, 18.2134, 293}, {-60.6757, 34.3926, 293}, - {-60.6757, 34.3926, 293.5}, {-65.2005, 18.2134, 293.5}, - {-65.2005, 18.2134, 365.5}, {-60.6757, 34.3926, 365.5}, - {-60.6757, 34.3926, 366}, {-65.2005, 18.2134, 366}, - {-65.2005, 18.2134, 438}, {-60.6757, 34.3926, 438}, - {-60.6757, 34.3926, 438.5}, {-65.2005, 18.2134, 438.5}, - {-65.2005, 18.2134, 510.5}, {-60.6757, 34.3926, 510.5}, - {-60.6757, 34.3926, -359}, {-65.2005, 18.2134, -359}, - {-65.2005, 18.2134, -287}, {-60.6757, 34.3926, -287}, - {-60.6757, 34.3926, -286.5}, {-65.2005, 18.2134, -286.5}, - {-65.2005, 18.2134, -214.5}, {-60.6757, 34.3926, -214.5}, - {-60.6757, 34.3926, -214}, {-65.2005, 18.2134, -214}, - {-65.2005, 18.2134, -142}, {-60.6757, 34.3926, -142}, - {-60.6757, 34.3926, -141.5}, {-65.2005, 18.2134, -141.5}, - {-65.2005, 18.2134, -69.5}, {-60.6757, 34.3926, -69.5}, - {-60.6757, 34.3926, -69}, {-65.2005, 18.2134, -69}, - {-65.2005, 18.2134, 3}, {-60.6757, 34.3926, 3}, - {-60.6757, 34.3926, 3.5}, {-65.2005, 18.2134, 3.5}, - {-65.2005, 18.2134, 75.5}, {-60.6757, 34.3926, 75.5}, - {-60.6757, 34.3926, 76}, {-65.2005, 18.2134, 76}, - {-65.2005, 18.2134, 148}, {-60.6757, 34.3926, 148}, - {-60.6757, 34.3926, 148.5}, {-65.2005, 18.2134, 148.5}, - {-65.2005, 18.2134, 220.5}, {-60.6757, 34.3926, 220.5}, - {-66.2195, 21.8946, -504}, {-67.5009, 5.1435, -504}, - {-67.5009, 5.1435, -432}, {-66.2195, 21.8946, -432}, - {-66.2195, 21.8946, -431.5}, {-67.5009, 5.1435, -431.5}, - {-67.5009, 5.1435, -359.5}, {-66.2195, 21.8946, -359.5}, - {-66.2195, 21.8946, 221}, {-67.5009, 5.1435, 221}, - {-67.5009, 5.1435, 293}, {-66.2195, 21.8946, 293}, - {-66.2195, 21.8946, 293.5}, {-67.5009, 5.1435, 293.5}, - {-67.5009, 5.1435, 365.5}, {-66.2195, 21.8946, 365.5}, - {-66.2195, 21.8946, 366}, {-67.5009, 5.1435, 366}, - {-67.5009, 5.1435, 438}, {-66.2195, 21.8946, 438}, - {-66.2195, 21.8946, 438.5}, {-67.5009, 5.1435, 438.5}, - {-67.5009, 5.1435, 510.5}, {-66.2195, 21.8946, 510.5}, - {-66.2195, 21.8946, -359}, {-67.5009, 5.1435, -359}, - {-67.5009, 5.1435, -287}, {-66.2195, 21.8946, -287}, - {-66.2195, 21.8946, -286.5}, {-67.5009, 5.1435, -286.5}, - {-67.5009, 5.1435, -214.5}, {-66.2195, 21.8946, -214.5}, - {-66.2195, 21.8946, -214}, {-67.5009, 5.1435, -214}, - {-67.5009, 5.1435, -142}, {-66.2195, 21.8946, -142}, - {-66.2195, 21.8946, -141.5}, {-67.5009, 5.1435, -141.5}, - {-67.5009, 5.1435, -69.5}, {-66.2195, 21.8946, -69.5}, - {-66.2195, 21.8946, -69}, {-67.5009, 5.1435, -69}, - {-67.5009, 5.1435, 3}, {-66.2195, 21.8946, 3}, - {-66.2195, 21.8946, 3.5}, {-67.5009, 5.1435, 3.5}, - {-67.5009, 5.1435, 75.5}, {-66.2195, 21.8946, 75.5}, - {-66.2195, 21.8946, 76}, {-67.5009, 5.1435, 76}, - {-67.5009, 5.1435, 148}, {-66.2195, 21.8946, 148}, - {-66.2195, 21.8946, 148.5}, {-67.5009, 5.1435, 148.5}, - {-67.5009, 5.1435, 220.5}, {-66.2195, 21.8946, 220.5}, - {-69.2185, 8.55507, -504}, {-67.2074, -8.12411, -504}, - {-67.2074, -8.12411, -432}, {-69.2185, 8.55507, -432}, - {-69.2185, 8.55507, -431.5}, {-67.2074, -8.12411, -431.5}, - {-67.2074, -8.12411, -359.5}, {-69.2185, 8.55507, -359.5}, - {-69.2185, 8.55507, 221}, {-67.2074, -8.12411, 221}, - {-67.2074, -8.12411, 293}, {-69.2185, 8.55507, 293}, - {-69.2185, 8.55507, 293.5}, {-67.2074, -8.12411, 293.5}, - {-67.2074, -8.12411, 365.5}, {-69.2185, 8.55507, 365.5}, - {-69.2185, 8.55507, 366}, {-67.2074, -8.12411, 366}, - {-67.2074, -8.12411, 438}, {-69.2185, 8.55507, 438}, - {-69.2185, 8.55507, 438.5}, {-67.2074, -8.12411, 438.5}, - {-67.2074, -8.12411, 510.5}, {-69.2185, 8.55507, 510.5}, - {-69.2185, 8.55507, -359}, {-67.2074, -8.12411, -359}, - {-67.2074, -8.12411, -287}, {-69.2185, 8.55507, -287}, - {-69.2185, 8.55507, -286.5}, {-67.2074, -8.12411, -286.5}, - {-67.2074, -8.12411, -214.5}, {-69.2185, 8.55507, -214.5}, - {-69.2185, 8.55507, -214}, {-67.2074, -8.12411, -214}, - {-67.2074, -8.12411, -142}, {-69.2185, 8.55507, -142}, - {-69.2185, 8.55507, -141.5}, {-67.2074, -8.12411, -141.5}, - {-67.2074, -8.12411, -69.5}, {-69.2185, 8.55507, -69.5}, - {-69.2185, 8.55507, -69}, {-67.2074, -8.12411, -69}, - {-67.2074, -8.12411, 3}, {-69.2185, 8.55507, 3}, - {-69.2185, 8.55507, 3.5}, {-67.2074, -8.12411, 3.5}, - {-67.2074, -8.12411, 75.5}, {-69.2185, 8.55507, 75.5}, - {-69.2185, 8.55507, 76}, {-67.2074, -8.12411, 76}, - {-67.2074, -8.12411, 148}, {-69.2185, 8.55507, 148}, - {-69.2185, 8.55507, 148.5}, {-67.2074, -8.12411, 148.5}, - {-67.2074, -8.12411, 220.5}, {-69.2185, 8.55507, 220.5}, - {-69.5575, -5.11317, -504}, {-64.3311, -21.0795, -504}, - {-64.3311, -21.0795, -432}, {-69.5575, -5.11317, -432}, - {-69.5575, -5.11317, -431.5}, {-64.3311, -21.0795, -431.5}, - {-64.3311, -21.0795, -359.5}, {-69.5575, -5.11317, -359.5}, - {-69.5575, -5.11317, 221}, {-64.3311, -21.0795, 221}, - {-64.3311, -21.0795, 293}, {-69.5575, -5.11317, 293}, - {-69.5575, -5.11317, 293.5}, {-64.3311, -21.0795, 293.5}, - {-64.3311, -21.0795, 365.5}, {-69.5575, -5.11317, 365.5}, - {-69.5575, -5.11317, 366}, {-64.3311, -21.0795, 366}, - {-64.3311, -21.0795, 438}, {-69.5575, -5.11317, 438}, - {-69.5575, -5.11317, 438.5}, {-64.3311, -21.0795, 438.5}, - {-64.3311, -21.0795, 510.5}, {-69.5575, -5.11317, 510.5}, - {-69.5575, -5.11317, -359}, {-64.3311, -21.0795, -359}, - {-64.3311, -21.0795, -287}, {-69.5575, -5.11317, -287}, - {-69.5575, -5.11317, -286.5}, {-64.3311, -21.0795, -286.5}, - {-64.3311, -21.0795, -214.5}, {-69.5575, -5.11317, -214.5}, - {-69.5575, -5.11317, -214}, {-64.3311, -21.0795, -214}, - {-64.3311, -21.0795, -142}, {-69.5575, -5.11317, -142}, - {-69.5575, -5.11317, -141.5}, {-64.3311, -21.0795, -141.5}, - {-64.3311, -21.0795, -69.5}, {-69.5575, -5.11317, -69.5}, - {-69.5575, -5.11317, -69}, {-64.3311, -21.0795, -69}, - {-64.3311, -21.0795, 3}, {-69.5575, -5.11317, 3}, - {-69.5575, -5.11317, 3.5}, {-64.3311, -21.0795, 3.5}, - {-64.3311, -21.0795, 75.5}, {-69.5575, -5.11317, 75.5}, - {-69.5575, -5.11317, 76}, {-64.3311, -21.0795, 76}, - {-64.3311, -21.0795, 148}, {-69.5575, -5.11317, 148}, - {-69.5575, -5.11317, 148.5}, {-64.3311, -21.0795, 148.5}, - {-64.3311, -21.0795, 220.5}, {-69.5575, -5.11317, 220.5}, - {-67.2235, -18.5849, -504}, {-58.9825, -33.2248, -504}, - {-58.9825, -33.2248, -432}, {-67.2235, -18.5849, -432}, - {-67.2235, -18.5849, -431.5}, {-58.9825, -33.2248, -431.5}, - {-58.9825, -33.2248, -359.5}, {-67.2235, -18.5849, -359.5}, - {-67.2235, -18.5849, 221}, {-58.9825, -33.2248, 221}, - {-58.9825, -33.2248, 293}, {-67.2235, -18.5849, 293}, - {-67.2235, -18.5849, 293.5}, {-58.9825, -33.2248, 293.5}, - {-58.9825, -33.2248, 365.5}, {-67.2235, -18.5849, 365.5}, - {-67.2235, -18.5849, 366}, {-58.9825, -33.2248, 366}, - {-58.9825, -33.2248, 438}, {-67.2235, -18.5849, 438}, - {-67.2235, -18.5849, 438.5}, {-58.9825, -33.2248, 438.5}, - {-58.9825, -33.2248, 510.5}, {-67.2235, -18.5849, 510.5}, - {-67.2235, -18.5849, -359}, {-58.9825, -33.2248, -359}, - {-58.9825, -33.2248, -287}, {-67.2235, -18.5849, -287}, - {-67.2235, -18.5849, -286.5}, {-58.9825, -33.2248, -286.5}, - {-58.9825, -33.2248, -214.5}, {-67.2235, -18.5849, -214.5}, - {-67.2235, -18.5849, -214}, {-58.9825, -33.2248, -214}, - {-58.9825, -33.2248, -142}, {-67.2235, -18.5849, -142}, - {-67.2235, -18.5849, -141.5}, {-58.9825, -33.2248, -141.5}, - {-58.9825, -33.2248, -69.5}, {-67.2235, -18.5849, -69.5}, - {-67.2235, -18.5849, -69}, {-58.9825, -33.2248, -69}, - {-58.9825, -33.2248, 3}, {-67.2235, -18.5849, 3}, - {-67.2235, -18.5849, 3.5}, {-58.9825, -33.2248, 3.5}, - {-58.9825, -33.2248, 75.5}, {-67.2235, -18.5849, 75.5}, - {-67.2235, -18.5849, 76}, {-58.9825, -33.2248, 76}, - {-58.9825, -33.2248, 148}, {-67.2235, -18.5849, 148}, - {-67.2235, -18.5849, 148.5}, {-58.9825, -33.2248, 148.5}, - {-58.9825, -33.2248, 220.5}, {-67.2235, -18.5849, 220.5}, - {-62.306, -31.3425, -504}, {-51.3674, -44.0934, -504}, - {-51.3674, -44.0934, -432}, {-62.306, -31.3425, -432}, - {-62.306, -31.3425, -431.5}, {-51.3674, -44.0934, -431.5}, - {-51.3674, -44.0934, -359.5}, {-62.306, -31.3425, -359.5}, - {-62.306, -31.3425, 221}, {-51.3674, -44.0934, 221}, - {-51.3674, -44.0934, 293}, {-62.306, -31.3425, 293}, - {-62.306, -31.3425, 293.5}, {-51.3674, -44.0934, 293.5}, - {-51.3674, -44.0934, 365.5}, {-62.306, -31.3425, 365.5}, - {-62.306, -31.3425, 366}, {-51.3674, -44.0934, 366}, - {-51.3674, -44.0934, 438}, {-62.306, -31.3425, 438}, - {-62.306, -31.3425, 438.5}, {-51.3674, -44.0934, 438.5}, - {-51.3674, -44.0934, 510.5}, {-62.306, -31.3425, 510.5}, - {-62.306, -31.3425, -359}, {-51.3674, -44.0934, -359}, - {-51.3674, -44.0934, -287}, {-62.306, -31.3425, -287}, - {-62.306, -31.3425, -286.5}, {-51.3674, -44.0934, -286.5}, - {-51.3674, -44.0934, -214.5}, {-62.306, -31.3425, -214.5}, - {-62.306, -31.3425, -214}, {-51.3674, -44.0934, -214}, - {-51.3674, -44.0934, -142}, {-62.306, -31.3425, -142}, - {-62.306, -31.3425, -141.5}, {-51.3674, -44.0934, -141.5}, - {-51.3674, -44.0934, -69.5}, {-62.306, -31.3425, -69.5}, - {-62.306, -31.3425, -69}, {-51.3674, -44.0934, -69}, - {-51.3674, -44.0934, 3}, {-62.306, -31.3425, 3}, - {-62.306, -31.3425, 3.5}, {-51.3674, -44.0934, 3.5}, - {-51.3674, -44.0934, 75.5}, {-62.306, -31.3425, 75.5}, - {-62.306, -31.3425, 76}, {-51.3674, -44.0934, 76}, - {-51.3674, -44.0934, 148}, {-62.306, -31.3425, 148}, - {-62.306, -31.3425, 148.5}, {-51.3674, -44.0934, 148.5}, - {-51.3674, -44.0934, 220.5}, {-62.306, -31.3425, 220.5}, - {67.2235, 18.5849, -504}, {58.9825, 33.2248, -504}, - {58.9825, 33.2248, -432}, {67.2235, 18.5849, -432}, - {67.2235, 18.5849, -431.5}, {58.9825, 33.2248, -431.5}, - {58.9825, 33.2248, -359.5}, {67.2235, 18.5849, -359.5}, - {67.2235, 18.5849, 221}, {58.9825, 33.2248, 221}, - {58.9825, 33.2248, 293}, {67.2235, 18.5849, 293}, - {67.2235, 18.5849, 293.5}, {58.9825, 33.2248, 293.5}, - {58.9825, 33.2248, 365.5}, {67.2235, 18.5849, 365.5}, - {67.2235, 18.5849, 366}, {58.9825, 33.2248, 366}, - {58.9825, 33.2248, 438}, {67.2235, 18.5849, 438}, - {67.2235, 18.5849, 438.5}, {58.9825, 33.2248, 438.5}, - {58.9825, 33.2248, 510.5}, {67.2235, 18.5849, 510.5}, - {67.2235, 18.5849, -359}, {58.9825, 33.2248, -359}, - {58.9825, 33.2248, -287}, {67.2235, 18.5849, -287}, - {67.2235, 18.5849, -286.5}, {58.9825, 33.2248, -286.5}, - {58.9825, 33.2248, -214.5}, {67.2235, 18.5849, -214.5}, - {67.2235, 18.5849, -214}, {58.9825, 33.2248, -214}, - {58.9825, 33.2248, -142}, {67.2235, 18.5849, -142}, - {67.2235, 18.5849, -141.5}, {58.9825, 33.2248, -141.5}, - {58.9825, 33.2248, -69.5}, {67.2235, 18.5849, -69.5}, - {67.2235, 18.5849, -69}, {58.9825, 33.2248, -69}, - {58.9825, 33.2248, 3}, {67.2235, 18.5849, 3}, - {67.2235, 18.5849, 3.5}, {58.9825, 33.2248, 3.5}, - {58.9825, 33.2248, 75.5}, {67.2235, 18.5849, 75.5}, - {67.2235, 18.5849, 76}, {58.9825, 33.2248, 76}, - {58.9825, 33.2248, 148}, {67.2235, 18.5849, 148}, - {67.2235, 18.5849, 148.5}, {58.9825, 33.2248, 148.5}, - {58.9825, 33.2248, 220.5}, {67.2235, 18.5849, 220.5}, - {-54.9942, -42.8955, -504}, {-41.7782, -53.2674, -504}, - {-41.7782, -53.2674, -432}, {-54.9942, -42.8955, -432}, - {-54.9942, -42.8955, -431.5}, {-41.7782, -53.2674, -431.5}, - {-41.7782, -53.2674, -359.5}, {-54.9942, -42.8955, -359.5}, - {-54.9942, -42.8955, 221}, {-41.7782, -53.2674, 221}, - {-41.7782, -53.2674, 293}, {-54.9942, -42.8955, 293}, - {-54.9942, -42.8955, 293.5}, {-41.7782, -53.2674, 293.5}, - {-41.7782, -53.2674, 365.5}, {-54.9942, -42.8955, 365.5}, - {-54.9942, -42.8955, 366}, {-41.7782, -53.2674, 366}, - {-41.7782, -53.2674, 438}, {-54.9942, -42.8955, 438}, - {-54.9942, -42.8955, 438.5}, {-41.7782, -53.2674, 438.5}, - {-41.7782, -53.2674, 510.5}, {-54.9942, -42.8955, 510.5}, - {-54.9942, -42.8955, -359}, {-41.7782, -53.2674, -359}, - {-41.7782, -53.2674, -287}, {-54.9942, -42.8955, -287}, - {-54.9942, -42.8955, -286.5}, {-41.7782, -53.2674, -286.5}, - {-41.7782, -53.2674, -214.5}, {-54.9942, -42.8955, -214.5}, - {-54.9942, -42.8955, -214}, {-41.7782, -53.2674, -214}, - {-41.7782, -53.2674, -142}, {-54.9942, -42.8955, -142}, - {-54.9942, -42.8955, -141.5}, {-41.7782, -53.2674, -141.5}, - {-41.7782, -53.2674, -69.5}, {-54.9942, -42.8955, -69.5}, - {-54.9942, -42.8955, -69}, {-41.7782, -53.2674, -69}, - {-41.7782, -53.2674, 3}, {-54.9942, -42.8955, 3}, - {-54.9942, -42.8955, 3.5}, {-41.7782, -53.2674, 3.5}, - {-41.7782, -53.2674, 75.5}, {-54.9942, -42.8955, 75.5}, - {-54.9942, -42.8955, 76}, {-41.7782, -53.2674, 76}, - {-41.7782, -53.2674, 148}, {-54.9942, -42.8955, 148}, - {-54.9942, -42.8955, 148.5}, {-41.7782, -53.2674, 148.5}, - {-41.7782, -53.2674, 220.5}, {-54.9942, -42.8955, 220.5}, - {-45.569, -52.8002, -504}, {-30.5835, -60.3944, -504}, - {-30.5835, -60.3944, -432}, {-45.569, -52.8002, -432}, - {-45.569, -52.8002, -431.5}, {-30.5835, -60.3944, -431.5}, - {-30.5835, -60.3944, -359.5}, {-45.569, -52.8002, -359.5}, - {-45.569, -52.8002, 221}, {-30.5835, -60.3944, 221}, - {-30.5835, -60.3944, 293}, {-45.569, -52.8002, 293}, - {-45.569, -52.8002, 293.5}, {-30.5835, -60.3944, 293.5}, - {-30.5835, -60.3944, 365.5}, {-45.569, -52.8002, 365.5}, - {-45.569, -52.8002, 366}, {-30.5835, -60.3944, 366}, - {-30.5835, -60.3944, 438}, {-45.569, -52.8002, 438}, - {-45.569, -52.8002, 438.5}, {-30.5835, -60.3944, 438.5}, - {-30.5835, -60.3944, 510.5}, {-45.569, -52.8002, 510.5}, - {-45.569, -52.8002, -359}, {-30.5835, -60.3944, -359}, - {-30.5835, -60.3944, -287}, {-45.569, -52.8002, -287}, - {-45.569, -52.8002, -286.5}, {-30.5835, -60.3944, -286.5}, - {-30.5835, -60.3944, -214.5}, {-45.569, -52.8002, -214.5}, - {-45.569, -52.8002, -214}, {-30.5835, -60.3944, -214}, - {-30.5835, -60.3944, -142}, {-45.569, -52.8002, -142}, - {-45.569, -52.8002, -141.5}, {-30.5835, -60.3944, -141.5}, - {-30.5835, -60.3944, -69.5}, {-45.569, -52.8002, -69.5}, - {-45.569, -52.8002, -69}, {-30.5835, -60.3944, -69}, - {-30.5835, -60.3944, 3}, {-45.569, -52.8002, 3}, - {-45.569, -52.8002, 3.5}, {-30.5835, -60.3944, 3.5}, - {-30.5835, -60.3944, 75.5}, {-45.569, -52.8002, 75.5}, - {-45.569, -52.8002, 76}, {-30.5835, -60.3944, 76}, - {-30.5835, -60.3944, 148}, {-45.569, -52.8002, 148}, - {-45.569, -52.8002, 148.5}, {-30.5835, -60.3944, 148.5}, - {-30.5835, -60.3944, 220.5}, {-45.569, -52.8002, 220.5}, - {-34.3926, -60.6757, -504}, {-18.2134, -65.2005, -504}, - {-18.2134, -65.2005, -432}, {-34.3926, -60.6757, -432}, - {-34.3926, -60.6757, -431.5}, {-18.2134, -65.2005, -431.5}, - {-18.2134, -65.2005, -359.5}, {-34.3926, -60.6757, -359.5}, - {-34.3926, -60.6757, 221}, {-18.2134, -65.2005, 221}, - {-18.2134, -65.2005, 293}, {-34.3926, -60.6757, 293}, - {-34.3926, -60.6757, 293.5}, {-18.2134, -65.2005, 293.5}, - {-18.2134, -65.2005, 365.5}, {-34.3926, -60.6757, 365.5}, - {-34.3926, -60.6757, 366}, {-18.2134, -65.2005, 366}, - {-18.2134, -65.2005, 438}, {-34.3926, -60.6757, 438}, - {-34.3926, -60.6757, 438.5}, {-18.2134, -65.2005, 438.5}, - {-18.2134, -65.2005, 510.5}, {-34.3926, -60.6757, 510.5}, - {-34.3926, -60.6757, -359}, {-18.2134, -65.2005, -359}, - {-18.2134, -65.2005, -287}, {-34.3926, -60.6757, -287}, - {-34.3926, -60.6757, -286.5}, {-18.2134, -65.2005, -286.5}, - {-18.2134, -65.2005, -214.5}, {-34.3926, -60.6757, -214.5}, - {-34.3926, -60.6757, -214}, {-18.2134, -65.2005, -214}, - {-18.2134, -65.2005, -142}, {-34.3926, -60.6757, -142}, - {-34.3926, -60.6757, -141.5}, {-18.2134, -65.2005, -141.5}, - {-18.2134, -65.2005, -69.5}, {-34.3926, -60.6757, -69.5}, - {-34.3926, -60.6757, -69}, {-18.2134, -65.2005, -69}, - {-18.2134, -65.2005, 3}, {-34.3926, -60.6757, 3}, - {-34.3926, -60.6757, 3.5}, {-18.2134, -65.2005, 3.5}, - {-18.2134, -65.2005, 75.5}, {-34.3926, -60.6757, 75.5}, - {-34.3926, -60.6757, 76}, {-18.2134, -65.2005, 76}, - {-18.2134, -65.2005, 148}, {-34.3926, -60.6757, 148}, - {-34.3926, -60.6757, 148.5}, {-18.2134, -65.2005, 148.5}, - {-18.2134, -65.2005, 220.5}, {-34.3926, -60.6757, 220.5}, - {-21.8946, -66.2195, -504}, {-5.1435, -67.5009, -504}, - {-5.1435, -67.5009, -432}, {-21.8946, -66.2195, -432}, - {-21.8946, -66.2195, -431.5}, {-5.1435, -67.5009, -431.5}, - {-5.1435, -67.5009, -359.5}, {-21.8946, -66.2195, -359.5}, - {-21.8946, -66.2195, 221}, {-5.1435, -67.5009, 221}, - {-5.1435, -67.5009, 293}, {-21.8946, -66.2195, 293}, - {-21.8946, -66.2195, 293.5}, {-5.1435, -67.5009, 293.5}, - {-5.1435, -67.5009, 365.5}, {-21.8946, -66.2195, 365.5}, - {-21.8946, -66.2195, 366}, {-5.1435, -67.5009, 366}, - {-5.1435, -67.5009, 438}, {-21.8946, -66.2195, 438}, - {-21.8946, -66.2195, 438.5}, {-5.1435, -67.5009, 438.5}, - {-5.1435, -67.5009, 510.5}, {-21.8946, -66.2195, 510.5}, - {-21.8946, -66.2195, -359}, {-5.1435, -67.5009, -359}, - {-5.1435, -67.5009, -287}, {-21.8946, -66.2195, -287}, - {-21.8946, -66.2195, -286.5}, {-5.1435, -67.5009, -286.5}, - {-5.1435, -67.5009, -214.5}, {-21.8946, -66.2195, -214.5}, - {-21.8946, -66.2195, -214}, {-5.1435, -67.5009, -214}, - {-5.1435, -67.5009, -142}, {-21.8946, -66.2195, -142}, - {-21.8946, -66.2195, -141.5}, {-5.1435, -67.5009, -141.5}, - {-5.1435, -67.5009, -69.5}, {-21.8946, -66.2195, -69.5}, - {-21.8946, -66.2195, -69}, {-5.1435, -67.5009, -69}, - {-5.1435, -67.5009, 3}, {-21.8946, -66.2195, 3}, - {-21.8946, -66.2195, 3.5}, {-5.1435, -67.5009, 3.5}, - {-5.1435, -67.5009, 75.5}, {-21.8946, -66.2195, 75.5}, - {-21.8946, -66.2195, 76}, {-5.1435, -67.5009, 76}, - {-5.1435, -67.5009, 148}, {-21.8946, -66.2195, 148}, - {-21.8946, -66.2195, 148.5}, {-5.1435, -67.5009, 148.5}, - {-5.1435, -67.5009, 220.5}, {-21.8946, -66.2195, 220.5}, - {-8.55507, -69.2185, -504}, {8.12411, -67.2074, -504}, - {8.12411, -67.2074, -432}, {-8.55507, -69.2185, -432}, - {-8.55507, -69.2185, -431.5}, {8.12411, -67.2074, -431.5}, - {8.12411, -67.2074, -359.5}, {-8.55507, -69.2185, -359.5}, - {-8.55507, -69.2185, 221}, {8.12411, -67.2074, 221}, - {8.12411, -67.2074, 293}, {-8.55507, -69.2185, 293}, - {-8.55507, -69.2185, 293.5}, {8.12411, -67.2074, 293.5}, - {8.12411, -67.2074, 365.5}, {-8.55507, -69.2185, 365.5}, - {-8.55507, -69.2185, 366}, {8.12411, -67.2074, 366}, - {8.12411, -67.2074, 438}, {-8.55507, -69.2185, 438}, - {-8.55507, -69.2185, 438.5}, {8.12411, -67.2074, 438.5}, - {8.12411, -67.2074, 510.5}, {-8.55507, -69.2185, 510.5}, - {-8.55507, -69.2185, -359}, {8.12411, -67.2074, -359}, - {8.12411, -67.2074, -287}, {-8.55507, -69.2185, -287}, - {-8.55507, -69.2185, -286.5}, {8.12411, -67.2074, -286.5}, - {8.12411, -67.2074, -214.5}, {-8.55507, -69.2185, -214.5}, - {-8.55507, -69.2185, -214}, {8.12411, -67.2074, -214}, - {8.12411, -67.2074, -142}, {-8.55507, -69.2185, -142}, - {-8.55507, -69.2185, -141.5}, {8.12411, -67.2074, -141.5}, - {8.12411, -67.2074, -69.5}, {-8.55507, -69.2185, -69.5}, - {-8.55507, -69.2185, -69}, {8.12411, -67.2074, -69}, - {8.12411, -67.2074, 3}, {-8.55507, -69.2185, 3}, - {-8.55507, -69.2185, 3.5}, {8.12411, -67.2074, 3.5}, - {8.12411, -67.2074, 75.5}, {-8.55507, -69.2185, 75.5}, - {-8.55507, -69.2185, 76}, {8.12411, -67.2074, 76}, - {8.12411, -67.2074, 148}, {-8.55507, -69.2185, 148}, - {-8.55507, -69.2185, 148.5}, {8.12411, -67.2074, 148.5}, - {8.12411, -67.2074, 220.5}, {-8.55507, -69.2185, 220.5}, - {5.11317, -69.5575, -504}, {21.0795, -64.3311, -504}, - {21.0795, -64.3311, -432}, {5.11317, -69.5575, -432}, - {5.11317, -69.5575, -431.5}, {21.0795, -64.3311, -431.5}, - {21.0795, -64.3311, -359.5}, {5.11317, -69.5575, -359.5}, - {5.11317, -69.5575, 221}, {21.0795, -64.3311, 221}, - {21.0795, -64.3311, 293}, {5.11317, -69.5575, 293}, - {5.11317, -69.5575, 293.5}, {21.0795, -64.3311, 293.5}, - {21.0795, -64.3311, 365.5}, {5.11317, -69.5575, 365.5}, - {5.11317, -69.5575, 366}, {21.0795, -64.3311, 366}, - {21.0795, -64.3311, 438}, {5.11317, -69.5575, 438}, - {5.11317, -69.5575, 438.5}, {21.0795, -64.3311, 438.5}, - {21.0795, -64.3311, 510.5}, {5.11317, -69.5575, 510.5}, - {5.11317, -69.5575, -359}, {21.0795, -64.3311, -359}, - {21.0795, -64.3311, -287}, {5.11317, -69.5575, -287}, - {5.11317, -69.5575, -286.5}, {21.0795, -64.3311, -286.5}, - {21.0795, -64.3311, -214.5}, {5.11317, -69.5575, -214.5}, - {5.11317, -69.5575, -214}, {21.0795, -64.3311, -214}, - {21.0795, -64.3311, -142}, {5.11317, -69.5575, -142}, - {5.11317, -69.5575, -141.5}, {21.0795, -64.3311, -141.5}, - {21.0795, -64.3311, -69.5}, {5.11317, -69.5575, -69.5}, - {5.11317, -69.5575, -69}, {21.0795, -64.3311, -69}, - {21.0795, -64.3311, 3}, {5.11317, -69.5575, 3}, - {5.11317, -69.5575, 3.5}, {21.0795, -64.3311, 3.5}, - {21.0795, -64.3311, 75.5}, {5.11317, -69.5575, 75.5}, - {5.11317, -69.5575, 76}, {21.0795, -64.3311, 76}, - {21.0795, -64.3311, 148}, {5.11317, -69.5575, 148}, - {5.11317, -69.5575, 148.5}, {21.0795, -64.3311, 148.5}, - {21.0795, -64.3311, 220.5}, {5.11317, -69.5575, 220.5}, - {18.5849, -67.2235, -504}, {33.2248, -58.9825, -504}, - {33.2248, -58.9825, -432}, {18.5849, -67.2235, -432}, - {18.5849, -67.2235, -431.5}, {33.2248, -58.9825, -431.5}, - {33.2248, -58.9825, -359.5}, {18.5849, -67.2235, -359.5}, - {18.5849, -67.2235, 221}, {33.2248, -58.9825, 221}, - {33.2248, -58.9825, 293}, {18.5849, -67.2235, 293}, - {18.5849, -67.2235, 293.5}, {33.2248, -58.9825, 293.5}, - {33.2248, -58.9825, 365.5}, {18.5849, -67.2235, 365.5}, - {18.5849, -67.2235, 366}, {33.2248, -58.9825, 366}, - {33.2248, -58.9825, 438}, {18.5849, -67.2235, 438}, - {18.5849, -67.2235, 438.5}, {33.2248, -58.9825, 438.5}, - {33.2248, -58.9825, 510.5}, {18.5849, -67.2235, 510.5}, - {18.5849, -67.2235, -359}, {33.2248, -58.9825, -359}, - {33.2248, -58.9825, -287}, {18.5849, -67.2235, -287}, - {18.5849, -67.2235, -286.5}, {33.2248, -58.9825, -286.5}, - {33.2248, -58.9825, -214.5}, {18.5849, -67.2235, -214.5}, - {18.5849, -67.2235, -214}, {33.2248, -58.9825, -214}, - {33.2248, -58.9825, -142}, {18.5849, -67.2235, -142}, - {18.5849, -67.2235, -141.5}, {33.2248, -58.9825, -141.5}, - {33.2248, -58.9825, -69.5}, {18.5849, -67.2235, -69.5}, - {18.5849, -67.2235, -69}, {33.2248, -58.9825, -69}, - {33.2248, -58.9825, 3}, {18.5849, -67.2235, 3}, - {18.5849, -67.2235, 3.5}, {33.2248, -58.9825, 3.5}, - {33.2248, -58.9825, 75.5}, {18.5849, -67.2235, 75.5}, - {18.5849, -67.2235, 76}, {33.2248, -58.9825, 76}, - {33.2248, -58.9825, 148}, {18.5849, -67.2235, 148}, - {18.5849, -67.2235, 148.5}, {33.2248, -58.9825, 148.5}, - {33.2248, -58.9825, 220.5}, {18.5849, -67.2235, 220.5}, - {31.3425, -62.306, -504}, {44.0934, -51.3674, -504}, - {44.0934, -51.3674, -432}, {31.3425, -62.306, -432}, - {31.3425, -62.306, -431.5}, {44.0934, -51.3674, -431.5}, - {44.0934, -51.3674, -359.5}, {31.3425, -62.306, -359.5}, - {31.3425, -62.306, 221}, {44.0934, -51.3674, 221}, - {44.0934, -51.3674, 293}, {31.3425, -62.306, 293}, - {31.3425, -62.306, 293.5}, {44.0934, -51.3674, 293.5}, - {44.0934, -51.3674, 365.5}, {31.3425, -62.306, 365.5}, - {31.3425, -62.306, 366}, {44.0934, -51.3674, 366}, - {44.0934, -51.3674, 438}, {31.3425, -62.306, 438}, - {31.3425, -62.306, 438.5}, {44.0934, -51.3674, 438.5}, - {44.0934, -51.3674, 510.5}, {31.3425, -62.306, 510.5}, - {31.3425, -62.306, -359}, {44.0934, -51.3674, -359}, - {44.0934, -51.3674, -287}, {31.3425, -62.306, -287}, - {31.3425, -62.306, -286.5}, {44.0934, -51.3674, -286.5}, - {44.0934, -51.3674, -214.5}, {31.3425, -62.306, -214.5}, - {31.3425, -62.306, -214}, {44.0934, -51.3674, -214}, - {44.0934, -51.3674, -142}, {31.3425, -62.306, -142}, - {31.3425, -62.306, -141.5}, {44.0934, -51.3674, -141.5}, - {44.0934, -51.3674, -69.5}, {31.3425, -62.306, -69.5}, - {31.3425, -62.306, -69}, {44.0934, -51.3674, -69}, - {44.0934, -51.3674, 3}, {31.3425, -62.306, 3}, - {31.3425, -62.306, 3.5}, {44.0934, -51.3674, 3.5}, - {44.0934, -51.3674, 75.5}, {31.3425, -62.306, 75.5}, - {31.3425, -62.306, 76}, {44.0934, -51.3674, 76}, - {44.0934, -51.3674, 148}, {31.3425, -62.306, 148}, - {31.3425, -62.306, 148.5}, {44.0934, -51.3674, 148.5}, - {44.0934, -51.3674, 220.5}, {31.3425, -62.306, 220.5}, - {42.8955, -54.9942, -504}, {53.2674, -41.7782, -504}, - {53.2674, -41.7782, -432}, {42.8955, -54.9942, -432}, - {42.8955, -54.9942, -431.5}, {53.2674, -41.7782, -431.5}, - {53.2674, -41.7782, -359.5}, {42.8955, -54.9942, -359.5}, - {42.8955, -54.9942, 221}, {53.2674, -41.7782, 221}, - {53.2674, -41.7782, 293}, {42.8955, -54.9942, 293}, - {42.8955, -54.9942, 293.5}, {53.2674, -41.7782, 293.5}, - {53.2674, -41.7782, 365.5}, {42.8955, -54.9942, 365.5}, - {42.8955, -54.9942, 366}, {53.2674, -41.7782, 366}, - {53.2674, -41.7782, 438}, {42.8955, -54.9942, 438}, - {42.8955, -54.9942, 438.5}, {53.2674, -41.7782, 438.5}, - {53.2674, -41.7782, 510.5}, {42.8955, -54.9942, 510.5}, - {42.8955, -54.9942, -359}, {53.2674, -41.7782, -359}, - {53.2674, -41.7782, -287}, {42.8955, -54.9942, -287}, - {42.8955, -54.9942, -286.5}, {53.2674, -41.7782, -286.5}, - {53.2674, -41.7782, -214.5}, {42.8955, -54.9942, -214.5}, - {42.8955, -54.9942, -214}, {53.2674, -41.7782, -214}, - {53.2674, -41.7782, -142}, {42.8955, -54.9942, -142}, - {42.8955, -54.9942, -141.5}, {53.2674, -41.7782, -141.5}, - {53.2674, -41.7782, -69.5}, {42.8955, -54.9942, -69.5}, - {42.8955, -54.9942, -69}, {53.2674, -41.7782, -69}, - {53.2674, -41.7782, 3}, {42.8955, -54.9942, 3}, - {42.8955, -54.9942, 3.5}, {53.2674, -41.7782, 3.5}, - {53.2674, -41.7782, 75.5}, {42.8955, -54.9942, 75.5}, - {42.8955, -54.9942, 76}, {53.2674, -41.7782, 76}, - {53.2674, -41.7782, 148}, {42.8955, -54.9942, 148}, - {42.8955, -54.9942, 148.5}, {53.2674, -41.7782, 148.5}, - {53.2674, -41.7782, 220.5}, {42.8955, -54.9942, 220.5}, - {52.8002, -45.569, -504}, {60.3944, -30.5835, -504}, - {60.3944, -30.5835, -432}, {52.8002, -45.569, -432}, - {52.8002, -45.569, -431.5}, {60.3944, -30.5835, -431.5}, - {60.3944, -30.5835, -359.5}, {52.8002, -45.569, -359.5}, - {52.8002, -45.569, 221}, {60.3944, -30.5835, 221}, - {60.3944, -30.5835, 293}, {52.8002, -45.569, 293}, - {52.8002, -45.569, 293.5}, {60.3944, -30.5835, 293.5}, - {60.3944, -30.5835, 365.5}, {52.8002, -45.569, 365.5}, - {52.8002, -45.569, 366}, {60.3944, -30.5835, 366}, - {60.3944, -30.5835, 438}, {52.8002, -45.569, 438}, - {52.8002, -45.569, 438.5}, {60.3944, -30.5835, 438.5}, - {60.3944, -30.5835, 510.5}, {52.8002, -45.569, 510.5}, - {52.8002, -45.569, -359}, {60.3944, -30.5835, -359}, - {60.3944, -30.5835, -287}, {52.8002, -45.569, -287}, - {52.8002, -45.569, -286.5}, {60.3944, -30.5835, -286.5}, - {60.3944, -30.5835, -214.5}, {52.8002, -45.569, -214.5}, - {52.8002, -45.569, -214}, {60.3944, -30.5835, -214}, - {60.3944, -30.5835, -142}, {52.8002, -45.569, -142}, - {52.8002, -45.569, -141.5}, {60.3944, -30.5835, -141.5}, - {60.3944, -30.5835, -69.5}, {52.8002, -45.569, -69.5}, - {52.8002, -45.569, -69}, {60.3944, -30.5835, -69}, - {60.3944, -30.5835, 3}, {52.8002, -45.569, 3}, - {52.8002, -45.569, 3.5}, {60.3944, -30.5835, 3.5}, - {60.3944, -30.5835, 75.5}, {52.8002, -45.569, 75.5}, - {52.8002, -45.569, 76}, {60.3944, -30.5835, 76}, - {60.3944, -30.5835, 148}, {52.8002, -45.569, 148}, - {52.8002, -45.569, 148.5}, {60.3944, -30.5835, 148.5}, - {60.3944, -30.5835, 220.5}, {52.8002, -45.569, 220.5}, - {62.306, 31.3425, -504}, {51.3674, 44.0934, -504}, - {51.3674, 44.0934, -432}, {62.306, 31.3425, -432}, - {62.306, 31.3425, -431.5}, {51.3674, 44.0934, -431.5}, - {51.3674, 44.0934, -359.5}, {62.306, 31.3425, -359.5}, - {62.306, 31.3425, 221}, {51.3674, 44.0934, 221}, - {51.3674, 44.0934, 293}, {62.306, 31.3425, 293}, - {62.306, 31.3425, 293.5}, {51.3674, 44.0934, 293.5}, - {51.3674, 44.0934, 365.5}, {62.306, 31.3425, 365.5}, - {62.306, 31.3425, 366}, {51.3674, 44.0934, 366}, - {51.3674, 44.0934, 438}, {62.306, 31.3425, 438}, - {62.306, 31.3425, 438.5}, {51.3674, 44.0934, 438.5}, - {51.3674, 44.0934, 510.5}, {62.306, 31.3425, 510.5}, - {62.306, 31.3425, -359}, {51.3674, 44.0934, -359}, - {51.3674, 44.0934, -287}, {62.306, 31.3425, -287}, - {62.306, 31.3425, -286.5}, {51.3674, 44.0934, -286.5}, - {51.3674, 44.0934, -214.5}, {62.306, 31.3425, -214.5}, - {62.306, 31.3425, -214}, {51.3674, 44.0934, -214}, - {51.3674, 44.0934, -142}, {62.306, 31.3425, -142}, - {62.306, 31.3425, -141.5}, {51.3674, 44.0934, -141.5}, - {51.3674, 44.0934, -69.5}, {62.306, 31.3425, -69.5}, - {62.306, 31.3425, -69}, {51.3674, 44.0934, -69}, - {51.3674, 44.0934, 3}, {62.306, 31.3425, 3}, - {62.306, 31.3425, 3.5}, {51.3674, 44.0934, 3.5}, - {51.3674, 44.0934, 75.5}, {62.306, 31.3425, 75.5}, - {62.306, 31.3425, 76}, {51.3674, 44.0934, 76}, - {51.3674, 44.0934, 148}, {62.306, 31.3425, 148}, - {62.306, 31.3425, 148.5}, {51.3674, 44.0934, 148.5}, - {51.3674, 44.0934, 220.5}, {62.306, 31.3425, 220.5}, - {60.6757, -34.3926, -504}, {65.2005, -18.2134, -504}, - {65.2005, -18.2134, -432}, {60.6757, -34.3926, -432}, - {60.6757, -34.3926, -431.5}, {65.2005, -18.2134, -431.5}, - {65.2005, -18.2134, -359.5}, {60.6757, -34.3926, -359.5}, - {60.6757, -34.3926, 221}, {65.2005, -18.2134, 221}, - {65.2005, -18.2134, 293}, {60.6757, -34.3926, 293}, - {60.6757, -34.3926, 293.5}, {65.2005, -18.2134, 293.5}, - {65.2005, -18.2134, 365.5}, {60.6757, -34.3926, 365.5}, - {60.6757, -34.3926, 366}, {65.2005, -18.2134, 366}, - {65.2005, -18.2134, 438}, {60.6757, -34.3926, 438}, - {60.6757, -34.3926, 438.5}, {65.2005, -18.2134, 438.5}, - {65.2005, -18.2134, 510.5}, {60.6757, -34.3926, 510.5}, - {60.6757, -34.3926, -359}, {65.2005, -18.2134, -359}, - {65.2005, -18.2134, -287}, {60.6757, -34.3926, -287}, - {60.6757, -34.3926, -286.5}, {65.2005, -18.2134, -286.5}, - {65.2005, -18.2134, -214.5}, {60.6757, -34.3926, -214.5}, - {60.6757, -34.3926, -214}, {65.2005, -18.2134, -214}, - {65.2005, -18.2134, -142}, {60.6757, -34.3926, -142}, - {60.6757, -34.3926, -141.5}, {65.2005, -18.2134, -141.5}, - {65.2005, -18.2134, -69.5}, {60.6757, -34.3926, -69.5}, - {60.6757, -34.3926, -69}, {65.2005, -18.2134, -69}, - {65.2005, -18.2134, 3}, {60.6757, -34.3926, 3}, - {60.6757, -34.3926, 3.5}, {65.2005, -18.2134, 3.5}, - {65.2005, -18.2134, 75.5}, {60.6757, -34.3926, 75.5}, - {60.6757, -34.3926, 76}, {65.2005, -18.2134, 76}, - {65.2005, -18.2134, 148}, {60.6757, -34.3926, 148}, - {60.6757, -34.3926, 148.5}, {65.2005, -18.2134, 148.5}, - {65.2005, -18.2134, 220.5}, {60.6757, -34.3926, 220.5}, - {66.2195, -21.8946, -504}, {67.5009, -5.1435, -504}, - {67.5009, -5.1435, -432}, {66.2195, -21.8946, -432}, - {66.2195, -21.8946, -431.5}, {67.5009, -5.1435, -431.5}, - {67.5009, -5.1435, -359.5}, {66.2195, -21.8946, -359.5}, - {66.2195, -21.8946, 221}, {67.5009, -5.1435, 221}, - {67.5009, -5.1435, 293}, {66.2195, -21.8946, 293}, - {66.2195, -21.8946, 293.5}, {67.5009, -5.1435, 293.5}, - {67.5009, -5.1435, 365.5}, {66.2195, -21.8946, 365.5}, - {66.2195, -21.8946, 366}, {67.5009, -5.1435, 366}, - {67.5009, -5.1435, 438}, {66.2195, -21.8946, 438}, - {66.2195, -21.8946, 438.5}, {67.5009, -5.1435, 438.5}, - {67.5009, -5.1435, 510.5}, {66.2195, -21.8946, 510.5}, - {66.2195, -21.8946, -359}, {67.5009, -5.1435, -359}, - {67.5009, -5.1435, -287}, {66.2195, -21.8946, -287}, - {66.2195, -21.8946, -286.5}, {67.5009, -5.1435, -286.5}, - {67.5009, -5.1435, -214.5}, {66.2195, -21.8946, -214.5}, - {66.2195, -21.8946, -214}, {67.5009, -5.1435, -214}, - {67.5009, -5.1435, -142}, {66.2195, -21.8946, -142}, - {66.2195, -21.8946, -141.5}, {67.5009, -5.1435, -141.5}, - {67.5009, -5.1435, -69.5}, {66.2195, -21.8946, -69.5}, - {66.2195, -21.8946, -69}, {67.5009, -5.1435, -69}, - {67.5009, -5.1435, 3}, {66.2195, -21.8946, 3}, - {66.2195, -21.8946, 3.5}, {67.5009, -5.1435, 3.5}, - {67.5009, -5.1435, 75.5}, {66.2195, -21.8946, 75.5}, - {66.2195, -21.8946, 76}, {67.5009, -5.1435, 76}, - {67.5009, -5.1435, 148}, {66.2195, -21.8946, 148}, - {66.2195, -21.8946, 148.5}, {67.5009, -5.1435, 148.5}, - {67.5009, -5.1435, 220.5}, {66.2195, -21.8946, 220.5}, - {54.9942, 42.8955, -504}, {41.7782, 53.2674, -504}, - {41.7782, 53.2674, -432}, {54.9942, 42.8955, -432}, - {54.9942, 42.8955, -431.5}, {41.7782, 53.2674, -431.5}, - {41.7782, 53.2674, -359.5}, {54.9942, 42.8955, -359.5}, - {54.9942, 42.8955, 221}, {41.7782, 53.2674, 221}, - {41.7782, 53.2674, 293}, {54.9942, 42.8955, 293}, - {54.9942, 42.8955, 293.5}, {41.7782, 53.2674, 293.5}, - {41.7782, 53.2674, 365.5}, {54.9942, 42.8955, 365.5}, - {54.9942, 42.8955, 366}, {41.7782, 53.2674, 366}, - {41.7782, 53.2674, 438}, {54.9942, 42.8955, 438}, - {54.9942, 42.8955, 438.5}, {41.7782, 53.2674, 438.5}, - {41.7782, 53.2674, 510.5}, {54.9942, 42.8955, 510.5}, - {54.9942, 42.8955, -359}, {41.7782, 53.2674, -359}, - {41.7782, 53.2674, -287}, {54.9942, 42.8955, -287}, - {54.9942, 42.8955, -286.5}, {41.7782, 53.2674, -286.5}, - {41.7782, 53.2674, -214.5}, {54.9942, 42.8955, -214.5}, - {54.9942, 42.8955, -214}, {41.7782, 53.2674, -214}, - {41.7782, 53.2674, -142}, {54.9942, 42.8955, -142}, - {54.9942, 42.8955, -141.5}, {41.7782, 53.2674, -141.5}, - {41.7782, 53.2674, -69.5}, {54.9942, 42.8955, -69.5}, - {54.9942, 42.8955, -69}, {41.7782, 53.2674, -69}, - {41.7782, 53.2674, 3}, {54.9942, 42.8955, 3}, - {54.9942, 42.8955, 3.5}, {41.7782, 53.2674, 3.5}, - {41.7782, 53.2674, 75.5}, {54.9942, 42.8955, 75.5}, - {54.9942, 42.8955, 76}, {41.7782, 53.2674, 76}, - {41.7782, 53.2674, 148}, {54.9942, 42.8955, 148}, - {54.9942, 42.8955, 148.5}, {41.7782, 53.2674, 148.5}, - {41.7782, 53.2674, 220.5}, {54.9942, 42.8955, 220.5}, - {45.569, 52.8002, -504}, {30.5835, 60.3944, -504}, - {30.5835, 60.3944, -432}, {45.569, 52.8002, -432}, - {45.569, 52.8002, -431.5}, {30.5835, 60.3944, -431.5}, - {30.5835, 60.3944, -359.5}, {45.569, 52.8002, -359.5}, - {45.569, 52.8002, 221}, {30.5835, 60.3944, 221}, - {30.5835, 60.3944, 293}, {45.569, 52.8002, 293}, - {45.569, 52.8002, 293.5}, {30.5835, 60.3944, 293.5}, - {30.5835, 60.3944, 365.5}, {45.569, 52.8002, 365.5}, - {45.569, 52.8002, 366}, {30.5835, 60.3944, 366}, - {30.5835, 60.3944, 438}, {45.569, 52.8002, 438}, - {45.569, 52.8002, 438.5}, {30.5835, 60.3944, 438.5}, - {30.5835, 60.3944, 510.5}, {45.569, 52.8002, 510.5}, - {45.569, 52.8002, -359}, {30.5835, 60.3944, -359}, - {30.5835, 60.3944, -287}, {45.569, 52.8002, -287}, - {45.569, 52.8002, -286.5}, {30.5835, 60.3944, -286.5}, - {30.5835, 60.3944, -214.5}, {45.569, 52.8002, -214.5}, - {45.569, 52.8002, -214}, {30.5835, 60.3944, -214}, - {30.5835, 60.3944, -142}, {45.569, 52.8002, -142}, - {45.569, 52.8002, -141.5}, {30.5835, 60.3944, -141.5}, - {30.5835, 60.3944, -69.5}, {45.569, 52.8002, -69.5}, - {45.569, 52.8002, -69}, {30.5835, 60.3944, -69}, - {30.5835, 60.3944, 3}, {45.569, 52.8002, 3}, - {45.569, 52.8002, 3.5}, {30.5835, 60.3944, 3.5}, - {30.5835, 60.3944, 75.5}, {45.569, 52.8002, 75.5}, - {45.569, 52.8002, 76}, {30.5835, 60.3944, 76}, - {30.5835, 60.3944, 148}, {45.569, 52.8002, 148}, - {45.569, 52.8002, 148.5}, {30.5835, 60.3944, 148.5}, - {30.5835, 60.3944, 220.5}, {45.569, 52.8002, 220.5}, - {34.3926, 60.6757, -504}, {18.2134, 65.2005, -504}, - {18.2134, 65.2005, -432}, {34.3926, 60.6757, -432}, - {34.3926, 60.6757, -431.5}, {18.2134, 65.2005, -431.5}, - {18.2134, 65.2005, -359.5}, {34.3926, 60.6757, -359.5}, - {34.3926, 60.6757, 221}, {18.2134, 65.2005, 221}, - {18.2134, 65.2005, 293}, {34.3926, 60.6757, 293}, - {34.3926, 60.6757, 293.5}, {18.2134, 65.2005, 293.5}, - {18.2134, 65.2005, 365.5}, {34.3926, 60.6757, 365.5}, - {34.3926, 60.6757, 366}, {18.2134, 65.2005, 366}, - {18.2134, 65.2005, 438}, {34.3926, 60.6757, 438}, - {34.3926, 60.6757, 438.5}, {18.2134, 65.2005, 438.5}, - {18.2134, 65.2005, 510.5}, {34.3926, 60.6757, 510.5}, - {34.3926, 60.6757, -359}, {18.2134, 65.2005, -359}, - {18.2134, 65.2005, -287}, {34.3926, 60.6757, -287}, - {34.3926, 60.6757, -286.5}, {18.2134, 65.2005, -286.5}, - {18.2134, 65.2005, -214.5}, {34.3926, 60.6757, -214.5}, - {34.3926, 60.6757, -214}, {18.2134, 65.2005, -214}, - {18.2134, 65.2005, -142}, {34.3926, 60.6757, -142}, - {34.3926, 60.6757, -141.5}, {18.2134, 65.2005, -141.5}, - {18.2134, 65.2005, -69.5}, {34.3926, 60.6757, -69.5}, - {34.3926, 60.6757, -69}, {18.2134, 65.2005, -69}, - {18.2134, 65.2005, 3}, {34.3926, 60.6757, 3}, - {34.3926, 60.6757, 3.5}, {18.2134, 65.2005, 3.5}, - {18.2134, 65.2005, 75.5}, {34.3926, 60.6757, 75.5}, - {34.3926, 60.6757, 76}, {18.2134, 65.2005, 76}, - {18.2134, 65.2005, 148}, {34.3926, 60.6757, 148}, - {34.3926, 60.6757, 148.5}, {18.2134, 65.2005, 148.5}, - {18.2134, 65.2005, 220.5}, {34.3926, 60.6757, 220.5}, - {21.8946, 66.2195, -504}, {5.1435, 67.5009, -504}, - {5.1435, 67.5009, -432}, {21.8946, 66.2195, -432}, - {21.8946, 66.2195, -431.5}, {5.1435, 67.5009, -431.5}, - {5.1435, 67.5009, -359.5}, {21.8946, 66.2195, -359.5}, - {21.8946, 66.2195, 221}, {5.1435, 67.5009, 221}, - {5.1435, 67.5009, 293}, {21.8946, 66.2195, 293}, - {21.8946, 66.2195, 293.5}, {5.1435, 67.5009, 293.5}, - {5.1435, 67.5009, 365.5}, {21.8946, 66.2195, 365.5}, - {21.8946, 66.2195, 366}, {5.1435, 67.5009, 366}, - {5.1435, 67.5009, 438}, {21.8946, 66.2195, 438}, - {21.8946, 66.2195, 438.5}, {5.1435, 67.5009, 438.5}, - {5.1435, 67.5009, 510.5}, {21.8946, 66.2195, 510.5}, - {21.8946, 66.2195, -359}, {5.1435, 67.5009, -359}, - {5.1435, 67.5009, -287}, {21.8946, 66.2195, -287}, - {21.8946, 66.2195, -286.5}, {5.1435, 67.5009, -286.5}, - {5.1435, 67.5009, -214.5}, {21.8946, 66.2195, -214.5}, - {21.8946, 66.2195, -214}, {5.1435, 67.5009, -214}, - {5.1435, 67.5009, -142}, {21.8946, 66.2195, -142}, - {21.8946, 66.2195, -141.5}, {5.1435, 67.5009, -141.5}, - {5.1435, 67.5009, -69.5}, {21.8946, 66.2195, -69.5}, - {21.8946, 66.2195, -69}, {5.1435, 67.5009, -69}, - {5.1435, 67.5009, 3}, {21.8946, 66.2195, 3}, - {21.8946, 66.2195, 3.5}, {5.1435, 67.5009, 3.5}, - {5.1435, 67.5009, 75.5}, {21.8946, 66.2195, 75.5}, - {21.8946, 66.2195, 76}, {5.1435, 67.5009, 76}, - {5.1435, 67.5009, 148}, {21.8946, 66.2195, 148}, - {21.8946, 66.2195, 148.5}, {5.1435, 67.5009, 148.5}, - {5.1435, 67.5009, 220.5}, {21.8946, 66.2195, 220.5}, - {8.55507, 69.2185, -504}, {-8.12411, 67.2074, -504}, - {-8.12411, 67.2074, -432}, {8.55507, 69.2185, -432}, - {8.55507, 69.2185, -431.5}, {-8.12411, 67.2074, -431.5}, - {-8.12411, 67.2074, -359.5}, {8.55507, 69.2185, -359.5}, - {8.55507, 69.2185, 221}, {-8.12411, 67.2074, 221}, - {-8.12411, 67.2074, 293}, {8.55507, 69.2185, 293}, - {8.55507, 69.2185, 293.5}, {-8.12411, 67.2074, 293.5}, - {-8.12411, 67.2074, 365.5}, {8.55507, 69.2185, 365.5}, - {8.55507, 69.2185, 366}, {-8.12411, 67.2074, 366}, - {-8.12411, 67.2074, 438}, {8.55507, 69.2185, 438}, - {8.55507, 69.2185, 438.5}, {-8.12411, 67.2074, 438.5}, - {-8.12411, 67.2074, 510.5}, {8.55507, 69.2185, 510.5}, - {8.55507, 69.2185, -359}, {-8.12411, 67.2074, -359}, - {-8.12411, 67.2074, -287}, {8.55507, 69.2185, -287}, - {8.55507, 69.2185, -286.5}, {-8.12411, 67.2074, -286.5}, - {-8.12411, 67.2074, -214.5}, {8.55507, 69.2185, -214.5}, - {8.55507, 69.2185, -214}, {-8.12411, 67.2074, -214}, - {-8.12411, 67.2074, -142}, {8.55507, 69.2185, -142}, - {8.55507, 69.2185, -141.5}, {-8.12411, 67.2074, -141.5}, - {-8.12411, 67.2074, -69.5}, {8.55507, 69.2185, -69.5}, - {8.55507, 69.2185, -69}, {-8.12411, 67.2074, -69}, - {-8.12411, 67.2074, 3}, {8.55507, 69.2185, 3}, - {8.55507, 69.2185, 3.5}, {-8.12411, 67.2074, 3.5}, - {-8.12411, 67.2074, 75.5}, {8.55507, 69.2185, 75.5}, - {8.55507, 69.2185, 76}, {-8.12411, 67.2074, 76}, - {-8.12411, 67.2074, 148}, {8.55507, 69.2185, 148}, - {8.55507, 69.2185, 148.5}, {-8.12411, 67.2074, 148.5}, - {-8.12411, 67.2074, 220.5}, {8.55507, 69.2185, 220.5}, - {-5.11317, 69.5575, -504}, {-21.0795, 64.3311, -504}, - {-21.0795, 64.3311, -432}, {-5.11317, 69.5575, -432}, - {-5.11317, 69.5575, -431.5}, {-21.0795, 64.3311, -431.5}, - {-21.0795, 64.3311, -359.5}, {-5.11317, 69.5575, -359.5}, - {-5.11317, 69.5575, 221}, {-21.0795, 64.3311, 221}, - {-21.0795, 64.3311, 293}, {-5.11317, 69.5575, 293}, - {-5.11317, 69.5575, 293.5}, {-21.0795, 64.3311, 293.5}, - {-21.0795, 64.3311, 365.5}, {-5.11317, 69.5575, 365.5}, - {-5.11317, 69.5575, 366}, {-21.0795, 64.3311, 366}, - {-21.0795, 64.3311, 438}, {-5.11317, 69.5575, 438}, - {-5.11317, 69.5575, 438.5}, {-21.0795, 64.3311, 438.5}, - {-21.0795, 64.3311, 510.5}, {-5.11317, 69.5575, 510.5}, - {-5.11317, 69.5575, -359}, {-21.0795, 64.3311, -359}, - {-21.0795, 64.3311, -287}, {-5.11317, 69.5575, -287}, - {-5.11317, 69.5575, -286.5}, {-21.0795, 64.3311, -286.5}, - {-21.0795, 64.3311, -214.5}, {-5.11317, 69.5575, -214.5}, - {-5.11317, 69.5575, -214}, {-21.0795, 64.3311, -214}, - {-21.0795, 64.3311, -142}, {-5.11317, 69.5575, -142}, - {-5.11317, 69.5575, -141.5}, {-21.0795, 64.3311, -141.5}, - {-21.0795, 64.3311, -69.5}, {-5.11317, 69.5575, -69.5}, - {-5.11317, 69.5575, -69}, {-21.0795, 64.3311, -69}, - {-21.0795, 64.3311, 3}, {-5.11317, 69.5575, 3}, - {-5.11317, 69.5575, 3.5}, {-21.0795, 64.3311, 3.5}, - {-21.0795, 64.3311, 75.5}, {-5.11317, 69.5575, 75.5}, - {-5.11317, 69.5575, 76}, {-21.0795, 64.3311, 76}, - {-21.0795, 64.3311, 148}, {-5.11317, 69.5575, 148}, - {-5.11317, 69.5575, 148.5}, {-21.0795, 64.3311, 148.5}, - {-21.0795, 64.3311, 220.5}, {-5.11317, 69.5575, 220.5}}; +namespace { +static const std::vector> odd_pixel_barrel = []() { + std::vector> raw = { + {69.2185, -8.55507, -504}, {67.2074, 8.12411, -504}, + {67.2074, 8.12411, -432}, {69.2185, -8.55507, -432}, + {69.2185, -8.55507, -431.5}, {67.2074, 8.12411, -431.5}, + {67.2074, 8.12411, -359.5}, {69.2185, -8.55507, -359.5}, + {69.2185, -8.55507, 221}, {67.2074, 8.12411, 221}, + {67.2074, 8.12411, 293}, {69.2185, -8.55507, 293}, + {69.2185, -8.55507, 293.5}, {67.2074, 8.12411, 293.5}, + {67.2074, 8.12411, 365.5}, {69.2185, -8.55507, 365.5}, + {69.2185, -8.55507, 366}, {67.2074, 8.12411, 366}, + {67.2074, 8.12411, 438}, {69.2185, -8.55507, 438}, + {69.2185, -8.55507, 438.5}, {67.2074, 8.12411, 438.5}, + {67.2074, 8.12411, 510.5}, {69.2185, -8.55507, 510.5}, + {69.2185, -8.55507, -359}, {67.2074, 8.12411, -359}, + {67.2074, 8.12411, -287}, {69.2185, -8.55507, -287}, + {69.2185, -8.55507, -286.5}, {67.2074, 8.12411, -286.5}, + {67.2074, 8.12411, -214.5}, {69.2185, -8.55507, -214.5}, + {69.2185, -8.55507, -214}, {67.2074, 8.12411, -214}, + {67.2074, 8.12411, -142}, {69.2185, -8.55507, -142}, + {69.2185, -8.55507, -141.5}, {67.2074, 8.12411, -141.5}, + {67.2074, 8.12411, -69.5}, {69.2185, -8.55507, -69.5}, + {69.2185, -8.55507, -69}, {67.2074, 8.12411, -69}, + {67.2074, 8.12411, 3}, {69.2185, -8.55507, 3}, + {69.2185, -8.55507, 3.5}, {67.2074, 8.12411, 3.5}, + {67.2074, 8.12411, 75.5}, {69.2185, -8.55507, 75.5}, + {69.2185, -8.55507, 76}, {67.2074, 8.12411, 76}, + {67.2074, 8.12411, 148}, {69.2185, -8.55507, 148}, + {69.2185, -8.55507, 148.5}, {67.2074, 8.12411, 148.5}, + {67.2074, 8.12411, 220.5}, {69.2185, -8.55507, 220.5}, + {69.5575, 5.11317, -504}, {64.3311, 21.0795, -504}, + {64.3311, 21.0795, -432}, {69.5575, 5.11317, -432}, + {69.5575, 5.11317, -431.5}, {64.3311, 21.0795, -431.5}, + {64.3311, 21.0795, -359.5}, {69.5575, 5.11317, -359.5}, + {69.5575, 5.11317, 221}, {64.3311, 21.0795, 221}, + {64.3311, 21.0795, 293}, {69.5575, 5.11317, 293}, + {69.5575, 5.11317, 293.5}, {64.3311, 21.0795, 293.5}, + {64.3311, 21.0795, 365.5}, {69.5575, 5.11317, 365.5}, + {69.5575, 5.11317, 366}, {64.3311, 21.0795, 366}, + {64.3311, 21.0795, 438}, {69.5575, 5.11317, 438}, + {69.5575, 5.11317, 438.5}, {64.3311, 21.0795, 438.5}, + {64.3311, 21.0795, 510.5}, {69.5575, 5.11317, 510.5}, + {69.5575, 5.11317, -359}, {64.3311, 21.0795, -359}, + {64.3311, 21.0795, -287}, {69.5575, 5.11317, -287}, + {69.5575, 5.11317, -286.5}, {64.3311, 21.0795, -286.5}, + {64.3311, 21.0795, -214.5}, {69.5575, 5.11317, -214.5}, + {69.5575, 5.11317, -214}, {64.3311, 21.0795, -214}, + {64.3311, 21.0795, -142}, {69.5575, 5.11317, -142}, + {69.5575, 5.11317, -141.5}, {64.3311, 21.0795, -141.5}, + {64.3311, 21.0795, -69.5}, {69.5575, 5.11317, -69.5}, + {69.5575, 5.11317, -69}, {64.3311, 21.0795, -69}, + {64.3311, 21.0795, 3}, {69.5575, 5.11317, 3}, + {69.5575, 5.11317, 3.5}, {64.3311, 21.0795, 3.5}, + {64.3311, 21.0795, 75.5}, {69.5575, 5.11317, 75.5}, + {69.5575, 5.11317, 76}, {64.3311, 21.0795, 76}, + {64.3311, 21.0795, 148}, {69.5575, 5.11317, 148}, + {69.5575, 5.11317, 148.5}, {64.3311, 21.0795, 148.5}, + {64.3311, 21.0795, 220.5}, {69.5575, 5.11317, 220.5}, + {-18.5849, 67.2235, -504}, {-33.2248, 58.9825, -504}, + {-33.2248, 58.9825, -432}, {-18.5849, 67.2235, -432}, + {-18.5849, 67.2235, -431.5}, {-33.2248, 58.9825, -431.5}, + {-33.2248, 58.9825, -359.5}, {-18.5849, 67.2235, -359.5}, + {-18.5849, 67.2235, 221}, {-33.2248, 58.9825, 221}, + {-33.2248, 58.9825, 293}, {-18.5849, 67.2235, 293}, + {-18.5849, 67.2235, 293.5}, {-33.2248, 58.9825, 293.5}, + {-33.2248, 58.9825, 365.5}, {-18.5849, 67.2235, 365.5}, + {-18.5849, 67.2235, 366}, {-33.2248, 58.9825, 366}, + {-33.2248, 58.9825, 438}, {-18.5849, 67.2235, 438}, + {-18.5849, 67.2235, 438.5}, {-33.2248, 58.9825, 438.5}, + {-33.2248, 58.9825, 510.5}, {-18.5849, 67.2235, 510.5}, + {-18.5849, 67.2235, -359}, {-33.2248, 58.9825, -359}, + {-33.2248, 58.9825, -287}, {-18.5849, 67.2235, -287}, + {-18.5849, 67.2235, -286.5}, {-33.2248, 58.9825, -286.5}, + {-33.2248, 58.9825, -214.5}, {-18.5849, 67.2235, -214.5}, + {-18.5849, 67.2235, -214}, {-33.2248, 58.9825, -214}, + {-33.2248, 58.9825, -142}, {-18.5849, 67.2235, -142}, + {-18.5849, 67.2235, -141.5}, {-33.2248, 58.9825, -141.5}, + {-33.2248, 58.9825, -69.5}, {-18.5849, 67.2235, -69.5}, + {-18.5849, 67.2235, -69}, {-33.2248, 58.9825, -69}, + {-33.2248, 58.9825, 3}, {-18.5849, 67.2235, 3}, + {-18.5849, 67.2235, 3.5}, {-33.2248, 58.9825, 3.5}, + {-33.2248, 58.9825, 75.5}, {-18.5849, 67.2235, 75.5}, + {-18.5849, 67.2235, 76}, {-33.2248, 58.9825, 76}, + {-33.2248, 58.9825, 148}, {-18.5849, 67.2235, 148}, + {-18.5849, 67.2235, 148.5}, {-33.2248, 58.9825, 148.5}, + {-33.2248, 58.9825, 220.5}, {-18.5849, 67.2235, 220.5}, + {-31.3425, 62.306, -504}, {-44.0934, 51.3674, -504}, + {-44.0934, 51.3674, -432}, {-31.3425, 62.306, -432}, + {-31.3425, 62.306, -431.5}, {-44.0934, 51.3674, -431.5}, + {-44.0934, 51.3674, -359.5}, {-31.3425, 62.306, -359.5}, + {-31.3425, 62.306, 221}, {-44.0934, 51.3674, 221}, + {-44.0934, 51.3674, 293}, {-31.3425, 62.306, 293}, + {-31.3425, 62.306, 293.5}, {-44.0934, 51.3674, 293.5}, + {-44.0934, 51.3674, 365.5}, {-31.3425, 62.306, 365.5}, + {-31.3425, 62.306, 366}, {-44.0934, 51.3674, 366}, + {-44.0934, 51.3674, 438}, {-31.3425, 62.306, 438}, + {-31.3425, 62.306, 438.5}, {-44.0934, 51.3674, 438.5}, + {-44.0934, 51.3674, 510.5}, {-31.3425, 62.306, 510.5}, + {-31.3425, 62.306, -359}, {-44.0934, 51.3674, -359}, + {-44.0934, 51.3674, -287}, {-31.3425, 62.306, -287}, + {-31.3425, 62.306, -286.5}, {-44.0934, 51.3674, -286.5}, + {-44.0934, 51.3674, -214.5}, {-31.3425, 62.306, -214.5}, + {-31.3425, 62.306, -214}, {-44.0934, 51.3674, -214}, + {-44.0934, 51.3674, -142}, {-31.3425, 62.306, -142}, + {-31.3425, 62.306, -141.5}, {-44.0934, 51.3674, -141.5}, + {-44.0934, 51.3674, -69.5}, {-31.3425, 62.306, -69.5}, + {-31.3425, 62.306, -69}, {-44.0934, 51.3674, -69}, + {-44.0934, 51.3674, 3}, {-31.3425, 62.306, 3}, + {-31.3425, 62.306, 3.5}, {-44.0934, 51.3674, 3.5}, + {-44.0934, 51.3674, 75.5}, {-31.3425, 62.306, 75.5}, + {-31.3425, 62.306, 76}, {-44.0934, 51.3674, 76}, + {-44.0934, 51.3674, 148}, {-31.3425, 62.306, 148}, + {-31.3425, 62.306, 148.5}, {-44.0934, 51.3674, 148.5}, + {-44.0934, 51.3674, 220.5}, {-31.3425, 62.306, 220.5}, + {-42.8955, 54.9942, -504}, {-53.2674, 41.7782, -504}, + {-53.2674, 41.7782, -432}, {-42.8955, 54.9942, -432}, + {-42.8955, 54.9942, -431.5}, {-53.2674, 41.7782, -431.5}, + {-53.2674, 41.7782, -359.5}, {-42.8955, 54.9942, -359.5}, + {-42.8955, 54.9942, 221}, {-53.2674, 41.7782, 221}, + {-53.2674, 41.7782, 293}, {-42.8955, 54.9942, 293}, + {-42.8955, 54.9942, 293.5}, {-53.2674, 41.7782, 293.5}, + {-53.2674, 41.7782, 365.5}, {-42.8955, 54.9942, 365.5}, + {-42.8955, 54.9942, 366}, {-53.2674, 41.7782, 366}, + {-53.2674, 41.7782, 438}, {-42.8955, 54.9942, 438}, + {-42.8955, 54.9942, 438.5}, {-53.2674, 41.7782, 438.5}, + {-53.2674, 41.7782, 510.5}, {-42.8955, 54.9942, 510.5}, + {-42.8955, 54.9942, -359}, {-53.2674, 41.7782, -359}, + {-53.2674, 41.7782, -287}, {-42.8955, 54.9942, -287}, + {-42.8955, 54.9942, -286.5}, {-53.2674, 41.7782, -286.5}, + {-53.2674, 41.7782, -214.5}, {-42.8955, 54.9942, -214.5}, + {-42.8955, 54.9942, -214}, {-53.2674, 41.7782, -214}, + {-53.2674, 41.7782, -142}, {-42.8955, 54.9942, -142}, + {-42.8955, 54.9942, -141.5}, {-53.2674, 41.7782, -141.5}, + {-53.2674, 41.7782, -69.5}, {-42.8955, 54.9942, -69.5}, + {-42.8955, 54.9942, -69}, {-53.2674, 41.7782, -69}, + {-53.2674, 41.7782, 3}, {-42.8955, 54.9942, 3}, + {-42.8955, 54.9942, 3.5}, {-53.2674, 41.7782, 3.5}, + {-53.2674, 41.7782, 75.5}, {-42.8955, 54.9942, 75.5}, + {-42.8955, 54.9942, 76}, {-53.2674, 41.7782, 76}, + {-53.2674, 41.7782, 148}, {-42.8955, 54.9942, 148}, + {-42.8955, 54.9942, 148.5}, {-53.2674, 41.7782, 148.5}, + {-53.2674, 41.7782, 220.5}, {-42.8955, 54.9942, 220.5}, + {-52.8002, 45.569, -504}, {-60.3944, 30.5835, -504}, + {-60.3944, 30.5835, -432}, {-52.8002, 45.569, -432}, + {-52.8002, 45.569, -431.5}, {-60.3944, 30.5835, -431.5}, + {-60.3944, 30.5835, -359.5}, {-52.8002, 45.569, -359.5}, + {-52.8002, 45.569, 221}, {-60.3944, 30.5835, 221}, + {-60.3944, 30.5835, 293}, {-52.8002, 45.569, 293}, + {-52.8002, 45.569, 293.5}, {-60.3944, 30.5835, 293.5}, + {-60.3944, 30.5835, 365.5}, {-52.8002, 45.569, 365.5}, + {-52.8002, 45.569, 366}, {-60.3944, 30.5835, 366}, + {-60.3944, 30.5835, 438}, {-52.8002, 45.569, 438}, + {-52.8002, 45.569, 438.5}, {-60.3944, 30.5835, 438.5}, + {-60.3944, 30.5835, 510.5}, {-52.8002, 45.569, 510.5}, + {-52.8002, 45.569, -359}, {-60.3944, 30.5835, -359}, + {-60.3944, 30.5835, -287}, {-52.8002, 45.569, -287}, + {-52.8002, 45.569, -286.5}, {-60.3944, 30.5835, -286.5}, + {-60.3944, 30.5835, -214.5}, {-52.8002, 45.569, -214.5}, + {-52.8002, 45.569, -214}, {-60.3944, 30.5835, -214}, + {-60.3944, 30.5835, -142}, {-52.8002, 45.569, -142}, + {-52.8002, 45.569, -141.5}, {-60.3944, 30.5835, -141.5}, + {-60.3944, 30.5835, -69.5}, {-52.8002, 45.569, -69.5}, + {-52.8002, 45.569, -69}, {-60.3944, 30.5835, -69}, + {-60.3944, 30.5835, 3}, {-52.8002, 45.569, 3}, + {-52.8002, 45.569, 3.5}, {-60.3944, 30.5835, 3.5}, + {-60.3944, 30.5835, 75.5}, {-52.8002, 45.569, 75.5}, + {-52.8002, 45.569, 76}, {-60.3944, 30.5835, 76}, + {-60.3944, 30.5835, 148}, {-52.8002, 45.569, 148}, + {-52.8002, 45.569, 148.5}, {-60.3944, 30.5835, 148.5}, + {-60.3944, 30.5835, 220.5}, {-52.8002, 45.569, 220.5}, + {-60.6757, 34.3926, -504}, {-65.2005, 18.2134, -504}, + {-65.2005, 18.2134, -432}, {-60.6757, 34.3926, -432}, + {-60.6757, 34.3926, -431.5}, {-65.2005, 18.2134, -431.5}, + {-65.2005, 18.2134, -359.5}, {-60.6757, 34.3926, -359.5}, + {-60.6757, 34.3926, 221}, {-65.2005, 18.2134, 221}, + {-65.2005, 18.2134, 293}, {-60.6757, 34.3926, 293}, + {-60.6757, 34.3926, 293.5}, {-65.2005, 18.2134, 293.5}, + {-65.2005, 18.2134, 365.5}, {-60.6757, 34.3926, 365.5}, + {-60.6757, 34.3926, 366}, {-65.2005, 18.2134, 366}, + {-65.2005, 18.2134, 438}, {-60.6757, 34.3926, 438}, + {-60.6757, 34.3926, 438.5}, {-65.2005, 18.2134, 438.5}, + {-65.2005, 18.2134, 510.5}, {-60.6757, 34.3926, 510.5}, + {-60.6757, 34.3926, -359}, {-65.2005, 18.2134, -359}, + {-65.2005, 18.2134, -287}, {-60.6757, 34.3926, -287}, + {-60.6757, 34.3926, -286.5}, {-65.2005, 18.2134, -286.5}, + {-65.2005, 18.2134, -214.5}, {-60.6757, 34.3926, -214.5}, + {-60.6757, 34.3926, -214}, {-65.2005, 18.2134, -214}, + {-65.2005, 18.2134, -142}, {-60.6757, 34.3926, -142}, + {-60.6757, 34.3926, -141.5}, {-65.2005, 18.2134, -141.5}, + {-65.2005, 18.2134, -69.5}, {-60.6757, 34.3926, -69.5}, + {-60.6757, 34.3926, -69}, {-65.2005, 18.2134, -69}, + {-65.2005, 18.2134, 3}, {-60.6757, 34.3926, 3}, + {-60.6757, 34.3926, 3.5}, {-65.2005, 18.2134, 3.5}, + {-65.2005, 18.2134, 75.5}, {-60.6757, 34.3926, 75.5}, + {-60.6757, 34.3926, 76}, {-65.2005, 18.2134, 76}, + {-65.2005, 18.2134, 148}, {-60.6757, 34.3926, 148}, + {-60.6757, 34.3926, 148.5}, {-65.2005, 18.2134, 148.5}, + {-65.2005, 18.2134, 220.5}, {-60.6757, 34.3926, 220.5}, + {-66.2195, 21.8946, -504}, {-67.5009, 5.1435, -504}, + {-67.5009, 5.1435, -432}, {-66.2195, 21.8946, -432}, + {-66.2195, 21.8946, -431.5}, {-67.5009, 5.1435, -431.5}, + {-67.5009, 5.1435, -359.5}, {-66.2195, 21.8946, -359.5}, + {-66.2195, 21.8946, 221}, {-67.5009, 5.1435, 221}, + {-67.5009, 5.1435, 293}, {-66.2195, 21.8946, 293}, + {-66.2195, 21.8946, 293.5}, {-67.5009, 5.1435, 293.5}, + {-67.5009, 5.1435, 365.5}, {-66.2195, 21.8946, 365.5}, + {-66.2195, 21.8946, 366}, {-67.5009, 5.1435, 366}, + {-67.5009, 5.1435, 438}, {-66.2195, 21.8946, 438}, + {-66.2195, 21.8946, 438.5}, {-67.5009, 5.1435, 438.5}, + {-67.5009, 5.1435, 510.5}, {-66.2195, 21.8946, 510.5}, + {-66.2195, 21.8946, -359}, {-67.5009, 5.1435, -359}, + {-67.5009, 5.1435, -287}, {-66.2195, 21.8946, -287}, + {-66.2195, 21.8946, -286.5}, {-67.5009, 5.1435, -286.5}, + {-67.5009, 5.1435, -214.5}, {-66.2195, 21.8946, -214.5}, + {-66.2195, 21.8946, -214}, {-67.5009, 5.1435, -214}, + {-67.5009, 5.1435, -142}, {-66.2195, 21.8946, -142}, + {-66.2195, 21.8946, -141.5}, {-67.5009, 5.1435, -141.5}, + {-67.5009, 5.1435, -69.5}, {-66.2195, 21.8946, -69.5}, + {-66.2195, 21.8946, -69}, {-67.5009, 5.1435, -69}, + {-67.5009, 5.1435, 3}, {-66.2195, 21.8946, 3}, + {-66.2195, 21.8946, 3.5}, {-67.5009, 5.1435, 3.5}, + {-67.5009, 5.1435, 75.5}, {-66.2195, 21.8946, 75.5}, + {-66.2195, 21.8946, 76}, {-67.5009, 5.1435, 76}, + {-67.5009, 5.1435, 148}, {-66.2195, 21.8946, 148}, + {-66.2195, 21.8946, 148.5}, {-67.5009, 5.1435, 148.5}, + {-67.5009, 5.1435, 220.5}, {-66.2195, 21.8946, 220.5}, + {-69.2185, 8.55507, -504}, {-67.2074, -8.12411, -504}, + {-67.2074, -8.12411, -432}, {-69.2185, 8.55507, -432}, + {-69.2185, 8.55507, -431.5}, {-67.2074, -8.12411, -431.5}, + {-67.2074, -8.12411, -359.5}, {-69.2185, 8.55507, -359.5}, + {-69.2185, 8.55507, 221}, {-67.2074, -8.12411, 221}, + {-67.2074, -8.12411, 293}, {-69.2185, 8.55507, 293}, + {-69.2185, 8.55507, 293.5}, {-67.2074, -8.12411, 293.5}, + {-67.2074, -8.12411, 365.5}, {-69.2185, 8.55507, 365.5}, + {-69.2185, 8.55507, 366}, {-67.2074, -8.12411, 366}, + {-67.2074, -8.12411, 438}, {-69.2185, 8.55507, 438}, + {-69.2185, 8.55507, 438.5}, {-67.2074, -8.12411, 438.5}, + {-67.2074, -8.12411, 510.5}, {-69.2185, 8.55507, 510.5}, + {-69.2185, 8.55507, -359}, {-67.2074, -8.12411, -359}, + {-67.2074, -8.12411, -287}, {-69.2185, 8.55507, -287}, + {-69.2185, 8.55507, -286.5}, {-67.2074, -8.12411, -286.5}, + {-67.2074, -8.12411, -214.5}, {-69.2185, 8.55507, -214.5}, + {-69.2185, 8.55507, -214}, {-67.2074, -8.12411, -214}, + {-67.2074, -8.12411, -142}, {-69.2185, 8.55507, -142}, + {-69.2185, 8.55507, -141.5}, {-67.2074, -8.12411, -141.5}, + {-67.2074, -8.12411, -69.5}, {-69.2185, 8.55507, -69.5}, + {-69.2185, 8.55507, -69}, {-67.2074, -8.12411, -69}, + {-67.2074, -8.12411, 3}, {-69.2185, 8.55507, 3}, + {-69.2185, 8.55507, 3.5}, {-67.2074, -8.12411, 3.5}, + {-67.2074, -8.12411, 75.5}, {-69.2185, 8.55507, 75.5}, + {-69.2185, 8.55507, 76}, {-67.2074, -8.12411, 76}, + {-67.2074, -8.12411, 148}, {-69.2185, 8.55507, 148}, + {-69.2185, 8.55507, 148.5}, {-67.2074, -8.12411, 148.5}, + {-67.2074, -8.12411, 220.5}, {-69.2185, 8.55507, 220.5}, + {-69.5575, -5.11317, -504}, {-64.3311, -21.0795, -504}, + {-64.3311, -21.0795, -432}, {-69.5575, -5.11317, -432}, + {-69.5575, -5.11317, -431.5}, {-64.3311, -21.0795, -431.5}, + {-64.3311, -21.0795, -359.5}, {-69.5575, -5.11317, -359.5}, + {-69.5575, -5.11317, 221}, {-64.3311, -21.0795, 221}, + {-64.3311, -21.0795, 293}, {-69.5575, -5.11317, 293}, + {-69.5575, -5.11317, 293.5}, {-64.3311, -21.0795, 293.5}, + {-64.3311, -21.0795, 365.5}, {-69.5575, -5.11317, 365.5}, + {-69.5575, -5.11317, 366}, {-64.3311, -21.0795, 366}, + {-64.3311, -21.0795, 438}, {-69.5575, -5.11317, 438}, + {-69.5575, -5.11317, 438.5}, {-64.3311, -21.0795, 438.5}, + {-64.3311, -21.0795, 510.5}, {-69.5575, -5.11317, 510.5}, + {-69.5575, -5.11317, -359}, {-64.3311, -21.0795, -359}, + {-64.3311, -21.0795, -287}, {-69.5575, -5.11317, -287}, + {-69.5575, -5.11317, -286.5}, {-64.3311, -21.0795, -286.5}, + {-64.3311, -21.0795, -214.5}, {-69.5575, -5.11317, -214.5}, + {-69.5575, -5.11317, -214}, {-64.3311, -21.0795, -214}, + {-64.3311, -21.0795, -142}, {-69.5575, -5.11317, -142}, + {-69.5575, -5.11317, -141.5}, {-64.3311, -21.0795, -141.5}, + {-64.3311, -21.0795, -69.5}, {-69.5575, -5.11317, -69.5}, + {-69.5575, -5.11317, -69}, {-64.3311, -21.0795, -69}, + {-64.3311, -21.0795, 3}, {-69.5575, -5.11317, 3}, + {-69.5575, -5.11317, 3.5}, {-64.3311, -21.0795, 3.5}, + {-64.3311, -21.0795, 75.5}, {-69.5575, -5.11317, 75.5}, + {-69.5575, -5.11317, 76}, {-64.3311, -21.0795, 76}, + {-64.3311, -21.0795, 148}, {-69.5575, -5.11317, 148}, + {-69.5575, -5.11317, 148.5}, {-64.3311, -21.0795, 148.5}, + {-64.3311, -21.0795, 220.5}, {-69.5575, -5.11317, 220.5}, + {-67.2235, -18.5849, -504}, {-58.9825, -33.2248, -504}, + {-58.9825, -33.2248, -432}, {-67.2235, -18.5849, -432}, + {-67.2235, -18.5849, -431.5}, {-58.9825, -33.2248, -431.5}, + {-58.9825, -33.2248, -359.5}, {-67.2235, -18.5849, -359.5}, + {-67.2235, -18.5849, 221}, {-58.9825, -33.2248, 221}, + {-58.9825, -33.2248, 293}, {-67.2235, -18.5849, 293}, + {-67.2235, -18.5849, 293.5}, {-58.9825, -33.2248, 293.5}, + {-58.9825, -33.2248, 365.5}, {-67.2235, -18.5849, 365.5}, + {-67.2235, -18.5849, 366}, {-58.9825, -33.2248, 366}, + {-58.9825, -33.2248, 438}, {-67.2235, -18.5849, 438}, + {-67.2235, -18.5849, 438.5}, {-58.9825, -33.2248, 438.5}, + {-58.9825, -33.2248, 510.5}, {-67.2235, -18.5849, 510.5}, + {-67.2235, -18.5849, -359}, {-58.9825, -33.2248, -359}, + {-58.9825, -33.2248, -287}, {-67.2235, -18.5849, -287}, + {-67.2235, -18.5849, -286.5}, {-58.9825, -33.2248, -286.5}, + {-58.9825, -33.2248, -214.5}, {-67.2235, -18.5849, -214.5}, + {-67.2235, -18.5849, -214}, {-58.9825, -33.2248, -214}, + {-58.9825, -33.2248, -142}, {-67.2235, -18.5849, -142}, + {-67.2235, -18.5849, -141.5}, {-58.9825, -33.2248, -141.5}, + {-58.9825, -33.2248, -69.5}, {-67.2235, -18.5849, -69.5}, + {-67.2235, -18.5849, -69}, {-58.9825, -33.2248, -69}, + {-58.9825, -33.2248, 3}, {-67.2235, -18.5849, 3}, + {-67.2235, -18.5849, 3.5}, {-58.9825, -33.2248, 3.5}, + {-58.9825, -33.2248, 75.5}, {-67.2235, -18.5849, 75.5}, + {-67.2235, -18.5849, 76}, {-58.9825, -33.2248, 76}, + {-58.9825, -33.2248, 148}, {-67.2235, -18.5849, 148}, + {-67.2235, -18.5849, 148.5}, {-58.9825, -33.2248, 148.5}, + {-58.9825, -33.2248, 220.5}, {-67.2235, -18.5849, 220.5}, + {-62.306, -31.3425, -504}, {-51.3674, -44.0934, -504}, + {-51.3674, -44.0934, -432}, {-62.306, -31.3425, -432}, + {-62.306, -31.3425, -431.5}, {-51.3674, -44.0934, -431.5}, + {-51.3674, -44.0934, -359.5}, {-62.306, -31.3425, -359.5}, + {-62.306, -31.3425, 221}, {-51.3674, -44.0934, 221}, + {-51.3674, -44.0934, 293}, {-62.306, -31.3425, 293}, + {-62.306, -31.3425, 293.5}, {-51.3674, -44.0934, 293.5}, + {-51.3674, -44.0934, 365.5}, {-62.306, -31.3425, 365.5}, + {-62.306, -31.3425, 366}, {-51.3674, -44.0934, 366}, + {-51.3674, -44.0934, 438}, {-62.306, -31.3425, 438}, + {-62.306, -31.3425, 438.5}, {-51.3674, -44.0934, 438.5}, + {-51.3674, -44.0934, 510.5}, {-62.306, -31.3425, 510.5}, + {-62.306, -31.3425, -359}, {-51.3674, -44.0934, -359}, + {-51.3674, -44.0934, -287}, {-62.306, -31.3425, -287}, + {-62.306, -31.3425, -286.5}, {-51.3674, -44.0934, -286.5}, + {-51.3674, -44.0934, -214.5}, {-62.306, -31.3425, -214.5}, + {-62.306, -31.3425, -214}, {-51.3674, -44.0934, -214}, + {-51.3674, -44.0934, -142}, {-62.306, -31.3425, -142}, + {-62.306, -31.3425, -141.5}, {-51.3674, -44.0934, -141.5}, + {-51.3674, -44.0934, -69.5}, {-62.306, -31.3425, -69.5}, + {-62.306, -31.3425, -69}, {-51.3674, -44.0934, -69}, + {-51.3674, -44.0934, 3}, {-62.306, -31.3425, 3}, + {-62.306, -31.3425, 3.5}, {-51.3674, -44.0934, 3.5}, + {-51.3674, -44.0934, 75.5}, {-62.306, -31.3425, 75.5}, + {-62.306, -31.3425, 76}, {-51.3674, -44.0934, 76}, + {-51.3674, -44.0934, 148}, {-62.306, -31.3425, 148}, + {-62.306, -31.3425, 148.5}, {-51.3674, -44.0934, 148.5}, + {-51.3674, -44.0934, 220.5}, {-62.306, -31.3425, 220.5}, + {67.2235, 18.5849, -504}, {58.9825, 33.2248, -504}, + {58.9825, 33.2248, -432}, {67.2235, 18.5849, -432}, + {67.2235, 18.5849, -431.5}, {58.9825, 33.2248, -431.5}, + {58.9825, 33.2248, -359.5}, {67.2235, 18.5849, -359.5}, + {67.2235, 18.5849, 221}, {58.9825, 33.2248, 221}, + {58.9825, 33.2248, 293}, {67.2235, 18.5849, 293}, + {67.2235, 18.5849, 293.5}, {58.9825, 33.2248, 293.5}, + {58.9825, 33.2248, 365.5}, {67.2235, 18.5849, 365.5}, + {67.2235, 18.5849, 366}, {58.9825, 33.2248, 366}, + {58.9825, 33.2248, 438}, {67.2235, 18.5849, 438}, + {67.2235, 18.5849, 438.5}, {58.9825, 33.2248, 438.5}, + {58.9825, 33.2248, 510.5}, {67.2235, 18.5849, 510.5}, + {67.2235, 18.5849, -359}, {58.9825, 33.2248, -359}, + {58.9825, 33.2248, -287}, {67.2235, 18.5849, -287}, + {67.2235, 18.5849, -286.5}, {58.9825, 33.2248, -286.5}, + {58.9825, 33.2248, -214.5}, {67.2235, 18.5849, -214.5}, + {67.2235, 18.5849, -214}, {58.9825, 33.2248, -214}, + {58.9825, 33.2248, -142}, {67.2235, 18.5849, -142}, + {67.2235, 18.5849, -141.5}, {58.9825, 33.2248, -141.5}, + {58.9825, 33.2248, -69.5}, {67.2235, 18.5849, -69.5}, + {67.2235, 18.5849, -69}, {58.9825, 33.2248, -69}, + {58.9825, 33.2248, 3}, {67.2235, 18.5849, 3}, + {67.2235, 18.5849, 3.5}, {58.9825, 33.2248, 3.5}, + {58.9825, 33.2248, 75.5}, {67.2235, 18.5849, 75.5}, + {67.2235, 18.5849, 76}, {58.9825, 33.2248, 76}, + {58.9825, 33.2248, 148}, {67.2235, 18.5849, 148}, + {67.2235, 18.5849, 148.5}, {58.9825, 33.2248, 148.5}, + {58.9825, 33.2248, 220.5}, {67.2235, 18.5849, 220.5}, + {-54.9942, -42.8955, -504}, {-41.7782, -53.2674, -504}, + {-41.7782, -53.2674, -432}, {-54.9942, -42.8955, -432}, + {-54.9942, -42.8955, -431.5}, {-41.7782, -53.2674, -431.5}, + {-41.7782, -53.2674, -359.5}, {-54.9942, -42.8955, -359.5}, + {-54.9942, -42.8955, 221}, {-41.7782, -53.2674, 221}, + {-41.7782, -53.2674, 293}, {-54.9942, -42.8955, 293}, + {-54.9942, -42.8955, 293.5}, {-41.7782, -53.2674, 293.5}, + {-41.7782, -53.2674, 365.5}, {-54.9942, -42.8955, 365.5}, + {-54.9942, -42.8955, 366}, {-41.7782, -53.2674, 366}, + {-41.7782, -53.2674, 438}, {-54.9942, -42.8955, 438}, + {-54.9942, -42.8955, 438.5}, {-41.7782, -53.2674, 438.5}, + {-41.7782, -53.2674, 510.5}, {-54.9942, -42.8955, 510.5}, + {-54.9942, -42.8955, -359}, {-41.7782, -53.2674, -359}, + {-41.7782, -53.2674, -287}, {-54.9942, -42.8955, -287}, + {-54.9942, -42.8955, -286.5}, {-41.7782, -53.2674, -286.5}, + {-41.7782, -53.2674, -214.5}, {-54.9942, -42.8955, -214.5}, + {-54.9942, -42.8955, -214}, {-41.7782, -53.2674, -214}, + {-41.7782, -53.2674, -142}, {-54.9942, -42.8955, -142}, + {-54.9942, -42.8955, -141.5}, {-41.7782, -53.2674, -141.5}, + {-41.7782, -53.2674, -69.5}, {-54.9942, -42.8955, -69.5}, + {-54.9942, -42.8955, -69}, {-41.7782, -53.2674, -69}, + {-41.7782, -53.2674, 3}, {-54.9942, -42.8955, 3}, + {-54.9942, -42.8955, 3.5}, {-41.7782, -53.2674, 3.5}, + {-41.7782, -53.2674, 75.5}, {-54.9942, -42.8955, 75.5}, + {-54.9942, -42.8955, 76}, {-41.7782, -53.2674, 76}, + {-41.7782, -53.2674, 148}, {-54.9942, -42.8955, 148}, + {-54.9942, -42.8955, 148.5}, {-41.7782, -53.2674, 148.5}, + {-41.7782, -53.2674, 220.5}, {-54.9942, -42.8955, 220.5}, + {-45.569, -52.8002, -504}, {-30.5835, -60.3944, -504}, + {-30.5835, -60.3944, -432}, {-45.569, -52.8002, -432}, + {-45.569, -52.8002, -431.5}, {-30.5835, -60.3944, -431.5}, + {-30.5835, -60.3944, -359.5}, {-45.569, -52.8002, -359.5}, + {-45.569, -52.8002, 221}, {-30.5835, -60.3944, 221}, + {-30.5835, -60.3944, 293}, {-45.569, -52.8002, 293}, + {-45.569, -52.8002, 293.5}, {-30.5835, -60.3944, 293.5}, + {-30.5835, -60.3944, 365.5}, {-45.569, -52.8002, 365.5}, + {-45.569, -52.8002, 366}, {-30.5835, -60.3944, 366}, + {-30.5835, -60.3944, 438}, {-45.569, -52.8002, 438}, + {-45.569, -52.8002, 438.5}, {-30.5835, -60.3944, 438.5}, + {-30.5835, -60.3944, 510.5}, {-45.569, -52.8002, 510.5}, + {-45.569, -52.8002, -359}, {-30.5835, -60.3944, -359}, + {-30.5835, -60.3944, -287}, {-45.569, -52.8002, -287}, + {-45.569, -52.8002, -286.5}, {-30.5835, -60.3944, -286.5}, + {-30.5835, -60.3944, -214.5}, {-45.569, -52.8002, -214.5}, + {-45.569, -52.8002, -214}, {-30.5835, -60.3944, -214}, + {-30.5835, -60.3944, -142}, {-45.569, -52.8002, -142}, + {-45.569, -52.8002, -141.5}, {-30.5835, -60.3944, -141.5}, + {-30.5835, -60.3944, -69.5}, {-45.569, -52.8002, -69.5}, + {-45.569, -52.8002, -69}, {-30.5835, -60.3944, -69}, + {-30.5835, -60.3944, 3}, {-45.569, -52.8002, 3}, + {-45.569, -52.8002, 3.5}, {-30.5835, -60.3944, 3.5}, + {-30.5835, -60.3944, 75.5}, {-45.569, -52.8002, 75.5}, + {-45.569, -52.8002, 76}, {-30.5835, -60.3944, 76}, + {-30.5835, -60.3944, 148}, {-45.569, -52.8002, 148}, + {-45.569, -52.8002, 148.5}, {-30.5835, -60.3944, 148.5}, + {-30.5835, -60.3944, 220.5}, {-45.569, -52.8002, 220.5}, + {-34.3926, -60.6757, -504}, {-18.2134, -65.2005, -504}, + {-18.2134, -65.2005, -432}, {-34.3926, -60.6757, -432}, + {-34.3926, -60.6757, -431.5}, {-18.2134, -65.2005, -431.5}, + {-18.2134, -65.2005, -359.5}, {-34.3926, -60.6757, -359.5}, + {-34.3926, -60.6757, 221}, {-18.2134, -65.2005, 221}, + {-18.2134, -65.2005, 293}, {-34.3926, -60.6757, 293}, + {-34.3926, -60.6757, 293.5}, {-18.2134, -65.2005, 293.5}, + {-18.2134, -65.2005, 365.5}, {-34.3926, -60.6757, 365.5}, + {-34.3926, -60.6757, 366}, {-18.2134, -65.2005, 366}, + {-18.2134, -65.2005, 438}, {-34.3926, -60.6757, 438}, + {-34.3926, -60.6757, 438.5}, {-18.2134, -65.2005, 438.5}, + {-18.2134, -65.2005, 510.5}, {-34.3926, -60.6757, 510.5}, + {-34.3926, -60.6757, -359}, {-18.2134, -65.2005, -359}, + {-18.2134, -65.2005, -287}, {-34.3926, -60.6757, -287}, + {-34.3926, -60.6757, -286.5}, {-18.2134, -65.2005, -286.5}, + {-18.2134, -65.2005, -214.5}, {-34.3926, -60.6757, -214.5}, + {-34.3926, -60.6757, -214}, {-18.2134, -65.2005, -214}, + {-18.2134, -65.2005, -142}, {-34.3926, -60.6757, -142}, + {-34.3926, -60.6757, -141.5}, {-18.2134, -65.2005, -141.5}, + {-18.2134, -65.2005, -69.5}, {-34.3926, -60.6757, -69.5}, + {-34.3926, -60.6757, -69}, {-18.2134, -65.2005, -69}, + {-18.2134, -65.2005, 3}, {-34.3926, -60.6757, 3}, + {-34.3926, -60.6757, 3.5}, {-18.2134, -65.2005, 3.5}, + {-18.2134, -65.2005, 75.5}, {-34.3926, -60.6757, 75.5}, + {-34.3926, -60.6757, 76}, {-18.2134, -65.2005, 76}, + {-18.2134, -65.2005, 148}, {-34.3926, -60.6757, 148}, + {-34.3926, -60.6757, 148.5}, {-18.2134, -65.2005, 148.5}, + {-18.2134, -65.2005, 220.5}, {-34.3926, -60.6757, 220.5}, + {-21.8946, -66.2195, -504}, {-5.1435, -67.5009, -504}, + {-5.1435, -67.5009, -432}, {-21.8946, -66.2195, -432}, + {-21.8946, -66.2195, -431.5}, {-5.1435, -67.5009, -431.5}, + {-5.1435, -67.5009, -359.5}, {-21.8946, -66.2195, -359.5}, + {-21.8946, -66.2195, 221}, {-5.1435, -67.5009, 221}, + {-5.1435, -67.5009, 293}, {-21.8946, -66.2195, 293}, + {-21.8946, -66.2195, 293.5}, {-5.1435, -67.5009, 293.5}, + {-5.1435, -67.5009, 365.5}, {-21.8946, -66.2195, 365.5}, + {-21.8946, -66.2195, 366}, {-5.1435, -67.5009, 366}, + {-5.1435, -67.5009, 438}, {-21.8946, -66.2195, 438}, + {-21.8946, -66.2195, 438.5}, {-5.1435, -67.5009, 438.5}, + {-5.1435, -67.5009, 510.5}, {-21.8946, -66.2195, 510.5}, + {-21.8946, -66.2195, -359}, {-5.1435, -67.5009, -359}, + {-5.1435, -67.5009, -287}, {-21.8946, -66.2195, -287}, + {-21.8946, -66.2195, -286.5}, {-5.1435, -67.5009, -286.5}, + {-5.1435, -67.5009, -214.5}, {-21.8946, -66.2195, -214.5}, + {-21.8946, -66.2195, -214}, {-5.1435, -67.5009, -214}, + {-5.1435, -67.5009, -142}, {-21.8946, -66.2195, -142}, + {-21.8946, -66.2195, -141.5}, {-5.1435, -67.5009, -141.5}, + {-5.1435, -67.5009, -69.5}, {-21.8946, -66.2195, -69.5}, + {-21.8946, -66.2195, -69}, {-5.1435, -67.5009, -69}, + {-5.1435, -67.5009, 3}, {-21.8946, -66.2195, 3}, + {-21.8946, -66.2195, 3.5}, {-5.1435, -67.5009, 3.5}, + {-5.1435, -67.5009, 75.5}, {-21.8946, -66.2195, 75.5}, + {-21.8946, -66.2195, 76}, {-5.1435, -67.5009, 76}, + {-5.1435, -67.5009, 148}, {-21.8946, -66.2195, 148}, + {-21.8946, -66.2195, 148.5}, {-5.1435, -67.5009, 148.5}, + {-5.1435, -67.5009, 220.5}, {-21.8946, -66.2195, 220.5}, + {-8.55507, -69.2185, -504}, {8.12411, -67.2074, -504}, + {8.12411, -67.2074, -432}, {-8.55507, -69.2185, -432}, + {-8.55507, -69.2185, -431.5}, {8.12411, -67.2074, -431.5}, + {8.12411, -67.2074, -359.5}, {-8.55507, -69.2185, -359.5}, + {-8.55507, -69.2185, 221}, {8.12411, -67.2074, 221}, + {8.12411, -67.2074, 293}, {-8.55507, -69.2185, 293}, + {-8.55507, -69.2185, 293.5}, {8.12411, -67.2074, 293.5}, + {8.12411, -67.2074, 365.5}, {-8.55507, -69.2185, 365.5}, + {-8.55507, -69.2185, 366}, {8.12411, -67.2074, 366}, + {8.12411, -67.2074, 438}, {-8.55507, -69.2185, 438}, + {-8.55507, -69.2185, 438.5}, {8.12411, -67.2074, 438.5}, + {8.12411, -67.2074, 510.5}, {-8.55507, -69.2185, 510.5}, + {-8.55507, -69.2185, -359}, {8.12411, -67.2074, -359}, + {8.12411, -67.2074, -287}, {-8.55507, -69.2185, -287}, + {-8.55507, -69.2185, -286.5}, {8.12411, -67.2074, -286.5}, + {8.12411, -67.2074, -214.5}, {-8.55507, -69.2185, -214.5}, + {-8.55507, -69.2185, -214}, {8.12411, -67.2074, -214}, + {8.12411, -67.2074, -142}, {-8.55507, -69.2185, -142}, + {-8.55507, -69.2185, -141.5}, {8.12411, -67.2074, -141.5}, + {8.12411, -67.2074, -69.5}, {-8.55507, -69.2185, -69.5}, + {-8.55507, -69.2185, -69}, {8.12411, -67.2074, -69}, + {8.12411, -67.2074, 3}, {-8.55507, -69.2185, 3}, + {-8.55507, -69.2185, 3.5}, {8.12411, -67.2074, 3.5}, + {8.12411, -67.2074, 75.5}, {-8.55507, -69.2185, 75.5}, + {-8.55507, -69.2185, 76}, {8.12411, -67.2074, 76}, + {8.12411, -67.2074, 148}, {-8.55507, -69.2185, 148}, + {-8.55507, -69.2185, 148.5}, {8.12411, -67.2074, 148.5}, + {8.12411, -67.2074, 220.5}, {-8.55507, -69.2185, 220.5}, + {5.11317, -69.5575, -504}, {21.0795, -64.3311, -504}, + {21.0795, -64.3311, -432}, {5.11317, -69.5575, -432}, + {5.11317, -69.5575, -431.5}, {21.0795, -64.3311, -431.5}, + {21.0795, -64.3311, -359.5}, {5.11317, -69.5575, -359.5}, + {5.11317, -69.5575, 221}, {21.0795, -64.3311, 221}, + {21.0795, -64.3311, 293}, {5.11317, -69.5575, 293}, + {5.11317, -69.5575, 293.5}, {21.0795, -64.3311, 293.5}, + {21.0795, -64.3311, 365.5}, {5.11317, -69.5575, 365.5}, + {5.11317, -69.5575, 366}, {21.0795, -64.3311, 366}, + {21.0795, -64.3311, 438}, {5.11317, -69.5575, 438}, + {5.11317, -69.5575, 438.5}, {21.0795, -64.3311, 438.5}, + {21.0795, -64.3311, 510.5}, {5.11317, -69.5575, 510.5}, + {5.11317, -69.5575, -359}, {21.0795, -64.3311, -359}, + {21.0795, -64.3311, -287}, {5.11317, -69.5575, -287}, + {5.11317, -69.5575, -286.5}, {21.0795, -64.3311, -286.5}, + {21.0795, -64.3311, -214.5}, {5.11317, -69.5575, -214.5}, + {5.11317, -69.5575, -214}, {21.0795, -64.3311, -214}, + {21.0795, -64.3311, -142}, {5.11317, -69.5575, -142}, + {5.11317, -69.5575, -141.5}, {21.0795, -64.3311, -141.5}, + {21.0795, -64.3311, -69.5}, {5.11317, -69.5575, -69.5}, + {5.11317, -69.5575, -69}, {21.0795, -64.3311, -69}, + {21.0795, -64.3311, 3}, {5.11317, -69.5575, 3}, + {5.11317, -69.5575, 3.5}, {21.0795, -64.3311, 3.5}, + {21.0795, -64.3311, 75.5}, {5.11317, -69.5575, 75.5}, + {5.11317, -69.5575, 76}, {21.0795, -64.3311, 76}, + {21.0795, -64.3311, 148}, {5.11317, -69.5575, 148}, + {5.11317, -69.5575, 148.5}, {21.0795, -64.3311, 148.5}, + {21.0795, -64.3311, 220.5}, {5.11317, -69.5575, 220.5}, + {18.5849, -67.2235, -504}, {33.2248, -58.9825, -504}, + {33.2248, -58.9825, -432}, {18.5849, -67.2235, -432}, + {18.5849, -67.2235, -431.5}, {33.2248, -58.9825, -431.5}, + {33.2248, -58.9825, -359.5}, {18.5849, -67.2235, -359.5}, + {18.5849, -67.2235, 221}, {33.2248, -58.9825, 221}, + {33.2248, -58.9825, 293}, {18.5849, -67.2235, 293}, + {18.5849, -67.2235, 293.5}, {33.2248, -58.9825, 293.5}, + {33.2248, -58.9825, 365.5}, {18.5849, -67.2235, 365.5}, + {18.5849, -67.2235, 366}, {33.2248, -58.9825, 366}, + {33.2248, -58.9825, 438}, {18.5849, -67.2235, 438}, + {18.5849, -67.2235, 438.5}, {33.2248, -58.9825, 438.5}, + {33.2248, -58.9825, 510.5}, {18.5849, -67.2235, 510.5}, + {18.5849, -67.2235, -359}, {33.2248, -58.9825, -359}, + {33.2248, -58.9825, -287}, {18.5849, -67.2235, -287}, + {18.5849, -67.2235, -286.5}, {33.2248, -58.9825, -286.5}, + {33.2248, -58.9825, -214.5}, {18.5849, -67.2235, -214.5}, + {18.5849, -67.2235, -214}, {33.2248, -58.9825, -214}, + {33.2248, -58.9825, -142}, {18.5849, -67.2235, -142}, + {18.5849, -67.2235, -141.5}, {33.2248, -58.9825, -141.5}, + {33.2248, -58.9825, -69.5}, {18.5849, -67.2235, -69.5}, + {18.5849, -67.2235, -69}, {33.2248, -58.9825, -69}, + {33.2248, -58.9825, 3}, {18.5849, -67.2235, 3}, + {18.5849, -67.2235, 3.5}, {33.2248, -58.9825, 3.5}, + {33.2248, -58.9825, 75.5}, {18.5849, -67.2235, 75.5}, + {18.5849, -67.2235, 76}, {33.2248, -58.9825, 76}, + {33.2248, -58.9825, 148}, {18.5849, -67.2235, 148}, + {18.5849, -67.2235, 148.5}, {33.2248, -58.9825, 148.5}, + {33.2248, -58.9825, 220.5}, {18.5849, -67.2235, 220.5}, + {31.3425, -62.306, -504}, {44.0934, -51.3674, -504}, + {44.0934, -51.3674, -432}, {31.3425, -62.306, -432}, + {31.3425, -62.306, -431.5}, {44.0934, -51.3674, -431.5}, + {44.0934, -51.3674, -359.5}, {31.3425, -62.306, -359.5}, + {31.3425, -62.306, 221}, {44.0934, -51.3674, 221}, + {44.0934, -51.3674, 293}, {31.3425, -62.306, 293}, + {31.3425, -62.306, 293.5}, {44.0934, -51.3674, 293.5}, + {44.0934, -51.3674, 365.5}, {31.3425, -62.306, 365.5}, + {31.3425, -62.306, 366}, {44.0934, -51.3674, 366}, + {44.0934, -51.3674, 438}, {31.3425, -62.306, 438}, + {31.3425, -62.306, 438.5}, {44.0934, -51.3674, 438.5}, + {44.0934, -51.3674, 510.5}, {31.3425, -62.306, 510.5}, + {31.3425, -62.306, -359}, {44.0934, -51.3674, -359}, + {44.0934, -51.3674, -287}, {31.3425, -62.306, -287}, + {31.3425, -62.306, -286.5}, {44.0934, -51.3674, -286.5}, + {44.0934, -51.3674, -214.5}, {31.3425, -62.306, -214.5}, + {31.3425, -62.306, -214}, {44.0934, -51.3674, -214}, + {44.0934, -51.3674, -142}, {31.3425, -62.306, -142}, + {31.3425, -62.306, -141.5}, {44.0934, -51.3674, -141.5}, + {44.0934, -51.3674, -69.5}, {31.3425, -62.306, -69.5}, + {31.3425, -62.306, -69}, {44.0934, -51.3674, -69}, + {44.0934, -51.3674, 3}, {31.3425, -62.306, 3}, + {31.3425, -62.306, 3.5}, {44.0934, -51.3674, 3.5}, + {44.0934, -51.3674, 75.5}, {31.3425, -62.306, 75.5}, + {31.3425, -62.306, 76}, {44.0934, -51.3674, 76}, + {44.0934, -51.3674, 148}, {31.3425, -62.306, 148}, + {31.3425, -62.306, 148.5}, {44.0934, -51.3674, 148.5}, + {44.0934, -51.3674, 220.5}, {31.3425, -62.306, 220.5}, + {42.8955, -54.9942, -504}, {53.2674, -41.7782, -504}, + {53.2674, -41.7782, -432}, {42.8955, -54.9942, -432}, + {42.8955, -54.9942, -431.5}, {53.2674, -41.7782, -431.5}, + {53.2674, -41.7782, -359.5}, {42.8955, -54.9942, -359.5}, + {42.8955, -54.9942, 221}, {53.2674, -41.7782, 221}, + {53.2674, -41.7782, 293}, {42.8955, -54.9942, 293}, + {42.8955, -54.9942, 293.5}, {53.2674, -41.7782, 293.5}, + {53.2674, -41.7782, 365.5}, {42.8955, -54.9942, 365.5}, + {42.8955, -54.9942, 366}, {53.2674, -41.7782, 366}, + {53.2674, -41.7782, 438}, {42.8955, -54.9942, 438}, + {42.8955, -54.9942, 438.5}, {53.2674, -41.7782, 438.5}, + {53.2674, -41.7782, 510.5}, {42.8955, -54.9942, 510.5}, + {42.8955, -54.9942, -359}, {53.2674, -41.7782, -359}, + {53.2674, -41.7782, -287}, {42.8955, -54.9942, -287}, + {42.8955, -54.9942, -286.5}, {53.2674, -41.7782, -286.5}, + {53.2674, -41.7782, -214.5}, {42.8955, -54.9942, -214.5}, + {42.8955, -54.9942, -214}, {53.2674, -41.7782, -214}, + {53.2674, -41.7782, -142}, {42.8955, -54.9942, -142}, + {42.8955, -54.9942, -141.5}, {53.2674, -41.7782, -141.5}, + {53.2674, -41.7782, -69.5}, {42.8955, -54.9942, -69.5}, + {42.8955, -54.9942, -69}, {53.2674, -41.7782, -69}, + {53.2674, -41.7782, 3}, {42.8955, -54.9942, 3}, + {42.8955, -54.9942, 3.5}, {53.2674, -41.7782, 3.5}, + {53.2674, -41.7782, 75.5}, {42.8955, -54.9942, 75.5}, + {42.8955, -54.9942, 76}, {53.2674, -41.7782, 76}, + {53.2674, -41.7782, 148}, {42.8955, -54.9942, 148}, + {42.8955, -54.9942, 148.5}, {53.2674, -41.7782, 148.5}, + {53.2674, -41.7782, 220.5}, {42.8955, -54.9942, 220.5}, + {52.8002, -45.569, -504}, {60.3944, -30.5835, -504}, + {60.3944, -30.5835, -432}, {52.8002, -45.569, -432}, + {52.8002, -45.569, -431.5}, {60.3944, -30.5835, -431.5}, + {60.3944, -30.5835, -359.5}, {52.8002, -45.569, -359.5}, + {52.8002, -45.569, 221}, {60.3944, -30.5835, 221}, + {60.3944, -30.5835, 293}, {52.8002, -45.569, 293}, + {52.8002, -45.569, 293.5}, {60.3944, -30.5835, 293.5}, + {60.3944, -30.5835, 365.5}, {52.8002, -45.569, 365.5}, + {52.8002, -45.569, 366}, {60.3944, -30.5835, 366}, + {60.3944, -30.5835, 438}, {52.8002, -45.569, 438}, + {52.8002, -45.569, 438.5}, {60.3944, -30.5835, 438.5}, + {60.3944, -30.5835, 510.5}, {52.8002, -45.569, 510.5}, + {52.8002, -45.569, -359}, {60.3944, -30.5835, -359}, + {60.3944, -30.5835, -287}, {52.8002, -45.569, -287}, + {52.8002, -45.569, -286.5}, {60.3944, -30.5835, -286.5}, + {60.3944, -30.5835, -214.5}, {52.8002, -45.569, -214.5}, + {52.8002, -45.569, -214}, {60.3944, -30.5835, -214}, + {60.3944, -30.5835, -142}, {52.8002, -45.569, -142}, + {52.8002, -45.569, -141.5}, {60.3944, -30.5835, -141.5}, + {60.3944, -30.5835, -69.5}, {52.8002, -45.569, -69.5}, + {52.8002, -45.569, -69}, {60.3944, -30.5835, -69}, + {60.3944, -30.5835, 3}, {52.8002, -45.569, 3}, + {52.8002, -45.569, 3.5}, {60.3944, -30.5835, 3.5}, + {60.3944, -30.5835, 75.5}, {52.8002, -45.569, 75.5}, + {52.8002, -45.569, 76}, {60.3944, -30.5835, 76}, + {60.3944, -30.5835, 148}, {52.8002, -45.569, 148}, + {52.8002, -45.569, 148.5}, {60.3944, -30.5835, 148.5}, + {60.3944, -30.5835, 220.5}, {52.8002, -45.569, 220.5}, + {62.306, 31.3425, -504}, {51.3674, 44.0934, -504}, + {51.3674, 44.0934, -432}, {62.306, 31.3425, -432}, + {62.306, 31.3425, -431.5}, {51.3674, 44.0934, -431.5}, + {51.3674, 44.0934, -359.5}, {62.306, 31.3425, -359.5}, + {62.306, 31.3425, 221}, {51.3674, 44.0934, 221}, + {51.3674, 44.0934, 293}, {62.306, 31.3425, 293}, + {62.306, 31.3425, 293.5}, {51.3674, 44.0934, 293.5}, + {51.3674, 44.0934, 365.5}, {62.306, 31.3425, 365.5}, + {62.306, 31.3425, 366}, {51.3674, 44.0934, 366}, + {51.3674, 44.0934, 438}, {62.306, 31.3425, 438}, + {62.306, 31.3425, 438.5}, {51.3674, 44.0934, 438.5}, + {51.3674, 44.0934, 510.5}, {62.306, 31.3425, 510.5}, + {62.306, 31.3425, -359}, {51.3674, 44.0934, -359}, + {51.3674, 44.0934, -287}, {62.306, 31.3425, -287}, + {62.306, 31.3425, -286.5}, {51.3674, 44.0934, -286.5}, + {51.3674, 44.0934, -214.5}, {62.306, 31.3425, -214.5}, + {62.306, 31.3425, -214}, {51.3674, 44.0934, -214}, + {51.3674, 44.0934, -142}, {62.306, 31.3425, -142}, + {62.306, 31.3425, -141.5}, {51.3674, 44.0934, -141.5}, + {51.3674, 44.0934, -69.5}, {62.306, 31.3425, -69.5}, + {62.306, 31.3425, -69}, {51.3674, 44.0934, -69}, + {51.3674, 44.0934, 3}, {62.306, 31.3425, 3}, + {62.306, 31.3425, 3.5}, {51.3674, 44.0934, 3.5}, + {51.3674, 44.0934, 75.5}, {62.306, 31.3425, 75.5}, + {62.306, 31.3425, 76}, {51.3674, 44.0934, 76}, + {51.3674, 44.0934, 148}, {62.306, 31.3425, 148}, + {62.306, 31.3425, 148.5}, {51.3674, 44.0934, 148.5}, + {51.3674, 44.0934, 220.5}, {62.306, 31.3425, 220.5}, + {60.6757, -34.3926, -504}, {65.2005, -18.2134, -504}, + {65.2005, -18.2134, -432}, {60.6757, -34.3926, -432}, + {60.6757, -34.3926, -431.5}, {65.2005, -18.2134, -431.5}, + {65.2005, -18.2134, -359.5}, {60.6757, -34.3926, -359.5}, + {60.6757, -34.3926, 221}, {65.2005, -18.2134, 221}, + {65.2005, -18.2134, 293}, {60.6757, -34.3926, 293}, + {60.6757, -34.3926, 293.5}, {65.2005, -18.2134, 293.5}, + {65.2005, -18.2134, 365.5}, {60.6757, -34.3926, 365.5}, + {60.6757, -34.3926, 366}, {65.2005, -18.2134, 366}, + {65.2005, -18.2134, 438}, {60.6757, -34.3926, 438}, + {60.6757, -34.3926, 438.5}, {65.2005, -18.2134, 438.5}, + {65.2005, -18.2134, 510.5}, {60.6757, -34.3926, 510.5}, + {60.6757, -34.3926, -359}, {65.2005, -18.2134, -359}, + {65.2005, -18.2134, -287}, {60.6757, -34.3926, -287}, + {60.6757, -34.3926, -286.5}, {65.2005, -18.2134, -286.5}, + {65.2005, -18.2134, -214.5}, {60.6757, -34.3926, -214.5}, + {60.6757, -34.3926, -214}, {65.2005, -18.2134, -214}, + {65.2005, -18.2134, -142}, {60.6757, -34.3926, -142}, + {60.6757, -34.3926, -141.5}, {65.2005, -18.2134, -141.5}, + {65.2005, -18.2134, -69.5}, {60.6757, -34.3926, -69.5}, + {60.6757, -34.3926, -69}, {65.2005, -18.2134, -69}, + {65.2005, -18.2134, 3}, {60.6757, -34.3926, 3}, + {60.6757, -34.3926, 3.5}, {65.2005, -18.2134, 3.5}, + {65.2005, -18.2134, 75.5}, {60.6757, -34.3926, 75.5}, + {60.6757, -34.3926, 76}, {65.2005, -18.2134, 76}, + {65.2005, -18.2134, 148}, {60.6757, -34.3926, 148}, + {60.6757, -34.3926, 148.5}, {65.2005, -18.2134, 148.5}, + {65.2005, -18.2134, 220.5}, {60.6757, -34.3926, 220.5}, + {66.2195, -21.8946, -504}, {67.5009, -5.1435, -504}, + {67.5009, -5.1435, -432}, {66.2195, -21.8946, -432}, + {66.2195, -21.8946, -431.5}, {67.5009, -5.1435, -431.5}, + {67.5009, -5.1435, -359.5}, {66.2195, -21.8946, -359.5}, + {66.2195, -21.8946, 221}, {67.5009, -5.1435, 221}, + {67.5009, -5.1435, 293}, {66.2195, -21.8946, 293}, + {66.2195, -21.8946, 293.5}, {67.5009, -5.1435, 293.5}, + {67.5009, -5.1435, 365.5}, {66.2195, -21.8946, 365.5}, + {66.2195, -21.8946, 366}, {67.5009, -5.1435, 366}, + {67.5009, -5.1435, 438}, {66.2195, -21.8946, 438}, + {66.2195, -21.8946, 438.5}, {67.5009, -5.1435, 438.5}, + {67.5009, -5.1435, 510.5}, {66.2195, -21.8946, 510.5}, + {66.2195, -21.8946, -359}, {67.5009, -5.1435, -359}, + {67.5009, -5.1435, -287}, {66.2195, -21.8946, -287}, + {66.2195, -21.8946, -286.5}, {67.5009, -5.1435, -286.5}, + {67.5009, -5.1435, -214.5}, {66.2195, -21.8946, -214.5}, + {66.2195, -21.8946, -214}, {67.5009, -5.1435, -214}, + {67.5009, -5.1435, -142}, {66.2195, -21.8946, -142}, + {66.2195, -21.8946, -141.5}, {67.5009, -5.1435, -141.5}, + {67.5009, -5.1435, -69.5}, {66.2195, -21.8946, -69.5}, + {66.2195, -21.8946, -69}, {67.5009, -5.1435, -69}, + {67.5009, -5.1435, 3}, {66.2195, -21.8946, 3}, + {66.2195, -21.8946, 3.5}, {67.5009, -5.1435, 3.5}, + {67.5009, -5.1435, 75.5}, {66.2195, -21.8946, 75.5}, + {66.2195, -21.8946, 76}, {67.5009, -5.1435, 76}, + {67.5009, -5.1435, 148}, {66.2195, -21.8946, 148}, + {66.2195, -21.8946, 148.5}, {67.5009, -5.1435, 148.5}, + {67.5009, -5.1435, 220.5}, {66.2195, -21.8946, 220.5}, + {54.9942, 42.8955, -504}, {41.7782, 53.2674, -504}, + {41.7782, 53.2674, -432}, {54.9942, 42.8955, -432}, + {54.9942, 42.8955, -431.5}, {41.7782, 53.2674, -431.5}, + {41.7782, 53.2674, -359.5}, {54.9942, 42.8955, -359.5}, + {54.9942, 42.8955, 221}, {41.7782, 53.2674, 221}, + {41.7782, 53.2674, 293}, {54.9942, 42.8955, 293}, + {54.9942, 42.8955, 293.5}, {41.7782, 53.2674, 293.5}, + {41.7782, 53.2674, 365.5}, {54.9942, 42.8955, 365.5}, + {54.9942, 42.8955, 366}, {41.7782, 53.2674, 366}, + {41.7782, 53.2674, 438}, {54.9942, 42.8955, 438}, + {54.9942, 42.8955, 438.5}, {41.7782, 53.2674, 438.5}, + {41.7782, 53.2674, 510.5}, {54.9942, 42.8955, 510.5}, + {54.9942, 42.8955, -359}, {41.7782, 53.2674, -359}, + {41.7782, 53.2674, -287}, {54.9942, 42.8955, -287}, + {54.9942, 42.8955, -286.5}, {41.7782, 53.2674, -286.5}, + {41.7782, 53.2674, -214.5}, {54.9942, 42.8955, -214.5}, + {54.9942, 42.8955, -214}, {41.7782, 53.2674, -214}, + {41.7782, 53.2674, -142}, {54.9942, 42.8955, -142}, + {54.9942, 42.8955, -141.5}, {41.7782, 53.2674, -141.5}, + {41.7782, 53.2674, -69.5}, {54.9942, 42.8955, -69.5}, + {54.9942, 42.8955, -69}, {41.7782, 53.2674, -69}, + {41.7782, 53.2674, 3}, {54.9942, 42.8955, 3}, + {54.9942, 42.8955, 3.5}, {41.7782, 53.2674, 3.5}, + {41.7782, 53.2674, 75.5}, {54.9942, 42.8955, 75.5}, + {54.9942, 42.8955, 76}, {41.7782, 53.2674, 76}, + {41.7782, 53.2674, 148}, {54.9942, 42.8955, 148}, + {54.9942, 42.8955, 148.5}, {41.7782, 53.2674, 148.5}, + {41.7782, 53.2674, 220.5}, {54.9942, 42.8955, 220.5}, + {45.569, 52.8002, -504}, {30.5835, 60.3944, -504}, + {30.5835, 60.3944, -432}, {45.569, 52.8002, -432}, + {45.569, 52.8002, -431.5}, {30.5835, 60.3944, -431.5}, + {30.5835, 60.3944, -359.5}, {45.569, 52.8002, -359.5}, + {45.569, 52.8002, 221}, {30.5835, 60.3944, 221}, + {30.5835, 60.3944, 293}, {45.569, 52.8002, 293}, + {45.569, 52.8002, 293.5}, {30.5835, 60.3944, 293.5}, + {30.5835, 60.3944, 365.5}, {45.569, 52.8002, 365.5}, + {45.569, 52.8002, 366}, {30.5835, 60.3944, 366}, + {30.5835, 60.3944, 438}, {45.569, 52.8002, 438}, + {45.569, 52.8002, 438.5}, {30.5835, 60.3944, 438.5}, + {30.5835, 60.3944, 510.5}, {45.569, 52.8002, 510.5}, + {45.569, 52.8002, -359}, {30.5835, 60.3944, -359}, + {30.5835, 60.3944, -287}, {45.569, 52.8002, -287}, + {45.569, 52.8002, -286.5}, {30.5835, 60.3944, -286.5}, + {30.5835, 60.3944, -214.5}, {45.569, 52.8002, -214.5}, + {45.569, 52.8002, -214}, {30.5835, 60.3944, -214}, + {30.5835, 60.3944, -142}, {45.569, 52.8002, -142}, + {45.569, 52.8002, -141.5}, {30.5835, 60.3944, -141.5}, + {30.5835, 60.3944, -69.5}, {45.569, 52.8002, -69.5}, + {45.569, 52.8002, -69}, {30.5835, 60.3944, -69}, + {30.5835, 60.3944, 3}, {45.569, 52.8002, 3}, + {45.569, 52.8002, 3.5}, {30.5835, 60.3944, 3.5}, + {30.5835, 60.3944, 75.5}, {45.569, 52.8002, 75.5}, + {45.569, 52.8002, 76}, {30.5835, 60.3944, 76}, + {30.5835, 60.3944, 148}, {45.569, 52.8002, 148}, + {45.569, 52.8002, 148.5}, {30.5835, 60.3944, 148.5}, + {30.5835, 60.3944, 220.5}, {45.569, 52.8002, 220.5}, + {34.3926, 60.6757, -504}, {18.2134, 65.2005, -504}, + {18.2134, 65.2005, -432}, {34.3926, 60.6757, -432}, + {34.3926, 60.6757, -431.5}, {18.2134, 65.2005, -431.5}, + {18.2134, 65.2005, -359.5}, {34.3926, 60.6757, -359.5}, + {34.3926, 60.6757, 221}, {18.2134, 65.2005, 221}, + {18.2134, 65.2005, 293}, {34.3926, 60.6757, 293}, + {34.3926, 60.6757, 293.5}, {18.2134, 65.2005, 293.5}, + {18.2134, 65.2005, 365.5}, {34.3926, 60.6757, 365.5}, + {34.3926, 60.6757, 366}, {18.2134, 65.2005, 366}, + {18.2134, 65.2005, 438}, {34.3926, 60.6757, 438}, + {34.3926, 60.6757, 438.5}, {18.2134, 65.2005, 438.5}, + {18.2134, 65.2005, 510.5}, {34.3926, 60.6757, 510.5}, + {34.3926, 60.6757, -359}, {18.2134, 65.2005, -359}, + {18.2134, 65.2005, -287}, {34.3926, 60.6757, -287}, + {34.3926, 60.6757, -286.5}, {18.2134, 65.2005, -286.5}, + {18.2134, 65.2005, -214.5}, {34.3926, 60.6757, -214.5}, + {34.3926, 60.6757, -214}, {18.2134, 65.2005, -214}, + {18.2134, 65.2005, -142}, {34.3926, 60.6757, -142}, + {34.3926, 60.6757, -141.5}, {18.2134, 65.2005, -141.5}, + {18.2134, 65.2005, -69.5}, {34.3926, 60.6757, -69.5}, + {34.3926, 60.6757, -69}, {18.2134, 65.2005, -69}, + {18.2134, 65.2005, 3}, {34.3926, 60.6757, 3}, + {34.3926, 60.6757, 3.5}, {18.2134, 65.2005, 3.5}, + {18.2134, 65.2005, 75.5}, {34.3926, 60.6757, 75.5}, + {34.3926, 60.6757, 76}, {18.2134, 65.2005, 76}, + {18.2134, 65.2005, 148}, {34.3926, 60.6757, 148}, + {34.3926, 60.6757, 148.5}, {18.2134, 65.2005, 148.5}, + {18.2134, 65.2005, 220.5}, {34.3926, 60.6757, 220.5}, + {21.8946, 66.2195, -504}, {5.1435, 67.5009, -504}, + {5.1435, 67.5009, -432}, {21.8946, 66.2195, -432}, + {21.8946, 66.2195, -431.5}, {5.1435, 67.5009, -431.5}, + {5.1435, 67.5009, -359.5}, {21.8946, 66.2195, -359.5}, + {21.8946, 66.2195, 221}, {5.1435, 67.5009, 221}, + {5.1435, 67.5009, 293}, {21.8946, 66.2195, 293}, + {21.8946, 66.2195, 293.5}, {5.1435, 67.5009, 293.5}, + {5.1435, 67.5009, 365.5}, {21.8946, 66.2195, 365.5}, + {21.8946, 66.2195, 366}, {5.1435, 67.5009, 366}, + {5.1435, 67.5009, 438}, {21.8946, 66.2195, 438}, + {21.8946, 66.2195, 438.5}, {5.1435, 67.5009, 438.5}, + {5.1435, 67.5009, 510.5}, {21.8946, 66.2195, 510.5}, + {21.8946, 66.2195, -359}, {5.1435, 67.5009, -359}, + {5.1435, 67.5009, -287}, {21.8946, 66.2195, -287}, + {21.8946, 66.2195, -286.5}, {5.1435, 67.5009, -286.5}, + {5.1435, 67.5009, -214.5}, {21.8946, 66.2195, -214.5}, + {21.8946, 66.2195, -214}, {5.1435, 67.5009, -214}, + {5.1435, 67.5009, -142}, {21.8946, 66.2195, -142}, + {21.8946, 66.2195, -141.5}, {5.1435, 67.5009, -141.5}, + {5.1435, 67.5009, -69.5}, {21.8946, 66.2195, -69.5}, + {21.8946, 66.2195, -69}, {5.1435, 67.5009, -69}, + {5.1435, 67.5009, 3}, {21.8946, 66.2195, 3}, + {21.8946, 66.2195, 3.5}, {5.1435, 67.5009, 3.5}, + {5.1435, 67.5009, 75.5}, {21.8946, 66.2195, 75.5}, + {21.8946, 66.2195, 76}, {5.1435, 67.5009, 76}, + {5.1435, 67.5009, 148}, {21.8946, 66.2195, 148}, + {21.8946, 66.2195, 148.5}, {5.1435, 67.5009, 148.5}, + {5.1435, 67.5009, 220.5}, {21.8946, 66.2195, 220.5}, + {8.55507, 69.2185, -504}, {-8.12411, 67.2074, -504}, + {-8.12411, 67.2074, -432}, {8.55507, 69.2185, -432}, + {8.55507, 69.2185, -431.5}, {-8.12411, 67.2074, -431.5}, + {-8.12411, 67.2074, -359.5}, {8.55507, 69.2185, -359.5}, + {8.55507, 69.2185, 221}, {-8.12411, 67.2074, 221}, + {-8.12411, 67.2074, 293}, {8.55507, 69.2185, 293}, + {8.55507, 69.2185, 293.5}, {-8.12411, 67.2074, 293.5}, + {-8.12411, 67.2074, 365.5}, {8.55507, 69.2185, 365.5}, + {8.55507, 69.2185, 366}, {-8.12411, 67.2074, 366}, + {-8.12411, 67.2074, 438}, {8.55507, 69.2185, 438}, + {8.55507, 69.2185, 438.5}, {-8.12411, 67.2074, 438.5}, + {-8.12411, 67.2074, 510.5}, {8.55507, 69.2185, 510.5}, + {8.55507, 69.2185, -359}, {-8.12411, 67.2074, -359}, + {-8.12411, 67.2074, -287}, {8.55507, 69.2185, -287}, + {8.55507, 69.2185, -286.5}, {-8.12411, 67.2074, -286.5}, + {-8.12411, 67.2074, -214.5}, {8.55507, 69.2185, -214.5}, + {8.55507, 69.2185, -214}, {-8.12411, 67.2074, -214}, + {-8.12411, 67.2074, -142}, {8.55507, 69.2185, -142}, + {8.55507, 69.2185, -141.5}, {-8.12411, 67.2074, -141.5}, + {-8.12411, 67.2074, -69.5}, {8.55507, 69.2185, -69.5}, + {8.55507, 69.2185, -69}, {-8.12411, 67.2074, -69}, + {-8.12411, 67.2074, 3}, {8.55507, 69.2185, 3}, + {8.55507, 69.2185, 3.5}, {-8.12411, 67.2074, 3.5}, + {-8.12411, 67.2074, 75.5}, {8.55507, 69.2185, 75.5}, + {8.55507, 69.2185, 76}, {-8.12411, 67.2074, 76}, + {-8.12411, 67.2074, 148}, {8.55507, 69.2185, 148}, + {8.55507, 69.2185, 148.5}, {-8.12411, 67.2074, 148.5}, + {-8.12411, 67.2074, 220.5}, {8.55507, 69.2185, 220.5}, + {-5.11317, 69.5575, -504}, {-21.0795, 64.3311, -504}, + {-21.0795, 64.3311, -432}, {-5.11317, 69.5575, -432}, + {-5.11317, 69.5575, -431.5}, {-21.0795, 64.3311, -431.5}, + {-21.0795, 64.3311, -359.5}, {-5.11317, 69.5575, -359.5}, + {-5.11317, 69.5575, 221}, {-21.0795, 64.3311, 221}, + {-21.0795, 64.3311, 293}, {-5.11317, 69.5575, 293}, + {-5.11317, 69.5575, 293.5}, {-21.0795, 64.3311, 293.5}, + {-21.0795, 64.3311, 365.5}, {-5.11317, 69.5575, 365.5}, + {-5.11317, 69.5575, 366}, {-21.0795, 64.3311, 366}, + {-21.0795, 64.3311, 438}, {-5.11317, 69.5575, 438}, + {-5.11317, 69.5575, 438.5}, {-21.0795, 64.3311, 438.5}, + {-21.0795, 64.3311, 510.5}, {-5.11317, 69.5575, 510.5}, + {-5.11317, 69.5575, -359}, {-21.0795, 64.3311, -359}, + {-21.0795, 64.3311, -287}, {-5.11317, 69.5575, -287}, + {-5.11317, 69.5575, -286.5}, {-21.0795, 64.3311, -286.5}, + {-21.0795, 64.3311, -214.5}, {-5.11317, 69.5575, -214.5}, + {-5.11317, 69.5575, -214}, {-21.0795, 64.3311, -214}, + {-21.0795, 64.3311, -142}, {-5.11317, 69.5575, -142}, + {-5.11317, 69.5575, -141.5}, {-21.0795, 64.3311, -141.5}, + {-21.0795, 64.3311, -69.5}, {-5.11317, 69.5575, -69.5}, + {-5.11317, 69.5575, -69}, {-21.0795, 64.3311, -69}, + {-21.0795, 64.3311, 3}, {-5.11317, 69.5575, 3}, + {-5.11317, 69.5575, 3.5}, {-21.0795, 64.3311, 3.5}, + {-21.0795, 64.3311, 75.5}, {-5.11317, 69.5575, 75.5}, + {-5.11317, 69.5575, 76}, {-21.0795, 64.3311, 76}, + {-21.0795, 64.3311, 148}, {-5.11317, 69.5575, 148}, + {-5.11317, 69.5575, 148.5}, {-21.0795, 64.3311, 148.5}, + {-21.0795, 64.3311, 220.5}, {-5.11317, 69.5575, 220.5}}; + + std::vector> result; + auto convert = + [](const std::array& in) -> std::array { + return {static_cast(in[0]), static_cast(in[1]), + static_cast(in[2])}; + }; + + std::transform(raw.begin(), raw.end(), std::back_inserter(result), convert); + return result; +}(); +} // namespace +namespace data { std::vector generate_barrel_modules() { std::vector modules; - size_t number_of_modules = data::odd_pixel_barrel.size() / 4u; + size_t number_of_modules = odd_pixel_barrel.size() / 4u; modules.reserve(number_of_modules); + for (size_t im = 0; im < number_of_modules; ++im) { - modules.push_back({data::odd_pixel_barrel[4 * im], - data::odd_pixel_barrel[4 * im + 1], - data::odd_pixel_barrel[4 * im + 2], - data::odd_pixel_barrel[4 * im + 3]}); + modules.push_back( + {odd_pixel_barrel[4 * im], odd_pixel_barrel[4 * im + 1], + odd_pixel_barrel[4 * im + 2], odd_pixel_barrel[4 * im + 3]}); } return modules; } diff --git a/data/src/data/odd_pixel_endcap.cpp b/data/src/data/odd_pixel_endcap.cpp index ff13c49..3cf0a68 100644 --- a/data/src/data/odd_pixel_endcap.cpp +++ b/data/src/data/odd_pixel_endcap.cpp @@ -8,6 +8,7 @@ #include "actsvg/data/odd_pixel_endcap.hpp" +#include #include #include @@ -17,249 +18,260 @@ namespace actsvg { /// This file is generated from the Open Data detector and /// depicts one Pixel endcap layer -namespace data { +namespace { + +static const std::vector> odd_pixel_endcap = []() { + std::vector> raw = {{42, 8.5, -1515.6}, + {42, -8.5, -1515.6}, + {110, -14.5, -1515.6}, + {110, 14.5, -1515.6}, + {38.3689, 19.0808, -1516.8}, + {42.7688, 2.66003, -1516.8}, + {110.005, 14.4642, -1516.8}, + {102.499, 42.476, -1516.8}, + {-40.6231, 13.6388, -1515.6}, + {-32.1231, 28.3612, -1515.6}, + {-88.0128, 67.5574, -1515.6}, + {-102.513, 42.4426, -1515.6}, + {-42.7688, 2.66003, -1516.8}, + {-38.3689, 19.0808, -1516.8}, + {-102.499, 42.476, -1516.8}, + {-110.005, 14.4642, -1516.8}, + {-42, -8.5, -1515.6}, + {-42, 8.5, -1515.6}, + {-110, 14.5, -1515.6}, + {-110, -14.5, -1515.6}, + {-38.3689, -19.0808, -1516.8}, + {-42.7688, -2.66003, -1516.8}, + {-110.005, -14.4642, -1516.8}, + {-102.499, -42.476, -1516.8}, + {-32.1231, -28.3612, -1515.6}, + {-40.6231, -13.6388, -1515.6}, + {-102.513, -42.4426, -1515.6}, + {-88.0128, -67.5574, -1515.6}, + {-23.6881, -35.7089, -1516.8}, + {-35.7089, -23.6881, -1516.8}, + {-88.0348, -67.5287, -1516.8}, + {-67.5287, -88.0348, -1516.8}, + {-13.6388, -40.6231, -1515.6}, + {-28.3612, -32.1231, -1515.6}, + {-67.5574, -88.0128, -1515.6}, + {-42.4426, -102.513, -1515.6}, + {-2.66003, -42.7688, -1516.8}, + {-19.0808, -38.3689, -1516.8}, + {-42.476, -102.499, -1516.8}, + {-14.4642, -110.005, -1516.8}, + {8.5, -42, -1515.6}, + {-8.5, -42, -1515.6}, + {-14.5, -110, -1515.6}, + {14.5, -110, -1515.6}, + {19.0808, -38.3689, -1516.8}, + {2.66003, -42.7688, -1516.8}, + {14.4642, -110.005, -1516.8}, + {42.476, -102.499, -1516.8}, + {32.1231, 28.3612, -1515.6}, + {40.6231, 13.6388, -1515.6}, + {102.513, 42.4426, -1515.6}, + {88.0128, 67.5574, -1515.6}, + {28.3612, -32.1231, -1515.6}, + {13.6388, -40.6231, -1515.6}, + {42.4426, -102.513, -1515.6}, + {67.5574, -88.0128, -1515.6}, + {35.7089, -23.6881, -1516.8}, + {23.6881, -35.7089, -1516.8}, + {67.5287, -88.0348, -1516.8}, + {88.0348, -67.5287, -1516.8}, + {40.6231, -13.6388, -1515.6}, + {32.1231, -28.3612, -1515.6}, + {88.0128, -67.5574, -1515.6}, + {102.513, -42.4426, -1515.6}, + {42.7688, -2.66003, -1516.8}, + {38.3689, -19.0808, -1516.8}, + {102.499, -42.476, -1516.8}, + {110.005, -14.4642, -1516.8}, + {23.6881, 35.7089, -1516.8}, + {35.7089, 23.6881, -1516.8}, + {88.0348, 67.5287, -1516.8}, + {67.5287, 88.0348, -1516.8}, + {13.6388, 40.6231, -1515.6}, + {28.3612, 32.1231, -1515.6}, + {67.5574, 88.0128, -1515.6}, + {42.4426, 102.513, -1515.6}, + {2.66003, 42.7688, -1516.8}, + {19.0808, 38.3689, -1516.8}, + {42.476, 102.499, -1516.8}, + {14.4642, 110.005, -1516.8}, + {-8.5, 42, -1515.6}, + {8.5, 42, -1515.6}, + {14.5, 110, -1515.6}, + {-14.5, 110, -1515.6}, + {-19.0808, 38.3689, -1516.8}, + {-2.66003, 42.7688, -1516.8}, + {-14.4642, 110.005, -1516.8}, + {-42.476, 102.499, -1516.8}, + {-28.3612, 32.1231, -1515.6}, + {-13.6388, 40.6231, -1515.6}, + {-42.4426, 102.513, -1515.6}, + {-67.5574, 88.0128, -1515.6}, + {-35.7089, 23.6881, -1516.8}, + {-23.6881, 35.7089, -1516.8}, + {-67.5287, 88.0348, -1516.8}, + {-88.0348, 67.5287, -1516.8}, + {105, 10.5, -1523.2}, + {105, -10.5, -1523.2}, + {173, -16.5, -1523.2}, + {173, 16.5, -1523.2}, + {101.582, 28.5735, -1524.4}, + {105.228, 7.89258, -1524.4}, + {173.237, 13.7918, -1524.4}, + {167.507, 46.2905, -1524.4}, + {-28.5735, 101.582, -1523.2}, + {-7.89258, 105.228, -1523.2}, + {-13.7918, 173.237, -1523.2}, + {-46.2905, 167.507, -1523.2}, + {-45.7789, 95.0765, -1524.4}, + {-26.0453, 102.259, -1524.4}, + {-43.6646, 168.21, -1524.4}, + {-74.6744, 156.923, -1524.4}, + {-61.5933, 85.6827, -1523.2}, + {-43.4067, 96.1827, -1523.2}, + {-72.2106, 158.072, -1523.2}, + {-100.789, 141.572, -1523.2}, + {-75.5362, 73.6854, -1524.4}, + {-59.4492, 87.1839, -1524.4}, + {-98.5625, 143.132, -1524.4}, + {-123.842, 121.92, -1524.4}, + {-87.1839, 59.4492, -1523.2}, + {-73.6854, 75.5362, -1523.2}, + {-121.92, 123.842, -1523.2}, + {-143.132, 98.5625, -1523.2}, + {-96.1827, 43.4067, -1524.4}, + {-85.6827, 61.5933, -1524.4}, + {-141.572, 100.789, -1524.4}, + {-158.072, 72.2106, -1524.4}, + {-102.259, 26.0453, -1523.2}, + {-95.0765, 45.7789, -1523.2}, + {-156.923, 74.6744, -1523.2}, + {-168.21, 43.6646, -1523.2}, + {-105.228, 7.89258, -1524.4}, + {-101.582, 28.5735, -1524.4}, + {-167.507, 46.2905, -1524.4}, + {-173.237, 13.7918, -1524.4}, + {-105, -10.5, -1523.2}, + {-105, 10.5, -1523.2}, + {-173, 16.5, -1523.2}, + {-173, -16.5, -1523.2}, + {-101.582, -28.5735, -1524.4}, + {-105.228, -7.89258, -1524.4}, + {-173.237, -13.7918, -1524.4}, + {-167.507, -46.2905, -1524.4}, + {95.0765, 45.7789, -1523.2}, + {102.259, 26.0453, -1523.2}, + {168.21, 43.6646, -1523.2}, + {156.923, 74.6744, -1523.2}, + {-95.0765, -45.7789, -1523.2}, + {-102.259, -26.0453, -1523.2}, + {-168.21, -43.6646, -1523.2}, + {-156.923, -74.6744, -1523.2}, + {-85.6827, -61.5933, -1524.4}, + {-96.1827, -43.4067, -1524.4}, + {-158.072, -72.2106, -1524.4}, + {-141.572, -100.789, -1524.4}, + {-73.6854, -75.5362, -1523.2}, + {-87.1839, -59.4492, -1523.2}, + {-143.132, -98.5625, -1523.2}, + {-121.92, -123.842, -1523.2}, + {-59.4492, -87.1839, -1524.4}, + {-75.5362, -73.6854, -1524.4}, + {-123.842, -121.92, -1524.4}, + {-98.5625, -143.132, -1524.4}, + {-43.4067, -96.1827, -1523.2}, + {-61.5933, -85.6827, -1523.2}, + {-100.789, -141.572, -1523.2}, + {-72.2106, -158.072, -1523.2}, + {-26.0453, -102.259, -1524.4}, + {-45.7789, -95.0765, -1524.4}, + {-74.6744, -156.923, -1524.4}, + {-43.6646, -168.21, -1524.4}, + {-7.89258, -105.228, -1523.2}, + {-28.5735, -101.582, -1523.2}, + {-46.2905, -167.507, -1523.2}, + {-13.7918, -173.237, -1523.2}, + {10.5, -105, -1524.4}, + {-10.5, -105, -1524.4}, + {-16.5, -173, -1524.4}, + {16.5, -173, -1524.4}, + {28.5735, -101.582, -1523.2}, + {7.89258, -105.228, -1523.2}, + {13.7918, -173.237, -1523.2}, + {46.2905, -167.507, -1523.2}, + {45.7789, -95.0765, -1524.4}, + {26.0453, -102.259, -1524.4}, + {43.6646, -168.21, -1524.4}, + {74.6744, -156.923, -1524.4}, + {85.6827, 61.5933, -1524.4}, + {96.1827, 43.4067, -1524.4}, + {158.072, 72.2106, -1524.4}, + {141.572, 100.789, -1524.4}, + {61.5933, -85.6827, -1523.2}, + {43.4067, -96.1827, -1523.2}, + {72.2106, -158.072, -1523.2}, + {100.789, -141.572, -1523.2}, + {75.5362, -73.6854, -1524.4}, + {59.4492, -87.1839, -1524.4}, + {98.5625, -143.132, -1524.4}, + {123.842, -121.92, -1524.4}, + {87.1839, -59.4492, -1523.2}, + {73.6854, -75.5362, -1523.2}, + {121.92, -123.842, -1523.2}, + {143.132, -98.5625, -1523.2}, + {96.1827, -43.4067, -1524.4}, + {85.6827, -61.5933, -1524.4}, + {141.572, -100.789, -1524.4}, + {158.072, -72.2106, -1524.4}, + {102.259, -26.0453, -1523.2}, + {95.0765, -45.7789, -1523.2}, + {156.923, -74.6744, -1523.2}, + {168.21, -43.6646, -1523.2}, + {105.228, -7.89258, -1524.4}, + {101.582, -28.5735, -1524.4}, + {167.507, -46.2905, -1524.4}, + {173.237, -13.7918, -1524.4}, + {73.6854, 75.5362, -1523.2}, + {87.1839, 59.4492, -1523.2}, + {143.132, 98.5625, -1523.2}, + {121.92, 123.842, -1523.2}, + {59.4492, 87.1839, -1524.4}, + {75.5362, 73.6854, -1524.4}, + {123.842, 121.92, -1524.4}, + {98.5625, 143.132, -1524.4}, + {43.4067, 96.1827, -1523.2}, + {61.5933, 85.6827, -1523.2}, + {100.789, 141.572, -1523.2}, + {72.2106, 158.072, -1523.2}, + {26.0453, 102.259, -1524.4}, + {45.7789, 95.0765, -1524.4}, + {74.6744, 156.923, -1524.4}, + {43.6646, 168.21, -1524.4}, + {7.89258, 105.228, -1523.2}, + {28.5735, 101.582, -1523.2}, + {46.2905, 167.507, -1523.2}, + {13.7918, 173.237, -1523.2}, + {-10.5, 105, -1524.4}, + {10.5, 105, -1524.4}, + {16.5, 173, -1524.4}, + {-16.5, 173, -1524.4}}; + + std::vector> result; + auto convert = + [](const std::array& in) -> std::array { + return {static_cast(in[0]), static_cast(in[1]), + static_cast(in[2])}; + }; -std::vector> odd_pixel_endcap = { - {42, 8.5, -1515.6}, - {42, -8.5, -1515.6}, - {110, -14.5, -1515.6}, - {110, 14.5, -1515.6}, - {38.3689, 19.0808, -1516.8}, - {42.7688, 2.66003, -1516.8}, - {110.005, 14.4642, -1516.8}, - {102.499, 42.476, -1516.8}, - {-40.6231, 13.6388, -1515.6}, - {-32.1231, 28.3612, -1515.6}, - {-88.0128, 67.5574, -1515.6}, - {-102.513, 42.4426, -1515.6}, - {-42.7688, 2.66003, -1516.8}, - {-38.3689, 19.0808, -1516.8}, - {-102.499, 42.476, -1516.8}, - {-110.005, 14.4642, -1516.8}, - {-42, -8.5, -1515.6}, - {-42, 8.5, -1515.6}, - {-110, 14.5, -1515.6}, - {-110, -14.5, -1515.6}, - {-38.3689, -19.0808, -1516.8}, - {-42.7688, -2.66003, -1516.8}, - {-110.005, -14.4642, -1516.8}, - {-102.499, -42.476, -1516.8}, - {-32.1231, -28.3612, -1515.6}, - {-40.6231, -13.6388, -1515.6}, - {-102.513, -42.4426, -1515.6}, - {-88.0128, -67.5574, -1515.6}, - {-23.6881, -35.7089, -1516.8}, - {-35.7089, -23.6881, -1516.8}, - {-88.0348, -67.5287, -1516.8}, - {-67.5287, -88.0348, -1516.8}, - {-13.6388, -40.6231, -1515.6}, - {-28.3612, -32.1231, -1515.6}, - {-67.5574, -88.0128, -1515.6}, - {-42.4426, -102.513, -1515.6}, - {-2.66003, -42.7688, -1516.8}, - {-19.0808, -38.3689, -1516.8}, - {-42.476, -102.499, -1516.8}, - {-14.4642, -110.005, -1516.8}, - {8.5, -42, -1515.6}, - {-8.5, -42, -1515.6}, - {-14.5, -110, -1515.6}, - {14.5, -110, -1515.6}, - {19.0808, -38.3689, -1516.8}, - {2.66003, -42.7688, -1516.8}, - {14.4642, -110.005, -1516.8}, - {42.476, -102.499, -1516.8}, - {32.1231, 28.3612, -1515.6}, - {40.6231, 13.6388, -1515.6}, - {102.513, 42.4426, -1515.6}, - {88.0128, 67.5574, -1515.6}, - {28.3612, -32.1231, -1515.6}, - {13.6388, -40.6231, -1515.6}, - {42.4426, -102.513, -1515.6}, - {67.5574, -88.0128, -1515.6}, - {35.7089, -23.6881, -1516.8}, - {23.6881, -35.7089, -1516.8}, - {67.5287, -88.0348, -1516.8}, - {88.0348, -67.5287, -1516.8}, - {40.6231, -13.6388, -1515.6}, - {32.1231, -28.3612, -1515.6}, - {88.0128, -67.5574, -1515.6}, - {102.513, -42.4426, -1515.6}, - {42.7688, -2.66003, -1516.8}, - {38.3689, -19.0808, -1516.8}, - {102.499, -42.476, -1516.8}, - {110.005, -14.4642, -1516.8}, - {23.6881, 35.7089, -1516.8}, - {35.7089, 23.6881, -1516.8}, - {88.0348, 67.5287, -1516.8}, - {67.5287, 88.0348, -1516.8}, - {13.6388, 40.6231, -1515.6}, - {28.3612, 32.1231, -1515.6}, - {67.5574, 88.0128, -1515.6}, - {42.4426, 102.513, -1515.6}, - {2.66003, 42.7688, -1516.8}, - {19.0808, 38.3689, -1516.8}, - {42.476, 102.499, -1516.8}, - {14.4642, 110.005, -1516.8}, - {-8.5, 42, -1515.6}, - {8.5, 42, -1515.6}, - {14.5, 110, -1515.6}, - {-14.5, 110, -1515.6}, - {-19.0808, 38.3689, -1516.8}, - {-2.66003, 42.7688, -1516.8}, - {-14.4642, 110.005, -1516.8}, - {-42.476, 102.499, -1516.8}, - {-28.3612, 32.1231, -1515.6}, - {-13.6388, 40.6231, -1515.6}, - {-42.4426, 102.513, -1515.6}, - {-67.5574, 88.0128, -1515.6}, - {-35.7089, 23.6881, -1516.8}, - {-23.6881, 35.7089, -1516.8}, - {-67.5287, 88.0348, -1516.8}, - {-88.0348, 67.5287, -1516.8}, - {105, 10.5, -1523.2}, - {105, -10.5, -1523.2}, - {173, -16.5, -1523.2}, - {173, 16.5, -1523.2}, - {101.582, 28.5735, -1524.4}, - {105.228, 7.89258, -1524.4}, - {173.237, 13.7918, -1524.4}, - {167.507, 46.2905, -1524.4}, - {-28.5735, 101.582, -1523.2}, - {-7.89258, 105.228, -1523.2}, - {-13.7918, 173.237, -1523.2}, - {-46.2905, 167.507, -1523.2}, - {-45.7789, 95.0765, -1524.4}, - {-26.0453, 102.259, -1524.4}, - {-43.6646, 168.21, -1524.4}, - {-74.6744, 156.923, -1524.4}, - {-61.5933, 85.6827, -1523.2}, - {-43.4067, 96.1827, -1523.2}, - {-72.2106, 158.072, -1523.2}, - {-100.789, 141.572, -1523.2}, - {-75.5362, 73.6854, -1524.4}, - {-59.4492, 87.1839, -1524.4}, - {-98.5625, 143.132, -1524.4}, - {-123.842, 121.92, -1524.4}, - {-87.1839, 59.4492, -1523.2}, - {-73.6854, 75.5362, -1523.2}, - {-121.92, 123.842, -1523.2}, - {-143.132, 98.5625, -1523.2}, - {-96.1827, 43.4067, -1524.4}, - {-85.6827, 61.5933, -1524.4}, - {-141.572, 100.789, -1524.4}, - {-158.072, 72.2106, -1524.4}, - {-102.259, 26.0453, -1523.2}, - {-95.0765, 45.7789, -1523.2}, - {-156.923, 74.6744, -1523.2}, - {-168.21, 43.6646, -1523.2}, - {-105.228, 7.89258, -1524.4}, - {-101.582, 28.5735, -1524.4}, - {-167.507, 46.2905, -1524.4}, - {-173.237, 13.7918, -1524.4}, - {-105, -10.5, -1523.2}, - {-105, 10.5, -1523.2}, - {-173, 16.5, -1523.2}, - {-173, -16.5, -1523.2}, - {-101.582, -28.5735, -1524.4}, - {-105.228, -7.89258, -1524.4}, - {-173.237, -13.7918, -1524.4}, - {-167.507, -46.2905, -1524.4}, - {95.0765, 45.7789, -1523.2}, - {102.259, 26.0453, -1523.2}, - {168.21, 43.6646, -1523.2}, - {156.923, 74.6744, -1523.2}, - {-95.0765, -45.7789, -1523.2}, - {-102.259, -26.0453, -1523.2}, - {-168.21, -43.6646, -1523.2}, - {-156.923, -74.6744, -1523.2}, - {-85.6827, -61.5933, -1524.4}, - {-96.1827, -43.4067, -1524.4}, - {-158.072, -72.2106, -1524.4}, - {-141.572, -100.789, -1524.4}, - {-73.6854, -75.5362, -1523.2}, - {-87.1839, -59.4492, -1523.2}, - {-143.132, -98.5625, -1523.2}, - {-121.92, -123.842, -1523.2}, - {-59.4492, -87.1839, -1524.4}, - {-75.5362, -73.6854, -1524.4}, - {-123.842, -121.92, -1524.4}, - {-98.5625, -143.132, -1524.4}, - {-43.4067, -96.1827, -1523.2}, - {-61.5933, -85.6827, -1523.2}, - {-100.789, -141.572, -1523.2}, - {-72.2106, -158.072, -1523.2}, - {-26.0453, -102.259, -1524.4}, - {-45.7789, -95.0765, -1524.4}, - {-74.6744, -156.923, -1524.4}, - {-43.6646, -168.21, -1524.4}, - {-7.89258, -105.228, -1523.2}, - {-28.5735, -101.582, -1523.2}, - {-46.2905, -167.507, -1523.2}, - {-13.7918, -173.237, -1523.2}, - {10.5, -105, -1524.4}, - {-10.5, -105, -1524.4}, - {-16.5, -173, -1524.4}, - {16.5, -173, -1524.4}, - {28.5735, -101.582, -1523.2}, - {7.89258, -105.228, -1523.2}, - {13.7918, -173.237, -1523.2}, - {46.2905, -167.507, -1523.2}, - {45.7789, -95.0765, -1524.4}, - {26.0453, -102.259, -1524.4}, - {43.6646, -168.21, -1524.4}, - {74.6744, -156.923, -1524.4}, - {85.6827, 61.5933, -1524.4}, - {96.1827, 43.4067, -1524.4}, - {158.072, 72.2106, -1524.4}, - {141.572, 100.789, -1524.4}, - {61.5933, -85.6827, -1523.2}, - {43.4067, -96.1827, -1523.2}, - {72.2106, -158.072, -1523.2}, - {100.789, -141.572, -1523.2}, - {75.5362, -73.6854, -1524.4}, - {59.4492, -87.1839, -1524.4}, - {98.5625, -143.132, -1524.4}, - {123.842, -121.92, -1524.4}, - {87.1839, -59.4492, -1523.2}, - {73.6854, -75.5362, -1523.2}, - {121.92, -123.842, -1523.2}, - {143.132, -98.5625, -1523.2}, - {96.1827, -43.4067, -1524.4}, - {85.6827, -61.5933, -1524.4}, - {141.572, -100.789, -1524.4}, - {158.072, -72.2106, -1524.4}, - {102.259, -26.0453, -1523.2}, - {95.0765, -45.7789, -1523.2}, - {156.923, -74.6744, -1523.2}, - {168.21, -43.6646, -1523.2}, - {105.228, -7.89258, -1524.4}, - {101.582, -28.5735, -1524.4}, - {167.507, -46.2905, -1524.4}, - {173.237, -13.7918, -1524.4}, - {73.6854, 75.5362, -1523.2}, - {87.1839, 59.4492, -1523.2}, - {143.132, 98.5625, -1523.2}, - {121.92, 123.842, -1523.2}, - {59.4492, 87.1839, -1524.4}, - {75.5362, 73.6854, -1524.4}, - {123.842, 121.92, -1524.4}, - {98.5625, 143.132, -1524.4}, - {43.4067, 96.1827, -1523.2}, - {61.5933, 85.6827, -1523.2}, - {100.789, 141.572, -1523.2}, - {72.2106, 158.072, -1523.2}, - {26.0453, 102.259, -1524.4}, - {45.7789, 95.0765, -1524.4}, - {74.6744, 156.923, -1524.4}, - {43.6646, 168.21, -1524.4}, - {7.89258, 105.228, -1523.2}, - {28.5735, 101.582, -1523.2}, - {46.2905, 167.507, -1523.2}, - {13.7918, 173.237, -1523.2}, - {-10.5, 105, -1524.4}, - {10.5, 105, -1524.4}, - {16.5, 173, -1524.4}, - {-16.5, 173, -1524.4}}; + std::transform(raw.begin(), raw.end(), std::back_inserter(result), convert); + return result; +}(); std::vector> odd_pixel_endcap_assoc = { {4, 33, 34, 35}, {4, 5, 34, 35, 37}, {5, 35, 37}, {5, 6, 35, 37, 38}, @@ -286,16 +298,18 @@ std::vector> odd_pixel_endcap_assoc = { {20, 26, 58, 59}, {20, 21, 26, 27, 59}, {21, 26, 27}, {21, 22, 26, 27, 28}, {22, 27, 28, 29}, {22, 23, 28, 29, 30}, {23, 29, 30}, {2, 23, 29, 30, 31}, {2, 30, 31, 32}, {2, 3, 31, 32, 33}, {3, 32, 33}, {3, 4, 32, 33, 34}}; +} // namespace + +namespace data { std::vector generate_endcap_modules() { std::vector modules; - size_t number_of_modules = data::odd_pixel_endcap.size() / 4u; + size_t number_of_modules = odd_pixel_endcap.size() / 4u; modules.reserve(number_of_modules); for (size_t im = 0; im < number_of_modules; ++im) { - modules.push_back({data::odd_pixel_endcap[4 * im], - data::odd_pixel_endcap[4 * im + 1], - data::odd_pixel_endcap[4 * im + 2], - data::odd_pixel_endcap[4 * im + 3]}); + modules.push_back( + {odd_pixel_endcap[4 * im], odd_pixel_endcap[4 * im + 1], + odd_pixel_endcap[4 * im + 2], odd_pixel_endcap[4 * im + 3]}); } return modules; } diff --git a/meta/include/actsvg/display/datamodel.hpp b/meta/include/actsvg/display/datamodel.hpp index da6e354..9043437 100644 --- a/meta/include/actsvg/display/datamodel.hpp +++ b/meta/include/actsvg/display/datamodel.hpp @@ -136,7 +136,8 @@ std::pair cluster( // Correlation between -1 (-45 deg)and 1 (45 deg) scalar corr = cluster_._correlation; - corr = corr < -1. ? -1. : (corr > 1. ? 1. : corr); + corr = corr < -1._scalar ? -1._scalar + : (corr > 1._scalar ? 1._scalar : corr); c_r = -corr * 45; } } @@ -207,43 +208,49 @@ std::pair cluster( t_r = cluster_._truth[DIM - 1]; d_r = cluster_._variance[DIM - 1]; - d_phi = std::abs(phi_range[1] - phi_range[0]) / std::sqrt(12.); + d_phi = std::abs(phi_range[1] - phi_range[0]) / + static_cast(std::sqrt(12.)); - m_phi = 0.5 * (phi_range[0] + phi_range[1]); + m_phi = 0.5_scalar * (phi_range[0] + phi_range[1]); t_phi = m_phi; } else if (cluster_._coords[DIM - 1] == proto::cluster::e_phi) { m_phi = cluster_._measurement[DIM - 1]; t_phi = cluster_._truth[DIM - 1]; - d_r = std::abs(r_range[1] - r_range[0]) / std::sqrt(12.); + d_r = std::abs(r_range[1] - r_range[0]) / + static_cast(std::sqrt(12.)); d_phi = cluster_._variance[DIM - 1]; - m_r = 0.5 * (r_range[0] + r_range[1]); + m_r = 0.5_scalar * (r_range[0] + r_range[1]); t_r = m_r; } else if (cluster_._coords[DIM - 1] == proto::cluster::e_x) { m_x = cluster_._measurement[DIM - 1]; t_x = cluster_._truth[DIM - 1]; c_x = cluster_._variance[DIM - 1]; - c_y = std::abs(y_range[1] - y_range[0]) / std::sqrt(12.); - m_y = 0.5 * (y_range[0] + y_range[1]); + c_y = std::abs(y_range[1] - y_range[0]) / + static_cast(std::sqrt(12.)); + m_y = 0.5_scalar * (y_range[0] + y_range[1]); t_y = m_y; // Correlation between -1 (-45 deg)and 1 (45 deg) scalar corr = cluster_._correlation; - corr = corr < -1. ? -1. : (corr > 1. ? 1. : corr); + corr = corr < -1._scalar ? -1._scalar + : (corr > 1._scalar ? 1._scalar : corr); c_r = -corr * 45; } else { m_y = cluster_._measurement[DIM - 1]; t_y = cluster_._truth[DIM - 1]; c_y = cluster_._variance[DIM - 1]; - c_x = std::abs(x_range[1] - x_range[0]) / std::sqrt(12.); - m_x = 0.5 * (x_range[0] + x_range[1]); + c_x = std::abs(x_range[1] - x_range[0]) / + static_cast(std::sqrt(12.)); + m_x = 0.5_scalar * (x_range[0] + x_range[1]); t_x = m_x; // Correlation between -1 (-45 deg)and 1 (45 deg) scalar corr = cluster_._correlation; - corr = corr < -1. ? -1. : (corr > 1. ? 1. : corr); + corr = corr < -1._scalar ? -1._scalar + : (corr > 1._scalar ? 1._scalar : corr); c_r = corr * 45; } } @@ -260,7 +267,7 @@ std::pair cluster( c_x = std::abs(cos_phi * d_r - m_r * sin_phi * d_phi); c_y = std::abs(sin_phi * d_r + m_r * cos_phi * d_phi); - c_r = m_phi * 180 / M_PI; + c_r = m_phi * 180 / pi; t_x = t_r * std::cos(t_phi); t_y = t_r * std::sin(t_phi); diff --git a/meta/include/actsvg/display/geometry.hpp b/meta/include/actsvg/display/geometry.hpp index ea78b12..973bc1f 100644 --- a/meta/include/actsvg/display/geometry.hpp +++ b/meta/include/actsvg/display/geometry.hpp @@ -535,12 +535,12 @@ svg::object portal_link(const std::string& id_, draw::circle(id_ + "_arrow_top_tip", {static_cast(link_._start[0u]), static_cast(link_._start[1u])}, - link_._end_marker._size * 0.1, __w_fill)); + link_._end_marker._size * 0.1_scalar, __w_fill)); } else { - scalar d_l_x = - link_._end_marker._size * 0.9 * std::cos(0.25 * M_PI); - scalar d_l_y = - link_._end_marker._size * 0.9 * std::sin(0.25 * M_PI); + scalar d_l_x = link_._end_marker._size * 0.9_scalar * + std::cos(0.25_scalar * pi); + scalar d_l_y = link_._end_marker._size * 0.9_scalar * + std::sin(0.25_scalar * pi); arr_xy.add_object( draw::line(id_ + "_arrow_top_cl0", {static_cast(link_._start[0u] - d_l_x), diff --git a/meta/include/actsvg/display/helpers.hpp b/meta/include/actsvg/display/helpers.hpp index f9eb6ac..892cd98 100644 --- a/meta/include/actsvg/display/helpers.hpp +++ b/meta/include/actsvg/display/helpers.hpp @@ -116,7 +116,7 @@ views::contour range_contour(const surface_type& s_, scalar ro = s_._radii[1]; scalar phi_low = s_._opening[0]; scalar phi_high = s_._opening[1]; - scalar phi = 0.5 * (phi_low + phi_high); + scalar phi = 0.5_scalar * (phi_low + phi_high); scalar cos_phi_low = std::cos(phi_low); scalar sin_phi_low = std::sin(phi_low); scalar cos_phi_high = std::cos(phi_high); diff --git a/meta/include/actsvg/display/sheets.hpp b/meta/include/actsvg/display/sheets.hpp index b303d60..0fe979f 100644 --- a/meta/include/actsvg/display/sheets.hpp +++ b/meta/include/actsvg/display/sheets.hpp @@ -61,7 +61,7 @@ svg::object surface_sheet_xy(const std::string& id_, // Stitch when disc - and make x and y axis similarly long bool full = (s_._type == proto::surface::type::e_disc and - s_._opening == std::array({-M_PI, M_PI})); + s_._opening == std::array({-pi, pi})); bool draw_axes = true; if (s_._type == proto::surface::type::e_disc or @@ -119,7 +119,7 @@ svg::object surface_sheet_xy(const std::string& id_, scalar hlx_min = s_._measures[0] * s_x; scalar hlx_max = s_._measures[1] * s_x; scalar hly = s_._measures[2] * s_y; - scalar ms = 2. * m_marker._size; + scalar ms = 2._scalar * m_marker._size; // Measure names std::string h_x_min = "h_x_min"; std::string h_x_max = "h_x_max"; @@ -153,7 +153,7 @@ svg::object surface_sheet_xy(const std::string& id_, scalar hlx = s_._measures[0] * s_x; scalar hly = s_._measures[1] * s_y; - scalar ms = 2. * m_marker._size; + scalar ms = 2._scalar * m_marker._size; // Measure names std::string h_x = "h_x"; std::string h_y = "h_y"; @@ -178,7 +178,7 @@ svg::object surface_sheet_xy(const std::string& id_, scalar hlx_ymax = s_._measures[2] * s_x; scalar hly_xmin = s_._measures[3] * s_y; scalar hly_xmax = s_._measures[4] * s_y; - scalar ms = 2. * m_marker._size; + scalar ms = 2._scalar * m_marker._size; // Measure names std::string h_x_n = "h_x_ny"; @@ -264,8 +264,9 @@ svg::object surface_sheet_xy(const std::string& id_, label_v += utils::to_string(std::array{ s_._measures[2 * iv], s_._measures[2 * iv + 1]}); - scalar offx = dx > 0 ? 2. * m_font._size * dx - : 0.5 * label_v.size() * m_font._size * dx; + scalar offx = dx > 0 + ? 2._scalar * m_font._size * dx + : 0.5_scalar * label_v.size() * m_font._size * dx; scalar offy = 2 * m_font._size * dy; so.add_object(draw::text(id_ + "_label_v" + std::to_string(iv), @@ -280,10 +281,10 @@ svg::object surface_sheet_xy(const std::string& id_, // Where to set the labels and how to label them std::vector r_label; - scalar phi_span = 2 * M_PI; + scalar phi_span = 2 * pi; if (full) { - r_label = {M_PI * 0.25, -M_PI * 0.25}; + r_label = {pi * 0.25, -pi * 0.25}; } else { phi_span = s_._opening[1] - s_._opening[0]; r_label = {static_cast(s_._opening[0] - 0.1), @@ -317,7 +318,8 @@ svg::object surface_sheet_xy(const std::string& id_, r_min = r < r_min ? r : r_min; std::string r_o = ir == 0 ? "r" : "R"; - scalar rfs = (fs_ and not full) ? s_x * 0.85 * r_min : 0.; + scalar rfs = + (fs_ and not full) ? s_x * 0.85_scalar * r_min : 0._scalar; scalar rfs_phi = std::atan2(ys[ir], xs[ir]); point2 rstart = {static_cast(rfs * std::cos(rfs_phi)), @@ -335,21 +337,22 @@ svg::object surface_sheet_xy(const std::string& id_, if (ir == 2 and not full) { // Focal or not focal - scalar rfs = (fs_ and not full) ? s_x * 0.85 * r_min : 0.; + scalar rfs = + (fs_ and not full) ? s_x * 0.85_scalar * r_min : 0._scalar; // Place it outside - scalar lr = s_x * r_max + 2. * m_marker._size; + scalar lr = s_x * r_max + 2._scalar * m_marker._size; point2 start = { static_cast(lr * std::cos(s_._opening[0])), static_cast(lr * std::sin(s_._opening[0]))}; // Medium phi arc and line - scalar mphi = 0.5 * (s_._opening[0] + s_._opening[1]); + scalar mphi = 0.5_scalar * (s_._opening[0] + s_._opening[1]); point2 end = {static_cast(lr * std::cos(mphi)), static_cast(lr * std::sin(mphi))}; - scalar mmphi = 0.5 * (s_._opening[0] + mphi); + scalar mmphi = 0.5_scalar * (s_._opening[0] + mphi); point2 mend = { static_cast(m_font._size + lr * std::cos(mmphi)), static_cast(m_font._size + lr * std::sin(mmphi))}; @@ -369,7 +372,7 @@ svg::object surface_sheet_xy(const std::string& id_, so.add_object(medium_phi_line); // Measure to the medium phi - scalar r_avg_phi = 0.2 * s_x * r_max; + scalar r_avg_phi = 0.2_scalar * s_x * r_max; std::array r_avg_start = {r_avg_phi, 0.}; std::array r_avg_end = { static_cast(r_avg_phi * std::cos(mphi)), @@ -434,9 +437,10 @@ svg::object surface_sheet_xy(const std::string& id_, for (unsigned int ic = 0; ic < 2; ++ic) { const auto& corner = corners[ic]; - scalar in_phi = atan2(corner[1], corner[0]); + scalar in_phi = static_cast(atan2(corner[1], corner[0])); - scalar in_r = (0.2 + ic * 0.2) * utils::perp(corners[ic]); + scalar in_r = + (0.2_scalar + ic * 0.2_scalar) * utils::perp(corners[ic]); std::array in_start = {in_r, 0.}; std::array in_end = { static_cast(in_r * std::cos(in_phi)), @@ -493,9 +497,13 @@ svg::object surface_sheet_xy(const std::string& id_, point2 cart_c1 = point2{c1[0] - origin_x, c1[1] - origin_y}; scalar cart_r = utils::perp(cart_c0); - scalar cart_phi0 = atan2(cart_c0[1], cart_c0[0]) - 0.2; - scalar cart_phi1 = atan2(cart_c1[1], cart_c1[0]) + 0.25; - scalar cart_phir = cart_phi1 - (2 * idc + 1) * 0.05; + scalar cart_phi0 = + static_cast(atan2(cart_c0[1], cart_c0[0])) - 0.2_scalar; + scalar cart_phi1 = + static_cast(atan2(cart_c1[1], cart_c1[0])) + + 0.25_scalar; + scalar cart_phir = + cart_phi1 - (2_scalar * idc + 1_scalar) * 0.05_scalar; point2 start_arc = { static_cast(origin_x + cart_r * std::cos(cart_phi0)), @@ -646,7 +654,7 @@ svg::object sheet(const std::string& id_, info_font); scalar offsx = static_cast((ib * (1 + sub_offset) + 0.7) * sh_[0]); - scalar offsy = std::abs(0.1 * y_axis[1]); + scalar offsy = std::abs(0.1_scalar * y_axis[1]); // Let's set them to the right side outside the view std::for_each( c_objects.begin(), c_objects.end(), [&](svg::object& o_) { diff --git a/meta/include/actsvg/display/tools.hpp b/meta/include/actsvg/display/tools.hpp index d701ea0..121947d 100644 --- a/meta/include/actsvg/display/tools.hpp +++ b/meta/include/actsvg/display/tools.hpp @@ -33,16 +33,18 @@ static inline point2 annulusCircleIx(scalar O_x, scalar O_y, scalar r, // scalar m = std::tan(phi); point2 dir = {std::cos(phi), std::sin(phi)}; - scalar x1 = (O_x + O_y * m - - std::sqrt(-std::pow(O_x, 2) * std::pow(m, 2) + - 2 * O_x * O_y * m - std::pow(O_y, 2) + - std::pow(m, 2) * std::pow(r, 2) + std::pow(r, 2))) / - (std::pow(m, 2) + 1); - scalar x2 = (O_x + O_y * m + - std::sqrt(-std::pow(O_x, 2) * std::pow(m, 2) + - 2 * O_x * O_y * m - std::pow(O_y, 2) + - std::pow(m, 2) * std::pow(r, 2) + std::pow(r, 2))) / - (std::pow(m, 2) + 1); + scalar x1 = static_cast( + (O_x + O_y * m - + std::sqrt(-std::pow(O_x, 2) * std::pow(m, 2) + 2 * O_x * O_y * m - + std::pow(O_y, 2) + std::pow(m, 2) * std::pow(r, 2) + + std::pow(r, 2))) / + (std::pow(m, 2) + 1)); + scalar x2 = static_cast( + (O_x + O_y * m + + std::sqrt(-std::pow(O_x, 2) * std::pow(m, 2) + 2 * O_x * O_y * m - + std::pow(O_y, 2) + std::pow(m, 2) * std::pow(r, 2) + + std::pow(r, 2))) / + (std::pow(m, 2) + 1)); point2 v1 = {x1, m * x1}; if (v1[0] * dir[0] + v1[1] * dir[1] > 0) { diff --git a/meta/include/actsvg/proto/surface.hpp b/meta/include/actsvg/proto/surface.hpp index c504860..d7722c2 100644 --- a/meta/include/actsvg/proto/surface.hpp +++ b/meta/include/actsvg/proto/surface.hpp @@ -106,7 +106,7 @@ struct surface { /// Dedicated regular disc/cylinder descriptions /// - if this is not applicable the _vertices view needs to be chosen std::array _radii = {0., 0.}; - std::array _opening = {-M_PI, M_PI}; + std::array _opening = {-pi, pi}; std::array _zparameters = {0., 0.}; /// Boolean surfaces diff --git a/tests/common/helix.hpp b/tests/common/helix.hpp index 793b0f7..47bbc5d 100644 --- a/tests/common/helix.hpp +++ b/tests/common/helix.hpp @@ -57,7 +57,8 @@ inline static proto::trajectory generate_helix( scalar phi_step = (phi_range_[1] - phi_range_[0]) / n_points_; for (std::size_t i = 0; i < n_points_; ++i) { - scalar phi = phi_range_[0] + std::copysign(i, o_) * phi_step; + scalar phi = phi_range_[0] + + static_cast(std::copysign(i, o_)) * phi_step; scalar x = center[0] + radius_ * std::cos(phi0 + phi); scalar y = center[1] + radius_ * std::sin(phi0 + phi); scalar z = center[2] + direction_[2] * phi; diff --git a/tests/core/barrel.cpp b/tests/core/barrel.cpp index ec75993..9ecba72 100644 --- a/tests/core/barrel.cpp +++ b/tests/core/barrel.cpp @@ -149,9 +149,9 @@ TEST(barrel, z_phi_view_grid) { std::vector phi_values; unsigned int n_sectors = 48; phi_values.reserve(n_sectors); - scalar phi_step = 2 * M_PI / n_sectors; + scalar phi_step = 2_scalar * pi / n_sectors; for (unsigned int is = 0; is <= n_sectors; ++is) { - scalar c_phi = -M_PI + is * phi_step; + scalar c_phi = -pi + is * phi_step; phi_values.push_back(c_phi); } diff --git a/tests/core/bezier.cpp b/tests/core/bezier.cpp index 01e87cf..d24ade8 100644 --- a/tests/core/bezier.cpp +++ b/tests/core/bezier.cpp @@ -52,7 +52,7 @@ TEST(core, bezier_spiral) { scalar r_start = 125.; scalar r_end = 75.; scalar phi_start = -0.25; - scalar phi_rot = 4.5 * M_PI; + scalar phi_rot = 4.5_scalar * pi; scalar r_step = (r_end - r_start) / nSegs; scalar phi_step = phi_rot / nSegs; diff --git a/tests/core/endcap.cpp b/tests/core/endcap.cpp index dd8b35b..c0b0dc4 100644 --- a/tests/core/endcap.cpp +++ b/tests/core/endcap.cpp @@ -146,9 +146,9 @@ TEST(endcap, x_y_view_grid) { std::vector phi_values; unsigned int n_sectors = 48; phi_values.reserve(n_sectors); - scalar phi_step = 2 * M_PI / n_sectors; + scalar phi_step = 2_scalar * pi / n_sectors; for (unsigned int is = 0; is <= n_sectors; ++is) { - scalar c_phi = -M_PI + is * phi_step; + scalar c_phi = -pi + is * phi_step; phi_values.push_back(c_phi); } auto grid_sectors = draw::tiled_polar_grid("r_phi_", r_values, phi_values, diff --git a/tests/core/infobox.cpp b/tests/core/infobox.cpp index 6f62091..2256891 100644 --- a/tests/core/infobox.cpp +++ b/tests/core/infobox.cpp @@ -25,7 +25,7 @@ TEST(core, info_box) { std::string title = "info box"; style::fill title_blue; title_blue._fc._rgb = {0, 0, 150}; - title_blue._fc._opacity = 0.8; + title_blue._fc._opacity = 0.8_scalar; style::font title_font; title_font._size = 24; title_font._fc = style::color{{255, 255, 255}}; @@ -35,7 +35,7 @@ TEST(core, info_box) { style::fill info_blue; info_blue._fc._rgb = {0, 0, 150}; - info_blue._fc._opacity = 0.4; + info_blue._fc._opacity = 0.4_scalar; style::font info_font; info_font._size = 18; diff --git a/tests/core/markers.cpp b/tests/core/markers.cpp index 2f0e1ea..55dc86d 100644 --- a/tests/core/markers.cpp +++ b/tests/core/markers.cpp @@ -48,43 +48,43 @@ TEST(draw, markers) { style::marker m_arr_r{"<"}; m_arr_r._size = 10; m_arr_r._fill._fc = style::color{{255, 0, 0}}; - auto m2_r = draw::marker("m2_r", {100, -80}, m_arr_r, M_PI); + auto m2_r = draw::marker("m2_r", {100, -80}, m_arr_r, pi); style::marker m_darr_r{"<<"}; m_darr_r._size = 10; m_darr_r._fill._fc = style::color{{255, 0, 0}}; - auto m3_r = draw::marker("m3_r", {100, -110}, m_darr_r, M_PI); + auto m3_r = draw::marker("m3_r", {100, -110}, m_darr_r, pi); style::marker m_marr_r{"|<"}; m_marr_r._size = 10; m_marr_r._fill._fc = style::color{{255, 0, 0}}; - auto m4_r = draw::marker("m4_r", {150, -170}, m_marr_r, M_PI); + auto m4_r = draw::marker("m4_r", {150, -170}, m_marr_r, pi); style::marker m_mdarr_r{"|<<"}; m_mdarr_r._size = 10; m_mdarr_r._fill._fc = style::color{{255, 0, 0}}; - auto m5_r = draw::marker("m5_r", {150, -210}, m_mdarr_r, M_PI); + auto m5_r = draw::marker("m5_r", {150, -210}, m_mdarr_r, pi); // 45 degree outwards pointing in blue style::marker m_arr_b{"<"}; m_arr_b._size = 10; m_arr_b._fill._fc = style::color{{0, 0, 255}}; - auto m2_b = draw::marker("m2_r", {-100, 80}, m_arr_b, 0.75 * M_PI); + auto m2_b = draw::marker("m2_r", {-100, 80}, m_arr_b, 0.75_scalar * pi); style::marker m_darr_b{"<<"}; m_darr_b._size = 10; m_darr_b._fill._fc = style::color{{0, 0, 255}}; - auto m3_b = draw::marker("m3_r", {-100, 110}, m_darr_b, 0.75 * M_PI); + auto m3_b = draw::marker("m3_r", {-100, 110}, m_darr_b, 0.75_scalar * pi); style::marker m_marr_b{"|<"}; m_marr_b._size = 10; m_marr_b._fill._fc = style::color{{0, 0, 255}}; - auto m4_b = draw::marker("m4_r", {-150, 170}, m_marr_b, 0.75 * M_PI); + auto m4_b = draw::marker("m4_r", {-150, 170}, m_marr_b, 0.75_scalar * pi); style::marker m_mdarr_b{"|<<"}; m_mdarr_b._size = 10; m_mdarr_b._fill._fc = style::color{{0, 0, 255}}; - auto m5_b = draw::marker("m5_r", {-150, 210}, m_mdarr_b, 0.75 * M_PI); + auto m5_b = draw::marker("m5_r", {-150, 210}, m_mdarr_b, 0.75_scalar * pi); // back-to-back measure test style::marker m_mdarr_g{"|<<"}; @@ -92,7 +92,7 @@ TEST(draw, markers) { m_mdarr_g._fill._fc = style::color{{0, 255, 0}}; auto f_g = draw::marker("f_g", {-100, -100}, m_default); auto m5_f_g = draw::marker("m5_f_g", {-100, -100}, m_mdarr_g); - auto m5_b_g = draw::marker("m5_f_g", {-100, -100}, m_mdarr_g, -M_PI); + auto m5_b_g = draw::marker("m5_f_g", {-100, -100}, m_mdarr_g, -pi); svg::file mfile; mfile.add_object(pg); diff --git a/tests/core/polygon.cpp b/tests/core/polygon.cpp index e9fd997..15071bf 100644 --- a/tests/core/polygon.cpp +++ b/tests/core/polygon.cpp @@ -156,7 +156,7 @@ TEST(draw, disc_sector) { blue_fill._fc._opacity = 0.5; auto blue_sector_vertices = - generators::sector_contour(120., 230., -0.15, 0.15); + generators::sector_contour(120., 230., -0.15_scalar, 0.15_scalar); auto blue_sector = draw::polygon("blue_sector", blue_sector_vertices, blue_fill); diff --git a/tests/core/views.cpp b/tests/core/views.cpp index fbefd21..37c46b3 100644 --- a/tests/core/views.cpp +++ b/tests/core/views.cpp @@ -52,7 +52,7 @@ TEST(views, zphi) { ASSERT_TRUE(c.size() == 3u); - views::contour exptected = {{3., 0.}, {0., 0.5 * M_PI}, {2., 0.25 * M_PI}}; + views::contour exptected = {{3., 0.}, {0., 0.5 * pi}, {2., 0.25 * pi}}; ASSERT_TRUE(exptected == c); } @@ -65,6 +65,6 @@ TEST(views, zrphi) { ASSERT_TRUE(c.size() == 3u); - views::contour exptected = {{3., 0.}, {0., 1. * M_PI}, {2., 0.5 * M_PI}}; + views::contour exptected = {{3., 0.}, {0., 1. * pi}, {2., 0.5 * pi}}; ASSERT_TRUE(exptected == c); } diff --git a/tests/meta/barrel_sheet.cpp b/tests/meta/barrel_sheet.cpp index a325cf9..380b4d5 100644 --- a/tests/meta/barrel_sheet.cpp +++ b/tests/meta/barrel_sheet.cpp @@ -39,10 +39,10 @@ proto::volume generate_barrel( barrel._name = "Barrel"; barrel._surface_grid._type = proto::grid::e_z_phi; - scalar hx = 8.4; + scalar hx = 8.4_scalar; scalar hy = 36.; scalar barrel_r = 32.; - scalar tilt_phi = 0.14; + scalar tilt_phi = 0.14_scalar; int staves = 16; int stave_modules = 14; @@ -56,14 +56,15 @@ proto::volume generate_barrel( barrel_module_template._sf_type = proto::surface::sf_type::e_sensitive; - scalar offz = (0.5 * stave_modules - 0.5) * (1.98 * hy); - scalar nexz = offz / (0.5 * stave_modules - 0.5); + scalar offz = + (0.5_scalar * stave_modules - 0.5_scalar) * (1.98_scalar * hy); + scalar nexz = offz / (0.5_scalar * stave_modules - 0.5_scalar); // A view for the template views::z_phi z_phi_view; views::x_y x_y_view; - scalar delta_phi = 2 * M_PI / staves; + scalar delta_phi = 2 * pi / staves; /// The surface containers std::vector> regular; @@ -81,13 +82,14 @@ proto::volume generate_barrel( barrel._surface_grid._edges_0.push_back(tr_z + hy); for (int is = 0; is < staves; ++is, cmodule++) { - scalar cphi = -M_PI + is * delta_phi; + scalar cphi = -pi + is * delta_phi; if (iz == 0) { if (is == 0) { - barrel._surface_grid._edges_1.push_back(cphi + - 0.5 * delta_phi); + barrel._surface_grid._edges_1.push_back( + cphi + 0.5_scalar * delta_phi); } - barrel._surface_grid._edges_1.push_back(cphi + 1.5 * delta_phi); + barrel._surface_grid._edges_1.push_back(cphi + + 1.5_scalar * delta_phi); } // The position of the module @@ -100,7 +102,7 @@ proto::volume generate_barrel( bin_associations.push_back(barrel_assoc); // The columns of the rotation matrix - scalar mphi = 0.5 * M_PI + cphi + tilt_phi; + scalar mphi = 0.5_scalar * pi + cphi + tilt_phi; std::array col_x = {std::cos(mphi), std::sin(mphi), 0.}; std::array col_y = {0., 0., 1.}; if (not t_) { @@ -141,8 +143,8 @@ proto::volume generate_barrel( // Create a backside module if (b_s_) { // The position of the module - tr_x = (barrel_r + 2.) * std::cos(cphi); - tr_y = (barrel_r + 2.) * std::sin(cphi); + tr_x = (barrel_r + 2._scalar) * std::cos(cphi); + tr_y = (barrel_r + 2._scalar) * std::sin(cphi); tr = {tr_x, tr_y, tr_z}; ll = utils::add(tr, utils::add(utils::scale(col_y, -hy), diff --git a/tests/meta/clusters.cpp b/tests/meta/clusters.cpp index 2f07878..fd03756 100644 --- a/tests/meta/clusters.cpp +++ b/tests/meta/clusters.cpp @@ -44,8 +44,8 @@ void cluster_position( scalar high_p0 = boundaries_[BOUNDS - 2][c._cid[DIM - 2] + 1]; scalar low_p1 = boundaries_[BOUNDS - 1][c._cid[DIM - 1]]; scalar high_p1 = boundaries_[BOUNDS - 1][c._cid[DIM - 1] + 1]; - channel_p0 = 0.5 * (low_p0 + high_p0); - channel_p1 = 0.5 * (low_p1 + high_p1); + channel_p0 = 0.5_scalar * (low_p0 + high_p0); + channel_p1 = 0.5_scalar * (low_p1 + high_p1); cluster_._measurement[DIM - 2] += data * channel_p0; cluster_._measurement[DIM - 1] += data * channel_p1; } @@ -61,7 +61,7 @@ void cluster_position( scalar channel_p = 0.; scalar low_p = boundaries_[BOUNDS - 1][c._cid[DIM - 1]]; scalar high_p = boundaries_[BOUNDS - 1][c._cid[DIM - 1] + 1]; - channel_p = 0.5 * (low_p + high_p); + channel_p = 0.5_scalar * (low_p + high_p); cluster_._measurement[DIM - 1] += data * channel_p; } } @@ -99,7 +99,7 @@ void cluster_position( high_y = boundaries_[BOUNDS - 1][1]; } - scalar y = 0.5 * (low_y + high_y); + scalar y = 0.5_scalar * (low_y + high_y); scalar low_x_base = boundaries_[BOUNDS - 3][c._cid[DIM - 2 + dim_x_offset]]; @@ -112,7 +112,7 @@ void cluster_position( high_x_base + slopes[c._cid[DIM - 2 + dim_x_offset] + 1] * (y - y_min); - scalar x = 0.5 * (low_x + high_x); + scalar x = 0.5_scalar * (low_x + high_x); cluster_._measurement[DIM - 2 + dim_x_offset] += data * x; @@ -121,13 +121,14 @@ void cluster_position( cluster_._measurement[DIM - 1] += data * y; } cluster_._correlation += - data * (0.5 * (slopes[c._cid[DIM - 2 + dim_x_offset]] + + data * + (0.5_scalar * (slopes[c._cid[DIM - 2 + dim_x_offset]] + slopes[c._cid[DIM - 2 + dim_x_offset] + 1])); } } // Re-scale the entire thing - scalar weight = 1. / total_data; + scalar weight = 1._scalar / total_data; for (unsigned int id = 0; id < DIM; ++id) { cluster_._measurement[id] *= weight; @@ -144,7 +145,7 @@ TEST(proto, cluster1D) { // Or decide to overwrite c1._cid = {4}; - c1._data = 0.6; + c1._data = 0.6_scalar; proto::cluster<1> cl; cl._channels = {c1}; @@ -152,17 +153,17 @@ TEST(proto, cluster1D) { TEST(proto, cluster2D) { - proto::channel<2> c2a{{3, 1}, 0.5}; - proto::channel<2> c2b{{3, 2}, 0.2}; + proto::channel<2> c2a{{3, 1}, 0.5_scalar}; + proto::channel<2> c2b{{3, 2}, 0.2_scalar}; proto::cluster<2> cl; cl._channels = {c2a, c2b}; } TEST(display, cluster1D_x_cart) { - proto::channel<1> c1a{{2}, 0.3}; - proto::channel<1> c1b{{3}, 0.5}; - proto::channel<1> c1c{{4}, 0.2}; + proto::channel<1> c1a{{2}, 0.3_scalar}; + proto::channel<1> c1b{{3}, 0.5_scalar}; + proto::channel<1> c1c{{4}, 0.2_scalar}; proto::cluster<1> cl; cl._channels = {c1a, c1b, c1c}; @@ -195,9 +196,9 @@ TEST(display, cluster1D_x_cart) { TEST(display, cluster1D_y_cart) { - proto::channel<1> c1a{{2}, 0.3}; - proto::channel<1> c1b{{3}, 0.5}; - proto::channel<1> c1c{{4}, 0.2}; + proto::channel<1> c1a{{2}, 0.3_scalar}; + proto::channel<1> c1b{{3}, 0.5_scalar}; + proto::channel<1> c1c{{4}, 0.2_scalar}; proto::cluster<1> cl; cl._channels = {c1a, c1b, c1c}; @@ -230,10 +231,10 @@ TEST(display, cluster1D_y_cart) { TEST(display, cluster2D_cart) { - proto::channel<2> c2a{{3, 1}, 0.3}; - proto::channel<2> c2b{{3, 2}, 0.5}; - proto::channel<2> c2c{{3, 3}, 0.2}; - proto::channel<2> c2d{{4, 3}, 0.1}; + proto::channel<2> c2a{{3, 1}, 0.3_scalar}; + proto::channel<2> c2b{{3, 2}, 0.5_scalar}; + proto::channel<2> c2c{{3, 3}, 0.2_scalar}; + proto::channel<2> c2d{{4, 3}, 0.1_scalar}; proto::cluster<2> cl; cl._channels = {c2a, c2b, c2c, c2d}; @@ -269,9 +270,9 @@ TEST(display, cluster2D_cart) { TEST(display, cluster1D_polar_r) { - proto::channel<1> ca{{1}, 0.3}; - proto::channel<1> cb{{2}, 0.5}; - proto::channel<1> cc{{3}, 0.2}; + proto::channel<1> ca{{1}, 0.3_scalar}; + proto::channel<1> cb{{2}, 0.5_scalar}; + proto::channel<1> cc{{3}, 0.2_scalar}; proto::cluster<1> cl; @@ -305,9 +306,9 @@ TEST(display, cluster1D_polar_r) { TEST(display, cluster1D_polar_phi) { - proto::channel<1> ca{{4}, 0.3}; - proto::channel<1> cb{{5}, 0.5}; - proto::channel<1> cc{{6}, 0.2}; + proto::channel<1> ca{{4}, 0.3_scalar}; + proto::channel<1> cb{{5}, 0.5_scalar}; + proto::channel<1> cc{{6}, 0.2_scalar}; proto::cluster<1> cl; @@ -315,8 +316,8 @@ TEST(display, cluster1D_polar_phi) { cl._type = proto::cluster<1>::e_polar; cl._coords = {proto::cluster<1>::e_phi}; - cl._truth = {0.51}; - cl._variance = {0.01}; + cl._truth = {0.51_scalar}; + cl._variance = {0.01_scalar}; std::vector r_boundaries = {100, 600}; std::vector phi_boundaries = {0.25, 0.3, 0.35, 0.4, 0.45, 0.5, @@ -342,9 +343,9 @@ TEST(display, cluster1D_polar_phi) { TEST(display, cluster2D_polar_r_phi) { - proto::channel<2> ca{{1, 2}, 0.3}; - proto::channel<2> cb{{2, 2}, 0.5}; - proto::channel<2> cc{{3, 3}, 0.2}; + proto::channel<2> ca{{1, 2}, 0.3_scalar}; + proto::channel<2> cb{{2, 2}, 0.5_scalar}; + proto::channel<2> cc{{3, 3}, 0.2_scalar}; proto::cluster<2> cl; @@ -352,8 +353,8 @@ TEST(display, cluster2D_polar_r_phi) { cl._type = proto::cluster<2>::e_polar; cl._coords = {proto::cluster<2>::e_r, proto::cluster<2>::e_phi}; - cl._truth = {375, 0.45}; - cl._variance = {20., 0.01}; + cl._truth = {375, 0.45_scalar}; + cl._variance = {20., 0.01_scalar}; std::vector r_boundaries = {100, 200, 300, 400, 500, 600}; std::vector phi_boundaries = {0.25, 0.3, 0.35, 0.4, 0.45, 0.5, @@ -378,9 +379,9 @@ TEST(display, cluster2D_polar_r_phi) { TEST(display, cluster1D_fan_x) { - proto::channel<1> ca{{1}, 0.3}; - proto::channel<1> cb{{2}, 0.5}; - proto::channel<1> cc{{3}, 0.2}; + proto::channel<1> ca{{1}, 0.3_scalar}; + proto::channel<1> cb{{2}, 0.5_scalar}; + proto::channel<1> cc{{3}, 0.2_scalar}; proto::cluster<1> cl; @@ -419,9 +420,9 @@ TEST(display, cluster1D_fan_x) { TEST(display, cluster1D_fan_y) { - proto::channel<1> ca{{1}, 0.3}; - proto::channel<1> cb{{2}, 0.5}; - proto::channel<1> cc{{3}, 0.2}; + proto::channel<1> ca{{1}, 0.3_scalar}; + proto::channel<1> cb{{2}, 0.5_scalar}; + proto::channel<1> cc{{3}, 0.2_scalar}; proto::cluster<1> cl; @@ -457,9 +458,9 @@ TEST(display, cluster1D_fan_y) { TEST(display, cluster2D_fan_x_y) { - proto::channel<2> ca{{1, 2}, 0.3}; - proto::channel<2> cb{{2, 2}, 0.5}; - proto::channel<2> cc{{3, 3}, 0.2}; + proto::channel<2> ca{{1, 2}, 0.3_scalar}; + proto::channel<2> cb{{2, 2}, 0.5_scalar}; + proto::channel<2> cc{{3, 3}, 0.2_scalar}; proto::cluster<2> cl; @@ -498,9 +499,9 @@ TEST(display, cluster2D_fan_x_y) { TEST(display, cluster2D_fan_focus) { - proto::channel<2> ca{{40, 22}, 0.3}; - proto::channel<2> cb{{41, 22}, 0.5}; - proto::channel<2> cc{{42, 23}, 0.2}; + proto::channel<2> ca{{40, 22}, 0.3_scalar}; + proto::channel<2> cb{{41, 22}, 0.5_scalar}; + proto::channel<2> cc{{42, 23}, 0.2_scalar}; proto::cluster<2> cl; @@ -508,8 +509,8 @@ TEST(display, cluster2D_fan_focus) { cl._type = proto::cluster<2>::e_polar; cl._coords = {proto::cluster<2>::e_x, proto::cluster<2>::e_y}; - cl._truth = {375, 0.22}; - cl._variance = {0.05, 0.25}; + cl._truth = {375, 0.22_scalar}; + cl._variance = {0.05_scalar, 0.25_scalar}; std::vector x_low_boundaries = {0.}; x_low_boundaries.reserve(100); @@ -527,7 +528,7 @@ TEST(display, cluster2D_fan_focus) { std::vector y_boundaries; y_boundaries.reserve(50); for (int iy = 0; iy < 51; ++iy) { - y_boundaries.push_back(-250. + iy * 10.); + y_boundaries.push_back(-250._scalar + iy * 10._scalar); } cluster_position<2, 3>(cl, diff --git a/tests/meta/detector.cpp b/tests/meta/detector.cpp index 146e64b..70157a9 100644 --- a/tests/meta/detector.cpp +++ b/tests/meta/detector.cpp @@ -68,7 +68,7 @@ TEST(proto, cylindrical_detector) { style::color({{50, 50, 50}}), style::color({{255, 0, 0}}), style::color({{0, 255, 0}}), style::color({{0, 0, 255}})}; for (auto& c : vColors) { - c._opacity = 0.1; + c._opacity = 0.1_scalar; } // The portals diff --git a/tests/meta/endcap_sheet.cpp b/tests/meta/endcap_sheet.cpp index 2e8d461..08101b5 100644 --- a/tests/meta/endcap_sheet.cpp +++ b/tests/meta/endcap_sheet.cpp @@ -176,7 +176,7 @@ proto::volume generate_endcap( for (unsigned int isc = 0; isc < sectors; ++isc) { // Current phi-value - scalar phi = -M_PI + isc * 2 * half_opening; + scalar phi = -pi + isc * 2_scalar * half_opening; // Create the surface proto::surface s; diff --git a/tests/meta/grid.cpp b/tests/meta/grid.cpp index cdf786a..58c6cd6 100644 --- a/tests/meta/grid.cpp +++ b/tests/meta/grid.cpp @@ -117,8 +117,8 @@ TEST(proto, grid_r_phi_full) { std::vector tile_ids; for (size_t i1 = 0; i1 + 1u < g._edges_1.size(); ++i1) { for (size_t i0 = 0; i0 + 1u < g._edges_0.size(); ++i0) { - scalar r = 0.5 * (g._edges_0[i0] + g._edges_0[i0 + 1u]); - scalar phi = 0.5 * (g._edges_1[i1] + g._edges_1[i1 + 1u]); + scalar r = 0.5_scalar * (g._edges_0[i0] + g._edges_0[i0 + 1u]); + scalar phi = 0.5_scalar * (g._edges_1[i1] + g._edges_1[i1 + 1u]); std::string global_id = "g = ["; global_id += std::to_string(ig++) + std::string("]"); std::string local_id = "l = ["; diff --git a/tests/meta/seeds.cpp b/tests/meta/seeds.cpp index d02121d..28974fa 100644 --- a/tests/meta/seeds.cpp +++ b/tests/meta/seeds.cpp @@ -32,11 +32,11 @@ TEST(proto, seeds_single_xy) { } point3 origin = {0., 0., 0.}; - scalar oot = 1. / std::sqrt(3.); + scalar oot = 1._scalar / std::sqrt(3._scalar); point3 direction = {oot, oot, oot}; scalar radius = 100.; scalar o = 1.; - std::array phi_range = {-0.1, 0.35 * M_PI}; + std::array phi_range = {-0.1_scalar, 0.35_scalar * pi}; proto::trajectory trj = test::generate_helix( origin, direction, radius, o, phi_range, 100); trj._origin_size = 0.; @@ -46,12 +46,12 @@ TEST(proto, seeds_single_xy) { trj._path_arrow = style::marker{"<<", 3., style::color{{0, 255, 0}}}; proto::seed seed; - scalar s0x = 30. * std::cos(0.3 * M_PI); - scalar s0y = 30. * std::sin(0.3 * M_PI); - scalar s1x = 50. * std::cos(0.33 * M_PI); - scalar s1y = 50. * std::sin(0.33 * M_PI); - scalar s2x = 70. * std::cos(0.365 * M_PI); - scalar s2y = 70. * std::sin(0.365 * M_PI); + scalar s0x = 30._scalar * std::cos(0.3_scalar * pi); + scalar s0y = 30._scalar * std::sin(0.3_scalar * pi); + scalar s1x = 50._scalar * std::cos(0.33_scalar * pi); + scalar s1y = 50._scalar * std::sin(0.33_scalar * pi); + scalar s2x = 70._scalar * std::cos(0.365_scalar * pi); + scalar s2y = 70._scalar * std::sin(0.365_scalar * pi); seed._space_points = {point3{s0x, s0y, 0.}, point3{s1x, s1y}, point3{s2x, s2y, 0.}}; diff --git a/tests/meta/surface_materials.cpp b/tests/meta/surface_materials.cpp index b69300b..06ea053 100644 --- a/tests/meta/surface_materials.cpp +++ b/tests/meta/surface_materials.cpp @@ -73,7 +73,7 @@ TEST(proto, surface_material_r_phi) { grid._edges_0 = {10, 25, 50, 75, 100, 125, 150}; grid._edges_1 = {}; for (unsigned int i = 0; i < 41; ++i) { - grid._edges_1.push_back(-M_PI + i * M_PI / 20.); + grid._edges_1.push_back(-pi + i * pi / 20._scalar); } // Make a material matrix - with some sparice rows diff --git a/tests/meta/surface_sheet.cpp b/tests/meta/surface_sheet.cpp index 9100dfc..d7b5550 100644 --- a/tests/meta/surface_sheet.cpp +++ b/tests/meta/surface_sheet.cpp @@ -151,7 +151,7 @@ TEST(display, sheet_wedge) { proto::surface wedge; wedge._type = proto::surface::type::e_disc; wedge._radii = {0., 30.}; - wedge._opening = {-0.1, 0.7}; + wedge._opening = {-0.1_scalar, 0.7_scalar}; wedge._measures = {0., 30., 0.8}; svg::object surface_sheet = @@ -171,7 +171,7 @@ TEST(display, sheet_sector) { proto::surface sector; sector._type = proto::surface::type::e_disc; sector._radii = {10., 30.}; - sector._opening = {1.0, 1.7}; + sector._opening = {1.0, 1.7_scalar}; sector._measures = {10., 30., 0.7}; svg::object surface_sheet = @@ -190,13 +190,23 @@ TEST(discplay, sheet_annulus) { proto::surface annulus; annulus._type = proto::surface::type::e_annulus; - annulus._vertices = { + + auto convert = + [](const std::array& in) -> std::array { + return {static_cast(in[0]), static_cast(in[1]), + static_cast(in[2])}; + }; + + std::vector> raw = { {4.00364, 3.67003, 0.}, {3.82937, 4.28028, 0.}, {3.60204, 4.87282, 0.}, {3.32341, 5.44303, 0.}, {2.99565, 5.9865, 0.}, {2.62131, 6.49899, 0.}, {2.20329, 6.97652, 0.}, {1.74484, 7.41539, 0.}, {2.9259, 12.4347, 0.}, {3.95183, 11.7812, 0.}, {4.90633, 11.0272, 0.}, {5.77959, 10.1804, 0.}, {6.56264, 9.24955, 0.}, {7.24743, 8.24421, 0.}, {7.82692, 7.17472, 0.}}; + std::transform(raw.begin(), raw.end(), + std::back_inserter(annulus._vertices), convert); + annulus._measures = {7.2, 12.0, 0.74195, 1.33970, 0., -3., 2.}; // Focus on the sheet diff --git a/tests/meta/surfaces.cpp b/tests/meta/surfaces.cpp index 961942b..4b65c7f 100644 --- a/tests/meta/surfaces.cpp +++ b/tests/meta/surfaces.cpp @@ -91,7 +91,7 @@ TEST(proto, rectanglular_subtracted_surface) { TEST(proto, rectanglular_surfaces_at_phi_poles) { - scalar d_phi = 0.23; + scalar d_phi = 0.23_scalar; point3_container around_0_vertices = { {70., static_cast(70. * std::sin(d_phi)), -100.}, {70., static_cast(70. * std::sin(-d_phi)), -100.}, @@ -347,7 +347,7 @@ TEST(proto, sector_cylinder) { proto::surface sector_cylinder; sector_cylinder._radii = {0., 150.}; - sector_cylinder._opening = {-0.2, 0.5}; + sector_cylinder._opening = {-0.2_scalar, 0.5}; sector_cylinder._zparameters = {10., 200}; sector_cylinder._name = "sectoral cylinder surface"; sector_cylinder._type = proto::surface::type::e_cylinder; @@ -416,9 +416,9 @@ TEST(proto, annulus_surface) { scalar min_radius = 120.; scalar max_radius = 190.0; - scalar min_phi = 0.74195; - scalar max_phi = 1.33970; - scalar avg_phi = 0.5 * (min_phi + max_phi); + scalar min_phi = 0.74195_scalar; + scalar max_phi = 1.33970_scalar; + scalar avg_phi = 0.5_scalar * (min_phi + max_phi); scalar center_x = -20.; scalar center_y = 20.; diff --git a/tests/meta/trajectories.cpp b/tests/meta/trajectories.cpp index e7194e7..c9417e4 100644 --- a/tests/meta/trajectories.cpp +++ b/tests/meta/trajectories.cpp @@ -26,11 +26,11 @@ TEST(proto, helix_trajectory) { views::x_y xy_view; point3 origin = {0., 0., 0.}; - scalar oot = 1. / std::sqrt(3.); + scalar oot = 1._scalar / std::sqrt(3._scalar); point3 direction = {oot, oot, oot}; scalar radius = 100.; scalar o = 1.; - std::array phi_range = {-0.1, 0.75 * M_PI}; + std::array phi_range = {-0._scalar, 0.75_scalar * pi}; proto::trajectory trj_p = test::generate_helix( origin, direction, radius, o, phi_range, 100); trj_p._origin_size = 5.; @@ -42,7 +42,7 @@ TEST(proto, helix_trajectory) { display::trajectory("helix_xy_polyline_p", trj_p, xy_view); proto::trajectory trj_n = test::generate_helix( - origin, direction, 1.5 * radius, -o, phi_range, 100); + origin, direction, 1._scalar * radius, -o, phi_range, 100); trj_n._origin_size = 5.; trj_n._origin_fill = defaults::__g_fill; trj_n._origin_stroke = style::stroke{style::color{{0, 0, 0}}, 1.5}; diff --git a/tests/meta/volume.cpp b/tests/meta/volume.cpp index 5189a2c..fc90299 100644 --- a/tests/meta/volume.cpp +++ b/tests/meta/volume.cpp @@ -73,10 +73,10 @@ TEST(proto, cylindrical_volume) { v._portals = {nec, c, pec}; // Set up the volume parameters - v._bound_values = {0., 40., 0., 400., M_PI, 0.}; + v._bound_values = {0., 40., 0., 400., pi, 0.}; v._type = decltype(v)::type::e_cylinder; v._fill._fc._rgb = {0, 0, 0}; - v._fill._fc._opacity = 0.1; + v._fill._fc._opacity = 0.1_scalar; // Test the volume in x-y view svg::object v_xy = display::volume("cylinder_volume", v, views::x_y{}); @@ -100,7 +100,7 @@ TEST(proto, cylindrical_volume) { rstream.close(); style::color red({{255, 0, 0}}); - red._opacity = 0.1; + red._opacity = 0.1_scalar; std::vector volumeColors = {red}; v.colorize(volumeColors); @@ -121,7 +121,7 @@ TEST(proto, cylindrical_volume) { proto::surface s_nec_sect; s_nec_sect._type = proto::surface::type::e_disc; s_nec_sect._radii = {10., 110.}; - s_nec_sect._opening = {-0.25 * M_PI, 0.25 * M_PI}; + s_nec_sect._opening = {-0.25 * pi, 0.25 * pi}; s_nec_sect._zparameters = {-400., 0.}; s_nec_sect._fill = __nn_fill; @@ -136,7 +136,7 @@ TEST(proto, cylindrical_volume) { proto::surface s_pec_sect; s_pec_sect._type = proto::surface::type::e_disc; s_pec_sect._radii = {10., 110.}; - s_pec_sect._opening = {-0.25 * M_PI, 0.25 * M_PI}; + s_pec_sect._opening = {-0.25 * pi, 0.25 * pi}; s_pec_sect._zparameters = {400., 0.}; s_pec_sect._fill = __nn_fill; @@ -152,7 +152,7 @@ TEST(proto, cylindrical_volume) { proto::surface s_ci_sect; s_ci_sect._type = proto::surface::type::e_cylinder; s_ci_sect._radii = {10.}; - s_ci_sect._opening = {-0.25 * M_PI, 0.25 * M_PI}; + s_ci_sect._opening = {-0.25 * pi, 0.25 * pi}; s_ci_sect._zparameters = {0., 400.}; // Assign the surface & link to self @@ -166,7 +166,7 @@ TEST(proto, cylindrical_volume) { proto::surface s_co_sect; s_co_sect._type = proto::surface::type::e_cylinder; s_co_sect._radii = {110.}; - s_co_sect._opening = {-0.25 * M_PI, 0.25 * M_PI}; + s_co_sect._opening = {-0.25 * pi, 0.25 * pi}; s_co_sect._zparameters = {0., 400.}; // Assign the surface & link to self @@ -221,10 +221,10 @@ TEST(proto, cylindrical_volume) { co_sect, neg_sect, pos_sect}; // Set up the volume parameters - v_sect._bound_values = {10., 110., 0., 400., 0.25 * M_PI, 0.}; + v_sect._bound_values = {10., 110., 0., 400., 0.25 * pi, 0.}; v_sect._type = decltype(v_sect)::type::e_cylinder; v_sect._fill._fc._rgb = {0, 0, 255}; - v_sect._fill._fc._opacity = 0.1; + v_sect._fill._fc._opacity = 0.1_scalar; // Test the volume in x-y view svg::object v_xy_sect = diff --git a/tests/meta/wire_chamber.cpp b/tests/meta/wire_chamber.cpp index 8caada0..d4c44df 100644 --- a/tests/meta/wire_chamber.cpp +++ b/tests/meta/wire_chamber.cpp @@ -41,9 +41,9 @@ std::vector> wire_chamber( std::vector> wires; // packing in r and offset in y & length in x - scalar r_pack = r_tube * std::sqrt(3.); + scalar r_pack = r_tube * static_cast(std::sqrt(3.)); scalar c_y = (n_layers % 2) ? -(n_layers - 1) / 2 * r_pack - : -(n_layers / 2 - 0.5) * r_pack; + : -(n_layers / 2 - 0.5_scalar) * r_pack; scalar m_lx = (2 * n_tubes + 1) * r_tube; for (unsigned int il = 0u; il < n_layers; ++il) { // positioningin y @@ -51,7 +51,7 @@ std::vector> wire_chamber( scalar offset_x = (il % 2) * r_tube; for (unsigned it = 0u; it < n_tubes; ++it) { // The x position - scalar t_x = -0.5 * m_lx + (2 * it + 1) * r_tube + offset_x; + scalar t_x = -0.5_scalar * m_lx + (2 * it + 1) * r_tube + offset_x; // Creat a wire proto::surface wire; wire._radii = {1., r_tube}; @@ -137,7 +137,7 @@ TEST(proto, wire_chamber_with_track) { // Track start point2 start = {-200, -300}; - scalar alpha = 1.3; + scalar alpha = 1.3_scalar; for (const auto& s : all_wires) { // Collect the wire positions