Releases: celeritas-project/celeritas
Version 0.6.0
Version 0.6.0 is a major update to Celeritas featuring:
- High-level integration utilities for Geant4 applications
- Optical physics implementation including volumetric physics
- Advanced field mapping capabilities with 3D cylindrical and cartesian field maps and volume-specific uniform fields
- Extended geometry conversion and optimization-oriented features for ORANGE
- Support for VecGeom 2.0
- Spline interpolation for cross-section calculations and energy loss
A few minor features are noteworthy:
- Improved debugging utilities for diagnosing stuck/errored tracks
- Support for sensitive detectors in replica/parameterized volumes
- Better handling of tracks that fail or get stuck during simulation
Notable bug fixes include:
- Fixed navigation and mapping of reflecting volumes for VecGeom
- Resolved crashes related to process construction and memory access
- Fixed issues with GDML file loading and SD hit scoring
- Fixed Urban MSC scattering distribution (backported to v0.5.3)
Some interfaces have been removed:
- Obsolete demonstration apps and celer-dump-data
- Macro setup from celer-g4
- The ability to run on the default stream
Known deficiencies:
- Surface optical physics (reflection, refraction) is not yet implemented
- ORANGE performance is significantly degraded compared to v0.5
Changes since v0.5.0, excluding those released in v0.5.3, follow.
New features
- Add optical "locate vacancies" and pre-step actions (@amandalund, #1441)
- Extend debug utilities for stuck/errored tracks (@sethrj, #1451)
- Add CELER_NONFATAL_FLUSH to cleanly kill stuck tracks (@sethrj, #1455)
- Add optical absorption model with imported data (@hhollenb, #1440)
- Add multilevel "volume instance" (@sethrj, #1461)
- Reconstruct Geant4 navigation history from stack (@sethrj, #1466)
- Add "cut" for individual track steps (@sethrj, #1467)
- Improve error checking and diagnostic output for managing GPU (@sethrj, #1464)
- Add distance-to-bbox function (@elliottbiondo, #1446)
- Add multi-level state to detector step result (@sethrj, #1471)
- Override and save Geant4 dataset variables at configure time (@pcanal, #1475)
- Implement spline interpolation for cross-section calculation (@lebuller, #1444)
- Implement optical Rayleigh model (@hhollenb, #1469)
- Allow core and optical loops to have different numbers of track slots (@amandalund, #1491)
- Add muon decay interactor (@stognini, #1456)
- Add option to use spline-interpolated energy loss (@lebuller, #1496)
- Add option to use spline-interpolated energy loss (@lebuller, #1496)
- Add an Optical WLS (@whokion, #1507)
- Add muon pair production (@amandalund, #1518)
- Extend BIH capabilities for intersection operations (@elliottbiondo, #1479)
- Add along-step and tracking cut optical executors (@sethrj, #1540)
- Enable optical stepping loop (@sethrj, #1546)
- Simplify UnitProto after building a CsgUnit (@esseivaju, #1415)
- Implement device bitset (@esseivaju, #1547)
- Reduce
celer-sim
memory usage and improve itsCELER_LOG
transport output (@stognini, #1550) - Support sense caching for future lazy evaluation (@esseivaju, #1539)
- Support building infix logic representation (@esseivaju, #1530)
- Import and use muon+hadron EM physics parameters (@amandalund, #1581)
- Extend Coulomb scattering to support additional particle types (@amandalund, #1574)
- Add optical model importer and refactor imported optical materials (@hhollenb, #1520)
- Add global Celeritas input definition (@sethrj, #1562)
- Always select at-rest process for stopped tracks (@amandalund, #1592)
- Use BIH to accelerate background_intersect (@elliottbiondo, #1599)
- Add ultra-simple tracking manager integration (@sethrj, #1609)
- Implement cubic spline interpolation (@amandalund, #1607)
- Add a calculator to integrate range from energy loss (@amandalund, #1544)
- Add G4Ellipsoid without bottom/top cuts (@elliottbiondo, #1617)
- Add safety visualization tool (@sethrj, #1614)
- Remove pointers from Geant4 labels (@sethrj, #1620)
- Add high-level user/fast sim integration helpers (@sethrj, #1615)
- Support spline interpolation on a nonuniform grid (@amandalund, #1625)
- Prune primaries that start outside the world volume (@sethrj, #1624)
- Add support for Z cuts when converting G4Solids (@elliottbiondo, #1638)
- Support sensitive detectors in replica/parameterized volumes (@sethrj, #1649)
- Add an option to enable status checker through celer-sim (@sethrj, #1650)
- Add support for elliptical cylinders and elliptical cones in orange and g4org (@elliottbiondo, #1642)
- Support post-step touchable location and step status (@sethrj, #1653)
- Support surface-based VecGeom 2.x navigator (@mrguilima, #1422)
- Approximate G4Torus using inner/outer bounding cylinders (@elliottbiondo, #1654)
- Support volume-specific uniform field (@amandalund, #1659)
- Implement discrete optical physics (@hhollenb, #1604)
- Add an example user action for gathering statistics on GPU (@sethrj, #1664)
- Add quantity support to FindInterp and template Turn (@sethrj, #1675)
- Support VecGeom 2.0 (@sethrj, #1674)
- Add 3D Cylindrical field map (@esseivaju, #1662)
- Make SB energy limit configurable and partially fix failures when using a single brems model (@amandalund, #1686)
- Add timers to accel integration classes (@amandalund, #1693)
- Use float for field interpolation (@esseivaju, #1684)
- Allow some "required" SetupOptions to be set via Geant4 UI (@sethrj, #1697)
- Support counter with NVTX (@esseivaju, #1702)
- Use programmatic optical counters instead of absurdly verbose printout (@sethrj, #1707)
- Allow G4 applications to query celeritas offload mode (@sethrj, #1711)
- Reduce logging verbosity during Geant4 runs (@sethrj, #1705)
- Improve messages when multiple tracks fail in flight (@sethrj, #1715)
- Estimate scintillation wavelength distribution parameters from tabulated values when only the latter is provided (@amandalund, #1722)
- Add utilities to stabilize downstream use of ORANGE (@sethrj, #1736)
- Expand support for spline interpolation (@amandalund, #1633)
- Add cartesian magnetic field using Covfie (@esseivaju, #1744)
Bug fixes
- Define a "unique event ID" different from event counter (@sethrj, #1447)
- Fix optical import when unused materials are defined (@sethrj, #1449)
- Remove trackid counter from primary (@sethrj, #1448)
- Improve single-event mode in
accel
(@sethrj, #1452) - Fix GDML export messages and geometry-only use case (@sethrj, #1454)
- Fix tracking cut message (@sethrj, #1458)
- Anchor vtables to fix broken dynamic cast in tests (@sethrj, #1474)
- Fix documentation (@sethrj, #1502)
- Fix clang-tidy weekly cron (@esseivaju, #1541)
- Fix multiple
release()
calls to ensure nullptr is not used in process construction (@amandalund, #1612) - Support different grid spacings for cross section data (@amandalund, #1622)
- Fix crash in multithreaded celer-g4 (@amandalund, #1627)
- Fix loading of GDML files with reflection (@sethrj, #1626)
- Fix navigation and mapping of reflecting volumes (@sethrj, #1629)
- Fix reading and writing HepMC3 events (@amandalund, #1635)
- Initialize MPI in high-level integration classes (@sethrj, #1672)
- Fix bremsstrahlung process construction when using only a single model (@amandalund, #1677)
- Lazily fetch volumes for UniformAlongStepFactory (@rahmans1, #1666)
- Fix BoundingZone floating point issue (@elliottbiondo, #1681)
- Fix out-of-bounds memory access in
CylMapField
(@amandalund, #1689) - Fix Geant4 SD hit scoring (@amandalund, #1708)
- Fix field map usage from accel (@sethrj, #1724)
- Fix failures when integral approach is disabled (@amandalund, #1727)
Documentation improvements
- Improve XSCalculator documentation and tests (@sethrj, #1450)
- Require clang-tidy in CI (@esseivaju, #1524)
- Tidy headers (@esseivaju, #1534)
- Run clang-tidy on modified files only (@esseivaju, #1531)
- Build VecGeom in weekly clang-tidy cron (@esseivaju, #1551)
- Document and slightly refactor Bethe-Heitler interactor (@sethrj, #1553)
- Update copyrights (@sethrj, #1560)
- Enable more dependencies in clang-tidy checks (@esseivaju, #1561)
- Fix Doxygen member group formatting (@amandalund, #1567)
- Improve and fix documentation (@sethrj, #1588)
- Add generic geometry test interface to reduce duplication (@sethrj, #1623)
- Improve testing and documentation for VecGeom (@sethrj, #1639)
- Fix rendering of README (@dalg24, #1640)
- Add ORCID to citation (@esseivaju, #1645)
- Improve geometry testing (@sethrj, #1652)
- Move offload template into a celeritas::example namespace (@sethrj, #1663)
- Enable optical GPU tests (@amandalund, #1682)
- Update ROOT data and tests with Geant4 version 11.3.0 (@amandalund, #1687)
- Split EM physics and Geant4 interface into sub-files (@sethrj, #1698)
- Improve doc generation and brems-related documentation (@sethrj, #1701)
- Update Geant4 version to 11.3 in CI build (@amandalund, #1712)
- Add histogram helper class to simplify distribution tests (@amandalund, #1717)
- Add string simplifier helper class for testing (@sethrj, #1719)
- Improve MSC test code coverage (@sethrj, #1723)
- Add quick-start documentation for integrating (@sethrj, #1725)
- Fix pedantic warning in tests (@elliottbiondo, #1730)
- Add authorship guidelines (@sethrj, #1747)
- Support testing nested container equivalence and tweak
Histogram
class (@amandalund, #1753)
Minor internal changes
Version 0.5.3
Version 0.5.3 is a minor update to Celeritas featuring an important physics bugfix
to Urban MSC and additional minor fixes targeting CUDA VecGeom compatibility.
Changes since v0.5.2 follow.
Bug fixes
- Fix OBZ bugs (@elliottbiondo, #1704)
- Fix sampling of angle in Urban MSC model (@amandalund, #1709)
Documentation improvements
- Release v0.5.2 (@sethrj, #1706)
- Add JLSE CMake preset and a few small fixes (@amandalund, #1611)
Minor internal changes
- CUDA RDC: Improve handling of object library and CUDA_RUNTIME_LIBRARY (@pcanal, #1696)
- CUDA RDC: fix static builds (@pcanal, #1699)
- Update to CudaRdcUtils v12 - (@pcanal, #1721)
Reviewers
- Seth R. Johnson (@sethrj): 6
- Amanda Lund (@amandalund): 1
- Soon Yung Jun (@whokion): 1
Full Changelog: v0.5.2...v0.5.3
Version 0.5.2
Version 0.5.2 is a minor update to Celeritas featuring improved diagnostic
output, improved CMake integration for VecGeom+CUDA, and several bug fixes.
New features
- Improve diagnostic output when offloading (@sethrj, #1589)
- Output diagnostic information about core sizes (@sethrj, #1591)
- Simplify and add to system config diagnostics (@sethrj, #1590)
- Add hit manager output diagnostic (@sethrj, #1596)
- Write out optical size diagnostic (@sethrj, #1597)
- Default downstream CUDA/HIP architectures (@sethrj, #1669)
- By default load CudaRdcUtils and print config message (@sethrj, #1676)
- Add Celeritas cmake command wrappers for downstream code (@sethrj, #1678)
Bug fixes
- Set step length and other data in reconstructed tracks (@sethrj, #1595)
- Fix CUDA+VecGeom linking with Ubuntu (@pcanal, #1618)
- Fix link errors with CUDA RDC and
--as-needed
flag (@pcanal, #1661) - Fix
getenv_flag
(@amandalund, #1647) - Fix static builds and CI reporting (@sethrj, #1680)
Documentation improvements
- Add example offloading template (@stognini, #1573)
- Update core advisors (@sethrj, #1598)
- Add comment directing to CMake doc of feature being used (@pcanal, #1619)
- Increase ccache size for asanlite job (@sethrj, #1646)
- Hotfix: remove Ubuntu 20 from CI configuration (@sethrj, #1651)
- Hotfix: prevent vecgeom 2.0 in regular builds (@sethrj, #1655)
- Release v0.5.2 (@sethrj, #1706)
Minor internal changes
- Use external G4VG (@sethrj, #1605)
- Update perfetto to v49.0 (@esseivaju, #1608)
- Flush perfetto TrackEvents (@esseivaju, #1630)
- Add perfetto track counters to accel LocalTransporter (@esseivaju, #1634)
- Rename
EXTERNAL
CMake variable (@sethrj, #1621) - Update externals and enforce G4VG version (@sethrj, #1641)
- Update cmake-git-version (@sethrj, #1643)
- Fix downstream RDC linking and add versioning (@pcanal, #1665)
- Extend CudaRdc compatibility (@pcanal, #1671)
- Update CudaRdcUtils to v3 (@pcanal, #1679)
- Drastically speed up CudaRdcUtils (@pcanal, #1683)
Reviewers
- Seth R. Johnson (@sethrj): 12
- Philippe Canal (@pcanal): 6
- Amanda Lund (@amandalund): 6
- Julien Esseiva (@esseivaju): 4
- Stefano Tognini (@stognini): 1
- Paul Romano (@paulromano): 1
- Ben Morgan (@drbenmorgan): 1
Full Changelog: v0.5.1...v0.5.2
v0.6.0-rc.1
This pre-release will be used for running the Geant4 GPU benchmark problems.
What's Changed
- Store edge bounding boxes on BIH and refactor for upcoming intersection capabilities by @elliottbiondo in #1478
- Improve logger when using either CUDA or MPI by @sethrj in #1482
- Check VecGeom BVH device pointers at setup and run time by @sethrj in #1481
- Implement optical Rayleigh model by @hhollenb in #1469
- Fix unnecessary linking when using VecGeom+CUDA by @pcanal in #1487
- Fix dBVH memcpy size by @esseivaju in #1490
- Fix/standardize multi-level.gdml file and improve debug logging by @sethrj in #1493
- Use canonical loop form with OpenMP by @amandalund in #1492
- Allow core and optical loops to have different numbers of track slots by @amandalund in #1491
- Add muon decay interactor by @stognini in #1456
- Fix linking Athena with VecGeom+CUDA by @pcanal in #1489
- Reconstruct "touchable" using navigation hierarchy by @sethrj in #1495
- Work around RDC-related link errors when +cuda+vecgeom~shared by @esseivaju in #1498
- Move
alongstep
directory to top level by @sethrj in #1499 - Fix redundant move warning by @esseivaju in #1500
- Fix documentation by @sethrj in #1502
- Default SD integration to "true" by @sethrj in #1501
- Add debugging information for app tests by @sethrj in #1504
- Refactor muon bremsstrahlung angular distribution by @amandalund in #1509
- Add FourVector helper functions by @sethrj in #1510
- Define hypotenuse function using fma by @sethrj in #1513
- Add a CI job for c++20 by @esseivaju in #1511
- Fix celer-sim MC truth ROOT output file generation during tests by @stognini in #1515
- Split CeleritasUtils cmake and use VecGeom RDC if available by @sethrj in #1514
- Hotfix: Disable ROCm due to now-unsupported CI OS image by @sethrj in #1521
- Update post-PR workflow to
actions/download-artifact@v4
by @esseivaju in #1523 - Add a helper class for inverse transform sampling by @amandalund in #1525
- Require clang-tidy in CI by @esseivaju in #1524
- Stop CMake from cleaning root test data by @hhollenb in #1516
- Trim export data for unit tests by @sethrj in #1527
- Add CITATION file with CHEP 2024 article by @sethrj in #1529
- Add option to use spline-interpolated energy loss by @lebuller in #1496
- Add an Optical WLS by @whokion in #1507
- Rename Cerenkov to Cherenkov by @amandalund in #1533
- Add muon pair production by @amandalund in #1518
- Update Readme and Contributing doc by @pcanal in #1532
- Tidy headers by @esseivaju in #1534
- Fix hepmc3/macro initialization in celer-g4 by @sethrj in #1535
- Clean up optical mock test data by @hhollenb in #1519
- Run clang-tidy on modified files only by @esseivaju in #1531
- Store a single process-integrated energy loss and range table per particle by @amandalund in #1536
- Add piecewise integrator and CDF utilities by @sethrj in #1537
- Fix clang-tidy weekly cron by @esseivaju in #1541
- Extend BIH capabilities for intersection operations by @elliottbiondo in #1479
- Remove curand performance test by @sethrj in #1543
- Add along-step and tracking cut optical executors by @sethrj in #1540
- Add missing shell setup in README by @pcanal in #1545
- Enable optical stepping loop by @sethrj in #1546
- Simplify UnitProto after building a CsgUnit by @esseivaju in #1415
- Implement device bitset by @esseivaju in #1547
- Build VecGeom in weekly clang-tidy cron by @esseivaju in #1551
- Document and slightly refactor Bethe-Heitler interactor by @sethrj in #1553
- Define precision-agnostic Constant class by @sethrj in #1549
- Adapt bitset word size by @esseivaju in #1554
- Fix accel examples and related CI issues by @sethrj in #1557
- Update copyrights by @sethrj in #1560
- Prepare to update copyrights by @sethrj in #1559
- Update docker and Spack CI by @sethrj in #1555
- Enable more dependencies in clang-tidy checks by @esseivaju in #1561
- Reduce
celer-sim
memory usage and improve itsCELER_LOG
transport output by @stognini in #1550 - Support sense caching for future lazy evaluation by @esseivaju in #1539
- Support building infix logic representation by @esseivaju in #1530
- Update CMake policy by @sethrj in #1563
- Add 'LogicalTrue' functor by @sethrj in #1564
- Fix Doxygen member group formatting by @amandalund in #1567
- Fix unnecessary use of inline constexpr by @sethrj in #1568
- Replace "volid" with "vol_id" throughout ORANGE by @elliottbiondo in #1486
- Compose caching functionality of LazySenseCalculator by @esseivaju in #1569
- Update expected safeties in Vecgeom tests and CMake version range by @mrguilima in #1552
- Add support for Geant4 navigator through offload interface by @sethrj in #1558
- Hotfix: fetch tags manually to fix CI by @sethrj in #1580
- Fix spurious vecgeom warning by @sethrj in #1584
- Import and use muon+hadron EM physics parameters by @amandalund in #1581
- Update Perlmutter env by @esseivaju in #1587
- Add ARM runner to CI by @sethrj in #1585
- Require less ancient CUDA architecture and OpenMP implementation by @sethrj in #1578
- Fix weird edge cases when trying to
find_package(Celeritas)
by @sethrj in #1586 - Propagate code citations into user manual by @sethrj in #1575
- Extend Coulomb scattering to support additional particle types by @amandalund in #1574
- Use lazy sense calculator by @esseivaju in #1576
- Release v0.5.1 by @sethrj in #1577
- Improve and fix documentation by @sethrj in #1588
- Improve diagnostic output when offloading by @sethrj in #1589
- Add optical model importer and refactor imported optical materials by @hhollenb in #1520
- Add example offloading template by @stognini in https://github.com/celeritas-p...
Version 0.5.1
Version 0.5.1 is a minor update to Celeritas featuring:
- Utilities for debugging lost and stuck tracks
- Improved integration support for VecGeom CUDA in frameworks
A few minor features are noteworthy:
- Improved accuracy (decreased verbosity) in navigation history reconstruction
- Add a per-track "maximum steps" cutoff
- Use consistent random number sequences based on non-consecutive Geant4 event ID
Important changes:
- Sensitive detector integration with Geant4 now defaults to "on".
If your problem has no SDs you must must manually disable this feature. - Geant4 environment variables set at configure time will override the
preset data sets in Geant4's cmake installation. These are used for tests only.
Notable bug fixes include:
- Linking Athena with VecGeom+CUDA
- Test fixes for certain new versions of Clang
- Support for Geant4 11.3
New features
- Add optical "locate vacancies" and pre-step actions (@amandalund, #1441)
- Extend debug utilities for stuck/errored tracks (@sethrj, #1451)
- Add CELER_NONFATAL_FLUSH to cleanly kill stuck tracks (@sethrj, #1455)
- Add optical absorption model with imported data (@hhollenb, #1440)
- Add multilevel "volume instance" (@sethrj, #1461)
- Reconstruct Geant4 navigation history from stack (@sethrj, #1466)
- Add "cut" for individual track steps (@sethrj, #1467)
- Improve error checking and diagnostic output for managing GPU (@sethrj, #1464)
- Add distance-to-bbox function (@elliottbiondo, #1446)
- Add multi-level state to detector step result (@sethrj, #1471)
- Override and save Geant4 dataset variables at configure time (@pcanal, #1475)
- Implement spline interpolation for cross-section calculation (@lebuller, #1444)
- Reconstruct "touchable" using navigation hierarchy (@sethrj, #1495)
- Default SD integration to "true" (@sethrj, #1501)
- Add support for Geant4 navigator through offload interface (@sethrj, #1558)
Reviewers: @amandalund (6), @sethrj (4), @pcanal (4), @mrguilima (2), @whokion (1), @stognini (1)
Bug fixes
- Define a "unique event ID" different from event counter (@sethrj, #1447)
- Fix optical import when unused materials are defined (@sethrj, #1449)
- Remove trackid counter from primary (@sethrj, #1448)
- Improve single-event mode in
accel
(@sethrj, #1452) - Fix GDML export messages and geometry-only use case (@sethrj, #1454)
- Fix tracking cut message (@sethrj, #1458)
- Anchor vtables to fix broken dynamic cast in tests (@sethrj, #1474)
- Check VecGeom BVH device pointers at setup and run time (@sethrj, #1481)
- Fix unnecessary linking when using VecGeom+CUDA (@pcanal, #1487)
- Use canonical loop form with OpenMP (@amandalund, #1492)
- Fix linking Athena with VecGeom+CUDA (@pcanal, #1489)
- Fix celer-sim MC truth ROOT output file generation during tests (@stognini, #1515)
- Fix hepmc3/macro initialization in celer-g4 (@sethrj, #1535)
Reviewers: @pcanal (6), @sethrj (4), @amandalund (3), @esseivaju (2)
Documentation improvements
- Improve XSCalculator documentation and tests (@sethrj, #1450)
- Fix/standardize multi-level.gdml file and improve debug logging (@sethrj, #1493)
- Add debugging information for app tests (@sethrj, #1504)
- Refactor muon bremsstrahlung angular distribution (@amandalund, #1509)
- Add a CI job for c++20 (@esseivaju, #1511)
- Hotfix: Disable ROCm due to now-unsupported CI OS image (@sethrj, #1521)
- Update post-PR workflow to
actions/download-artifact@v4
(@esseivaju, #1523) - Trim export data for unit tests (@sethrj, #1527)
- Add CITATION file with CHEP 2024 article (@sethrj, #1529)
- Update Readme and Contributing doc (@pcanal, #1532)
- Add missing shell setup in README (@pcanal, #1545)
- Fix accel examples and related CI issues (@sethrj, #1557)
- Prepare to update copyrights (@sethrj, #1559)
- Update docker and Spack CI (@sethrj, #1555)
- Update CMake policy (@sethrj, #1563)
- Update expected safeties in Vecgeom tests and CMake version range (@mrguilima, #1552)
- Hotfix: fetch tags manually to fix CI (@sethrj, #1580)
- Update Perlmutter env (@esseivaju, #1587)
- Add ARM runner to CI (@sethrj, #1585)
- Propagate code citations into user manual (@sethrj, #1575)
Reviewers: @amandalund (6), @sethrj (6), @pcanal (5), @esseivaju (3), @mrguilima (1)
Minor internal changes
- Give priority to existing environment variables for G4 data location (@pcanal, #1457)
- Define
id_cast
helper function (@sethrj, #1459) - Simplify geometry "volume" interface (@sethrj, #1460)
- Refactor step storage to use aux state (@sethrj, #1465)
- Refactor pinned allocator to reduce need for templates (@sethrj, #1468)
- Tweak Perfetto integration (@sethrj, #1470)
- Escape semicolons in exported CMake variables (@drbenmorgan, #1472)
- Require
CELERITAS_DEBUG
be on to enableCELERITAS_DEVICE_DEBUG
(@amandalund, #1476) - Use kernel launchers instead of macros (@sethrj, #1477)
- Fix missing brace and refactor #1475 (@sethrj, #1480)
- Fix build with latest Geant4 develop (@pcanal, #1484)
- Refactor "touchable updater" that uses a navigator (@sethrj, #1483)
- Improve logger when using either CUDA or MPI (@sethrj, #1482)
- Fix dBVH memcpy size (@esseivaju, #1490)
- Work around RDC-related link errors when +cuda+vecgeom~shared (@esseivaju, #1498)
- Move
alongstep
directory to top level (@sethrj, #1499) - Fix redundant move warning (@esseivaju, #1500)
- Split CeleritasUtils cmake and use VecGeom RDC if available (@sethrj, #1514)
- Stop CMake from cleaning root test data (@hhollenb, #1516)
- Fix spurious vecgeom warning (@sethrj, #1584)
Reviewers: @sethrj (7), @amandalund (6), @pcanal (5), @esseivaju (2), @drbenmorgan (1)
Deprecation and removal
- Delete obsolete demonstration apps (@sethrj, #1463)
- Remove curand performance test (@sethrj, #1543)
- Require less ancient CUDA architecture and OpenMP implementation (@sethrj, #1578)
Reviewers: @amandalund (3), @pcanal (1)
Full Changelog: v0.5.0...v0.5.1
Version 0.5.0
Version 0.5.0 is a major update to Celeritas featuring:
- Numerous performance improvements
- Automatic Geant4-to-ORANGE geometry translation
- Single coulomb scattering process and improved MSC options
- Rasterization using any navigation engine with
celer-geo
Several major new capabilities are at an experimental, proof-of-concept
level of readiness and reach prototype stage during the v0.5 series:
- Optical photon generation and physics
- Muon physics
- High-energy neutron physics
A few minor features are noteworthy:
- Improved error detection and output
- New diagnostic output for slots and steps
- Support for native CLHEP or SI unit systems
- CPU profiling available through Perfetto
- Support for saving and loading offloaded primaries via ROOT
Major infrastructure changes include:
- Nlohmann JSON is now required (downloaded automatically if unavailable)
- SWIG wrappers have been removed
- More granular CMake options are available for threading model and debugging
The release includes the following changes, plus all features and bug fixes
from v0.4.4.
New features
- Add Cerenkov distribution and generator (@amandalund, #1080)
- Add specialized "permutation" transform (@sethrj, #1077)
- Add CSG unit and unit builder (@sethrj, #1079)
- Define unit traits and support arbitrary RZ field map units (@sethrj, #1088)
- Add ScintillationGenerator and related data structures (@whokion, #1086)
- Add bounding box utilities for output and upcoming ORANGE work (@sethrj, #1092)
- Support native CLHEP unit system (@sethrj, #1085)
- Add bounding zone (@sethrj, #1093)
- Support importing optical properties from Geant4 (@amandalund, #1103)
- Reduce number of Geant4 libraries linked in G4VG and elsewhere (@sethrj, #1109)
- Add deduplicating transform inserter (@sethrj, #1112)
- Add Wentzel OK&VI transport cross section calculator (@amandalund, #1116)
- Add convex surface builder (@sethrj, #1113)
- Add Cerenkov pre-generator (@stognini, #1108)
- Add infix string builder (@sethrj, #1121)
- Implement convex regions (@sethrj, #1119)
- Implement second-order convex regions (@sethrj, #1125)
- Add shape and volume builder (@sethrj, #1126)
- Add ORANGE, geocel, and file layout documentation (@sethrj, #1134)
- Add transformed object construction (@sethrj, #1128)
- Add CSG operations on objects (@sethrj, #1130)
- Add transform simplifier (@sethrj, #1131)
- Add JSON output for CSG objects (@sethrj, #1133)
- Add CSG wedge and helper functions (@sethrj, #1142)
- Add neutron elastic scattering physics (@whokion, #1120)
- Add CSG solids (@sethrj, #1137)
- Add a common macroscopic cross section calculator (@whokion, #1145)
- Add "minimal" and "safety plus" Urban MSC step limit algorithms (@amandalund, #1146)
- Import scintillation particle data (@stognini, #1151)
- Add proto-universe and CSG Unit construction (@sethrj, #1148)
- Add utilities for building
UnitInput
fromCsgTree
(@sethrj, #1155) - Import WLS data for optical photons (@stognini, #1165)
- Add Parallelepiped shape (@mrguilima, #1161)
- Add particle scintillation data to
ScintillationParams
; AddScintillationPreGenerator
(@stognini, #1153) - Complete ORANGE construction from CSG objects (@sethrj, #1166)
- Add minimal version of GenTrap (Arb8) shape (@mrguilima, #1171)
- Add sense evaluator for testing (@sethrj, #1168)
- Add additional ObjectInterface and orangeinp helpers (@sethrj, #1174)
- Add conversion of Geant4 transforms and basic solids to ORANGE (@sethrj, #1169)
- Implement G4Sphere conversion (@sethrj, #1177)
- Convert Geant4 logical and physical volumes (@sethrj, #1170)
- Add optical generator data and update pre-generators (@amandalund, #1182)
- Construct proto-universe hierarchy from converted volumes (@sethrj, #1179)
- Add actions and executors for generating optical distribution data (@amandalund, #1184)
- Complete GDML-to-ORANGE geometry converter (@sethrj, #1180)
- Add optical collector for generating scintillation and Cerenkov distribution data (@amandalund, #1173)
- Parse log levels from Geant4 scoped logger (@sethrj, #1189)
- Add neutron inelastic process (@whokion, #1187)
- Add basic raytrace components (@sethrj, #1194)
- Add Windows/Linux no-dependency builds (@sethrj, #1196)
- Add optical track data classes (@sethrj, #1163)
- Add generic CPU/GPU raytracer for rasterizing (@sethrj, #1191)
- Add ORANGE converters for G4Trap and G4GenericTrap (@mrguilima, #1213)
- Add celer-geo app for visualizing geometry (@sethrj, #1201)
- Add ORANGE converter for G4Trd (@mrguilima, #1218)
- Add configure-time
CELERITAS_OPENMP
switch to change threading (@sethrj, #1222) - Make accel "auto flush" threshold configurable (@amandalund, #1231)
- Support twisted sides for the gentrap shape (@mrguilima, #1232)
- Improve transport of single track on CPU (@esseivaju, #1235)
- Add option to specify maximum number of substeps in field propagator (@amandalund, #1236)
- Add custom FTFP BERT physics list with Celeritas EM physics constructor (@amandalund, #1242)
- Add external bounding box to generic trapezoid (@sethrj, #1244)
- Add RootPrimaryGenerator sampler to celer-sim (@stognini, #1228)
- Support combined single and multiple Coulomb scattering (@amandalund, #1230)
- Add support for using the build directory as an installation (@sethrj, #1249)
- Implement polycone (@sethrj, #1247)
- Add polyprism (G4Polyhedra) (@sethrj, #1251)
- Integrate Perfetto as backend for ScopedProfiling (@esseivaju, #1238)
- Import and add nuclear binding energy to isotopes (@whokion, #1258)
- Write converted object and CSG metadata for debugging (@sethrj, #1259)
- Add nuclear zone data (@whokion, #1269)
- Improve HGCal build performance by a factor of 10 using surface hashing (@sethrj, #1183)
- Add auxiliary extensible params and state (@sethrj, #1278)
- Check units in JSON input (@sethrj, #1283)
- Add Wentzel macro xs calculator and fix
a_sq_factor
(@amandalund, #1274) - Implement infix evaluator (@esseivaju, #1286)
- Differentiate "geometry" from "physics" materials in ImportData (@sethrj, #1288)
- Add Bethe-Bloch muon ionization model (@amandalund, #1291)
- Add new track status and support user "initialization" (@sethrj, #1294)
- Add detailed error checking for action sequence behavior (@sethrj, #1303)
- Add debug output for track states (@sethrj, #1304)
- Add "tracking cut" to handle errors and kill tracks (@sethrj, #1311)
- Add Bragg and ICRU73QO ionization models (@amandalund, #1309)
- Detect and gracefully handle ORANGE geometry errors during tracking (@sethrj, #1316)
- Add Regula Falsi root solver (@VHLM2001, #1324)
- Add cascade collider (@whokion, #1326)
- Support degenerate faces for "GenTrap" and rename to GenPrism (@sethrj, #1271)
- Add more root finding algorithms (@VHLM2001, #1333)
- Add color and PNG for future direct raytracing/rasterization (@sethrj, #1336)
- Fix GenPrism surface shapes to match Geant4 (@mrguilima, #1337)
- Add involute surface to support HFIR simulation (@VHLM2001, #1295)
- Add optical collector to celer-sim (@stognini, #1332)
- Add inverse helpers to generic calculator (@sethrj, #1368)
- Improve sincospi availability and implementation (@sethrj, #1364)
- Add oriented bounding zone class to be used for safety distance calculations (@elliottbiondo, #1362)
- Add optical absorption and Rayleigh interactors (@hhollenb, #1317)
- Replace SWIG with JSON (via ROOT export) for data exploration (@sethrj, #1380)
- Optimize track vector data layout for particle types (@amandalund, #1322)
- Add volume-to-material mapping and change import data (@sethrj, #1378)
- Implement operation to simplify negated join on CsgTree (@esseivaju, #1289)
- Add always-on celer-sim diagnostic to count total number of tracks (@amandalund, #1383)
- Reduce default maximum substeps in field propagator (@amandalund, #1384)
- Implement physics constructor for OpticalPhysics (@drbenmorgan, #1348)
- Add skeleton optical core params and launch action (@sethrj, #1386)
- Integrate involute surface into ORANGE construction (@VHLM2001, #1342)
- Add separate configure option for on-device assertions (@sethrj, #1394)
- Extend Mott coefficients to include positrons and higher Z elements (@amandalund, #1395)
- Add action to generate optical primaries from Cerenkov distributions (@amandalund, #1399)
- Store OBZ data during runtime (@elliottbiondo, #1402)
- Add muon EM processes to Celeritas physics list and muon brems/ioni
Process
classes (@amandalund, #1411) - Add action for generating scintillation photons from distributions (@amandalund, #1414)
- Add initial stepping loop to optical offload (@sethrj, #1417)
- Import muon pair production sampling table from Geant4 (@amandalund, #1419)
- Report and annotate test failures in CI (@sethrj, #1421)
- Add optical core track view and launcher (@sethrj, #1424)
- Add Bethe-Bloch model and refactor muon ionization (@amandalund, #1425)
- Fix intermittent CI failures due to corrupt XML (@sethrj, #1431)
- Add
track_order
option to celer-g4 and default to partitioning by charge on GPU (@amandalund, #1433) - Add slot particle diagnostic (@sethrj, #1426)
- Separate ImportOpticalModels from ImportOpticalMaterials (@hhollenb, #1439)
- Add optical track initialization action (@amandalund, #1438)
Reviewers: @sethrj (53), @elliottbiondo (32), @amandalund (25), @whokion (12), @stognini (8), @mrguilima (7), @pcanal (5), @esseivaju (4), @drbenmorgan (3), @hhollenb (1)
Bug fixes
- Change propagation fatal error to be recoverable (@sethrj, #1090)
- Fix position check after propagating *(@amandalund, #1094)...
Version 0.4.4
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
- Support safety and reentrant boundaries for multi-universe ORANGE (@elliottbiondo, #1140)
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
- Fix Spack CI (@sethrj, #1241)
- Hotfix: work around ROCm failures due to Node20 incompatibility (@sethrj, #1305)
- Fix aarch64 compilation and add Grace Hopper preset (@ptheywood, #1277)
Reviewers: @amandalund (1), @sethrj (1)
Full Changelog: v0.4.3...v0.4.4
Version 0.4.3
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
- Fix Moller-Bhahba energy distribution (@amandalund, #1138)
- Fix Geant4 build from 10.5–10.7 and example build for 11.1 onward (@sethrj, #1152)
- Fix missing Werror in build-fast workflow (@sethrj, #1141)
- Fix build error with [email protected] (@amandalund, #1199)
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
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
- Fix celer-g4 primary generator MT reproducibility (@amandalund, #1057)
- Insert SortTrackAction when sorting by particle type (@esseivaju, #1059)
- Fix range constexpr (@sethrj, #1064)
- Ensure reproducibility when using MT Geant4 with Celeritas offloading (@amandalund, #1061)
- Fix conversion of boolean solids when the "left" solid is displaced (@sethrj, #1069)
- Use environment variables to control OpenMP behavior in
celer-sim
(@amandalund, #1073) - Add support for [email protected] (@whokion, #1075)
- Fix CMake for linking CUDA RDC for executables (@pcanal, #1102)
Reviewers: @sethrj (6), @pcanal (1), @amandalund (1)
Documentation improvements
- Include documentation as mandatory CI (@sethrj, #1053)
- Remove deprecated code from v0.4 (@sethrj, #1063)
- Add additional documentation about fields (@sethrj, #1066)
- Update copyrights for 2024 (@sethrj, #1083)
Reviewers: @pcanal (3), @amandalund (2)
Minor internal changes
- Remove extra constructor templates in device ActionLauncher (@esseivaju, #1062)
- Rename
GenericXsCalculator
(@amandalund, #1081) - Add algorithm for difference of squares and move
is_monotonic_increasing()
to utils (@amandalund, #1082) - Clang-format entire repository (@sethrj, #1084)
- Fix link errors in edge cases and restore HIP testing (@sethrj, #1042)
- Fix and avoid including algorithms header for ROOT/CLING (@sethrj, #1087)
- Fix non-sticky CMake options (@sethrj, #1098)
- Add missing include needed in GCC 14 (@hartsw, #1110)
Reviewers: @amandalund (4), @sethrj (3), @pcanal (1)
Full Changelog: v0.4.1...v0.4.2
Version 0.4.1
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
- Write celer-g4 input to output file or screen (@sethrj, #1034)
- Support sorting tracks by particle types (@esseivaju, #1044)
- Improve JSON I/O for celer-g4/sim apps (@sethrj, #1045)
- Support JSON via stdin for celer-g4 (@sethrj, #1048)
- Support using VecGeom without VGDML (@sethrj, #1046)
- Implement jump ahead for XORWOW RNG (@amandalund, #1049)
- Implement offload to Celeritas from Geant4 using G4VTrackingManager hook (@drbenmorgan, #1050)
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
- Update tests to pass with cuRAND (@amandalund, #1052)
Reviewers: @sethrj (1)
Minor internal changes
- Fix Jenkins CI build and ccache use (@sethrj, #1036)
- Update Perlmutter CMake profile and env script (@esseivaju, #1041)
- Fix Jenkins CI (@sethrj, #1038)
- Update cuda build instructions (@esseivaju, #1043)
- Refactor TrackSortUtils (@esseivaju, #1047)
Reviewers: @sethrj (3), @pcanal (2)
Full Changelog: v0.4.0...v0.4.1