Releases: celeritas-project/celeritas
Version 0.6.3
Version 0.6.3 is a minor bug fix update.
- Support CUDA 13
- Allow initialization of Geant4 integration before run manager
Changes since v0.6.2 follow.
New features
- Add pre-commit spell checking (@sethrj, #1867)
- Loosen restrictions and catch errors in
accelinitialization order (@sethrj, #1978) - Fail at runtime rather than link time for G4 10 with tracking manager integration (@sethrj, #1932)
Bug fixes
- Prevent build.sh exiting if pre-commit not found at start (@drbenmorgan, #2026)
- Enable celeritas to build with CUDA 13 (@LSchwiebert, #2067)
Documentation improvements
- Improve instructions and build script for developers getting started (@sethrj, #2003)
- Minor fixes for optical+ORANGE documentation (@sethrj, #2052)
- Refactor Geant4 launching macros into a reusable script (@sethrj, #1924)
- Release v0.6.3 (@sethrj, #2126)
Minor internal changes
- Update build script with best practices (@sethrj, #2106)
- Add ExCL H100 environment (@sethrj, #2107)
- Update CMake requirements (@sethrj, #1992)
Reviewers
- Amanda Lund (@amandalund): 4
- Philippe Canal (@pcanal): 4
- Seth R. Johnson (@sethrj): 3
- Rashika Gupta (@Rashika-Gupta): 2
- Greg Davidson (@davidsgr): 1
- Elliott Biondo (@elliottbiondo): 1
- Stefano Tognini (@stognini): 1
Full Changelog: v0.6.2...v0.6.3
Version 0.6.2
Version 0.6.2 is a minor bug fix update.
- Fixed reconstruction of track weights in returned Geant4 hits
- Improved documentation and use of
CELER_USE_PROFILING - Added push/flush profiling counters in accel interface
- Update externals to latest versions (including G4VG 1.0.5 with VecGeom/CUDA fix)
Changes since v0.6.1 follow.
New features
- Warn user when running large problems on debug build (@sethrj, #1971)
- Improve version metadata for built-in packages and VecGeom (@sethrj, #1929)
Bug fixes
Documentation improvements
- Add documentation and use flag for CELER_USE_PROFILING (@sethrj, #1966)
- Fix cache clearing (@sethrj, #1979)
Minor internal changes
- Add push/flush profiling to accel interface (@sethrj, #1968)
- Update externals (@sethrj, #1977)
- Add iostream wrappers for Geant physics options (@sethrj, #1981)
Reviewers
- Philippe Canal (@pcanal): 4
- Amanda Lund (@amandalund): 3
- Rashika Gupta (@Rashika-Gupta): 1
Full Changelog: v0.6.1...v0.6.2
Version 0.6.1
Version 0.6.1 is a minor capability and bug fix update. Geant4-to-ORANGE
conversion has gained new abilities including:
- Support for reflection
- Support for replicated and parameterized volumes
- New shapes including G4ExtrudedSolid, G4GenericPolycone, G4Paraboloid, polar-truncated sphere
- Fixes and improvements to deduplication of general quadric surfaces such as twisted trap faces and ellipsoids
Geant4 integration has improved with:
- Automatic generation of field maps from in-memory G4Field
- Track IDs are now reconstructed when returning hits to Geant4
- Track weights are propagated through Celeritas and returned to Geant4
- Additional data members are reconstructed in hit track/steps to reduce null pointers
- G4VTrackUserInfo and G4VProcess are reconstructed as valid (but not necessarily meaningful) pointers
Code compatibility improvements include:
- Support for CUDA 12.9 and NVCC with cxxstd=20
- Changes to allow GCC's overzealous
-Wmissing-braces(#1863) used by CMSSW - Fixes to include-what-you-use errors that failed newer compilers/c++ libs
- Support for CMake
find_package(Celeritas)multiple times (still discouraged though) - Allow multiple runs when using GPU
- Improved compatibility for Geant4 10
- Improved use of environment variables (now the value of
CELER_DISABLEand others are considered, not just their existence)
Changes since v0.6.0 follow.
New features
- Add default values for track slots and initializer capacity (@amandalund, #1772)
- Complete optical stepping loop (@amandalund, #1792)
- Create IntersectRegion for a convex extruded polygon (@elliottbiondo, #1783)
- Adds Sensitive Detector parameter Class (@lebuller, #1764)
- Print Celeritas configuration options when loading downstream (@sethrj, #1802)
- Make optical
max_step_itersconfigurable and properly reset state after aborting (@amandalund, #1805) - Add reflection to ORANGE (@sethrj, #1807)
- Add options to forcibly disable Cherenkov and scintillation (@amandalund, #1814)
- Add replica+parameterisation support to ORANGE (@sethrj, #1817)
- Add surface normal calculations in GeoTrackView (@hhollenb, #1804)
- Add WLS model class, generator, and executor and support second WLS process (@amandalund, #1816)
- Support configurable WLS reemission time distribution (@amandalund, #1822)
- Add volume params to represent Geant4 volume graph (@sethrj, #1821)
- Full G4ExtrudedSolid support (@elliottbiondo, #1808)
- Read and export Geant4 surface definitions (@sethrj, #1824)
- Add in-situ cartesian field map construction from Geant4 (@esseivaju, #1828)
- Add geometry surface definitions to runtime (@sethrj, #1812)
- Output optical actions (@amandalund, #1836)
- Add polar truncation for sphere shape (@sethrj, #1832)
- Generate optical photons directly into track slots for 2× GPU speedup (@amandalund, #1844)
- Add track weight propagation to secondaries track (@Rashika-Gupta, #1847)
- Reconstruct Geant4 TrackID (@esseivaju, #1837)
- Update HitProcessor test to support non unit weights (@Rashika-Gupta, #1853)
- Add optical primary generator (@amandalund, #1858)
- Add VolumeSurfaceSelector (@hhollenb, #1859)
- Add pre-commit spell checking (@sethrj, #1867)
- Reconstruct G4VTrackUserInfo and G4VProcess (@esseivaju, #1866)
- Allow multiple "activate device" calls if not modifying device (@sethrj, #1938)
- Add TrackProcessor class for reconstructing Geant4 tracks (@esseivaju, #1869)
- Add RevolvedSpecialTrapezoid as a first step towards G4GenericPolycone (@elliottbiondo, #1840)
- Add full support for G4GenericPolycone (@elliottbiondo, #1892)
- Add support for G4Paraboloid (@elliottbiondo, #1893)
- Support discontinuities in nonuniform grid calculator (@sethrj, #1906)
- Use environment variable values if set (@sethrj, #1937)
Bug fixes
- Patch covfie shasum (@esseivaju, #1771)
- Fix table size in physics construction (@amandalund, #1780)
- Fix and refactor maximum cross section energy calculation for integral approach (@amandalund, #1776)
- Support CUDA 12.9 and NVCC with cxxstd=20 (@sethrj, #1787)
- Fix
sincospion device (@amandalund, #1791) - Fix assigning parent ID to track initializer (@amandalund, #1795)
- Fix orange polyhedron orientation and roundoff error (@sethrj, #1806)
- Flush optical tracks at the end of core stepping loop (@amandalund, #1834)
- Reconstruct additional data in G4Track (@sethrj, #1835)
- Add null pointer checks for Geant4 surfaces (@sethrj, #1841)
- Fix counters in optical generator action (@amandalund, #1857)
- Protect Celeritas::G4 CMake target against double creation (@drbenmorgan, #1879)
- Fix oversimplification of simple quadrics (@sethrj, #1897)
- Fix normalization and edge cases on twisted GenPrism faces (@sethrj, #1899)
- Fix weight reconstruction for GeantSd (@sethrj, #1940)
Documentation improvements
- Release v0.6.0 (@sethrj, #1688)
- Add helper for accumulating histograms (@sethrj, #1759)
- Add zenodo citations to celeritas user manual (@sethrj, #1762)
- Require covfie v0.14 (@esseivaju, #1767)
- Replace hand-rolled hooks with pre-commit and CI (@sethrj, #1765)
- Refactor micro xs CDF calculation and add test (@amandalund, #1768)
- Edit user manual and fix PDF build (@sethrj, #1782)
- Document geometry hierarchy and move EM table (@sethrj, #1788)
- Round all floating point numbers in test output to a few digits (@sethrj, #1758)
- Work around a doxy/breathe rendering bug and make some notes internal (@sethrj, #1797)
- Replace EXPECT_VEC_CLOSE with soft comparator (@sethrj, #1819)
- Finish updating copyrights (@amandalund, #1820)
- Update build script and user presets (@sethrj, #1845)
- Detect and use ccache (@esseivaju, #1848)
- Revert one unintentional typo change from #1867 (@pcanal, #1871)
Minor internal changes
- Fail early if find-or-builtin package is missing (@sethrj, #1770)
- Remove
ValueGridBuilders (@amandalund, #1766) - Add ostream support for enums (@amandalund, #1774)
- Add missing typename and const to CartMapField (@esseivaju, #1769)
- Apply pre-commit hooks across repository (@sethrj, #1773)
- Rename logspace to geomspace (@sethrj, #1777)
- Use correct types for physics grids (@amandalund, #1781)
- Add tests and documentation for Tsai nuclear screening functions (@sethrj, #1779)
- Adjust version compatibility for covfie (@sethrj, #1778)
- Simplify nested join nodes (@sethrj, #1784)
- Store hardwired model data by reference (@amandalund, #1785)
- Organize optical directory (@amandalund, #1789)
- Move core track initialization to
CoreTrackView(@amandalund, #1794) - Add make_orthogonal helper function (@sethrj, #1793)
- Move magnetic field retrieval to a helper function (@sethrj, #1798)
- Extend auxiliary data helpers to support aux state data without params (@amandalund, #1799)
- Keep persistent GeantGeoParams for geometry translation (@sethrj, #1796)
- Refactor optical generation to reduce duplication (@amandalund, #1800)
- Move optical photon generation to optical stepping loop (@amandalund, #1803)
- Make Geant4 volume IDs consistent wrt load order (@sethrj, #1809)
- Fix configuring against latest VecGeom with CUDA disabled (@pcanal, #1813)
- Rename SurfaceId in preparation for volume-based surface definitions (@sethrj, #1811)
- Rearrange generic geo test interface (@sethrj, #1818)
- Use variant set for uniform field input (@amandalund, #1826)
- Rename solid angle class (@sethrj, #1825)
- Optimize cosine for turn (@sethrj, #1830)
- Refactor solid Z slab as Truncated object (@sethrj, #1827)
- Use start/stop instead of start/interior for azimuthal wedge (@sethrj, #1831)
- Add surface properties to core and optical params (@amandalund, #1838)
- Add a helper function for launching a CPU kernel with an arbitrary number of threads (@amandalund, #1842)
- Define geometry implementation IDs (@sethrj, #1839)
- Add generator interface and registry (@amandalund, #1849)
- Document and improve build script (@sethrj, #1854)
- Hotfix: revert accidental changes from #1839 (@sethrj, #1856)
- Add volume params to core (@sethrj, #1846)
- Add surface physics map (@sethrj, #1852)
- Begin exposing Cherenkov/optical loop outside of the optical collector (@sethrj, #1861)
- IWYU on some files (@sethrj, #1935)
- Convert to using counterclockwise order for polygons (@elliottbiondo, #1873)
- Delete IPAContextException (@sethrj, #1882)
- Use class constructors rather than initialization for Array to fix CMS (@sethrj, #1887)
- Add RevolvedPolygon class (@elliottbiondo, #1888)
- Define throw helper functions to reduce code bloat and improve performance (@sethrj, #1908)
- Update particle speed calculation to be more robust against round-off error (@amandalund, #1917)
- Add custom error handler to unify G4 exception handlers (@sethrj, #1919)
Deprecation and removal
- Remove combined bremsstrahlung model (@amandalund, #1786)
- Remove SpecialTrapezoid and RevolvedSpecialTrapezoid classes (@elliottbiondo, #1890)
Reviewers
- Seth R. Johnson (@sethrj): 50
- Amanda Lund (@amandalund): 30
- Philippe Canal (@pcanal): 13
- Julien Esseiva (@esseivaju): 9
- Elliott Biondo (@elliottbiondo): 9
- Guilherme Lima (@mrguilima): 4
- Soon Yung Jun (@whokion): 2
- Rashika Gupta (@Rashika-Gupta): 2
- Stefano Tognini (@stognini): 1
- Sakib Rahman (@rahmans1): 1
- Lance Bullerwell (@lebuller): 1
- Hayden Hollenbeck (@hhollenb): 1
Full Changelog: v0.6.0...v0.6.1
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-simmemory usage and improve itsCELER_LOGtransport 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
Histogramclass (@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-neededflag (@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
EXTERNALCMake 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
alongstepdirectory 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@v4by @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-simmemory usage and improve itsCELER_LOGtransport 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_casthelper 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_DEBUGbe 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
alongstepdirectory 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
UnitInputfromCsgTree(@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_OPENMPswitch 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
Processclasses (@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_orderoption 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_ASYNCenvironment 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