Series 0.2

Version 0.2.2

Released 2023/05/16

Version 0.2.2 will be the last release in the v0.2 series and includes a few minor bug fixes. Additional fixes on the v0.3 develop branch require enhancements specific to the new code base, so those were not backported.

Bug fixes

  • Fix hit mapping when using GDML geometry with pointers (@sethrj, #672)

  • Fail fast instead of giving wrong answers for multithreading (@sethrj, #691)

  • Fix a few edge cases in field propagation (@amandalund, #700)

Reviewers: @stognini (1), @amandalund (1), @sethrj (1)

Documentation improvements

  • Reenable and patch up HIP tests (@sethrj, #711)

Reviewers: @amandalund (1)

Minor internal changes

  • Update CI VecGeom to 1.2.2 (@sethrj, #682)

Reviewers: @pcanal (1)

Full Changelog: https://github.com/celeritas-project/celeritas/compare/v0.2.1…v0.2.2

Version 0.2.1

Released 2023/02/24

Version 0.2.1 corrects several major tracking and physics bugs in the 0.2.x series. Notably:

  • Positron annihilation is no longer ignored.

  • The 1 keV standard EM physics cutoff applies to electrons and positrons after slowing down in addition to before, reducing the number of low-energy particles being tracked.

  • Field propagation no longer advances particles to boundaries slightly past their physics path length. This previously produced numerous instances of a coincident boundary crossing plus physics interaction.

  • In high-Z materials, Geant4 produces MSC cross sections for positrons that are not monotonically decreasing with increasing energy (there is a discontinuity around 10 MeV). This behavior previously caused a miscalculation of the step length when slowing down near 10 MeV.

This is also the first release to support Geant4 version 10.6.

Note that many of the changes are the same as those in Version 0.1.5.

New features

  • Add an example of I/O writing sensitive hits to a ROOT file (@whokion, #606)

  • Write particle params to diagnostic output (@sethrj, #612)

  • Provide detailed track and kernel information when CPU exceptions are thrown (@sethrj, #611)

  • Add enum string mapper (@sethrj, #626)

  • Support for geant4 v10.6.3 and Cmake preset for Zeus (@esseivaju, #665)

Reviewers: @amandalund (2), @pcanal (1), @sethrj (1)

Bug fixes

  • Allow invalid volume IDs in ROOT MC truth output (@amandalund, #603)

  • Fix missing Geant4 environment in unit test (@drbenmorgan, #602)

  • Fix missing positron annihilation process and process diagnostic (@amandalund, #625)

  • Fix NaN/assertion when taking extremely small steps in a field (@sethrj, #628)

  • Fix ORANGE intersection along cylinder axis (@sethrj, #627)

  • Fix incorrect Urban MSC path length correction due to discontinuity in positron cross section (@amandalund, #642)

  • Check for unlikely “zero speed” condition (@sethrj, #646)

  • Avoid XS scaling factor > 1 in SBPositronXSCorrector (@stognini, #649)

  • Fix volume mapping and navigation issues found with HGCal prototype (@sethrj, #637)

  • Fix coincident boundary/step created by field propagator (@sethrj, #654)

  • VecGeom/Cuda: set the stack limit to 16K when CELERITAS_DEBUG=ON (@pcanal, #638)

  • Apply electron tracking cut after slowing down in addition to before (@sethrj, #648)

  • Fix Geant4/GDML volume names to get TileCal running (@sethrj, #666)

  • Ignore Geant4 muons and muon processes by default in accel (@sethrj, #667)

Reviewers: @sethrj (6), @whokion (4), @amandalund (3), @stognini (2), @elliottbiondo (1), @mrguilima (1)

Documentation improvements

  • Add new examples and flesh out user documentation (@sethrj, #605)

  • Minor documentation updates (@sethrj, #622)

  • Characterize and remove field driver convergence assertions (@sethrj, #650)

  • Document available physics processes and models (@drbenmorgan, #653)

  • Release v0.1.5 (@sethrj, #663)

Reviewers: @amandalund (3), @whokion (1), @sethrj (1)

Minor internal changes

  • Remove MSC data from core physics class (@sethrj, #604)

  • Update crusher environment to use AMD LLVM compilers (@sethrj, #609)

  • Support linking to Geant4 static libraries (@drbenmorgan, #623)

  • Refine ImportProcess enums and importing code (@sethrj, #624)

  • Use ProcessBuilder for ROOT and Geant4 tests (@sethrj, #629)

  • Activate fine-grid MSC test and make GeantImporter less verbose (@sethrj, #645)

Reviewers: @amandalund (3), @whokion (1), @sethrj (1), @stognini (1)

Version 0.2.0

Release date: 2023/01/11

Version 0.2.0 enables new coupled integration between Celeritas and Geant4 using the Acceleritas interface library. It features new ROOT output capabilities including MC truth output, a set of high-level API classes for integrating into existing Geant4 toolkit-based apps, and better support for multithreaded use.

New features

  • Export SB, Livermore PE, and atomic relaxation data to ROOT file (@stognini, #481)

  • Refactor ORANGE input to be more extensible (@sethrj, #510)

  • Make primary generator more general (@amandalund, #514)

  • Support arbitrary user/internal kernels as part of stepping loop (@sethrj, #525)

  • Improve CMake version/host metadata (@sethrj, #529)

  • Baby steps toward Geant4 integration (@sethrj, #531)

  • Add “background” volume support to ORANGE (@sethrj, #530)

  • Build Livermore/SB data from ImportedData (@sethrj, #535)

  • Load and build multiple universes in ORANGE (@elliottbiondo, #534)

  • Support adding primaries at any step in the transport loop (@amandalund, #542)

  • Add basic step collector (@sethrj, #544)

  • Add finer granularity to step collector (@sethrj, #549)

  • Add a Celeritas handler for ROOT Error (messages) (@pcanal, #552)

  • Enable resizing of CUDA malloc heap to fix VecGeom failures (@mrguilima, #554)

  • Add detector mapping and filtering to hit collector (@sethrj, #555)

  • Add helper class for extracting detector hits to CPU (@sethrj, #559)

  • Add initialization of particles in multi-universe ORANGE geometries (@elliottbiondo, #546)

  • Add upper_bound functions to corecel/math (@elliottbiondo, #565)

  • Add ROOT MC truth output (@stognini, #564)

  • Handle exceptions from inside OpenMP parallel pragmas (@sethrj, #563)

  • Add skeleton classes for Celeritas/Geant4 integration (@sethrj, #567)

  • Add thread-local transporter and Celeritas shared params setup to Acceleritas (@amandalund, #575)

  • Set initial values of SetupOptions parameters from GlobalSetup (@mrguilima, #576)

  • Add Geant4 Exception converter (@sethrj, #580)

  • Convert Thrust exceptions to Geant4 (@sethrj, #582)

  • Add diagnostic output to geant demo (@sethrj, #583)

  • Auto-export GDML from Geant4 geometry (@sethrj, #585)

  • Support user-defined along-step kernels in accel+demo (@sethrj, #586)

  • Add hit processor to convert Celeritas detector hits to Geant4 (@sethrj, #581)

  • Add HepMC3 reader to demo-geant-integration (@stognini, #578)

  • Add track parent id information to step data (@stognini, #590)

  • Enable all physics in geant demo for true offloading (@sethrj, #591)

  • Add action labels to the ROOT MC truth output file (@stognini, #601)

Reviewers: @sethrj (13), @amandalund (10), @stognini (2), @paulromano (2), @whokion (2), @tmdelellis (1), @pcanal (1), @elliottbiondo (1), @mrguilima (1)

Bug fixes

  • Fix infrastructure and build issues for summit (@sethrj, #509)

  • Fix indexing of imported micro xs (@amandalund, #512)

  • Don’t slow particles to zero when hitting boundary (@sethrj, #524)

  • Fix JSON build issues (@sethrj, #536)

  • Fix library location and configure issues from #526 (@sethrj, #537)

  • Fix thread safety issues in Celeritas (@sethrj, #532)

  • Do not include ROOT’s CMake “use” file to avoid potential nlohmann_json conflicts (@drbenmorgan, #556)

  • Remove calls to host code from host-device Collection (@sethrj, #547)

  • Fix celeritas-gen when run from root directory (@sethrj, #562)

  • Fix and work around some issues on HIP/Crusher (@sethrj, #558)

  • Fix build documentation and issues with newer toolchains (@sethrj, #571)

  • Minor fixes for older Geant4/VecGeom releases (@sethrj, #587)

  • Use Geant4 environment variables to choose run manager and threads (@sethrj, #589)

  • Add backward compatibility for primary generators (@sethrj, #599)

Reviewers: @amandalund (6), @pcanal (4), @sethrj (2), @whokion (2), @elliottbiondo (1), @tmdelellis (1), @paulromano (1)

Documentation improvements

  • Add release procedure, roles, and 0.1.x release notes (@sethrj, #519)

  • Add DOE DOI and improve PR process documentation (@sethrj, #533)

  • Add include-what-you-use script and pragmas (@sethrj, #540)

  • Add a simple SensitiveHit for demo-geant4-integration (@whokion, #579)

  • Add Acceleritas documentation (@sethrj, #595)

  • Update copyrights for 2023 (@sethrj, #598)

Reviewers: @paulromano (2), @amandalund (2), @tmdelellis (1), @pcanal (1), @sethrj (1), @whokion (1)

Minor internal changes

  • Add granularity to Geant setup (@sethrj, #485)

  • Format code base (clang-format version 14.0.6) (@sethrj, #506)

  • Use test sub-namespace instead of celeritas_test (@sethrj, #503)

  • Refactor ORANGE data and simple tracker to support nested universes (@sethrj, #520)

  • Define gauss as internal field strength and use tesla for input (@sethrj, #522)

  • Break library into multiple parts and mirror install tree (@sethrj, #526)

  • Split orange/Types and add Orange prefix to Data (@sethrj, #541)

  • Update CUDA RDC CMake code (@pcanal, #545)

  • Fix git-clang-format hook and code documentation (@sethrj, #568)

  • Change Transport/Stepper interfaces to take span of Primary instead of vector (@paulromano, #572)

  • Refactor geant demo app and accel code (@sethrj, #577)

  • Move HepMC3 reader to accel and make a little more reusable (@sethrj, #593)

  • Rename CELER_TRY_ELSE to CELER_TRY_HANDLE (@sethrj, #594)

  • Update IWYU and apply to codebase (@sethrj, #596)

  • Update clang-format to avoid alignment and use “east const” (@sethrj, #574)

  • Enable debug assertions for HIP (@sethrj, #597)

Reviewers: @amandalund (8), @stognini (2), @sethrj (2), @elliottbiondo (1), @paulromano (1)