Skip to content

Releases: celeritas-project/celeritas

Version 0.4.4

15 Jul 16:39
Compare
Choose a tag to compare

Version 0.4.4 is a bugfix and minor feature update to Celeritas.

  • Correctly sets track weight when integrating with Geant4 SDs
  • Fix ARM build to support Grace Hopper architectures
  • Add a CELER_DEVICE_ASYNC environment variable to fix ROCm 5.7 multithread hang
  • Improve multi-universe support for ORANGE

New features

Reviewers: @sethrj (1)

Bug fixes

  • Fix ORANGE JSON reading and tests (@sethrj, #1164)
  • Set SD track weight and warn if offload weight is not unity (@sethrj, #1270)
  • Set step point weights in addition to track weight (@drbenmorgan, #1281)
  • Add environment variable to disable broken HIP asynchronous allocation (@sethrj, #1318)
  • Fix safety calculation at center of sphere/cyl (@sethrj, #1166)

Reviewers: @elliottbiondo (2), @drbenmorgan (1), @sethrj (1), @esseivaju (1)

Documentation improvements

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

Full Changelog: v0.4.3...v0.4.4

Version 0.4.3

02 May 03:17
Compare
Choose a tag to compare

Released 2024/05/01

Version 0.4.3 is a bugfix and minor feature update to Celeritas.

  • Adds diagnostic output for celer-sim even when not recording all steps
  • Fixes a sampling error for keV electron ionization
  • Builds with ROCm 5.7.1
  • Builds with Geant4 10.5–10.7, 11.1.0

New features

  • Add JSON test comparator to improve testing reliability (@sethrj, #1115)
  • Add spack-based workflow to add all supported Geant4 versions to CI (@sethrj, #1149)
  • Add always-on basic diagnostics to celer-sim (@amandalund, #1214)

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

Bug fixes

Reviewers: @sethrj (2), @whokion (1), @drbenmorgan (1), @amandalund (1)

Documentation improvements

Reviewers: @esseivaju (1)

Full Changelog: v0.4.2...v0.4.3

Version 0.4.2

15 Feb 15:36
Compare
Choose a tag to compare

Version 0.4.2 is a bugfix and minor feature update to Celeritas.

Key enhancements compared to version 0.4.1 are:

  • Full reproducibility of results in Geant4 multithreaded mode
  • A new CELER_KILL_OFFLOAD environment variable that immediately kills EM tracks to help estimate a maximum offloading speedup
  • Support for Geant4-VecGeom conversion of parameterized volumes
  • Support for Geant4 11.2

Important bug fixes:

  • GCC 14 compatibility
  • Support for ROOT-exported GDML booleans

New features

  • Warn and set default threads when OpenMP and Geant4 MT might collide (@sethrj, #1056)
  • Add environment variable to kill Celeritas-supported tracks in Geant4 (@amandalund, #1060)
  • Support Geant4-VecGeom conversion of parameterized volumes (@sethrj, #1071)
  • Save action times on multi-stream CPU celer-sim (@sethrj, #1065)
  • Automatically calculate number of events in apps (@amandalund, #1072)
  • Add option to use CLHEP and SI unit systems instead of Gaussian CGS (@sethrj, #1076)

Reviewers: @amandalund (4), @sethrj (2), @esseivaju (1), @sawenzel (1)

Bug fixes

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

Documentation improvements

Reviewers: @pcanal (3), @amandalund (2)

Minor internal changes

Reviewers: @amandalund (4), @sethrj (3), @pcanal (1)

Full Changelog: v0.4.1...v0.4.2

Version 0.4.1

07 Dec 21:05
c0f4129
Compare
Choose a tag to compare

Released 2023/12/07

Version 0.4.1 is a bugfix and minor feature update to Celeritas, primarily to
support CMSSW integration.

Key enhancements compared to version 0.4.0 are:

  • A new G4VTrackingManager interface to Celeritas from Geant4
  • Support for using a GDML-free VecGeom installation
  • Improved provenance and reporting in JSON output for apps
  • The ability to use stdin/stdout to drive celer-g4 with JSON

Important bug fixes:

  • GeantSimpleCalo can now be used with Celeritas offload enabled.

New features

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

Bug fixes

  • Fix GeantSimpleCalo output when Celeritas is enabled (@sethrj, #1040)
  • Uniquify ROOT file name when output is directed to stdout (@pcanal, #1051)
  • Fix ROOT dictionary paths (@pcanal, #1054)

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

Documentation improvements

Reviewers: @sethrj (1)

Minor internal changes

Reviewers: @sethrj (3), @pcanal (2)

Full Changelog: v0.4.0...v0.4.1

Version 0.4.0

28 Nov 03:39
94391ef
Compare
Choose a tag to compare

Released 2023/11/27

Version 0.4.0 is a major update to Celeritas that focuses on performance and integration with Geant4. It also contains major improvements to the ORANGE navigation engine.

This is the first version of ORANGE that supports GPU neutron transport in SCALE. It is also the first version to fully support integration into ATLAS FullSimLight and CMSSW.

Key enhancements compared to version 0.3.2 are:

  • Addition of the single Coulomb scattering process and Wentzel model
  • Major performance improvements when running Celeritas to accelerate multithreaded Geant4
  • Major performance improvements when using ORANGE
  • A new G4VFastSimulationModel interface to Celeritas for offloading tracks with Geant4 11.1
  • Experimental support for surface-based VecGeom
  • Experimental support for Windows and for single-precision arithmetic

Key changes are:

  • The interface for celer-g4 now takes JSON input and writes JSON output, as the app is to be less of an example and more of a Celeritas front end to Geant4 with support for offloading.
  • The hit output from celer-g4 has been rewritten so that it can be opened in downstream applications that have celeritas in their library path.

New features

Reviewers: @sethrj (38), @elliottbiondo (19), @amandalund (16), @whokion (5), @stognini (2), @hhollenb (1), @drbenmorgan (1), @esseivaju (1), @pcanal (1)

Bug fixes

  • Fix errors when building and loading Celeritas through CMSSW (@sethrj, #821)
  • Divide initializer capacity by number of streams in celer-sim (@amandalund, #824)
  • Fix build errors from Geant4@10 (@drbenmorgan, #830)
  • Fix default combined_brems option to work with multiple-element materials (@sethrj, #837)
  • Fix app/demo-geo-check test failure when using MPI (@stognini, #838)
  • Unify convergence criteria in field driver (@sethrj, #829)
  • Fix minor issues with exceptions (@sethrj, #846)
  • Fix linking errors with CUDA+VecGeom caused by #847 (@pcanal, #856)
  • Fix inconsistencies in Geant4-to-VecGeom boolean conversion (@sethrj, #857)
  • Fix HepMC3 reading of vertices and status codes (@sethrj, #863)
  • Restore "small step updates momentum" condition (part of #875) in field propagator (@sethrj, #882)
  • Fix sampling of secondary gamma energies in EPlusGGInteractor (@whokion, #888)
  • Fix multi-level ORANGE direction change (@tmdelellis, #912)
  • Fix unit conversion errors when reading from event file (@amandalund, #916)
  • Fix Seltzer-Berger max xs for positrons (@amandalund, #922)
  • Fix Geant4 step limiter when ionization is disabled (@amandalund, #920)
  • Fix resetting of CUDA streams when running through accel (@sethrj, #927)
  • Fix uniform field unit conversion (@amandalund, #931)
  • Correctly map HepMC3 events to Geant4 events (@sethrj, #938)
  • Improve and fix Geant4 volume conversion on boundaries (@sethrj, #936)
  • Fix ORANGE multi-level surface crossing (@tmdelellis, #929)
  • Fix ORANGE bounding box bumping to be consistent with tracking tolerances (@sethrj, #940)
  • Fix Geant4 field construction in celer-g4 (@amandalund, #942)
  • Fix accumulated action times in celer-sim (@amandalund, #951)
  • Fix using ORANGE geometry with pointer-appended GDML (@sethrj, #960)
  • Fix performance regression on HIP (@sethrj, #968)
  • Fix uninitialized memory access in TrackInitParams (@amandalund, #974)
  • Run "warmup step" to hide once-off overhead from total run time (@sethrj, #985)
  • Fix linking to CUDA toolkit when using VecGeom (@esseivaju, #989)

Reviewers: @sethrj (15), @amandalund (9), @esseivaju (4), @whokion (2), @mrguilima (1), @stognini (1), @tmdelellis (1)

Documentation improvements

Read more

Version 0.3.2

07 Sep 21:58
Compare
Choose a tag to compare

Released 2023/09/07

Version 0.3.2 is a bug fix release of Celeritas that addresses all
identified discrepancies between Geant4 and Celeritas EM physics processes.
It also should provide better performance when running Celeritas
through Geant4 with many threads sharing the same GPU.

Bug fixes

  • Fix sampling of secondary gamma energies in EPlusGGInteractor (@whokion, #888)
  • Fix unit conversion errors when reading from event file (@amandalund, #916)
  • Fix Seltzer-Berger max xs for positrons (@amandalund, #922)
  • Fix Geant4 step limiter when ionization is disabled (@amandalund, #920)
  • Fix resetting of CUDA streams when running through accel (@sethrj, #927)

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

Documentation improvements

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

Full Changelog: v0.3.1...v0.3.2

Version 0.3.1

05 Aug 14:30
d31a2b8
Compare
Choose a tag to compare

Version 0.3.1 is a bug fix and minor feature release of Celeritas targeted at supporting
experiment frameworks. Key enhancements are:

  • More track and step attributes can be set when calling back to Geant4 sensitive detectors.
  • Offloaded tracks can be exported as a HepMC3 event file.
  • Sensitive detectors callbacks from Celeritas can be disabled with a new macro flag.
  • Linking against Geant4 10.5 is supported.
  • A new diagnostic in celer-g4 prints step distributions from Geant4 CPU execution.

Key fixes:

  • Backward compatibility with Geant4 10.6 is restored.
  • Having multiple MSC models defined in Geant4 prints a warning instead of aborting execution.
  • Initializer capacity in celer-sim is now scaled to be per thread.

New features

Reviewers: @sethrj (10), @amandalund (3), @whokion (3), @hhollenb (1), @drbenmorgan (1)

Bug fixes

  • Fix errors when building and loading Celeritas through CMSSW (@sethrj, #821)
  • Divide initializer capacity by number of streams in celer-sim (@amandalund, #824)
  • Fix build errors from Geant4@10 (@drbenmorgan, #830)
  • Fix default combined_brems option to work with multiple-element materials (@sethrj, #837)
  • Fix app/demo-geo-check test failure when using MPI (@stognini, #838)
  • Unify convergence criteria in field driver (@sethrj, #829)
  • Fix minor issues with exceptions (@sethrj, #846)
  • Fix linking errors with CUDA+VecGeom caused by #847 (@pcanal, #856)
  • Fix inconsistencies in Geant4-to-VecGeom boolean conversion (@sethrj, #857)
  • Fix HepMC3 reading of vertices and status codes (@sethrj, #863)
  • Restore "small step updates momentum" condition (part of #875) in field propagator (@sethrj, #882)

Reviewers: @amandalund (5), @sethrj (4), @whokion (2), @esseivaju (1)

Documentation improvements

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

Minor internal changes

  • Add field template deduction and parameterized test (@sethrj, #820)
  • Improve logger construction and add test helper class (@sethrj, #826)
  • Hotfix: fix warning when building with Geant4@11 (@sethrj, #833)
  • Remove variadic templating from track executor (@sethrj, #832)
  • Refactor hit manager SD mapping (@sethrj, #835)
  • Apply C++ core guidelines for copy/move assignment/construction (@esseivaju, #834)
  • Add screening_factor to ImportEmParameters (@stognini, #840)
  • cmake-rdc: add support for MODULE library. (@pcanal, #848)
  • Add some quality-of-life CMake defaults (@sethrj, #847)
  • Require semicolon for statement-like CELER_X_COPY_MOVE macros (@sethrj, #855)
  • Hotfix: fix duplicate HepMC3 symbols by creating a wrapper function (@sethrj, #865)
  • Fix large function warnings by disabling device debug code by default (@sethrj, #866)
  • Add PolyEvaluator deduction guides (@hhollenb, #871)
  • Add thread-safe assertion to RootStepWriter (@stognini, #873)
  • Export full Celeritas version string as well as defaulted CMake variables (@sethrj, #870)
  • Reuse chord length between successive field advances (@sethrj, #875)
  • Improve polynomial deduction guide (@sethrj, #878)
  • Validate KernelParamCalculator block size using CUDA/HIP function attributes (@esseivaju, #877)

Reviewers: @sethrj (6), @amandalund (5), @drbenmorgan (3), @pcanal (2), @hhollenb (2), @esseivaju (1), @whokion (1)

Full Changelog: v0.3.0...v0.3.1

Version 0.3.0

16 Jun 11:13
c8db3fc
Compare
Choose a tag to compare

Version 0.3.0 is a major new release of Celeritas. Key enhancements are:

  • Full, efficient support for multithreading inside Geant4 apps
  • Improved Geant4 integration, including support for Geant4 11.1
  • Automatic in-memory conversion of Geant4 geometry to VecGeom
  • New diagnostic functionality and quality-of-life improvements
  • Performance improvements

Key changes:

  • "Stuck" tracks are killed after a certain number of steps without an intersection
  • The Urban cross section model is used by default for all energies
  • demo-loop is now celer-sim and is installed alongside the library
  • demo-geant is now celer-g4 and is also installed
  • Building with the C++17 or later is required

New features

  • Add filtering to RootStepWriter (@stognini, #630)
  • Add math operators to Quantity (@sethrj, #658)
  • Disable Geant4+ROOT system signal hooks (@sethrj, #656)
  • ORANGE: find next step across multiple universes (@elliottbiondo, #607)
  • Wrap track extender/initializer functions inside concrete Actions (@drbenmorgan, #664)
  • Read EM processes from G4GammaGeneral (@sethrj, #690)
  • Identify and kill looping tracks (@amandalund, #685)
  • Add StreamId to allow thread-safe data access in Actions (@sethrj, #693)
  • Cross universe boundaries in ORANGE (@elliottbiondo, #684)
  • Import a few more EM parameters from Geant4 (@amandalund, #703)
  • Add UniformAlongStepFactory for Geant4 integration (@sethrj, #702)
  • Add option for ordering and shuffling track slots (@esseivaju, #701)
  • Define SimpleOffload for dead-simple Geant4 integration (@sethrj, #704)
  • Extend Urban MSC to high energy by default (@sethrj, #705)
  • Add an option to apply cuts to all secondaries (@amandalund, #709)
  • Add more output diagnostics from internal classes (@sethrj, #714)
  • Add new capabilities to run CMS with sensitive detectors (@sethrj, #713)
  • Add memory diagnostic (@sethrj, #716)
  • Convert Geant4 geometry to VecGeom in memory (@mrguilima, #557)
  • Create ORANGE RectArrayRecord objects (@elliottbiondo, #718)
  • Add StreamStore for thread-safe storage of states in a params object (@sethrj, #722)
  • Partition tracks by status at the start of each simulation step (@esseivaju, #717)
  • Sort track slots by step limit ActionId (@esseivaju, #727)
  • Add simple calorimeter (@sethrj, #733)
  • Add debugging/profiling utilities (@sethrj, #738)
  • Add an along step action with a RZMapField (@whokion, #736)
  • Add G4LogicalVolume* to VolumeId mapping (@mrguilima, #739)
  • Add ActionDiagnostic, replacing ParticleProcessDiagnostic (@amandalund, #740)
  • Replace demo loop StepDiagnostic with thread-safe version (@amandalund, #746)
  • Improve and add internal utilities before refactoring action interface (@sethrj, #742)
  • Expand GeantPhysicsOptions to encompass all physics processes (@stognini, #744)
  • Output descriptive state on CPU when an offloaded track dies (@sethrj, #752)
  • Use separate along-step kernel for neutral particles for 25% performance boost (@sethrj, #745)
  • Extend and update SWIG wrappers (@sethrj, #767)
  • Add option to throw an exception when ROOT encountered an "error" (@sethrj, #760)
  • Support Geant4 11.1+ (@sethrj, #768)
  • Add begin-of-run interface to initialize states and actions (@sethrj, #769)
  • Support multithreaded CPU using single GPU in demo loop (@amandalund, #774)
  • Support running kernels on different CUDA streams (@amandalund, #777)
  • Rename demo loop/geant to celer-sim and celer-g4 (@sethrj, #779)
  • Implement a Geant4 geometry tracker for comparing with VecGeom (@sethrj, #759)
  • Add RectArrayTracker class (@elliottbiondo, #758)
  • Rename max_num_tracks to num_track_slots and divide by num_streams (@sethrj, #785)
  • Simulate zero cross section for particles without processes (@stognini, #782)
  • Improve logger interaction with Geant4 (@sethrj, #804)
  • Improve stream redirection behavior and logger destination (@sethrj, #815)
  • Add G4ExtrudedSolid conversion (@sethrj, #813)
  • Improve performance of gathering and copying detector step data on device (@amandalund, #814)
  • Extend user-facing app/environment options (@sethrj, #816)
  • Support manual addition/exclusion of volumes in HitManager (@sethrj, #772)

Reviewers: @sethrj (21), @amandalund (19), @pcanal (4), @esseivaju (4), @whokion (4), @stognini (2), @drbenmorgan (1), @mrguilima (1)

Bug fixes

  • Fix MSC cross section units (@sethrj, #644)
  • Fix SWIG and update requirements (@sethrj, #657)
  • Only capture kernel context if corresponding track is alive (@sethrj, #661)
  • Fix hit mapping when using GDML geometry with pointers (@sethrj, #673)
  • Fix small bugs and remove special cases in Urban MSC (@sethrj, #674)
  • Fix imported micro xs when lower energy grid bound is higher than upper bound (@amandalund, #679)
  • Fix unique Geant4/GDML volume names (@amandalund, #680)
  • Fix Collection usage from inside .cu files (@sethrj, #688)
  • Give different streams unique RNG seeds (@sethrj, #696)
  • Fix a few edge cases in field propagation (@amandalund, #700)
  • Fix multithreading in Geant4 and HitManager (@sethrj, #694)
  • Fix SWIG and mac builds (@sethrj, #706)
  • Fix energy deposition for killed looping positrons (@amandalund, #708)
  • Fix minor warning with VecGeom and test failures when JSON is unavailable (@sethrj, #729)
  • Use weak_ptr to fix ActionDiagnostic shared cycle (@sethrj, #748)
  • Fail consistently when trying to track in unsupported volumes (@sethrj, #751)
  • Fix duplicate volume warnings and missing material IDs (@sethrj, #753)
  • Fix conversion of Geant4 reflected shapes (@mrguilima, #761)
  • Remove next-distance caching from geometry and add limited-distance safety search (@sethrj, #776)
  • Fix step limiter when losing all energy over a step (@sethrj, #780)
  • Fix G4VExceptionHandler lifetime and improve exception wrapping (@sethrj, #773)
  • Only use ROOT in celer-g4 when Celeritas uses Geant4 (@drbenmorgan, #798)
  • Fix celer-g4 ROOT PCM load error (@pcanal, #799)
  • Fix UrbanMsc safety edge case (@sethrj, #803)
  • Fix build on Summit (@sethrj, #806)
  • Fix along-step with uniform field on CPU when no MSC (@sethrj, #807)
  • Fix assertion when field driver step has zero error (@sethrj, #808)
  • Fix Bremsstrahlung process construction based on Geant4PhysicsOptions (@stognini, #811)
  • Fix some VecGeom CMS Run 3 issues (@sethrj, #797)
  • Rewrite VecGeom converter to fix mapping issues with reflecting volumes (@sethrj, #812)

Reviewers: @amandalund (12), @sethrj (8), @whokion (4), @pcanal (3), @stognini (1), @drbenmorgan (1), @elliottbiondo (1), @mrguilima (1)

Documentation improvements

  • Add minimal failing test for #620 (@amandalund, #655)
  • Fix documentation links and update celeritas logo (@sethrj, #686)
  • Fix KernelContext Exception test for cases where ThreadId != TrackSlotId (@esseivaju, #695)
  • Improve documentation failure mode when sphinx is unavailable (@sethrj, #712)
  • Reenable and patch up HIP tests (@sethrj, #711)
  • Add documentation about deprecation (@sethrj, #723)
  • Add tests for AlongStepAction with RZMapField (@whokion, #747)
  • Improve documentation and action descriptions (@sethrj, #749)
  • Define virtual geometry interface and improve documentation (@sethrj, #754)
  • Release v0.2.2 (@sethrj, #763)
  • Refactor TrackInitTest and fix when JSON is unavailable (@sethrj, #793)
  • Add new vecgeom tests to emulate CMS run 3 issues (@sethrj, #800)

Reviewers: @amandalund (6), @sethrj (3), @mrguilima (1), @paulromano (1), @stognini (1)

Minor internal changes

  • Remove multiple scattering from Processes (@sethrj, #631)
  • Require C++17 and use a few C++17 features (@sethrj, #633)
  • Auto-write ROOT objects before deleting (@stognini, #610)
  • Refactor import process into multiple import models (@sethrj, #634)
  • Switch from genreflex/xml to rootcling/LinkDef for demo-geant-integration (@pcanal, #636)
  • Disable rootmap file for demo-geant-integration dictionary. (@pcanal, #647)
  • Fix duplicate CMake presets (@sethrj, #660)
  • Differentiate between local and global Volume and Surface Ids within ORANGE (@elliottbiondo, #669)
  • Refactor MSC implementation and add further tests (@sethrj, #641)
  • Use TrackSlotId to index into states (@sethrj, #676)
  • Update CI VecGeom to 1.2.2 (@sethrj, #682)
  • Loosen test tolerances for VecGeom (@sethrj, #681)
  • Update the CMakePreset and env script for building on Zeus (@esseivaju, #689)
  • Index tracks by TrackSlotId (@esseivaju, #678)
  • Fix HIP test failure in field propagation (@sethrj, #697)
  • Use more IIFE, constexpr inline, string_view (@sethrj, #699)
  • Use SoA for SimTrackView state data (@esseivaju, #707)
  • Rename OutputManager to OutputRegistry and add to CoreParams (@sethrj, #710)
  • Move basic grid functionality to corecel (@elliottbiondo, #719)
  • Use independent params and state arguments for actions (@sethrj, #720)
  • Remove universe_types/universe_indices from OrangeInput and rename UnitIndexer (@elliottbiondo, #724)
  • Add more assertions and minor fixes (@amandalund, #730)
  • Move some ROOT files and refactor demo-app input (@sethrj, #728)
  • Move Label to corecel/io (@sethrj, #731)
  • Replace RZ field reader with JSON (@sethrj, #735)
  • Refactor demo-loop into Runner class (@sethrj, #732)
  • Move and rename volume-based magnetic field map classes (@whokion, #725)
  • Allow geometry selection independent of VecGeom being enabled (@sethrj, #726)
  • Decompose along-step GPU kernel for 10% performance boost (@sethrj, #737)
  • Pass host-only classes to actions (@sethrj, #741)
  • Access params/state through global rather than constant memo...
Read more

Version 0.2.2

17 May 02:25
Compare
Choose a tag to compare

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

Reviewers: @amandalund (1)

Minor internal changes

Reviewers: @pcanal (1)

Full Changelog: v0.2.1...v0.2.2

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