Skip to content

Latest commit

 

History

History
204 lines (150 loc) · 6.5 KB

index.rst

File metadata and controls

204 lines (150 loc) · 6.5 KB
.. only:: noconfig

   .. warning::

      This autogenerated documentation is incomplete because it was not built
      with all optional dependencies (breathe, sphinxbib, cmake). Please visit
      the `Celeritas documentation`_ hosted on GitHub pages for the full
      documentation.

      .. _Celeritas documentation: https://celeritas-project.github.io/celeritas/user/index.html

Celeritas

Celeritas is a Monte Carlo particle transport code for simulating High Energy Physics detectors on general purpose GPUs. Motivated by the massive computational requirements of the High Luminosity upgrade to the Large Hadron Collider, the code's initial goal is to accelerate electromagnetic physics simulations of the CMS and ATLAS detectors.

.. only:: html

   :Release: |release|
   :Date: |today|

Introduction

New projects in High Energy Physics (HEP) and upgrades to existing ones promise new discoveries but at the cost of increased hardware complexity and data readout rates. Deducing new physics from detector readouts requires a proportional increase in computational resources. The High Luminosity Large Hadron Collider (HL-LHC) detectors will require more computational resources than are available with traditional CPU-based computing grids. For example, the CMS collaboration forecasts :cite:`2021-CMS-Offline` that when the upgrade is brought online, computational resource requirements will exceed availability by more than a factor of two, about 40% of which is Monte Carlo (MC) detector simulation, without substantial research and development improvements.

Celeritas [1] is a new MC particle transport code designed for high performance simulation of complex HEP detectors on GPU-accelerated hardware. Its immediate goal is to simulate electromagnetic (EM) physics for HL-LHC detectors with no loss in fidelity, acting as a plugin to accelerate existing Geant4 :cite:`Geant4` workflows by "offloading" selected particles to Celeritas to transport on GPU.

[1]This documentation is generated from Celeritas |release|.
.. toctree::
   :maxdepth: 2
   :caption: Getting started

   introduction/overview.rst
   introduction/installation.rst
   introduction/usage.rst

Implementation

.. only:: nobreathe

   .. note:: The breathe_ extension was not used when building this version of
      the documentation. The API documentation will not be rendered below.

   .. _breathe: https://github.com/michaeljones/breathe#readme

The bulk of Celeritas' code is in several code libraries to be used by external users and application developers. Currently, the most stable and user-ready component of Celeritas is its :ref:`api_g4_interface` for offloading. This section has two audiences:

  • high-level developers, particularly those who might want to write a new physics code; and
  • external users of Celeritas as a library for integration into a Geant4 application.

Cursory documentation for many of the classes and other data constructs are described in this user manual, but further details for developers can be found in the full Doxygen-generated developer documentation.

The Celeritas codebase lives under the src/ directory and is partitioned into several libraries of increasing complexity: corecel for GPU/CPU abstractions, geocel for geometry interfaces and wrappers to external libraries, orange for the ORANGE platform-portable geometry implementation, celeritas for the GPU implementation of physics and MC particle tracking, and accel for the Geant4 integration library.

Additional top-level files provide access to version and configuration attributes.

Note

When building Celeritas, regardless of the configured :ref:`dependencies <Dependencies>`, all of the documented API code in corecel, orange, and celeritas (except possibly headers ending in .json.hh, .device.hh, etc.) will compile and can link to downstream code. However, some classes will throw celeritas::RuntimeError if they lack the required functionality.

If Geant4 is disabled, the accel library will not be built or installed, because every component of that library requires Geant4.

.. toctree::
   :maxdepth: 2
   :caption: Implementation details

   implementation/corecel.rst
   implementation/data-model.rst
   implementation/orange.rst
   implementation/units-constants.rst
   implementation/core-physics.rst
   implementation/em-physics.rst
   implementation/optical-physics.rst
   implementation/geant4-interface.rst


Development Guide

The agility, extensibility, and performance of Celeritas depend strongly on software infrastructure and best practices. This section describes how to modify and extend the codebase.

.. toctree::
   :maxdepth: 2
   :caption: Development

   development/contributing.rst
   development/coding.rst
   development/style.rst
   development/testing.rst

Examples

A few standalone codes demonstrate how to use Celeritas as an app and as a library, in independent and Geant4-integrated contexts.

.. todo::
   This section is not yet complete.

.. toctree::
   :maxdepth: 2
   :caption: Examples

   example/minimal.rst
   example/geant4.rst
   example/celer-sim.rst
   example/celer-g4.rst
   example/celer-geo.rst

.. toctree::
   :maxdepth: 2
   :caption: Appendices

   backmatter/acknowledgments.rst
   backmatter/references.rst
   appendix/release-history.rst
   appendix/administration.rst
   appendix/license.rst