Published April 21, 2025 | Version 0.5.3
Software Open

Celeritas 0.5

Description

Version 0.5 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 from CsgTree (@sethrj, #1155)
  • Import WLS data for optical photons (@stognini, #1165)
  • Add Parallelepiped shape (@mrguilima, #1161)
  • Add particle scintillation data to ScintillationParams; Add ScintillationPreGenerator (@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)
  • Workaround missing G4persistency target bug in Geant4 11.2 (@drbenmorgan, #1122)
  • Fix single-precision soft equivalence for plane (@sethrj, #1139)
  • Fix prism orientation in Geant4 ORANGE solid converter (@sethrj, #1193)
  • Fix no-JSON and Windows builds (@sethrj, #1200)
  • Fix Wentzel OK&VI transport cross section (@amandalund, #1202)
  • Fix gentrap orientation (@sethrj, #1206)
  • Fix polar angle sampling and Mott factor in Wentzel distribution (@amandalund, #1212)
  • Fix minor dependency issues (@sethrj, #1219)
  • Fix trapezoid construction for negative phi and older Geant4 (@sethrj, #1227)
  • Propagate parent bounding boxes to ensure objects have finite extents (@sethrj, #1225)
  • Regularize quadric surfaces to deduplicate opposing surfaces (@sethrj, #1237)
  • Fix windows test builds (@sethrj, #1255)
  • Fix Geant4-to-ORANGE transformation conversion (@sethrj, #1257)
  • Fix CSG tree simplification needed by tilecal (@sethrj, #1256)
  • Fix trapezoid construction (@sethrj, #1265)
  • Work around union/polysolid boundaries and fix transformation of explicit daughters (@sethrj, #1264)
  • Use pre-step optical material ID in optical pre-generators (@amandalund, #1297)
  • Fix muon bremsstrahlung energy limits and sampling (@amandalund, #1319)
  • Fix downstream CMake when using CUDA and not included at top level (@esseivaju, #1323)
  • Properly clear state counters and data for reuse (@amandalund, #1367)
  • Fix initialization of geometry state when inserting multiple sets of primaries (@amandalund, #1369)
  • Clear along-step action when track is marked as errored (@amandalund, #1377)
  • Fix Geant4 setup when single Coulomb scattering is enabled (@amandalund, #1392)
  • Improve multithread GPU performance by removing subtle device sync (@amandalund, #1405)
  • Work around GCC 12.3 compiler bugs (@whokion, #1407)
  • Fix construction of single-volume Geant4 with ORANGE and activate examples (@sethrj, #1409)
  • Loosen numerically iffy test tolerance (@esseivaju, #1435)
  • Fix weak vtables causing dynamic_cast error in apple clang 16 (@sethrj, #1436)
  • Test and fix nuclear form factors (@sethrj, #1398)

Reviewers: @sethrj (14), @elliottbiondo (8), @mrguilima (5), @amandalund (2), @pcanal (2), @hhollenb (1), @whokion (1), @esseivaju (1)

Documentation improvements

  • Expand position check test and fix for other unit systems (@amandalund, #1097)
  • Prevent a PR with failed actions from being merged (@sethrj, #1096)
  • Fix unit tests when using SI (@sethrj, #1100)
  • Fix CTest names (@sethrj, #1105)
  • Disable ROCm builds because of constant failures (@sethrj, #1118)
  • Update CI images and workflow actions (@sethrj, #1136)
  • Fix warning about missing low-energy cross sections (@amandalund, #1176)
  • Set global execution timeout for automated testing on Jenkins (@dalg24, #1186)
  • Pin sphinx version to fix documentation build (@sethrj, #1188)
  • Define geometry traits (@sethrj, #1190)
  • Switch ORANGE unit tests to use GDML files (@sethrj, #1181)
  • Add test for assertion messages (@sethrj, #1198)
  • Improve gentrap documentation and fix typos (@mrguilima, #1205)
  • Improve ccache use on github workflows (@sethrj, #1243)
  • Add automatic external fetching for JSON and Googletest (@sethrj, #1253)
  • Refactor CMake test name generation to be based on path (@sethrj, #1261)
  • Add initial set of clang-tidy checks (@esseivaju, #1267)
  • Fix tests for Geant4 11.2 (@sethrj, #1276)
  • Tweak documentation in CoreState (@sethrj, #1279)
  • Update perlmutter build (@esseivaju, #1285)
  • Fix ORANGE docs and ccache-clearing cron job (@sethrj, #1284)
  • Regenerate ROOT files during CI testing (@sethrj, #1287)
  • Improve documentation for physics, RNG, stepping loop (@sethrj, #1298)
  • Fix device test failures (@amandalund, #1307)
  • Refactor muon bremsstrahlung differential cross section calculation and add documentation (@amandalund, #1320)
  • Add git pre-commit hook (@esseivaju, #1329)
  • Add CUDA build instructions (@esseivaju, #1335)
  • Add unit test function wrapper for diagnosing solver convergence (@sethrj, #1331)
  • Fix HepMC3 tests to work with 3.3.0 (@sethrj, #1340)
  • Use spack-based workflow for address sanitizer (@sethrj, #1341)
  • Automatically build and deploy github documentation (@sethrj, #1350)
  • Add optical physics documentation (@sethrj, #1358)
  • Automatically add Zotero publications to project site (@sethrj, #1359)
  • Add Mermaid CSG tree output (@sethrj, #1361)
  • Add documentation for config options, improve unit docs, and use doxygen todos (@sethrj, #1360)
  • Refactor user manual (@sethrj, #1363)
  • Add separate developer doc section to user manual (@sethrj, #1365)
  • Address minor documentation, contract fixes in CelerOpticalPhysics (@drbenmorgan, #1388)
  • Add clang 18 and gcc 14 builds to CI (@sethrj, #1389)
  • Fix documentation deployment (@sethrj, #1408)
  • Hotfix: untested CUDA code in #1424 (@sethrj, #1429)

Reviewers: @amandalund (19), @sethrj (10), @pcanal (5), @esseivaju (5), @stognini (4), @elliottbiondo (1), @drbenmorgan (1)

Minor internal changes

  • Remove unused data from ImportElement/Material (@sethrj, #1089)
  • Refactor Geant4 utilities in preparation for g4vg (@sethrj, #1095)
  • Reorganize geometry wrappers into a new "geocel" directory (@sethrj, #1099)
  • Rename ORANGE construction files (@sethrj, #1106)
  • Split CMake RDC utilities from Celeritas macros (@pcanal, #1104)
  • Fix ORANGE namespaces (@sethrj, #1117)
  • Fix missing explicit instantiations in ORANGE CSB (@sethrj, #1124)
  • Add compile-time consistency check for Celeritas and Geant4 versions (@sethrj, #1123)
  • Transform refactoring (@sethrj, #1127)
  • Use correct form of enable_if for functions (@sethrj, #1135)
  • Refactor MSC params and add Wentzel VI params and data (@amandalund, #1129)
  • Rename Wentzel model to CoulombScattering and add em/params subdirectory (@amandalund, #1154)
  • Add generic grid builder and refactor builder code that uses generic grids (@sethrj, #1157)
  • Split ExplicitActionInterface to support optical data (@pcanal, #1160)
  • Fix SWIG build (@sethrj, #1159)
  • Rename scale methods in g4vg (@sethrj, #1175)
  • Tweak ORANGE construction (@sethrj, #1178)
  • Add small utilities for rasterization work (@sethrj, #1185)
  • Update CMake user preset (@esseivaju, #1195)
  • Move unit enumeration to corecel and improve assertion flexibility (@sethrj, #1197)
  • Make "output interface" streamable (@sethrj, #1203)
  • Refactor ActionSequence to be templated on Params (@esseivaju, #1209)
  • Use string view for interface labels and descriptions (@sethrj, #1210)
  • Fix library macro compatibility wrappers (@sethrj, #1215)
  • Split optical pre-generator action into separate Cerenkov and scintillation actions (@amandalund, #1217)
  • Write celer-sim results as 'null' when they're disabled (@sethrj, #1223)
  • Refactor trapezoid construction (@sethrj, #1221)
  • Add generic grid inserter to simplify construction (@hhollenb, #1229)
  • Split ORANGE test into subtests (@sethrj, #1234)
  • Update single and multiple Coulomb scattering configurations in GeantPhysicsList (@amandalund, #1239)
  • Rename ConvexRegion to IntersectRegion (@sethrj, #1245)
  • Minor refactoring/niceties for upcoming polycone work (@sethrj, #1246)
  • Add gdml-to-dot and improve celer-geo (@sethrj, #1252)
  • Set correct energy limits for Coulomb scattering (@amandalund, #1266)
  • Refactor nuclear zone builder to separate numerical integration (@sethrj, #1275)
  • Improve GenTrap regularization and construction (@sethrj, #1262)
  • Refactor optical data to use extensible params/states (@sethrj, #1280)
  • Require JSON (@sethrj, #1254)
  • Store model action IDs in model class instead of in data (@amandalund, #1293)
  • Add helper functions for sampling/calculating direction in interactors (@amandalund, #1301)
  • Add final state helper for ionization interactions (@amandalund, #1306)
  • Add a helper function to copy a "collection group" back to the host (@sethrj, #1310)
  • Skip indirection array for sorted track slots (@sethrj, #1315)
  • Remove celeritas include in corecel (@esseivaju, #1328)
  • Refactor types to reduce duplication and cyclic dependencies (@sethrj, #1327)
  • Update frontier toolchain and backward compatibility (@sethrj, #1330)
  • Consolidate header naming convention (@esseivaju, #1325)
  • Reduce string duplication from assertion messages (@sethrj, #1338)
  • Add optical sub-namespace (@hhollenb, #1314)
  • Fix minor compile error/warning with nvcc+clang (@esseivaju, #1343)
  • Fix clang-tidy checks, including some use-after-move (@esseivaju, #1352)
  • Refactor rejection sampling using a helper class (@sethrj, #1354)
  • Improve use of distributions and simplify interactions (@sethrj, #1357)
  • Accept single CsgTree from stdin (@esseivaju, #1366)
  • Clang format develop with clang 18 (@sethrj, #1372)
  • Allow normal distribution to preserve spare value (@sethrj, #1371)
  • Define optical MaterialView and rename MaterialParams (@sethrj, #1370)
  • Sample cerenkov photons one at a time using rejection (@sethrj, #1373)
  • Sample scintillation photons individually (@sethrj, #1376)
  • Count number of optical primaries to be generated from distributions (@amandalund, #1379)
  • Fix warnings on updated Cray/ROCm toolchain (@sethrj, #1381)
  • Allow sim params without looping (@sethrj, #1382)
  • Rename ExplicitAction to StepAction and add templating (@sethrj, #1387)
  • Refactor primaries as aux data (@sethrj, #1393)
  • Change LocalTransporter deallocation semantics (@sethrj, #1403)
  • Refactor action sequence into action group plus extras (@sethrj, #1410)
  • Define "static" concrete action for those with unique name/description (@sethrj, #1416)
  • Improve PRINT_EXPECTED formatting for long strings and vectors (@sethrj, #1420)
  • Support aliased nodes during CsgTree simplification (@esseivaju, #1418)
  • Refactor action launcher components into kernel launcher (@sethrj, #1423)
  • Add total_energy accessor to ParticleTrackView (@amandalund, #1432)
  • Clang format develop with clang 18 (@sethrj, #1437)
  • Rename track slot enumerations (@sethrj, #1434)
  • Add a hack to override ORANGE max intersections/faces (@sethrj, #1430)
  • Add global MPI communicator and refactor some internals (@sethrj, #1428)

Reviewers: @amandalund (30), @sethrj (21), @elliottbiondo (7), @stognini (5), @esseivaju (5), @whokion (4), @mrguilima (4), @drbenmorgan (3), @pcanal (2), @tmdelellis (1)

Full Changelog: https://github.com/celeritas-project/celeritas/compare/v0.4.4...v0.5.0

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 enable CELERITAS_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: https://github.com/celeritas-project/celeritas/compare/v0.5.0...v0.5.1

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: https://github.com/celeritas-project/celeritas/compare/v0.5.1...v0.5.2

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: https://github.com/celeritas-project/celeritas/compare/v0.5.2...v0.5.3

Files

Files (2.1 MB)

Name Size Download all
md5:2cc98c83cc4207f5d3990330ba867851
2.1 MB Download

Additional details

Software

Repository URL
https://github.com/celeritas-project/celeritas
Programming language
C++, Cuda, Python