{"id":17222707,"url":"https://github.com/amadio/vecgeom","last_synced_at":"2025-08-02T00:12:26.970Z","repository":{"id":38433855,"uuid":"59431175","full_name":"amadio/vecgeom","owner":"amadio","description":"Fork of https://gitlab.cern.ch/VecGeom/VecGeom","archived":false,"fork":false,"pushed_at":"2023-07-07T06:16:59.000Z","size":26459,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T00:16:51.928Z","etag":null,"topics":["csg","geometry","simd"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amadio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-05-22T19:49:38.000Z","updated_at":"2022-09-15T17:06:17.000Z","dependencies_parsed_at":"2025-04-14T00:16:53.565Z","dependency_job_id":"a71c4556-3f43-4a3f-b9fc-568377dceb0b","html_url":"https://github.com/amadio/vecgeom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/amadio/vecgeom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amadio%2Fvecgeom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amadio%2Fvecgeom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amadio%2Fvecgeom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amadio%2Fvecgeom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amadio","download_url":"https://codeload.github.com/amadio/vecgeom/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amadio%2Fvecgeom/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268316046,"owners_count":24231068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csg","geometry","simd"],"created_at":"2024-10-15T04:06:09.387Z","updated_at":"2025-08-02T00:12:26.934Z","avatar_url":"https://github.com/amadio.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introduction\n\nVecGeom is a geometry modeller library with hit-detection features as needed by particle detector simulation at the LHC and beyond.\nIt was incubated by a Geant-R\u0026D initiative and the motivation to combine the code of Geant4 and ROOT/TGeo into a single,\nbetter maintainable piece of software within the EU-AIDA program. As such it is close in scope to TGeo and Geant4 geometry modellers. Its main features are:\n\n- Build a hierarchic detector geometry out of simple primitives and use it on the CPU or GPU(CUDA)\n- Calculate distances and other geometrical information\n- Collision detection and navigation in complex scenes\n- SIMD support in various flavours:\n  - True vector interfaces to primitives with SIMD acceleration when benefical\n  - SIMD acceleration of navigation through the use of special voxelization or bounding box hierarchies\n- Runtime specialization of objects to improve execution speed via a factory mechanism and use of C++ templates\n- VecGeom also compiles under CUDA\n- Few generic kernels serve many instanteations of various simple or vectored interfaces or the CUDA version.\n\n## Building/Installing VecGeom\n### Requirements\n- [CMake](http://www.cmake.org/) 3.16 or newer for configuration, plus a suitable build tool such as GNU make or Ninja\n- C++ compiler supporting a minimum ISO Standard of 17\n  - The library has been tested to compile with (but is not necessarily limited to):\n    - GCC \u003e= 8\n    - Clang \u003e= 10\n- [VecCore](https://github.com/root-project/veccore) version 0.8.0 or newer\n  - VecGeom can build/install its own copy of VecCore by setting the CMake variable `VECGEOM_BUILTIN_VECCORE` to `ON`\n- _Optional_ \n  - [Vc](https://github.com/VcDevel/Vc) 1.3.3 or newer for SIMD support\n  - [Xerces-C](https://xerces.apache.org/xerces-c/) for GDML support\n  - [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) 11.0 or newer for CUDA support\n    - _An NVidia GPU with sufficient compute capability must be present on the host system_\n    - _It is recommended to use CMake 3.18 or newer for the better native CUDA support_\n\n### Quick Start\n```sh\n$ mkdir build \u0026\u0026 cd build\n$ cmake ..\n$ cmake --build .\n$ cmake --build . --target install\n```\n\n### Build Options\nThe table below shows the available CMake options for VecGeom that may be used to customize the build:\n\n|Option|Default|Description|\n|------|:-----:|-----------|\n|VECGEOM_BACKEND|scalar|Vector backend API to be used|\n|VECGEOM_BUILTIN_VECCORE|OFF|Build VecCore and its dependencies from source|\n|VECGEOM_CUDA_VOLUME_SPECIALIZATION|OFF|Use specialized volumes for CUDA|\n|VECGEOM_DISTANCE_DEBUG|OFF|Enable comparison of calculated distances againt ROOT/Geant4 behind the scenes|\n|VECGEOM_EMBREE|OFF|Enable Intel Embree|\n|VECGEOM_ENABLE_CUDA|OFF|Enable compilation for CUDA|\n|VECGEOM_FAST_MATH|OFF|Enable the -ffast-math compiler option in Release builds|\n|VECGEOM_GDML|OFF|Enable GDML persistency. Requres Xerces-C|\n|VECGEOM_GDMLDEBUG|OFF|Enable additional debug information in GDML module|\n|VECGEOM_INPLACE_TRANSFORMATIONS|ON|Put transformation as members rather than pointers into PlacedVolume objects|\n|VECGEOM_NO_SPECIALIZATION|ON|Disable specialization of volumes|\n|VECGEOM_PLANESHELL|ON|Enable the use of PlaneShell class for the trapezoid|\n|VECGEOM_QUADRILATERAL_ACCELERATION|ON|Enable SIMD vectorization when looping over quadrilaterals|\n|VECGEOM_SINGLE_PRECISION|OFF|Use single precision throughout the package|\n|VECGEOM_USE_CACHED_TRANSFORMATIONS|OFF|Use cached transformations in navigation states|\n|VECGEOM_USE_INDEXEDNAVSTATES|ON|Use indices rather than volume pointers in NavigationState objects|\n|VECGEOM_USE_NAVINDEX|OFF|Use navigation index table and states|\n|VECGEOM_VECTOR|sse2|Vector instruction set to be used|\n\nThe following options are available for enabling, building, and running tests:\n\n|Option|Default|Description|\n|------|:-----:|-----------|\n|BUILD_TESTING|ON|Enable build of tests and integration with CTest|\n|VECGEOM_GEANT4|OFF|Build with support for Geant4 (https://geant4.web.cern.ch)|\n|VECGEOM_ROOT|OFF|Build with support for ROOT (https://root.cern)|\n|VECGEOM_TEST_BENCHMARK|OFF|Enable performance comparisons|\n|VECGEOM_TEST_COVERAGE|OFF|Enable coverage testing flags|\n|VECGEOM_TEST_STATIC_ANALYSIS|OFF|Enable static analysis on VecGeom|\n|VECGEOM_TEST_VALIDATION|OFF|Enable validation tests from CMS geometry|\n\nPlease note that the Geant4 and ROOT options are only for testing and should not be enabled\nin builds for production use. Both Geant4 and ROOT provide their own interfaces for\nuse of VecGeom by their consumers.\n\n## Documentation\n- [Doxygen reference guide](https://lcgapp-services.cern.ch/spi-jenkins/job/VecGeom-Doxygen/doxygen/)\n\n### Note on using VecGeom CUDA Support\nIf VecGeom is built with `VECGEOM_ENABLE_CUDA`, then it is still usable by CPU-only code but\nyou must link your binaries to _both_ the `vecgeom` _and_ `vecgeomcuda` libraries.\n\nIf your code uses VecGeom's CUDA interface in device code or kernels, then it must either:\n\n1. Link _and_ device-link to the `vecgeomcuda_static` target. In CMake, this is automatically handled\n   by, e.g.\n\n   ```cmake\n   find_package(VecGeom)\n   add_executable(MyCUDA MyCUDA.cu)\n   set_target_properties(MyCUDA PROPERTIES CUDA_SEPARABLE_COMPILATION ON)\n   target_link_libraries(MyCUDA PRIVATE VecGeom::vecgeomcuda_static)\n   ```\n\n2. Link to the `vecgeomcuda` shared library, _and_ device-link to the `vecgeomcuda_static` target, e.g.\n   in CMake (only CMake 3.18 and newer):\n\n   ```cmake\n   find_package(VecGeom)\n   add_library(MyCUDA MyCUDA.cu)\n   set_target_properties(MyCUDA PROPERTIES CUDA_SEPARABLE_COMPILATION ON)\n   target_link_libraries(MyCUDA PRIVATE VecGeom::vecgeomcuda)\n   # Requires CMake 3.18 or newer\n   target_compile_options(MyCUDA PRIVATE $\u003cDEVICE_LINK:$\u003cTARGET_FILE:vecgeomcuda_static\u003e\u003e)\n   ```\n\nIt is strongly recommended to use the first option unless you must use shared libraries.\nIt is also the developer's responsibility to handle any further device-linking of `vecgeomcuda`\nusing libraries that may be required if these libraries expose device/kernel interfaces.\n\n## Bug Reports \nPlease report all issues on our [JIRA Issue tracking system](http://sft.its.cern.ch/jira/projects/VECGEOM)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famadio%2Fvecgeom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famadio%2Fvecgeom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famadio%2Fvecgeom/lists"}