Skip to content

Releases: celeritas-project/celeritas

Version 0.2.1

24 Feb 19:59
Compare
Choose a tag to compare

Version 0.2.1

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

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)

Full Changelog: v0.2.0...v0.2.1

Version 0.1.5

20 Feb 14:20
Compare
Choose a tag to compare

Version 0.1.5

Version 0.1.5 corrects several major tracking and physics bugs
in the 0.1.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.

Bug fixes

  • Fix build documentation and issues with newer toolchains (@sethrj, #571)
  • 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 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)

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

Documentation improvements

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

Reviewers: @whokion (1)

Minor internal changes

  • CI: use Geant4 11, C++17, VecGeom 1.2, CUDA 11.8, GCC 11 (@sethrj, #566)
  • CI: add no-debug HIP (ROCM 5.4) build (@sethrj, #569)

Reviewers: @pcanal (1)

Full Changelog: v0.1.4...v0.1.5

Version 0.2.0

11 Jan 15:27
b631eb5
Compare
Choose a tag to compare

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)

Full Changelog: https://github.com/celeritas-project/celeritas/compare/v0.1.4..v0.2.0

Version 0.1.4

10 Jan 19:47
Compare
Choose a tag to compare

This version fixes significant errors in along-step tracking when multiple scattering and/or magnetic fields are in use.

Bug fixes

  • Fix additional failures resulting from direction change on a boundary after crossing (@amandalund, #517)
  • Fix the true path length limit of UrbanMsc (@whokion, #521)
  • Fix field propagation for stuck and long-track particles (@sethrj, #518)
  • Don't slow particles to zero when hitting boundary (@sethrj, #524)
  • Cache multiple scattering range at the first step in a new volume (@whokion, #527)
  • Reset physics state when a secondary is initialized in the parent's track slot (@amandalund, #528)

Version 0.1.3

24 Sep 14:33
Compare
Choose a tag to compare

This patch fixes additional issues with tracking in a magnetic field.

Bug fixes

  • Fix near-infinite loop in field propagation (@sethrj, #511)
  • Allow tracks taking small steps to propagate in field (@amandalund, #513)
  • Fix ability to disable Rayleigh scattering when running demo-loop app
  • Fix failure when changing direction on boundary immediately after crossing (@sethrj, #515)
  • Escape rather than segfault on boundary crossing failure in release mode in ORANGE (@sethrj, #516)

Full Changelog: v0.1.2...v0.1.3

Version 0.1.2

07 Sep 18:42
Compare
Choose a tag to compare

This is a bug-fixing patch that addresses a few outstanding build issues,
targeted at making it easier to run and debug the regression problem suite.

New features

  • Save JSON exception output if demo loop fails by @sethrj in #507

Bug fixes

  • Fix class name conflict, remove default initializers, and tweak field driver @sethrj in #504
  • Fix no-ROOT demo loop for 0.1.x and other summit changes by @sethrj in #508

Full Changelog: v0.1.1...v0.1.2

Version 0.1.1

27 Aug 01:28
531dd91
Compare
Choose a tag to compare

This is a bug-fixing patch that addresses numerous outstanding issues with the transport loop.

New features

  • Filter imported data from Geant4 based on user options by @sethrj in #482
  • Add contributing guide and development docs by @sethrj in #502

Bug fixes

  • Fix uninitialized data access in primary generator by @sethrj in #472
  • Build processes based on exported data by @sethrj in #483
  • NVHPC: silence warnings by @sethrj in #486
  • Bring latest upstream updates to the BVHNavigator by @mrguilima in #484
  • Force disabling of shared libs for VecGeom 1.2.0+ by @sethrj in #489
  • Add minor fixes for UrbanMsc by @whokion in #492
  • Set remaining model lower limits to zero and make sure demo loop runs with integral approach off by @amandalund in #490
  • Fix VecGeomTrack::move_internal assertion failure by @mrguilima in #493
  • Fix clang-14/ROCM build with JSON enabled by @sethrj in #496
  • Better workaround for VecGeom 1.2 crashes by @sethrj in #495
  • Fix imported model microscopic cross sections by @amandalund in #487
  • Fix unintentional MSC enable and some displacement logic by @sethrj in #500
  • Fix unusual errors in field propagation by @sethrj in #499
  • Fix vecgeom boundary state and add more thorough testing by @sethrj in #494
  • Improve static/shared CUDA library choice when linking VecGeom by @pcanal in #497
  • Fix ORANGE reentrant boundary crossings by @sethrj in #501

Internal changes

  • Rewrite field tests by @sethrj in #471
  • Add range-to-step tests and remove min by @sethrj in #479
  • Add unit tests and make minor changes to FieldDriver by @sethrj in #478
  • Unify units in EM interactors/data by @sethrj in #477
  • Add tests for field propagator near boundaries by @sethrj in #480
  • Return one event at a time from EventReader and PrimaryGenerator by @amandalund in #488
  • Infrastructure changes for geo heuristic test by @sethrj in #498

Special thanks to everyone who reviewed code for the above commits!

Full Changelog: v0.1.0...v0.1.1

Version 0.1.0

01 Aug 00:43
04fe945
Compare
Choose a tag to compare

”Initial viable product“ release of Celeritas. This release is focused on unit testing and stabilizing the API for exploratory use by downstream applications and frameworks. Some initial code verification problems (looking at energy and step distributions for simple problems such as TestEM3) are promising, but the code is far from validated.

New features

  • Standard EM physics including multiple scattering and energy loss fluctuations
  • VecGeom for GDML navigation, ORANGE for testing
  • Optional support for offloading to GPU with CUDA and HIP, or running with OpenMP for multithreading
  • Magnetic field support with runtime-swappable field types

Known bugs

  • Magnetic field propagation fails at geometry boundaries in some test problems.
  • Multiple scattering requires more steps than expected compared to Geant4.

Contributors

Thanks to the contributors at Argonne National Lab, Lawrence Berkeley Lab, Fermilab, Oak Ridge National Laboratory, and other collaborating institutions.