Infrastructure

Celeritas is built using modern CMake. It has multiple dependencies to operate as a full-featured code, but each dependency can be individually disabled as needed.

Installation

This project requires external dependencies to build with full functionality. However, any combination of these requirements can be omitted to enable limited development on personal machines with fewer available components.

Component

Category

Description

CUDA

Runtime

GPU computation

Geant4

Runtime

Preprocessing physics data for a problem input

G4EMLOW

Runtime

EM physics model data

HepMC3

Runtime

Event input

HIP

Runtime

GPU computation

nljson

Runtime

Simple text-based I/O for diagnostics and program setup

Open MPI

Runtime

Shared-memory parallelism

ROOT

Runtime

Input and output

SWIG

Runtime

Low-level Python wrappers

VecGeom

Runtime

On-device navigation of GDML-defined detector geometry

Breathe

Docs

Generating code documentation inside user docs

Doxygen

Docs

Code documentation

Sphinx

Docs

User documentation

sphinxbib

Docs

Reference generation for user documentation

clang-format

Development

Code formatting enforcement

CMake

Development

Build system

Git

Development

Repository management

GoogleTest

Development

Test harness

Downstream usage as a library

The Celeritas library is most easily used when your downstream app is built with CMake. It should require a single line to initialize:

find_package(Celeritas REQUIRED CONFIG)

and if VecGeom or CUDA are disabled a single line to link:

target_link_libraries(mycode PUBLIC Celeritas::Core)

Because of complexities involving CUDA Relocatable Device Code, linking when using both CUDA and VecGeom requires an additional include and the replacement of target_link_libraries with a customized version:

include(CeleritasLibrary)
celeritas_target_link_libraries(mycode PUBLIC Celeritas::Core)

Developing

See the Development Guide section for additional development guidelines.