Version 0.1.5#

Release date: 2023/02/19

Version 0.1.5 corrects several major tracking and physics bugs in the 0.1.x series. Notably:

  • Positron annihilation is no longer ignored.

  • The 1 keV standard EM physics cutoff applies to electrons and positrons after slowing down in addition to before, reducing the number of low-energy particles being tracked.

  • Field propagation no longer advances particles to boundaries slightly past their physics path length. This previously produced numerous instances of a coincident boundary crossing plus physics interaction.

  • In high-Z materials, Geant4 produces MSC cross sections for positrons that are not monotonically decreasing with increasing energy (there is a discontinuity around 10 MeV). This behavior previously caused a miscalculation of the step length when slowing down near 10 MeV.

Bug fixes#

  • Fix build documentation and issues with newer toolchains (@sethrj, #571)

  • Fix missing positron annihilation process and process diagnostic (@amandalund, #625)

  • Fix NaN/assertion when taking extremely small steps in a field (@sethrj, #628)

  • Fix ORANGE intersection along cylinder axis (@sethrj, #627)

  • Fix incorrect Urban MSC path length correction due to discontinuity in positron cross section (@amandalund, #642)

  • Check for unlikely “zero speed” condition (@sethrj, #646)

  • Avoid XS scaling factor > 1 in SBPositronXSCorrector (@stognini, #649)

  • Fix coincident boundary/step created by field propagator (@sethrj, #654)

  • VecGeom/Cuda: set the stack limit to 16K when CELERITAS_DEBUG=ON (@pcanal, #638)

  • Apply electron tracking cut after slowing down in addition to before (@sethrj, #648)

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

Documentation improvements#

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

Reviewers: @whokion (1)

Minor internal changes#

  • CI: use Geant4 11, C++17, VecGeom 1.2, CUDA 11.8, GCC 11 (@sethrj, #566)

  • CI: add no-debug HIP (ROCM 5.4) build (@sethrj, #569)

Reviewers: @pcanal (1)

Version 0.1.4#

Released 2023/01/10

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

Bug fixes#

  • Fix additional failures resulting from direction change on a boundary after crossing (@amandalund, #517)

  • Fix the true path length limit of UrbanMsc (@whokion, #521)

  • Fix field propagation for stuck and long-track particles (@sethrj, #518)

  • Don’t slow particles to zero when hitting boundary (@sethrj, #524)

  • Cache multiple scattering range at the first step in a new volume (@whokion, #527)

  • Reset physics state when a secondary is initialized in the parent’s track slot (@amandalund, #528)

Version 0.1.3#

Release date: 2023/01/11

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

Bug fixes#

  • Fix near-infinite loop in field propagation (@sethrj, #511)

  • Allow tracks taking small steps to propagate in field (@amandalund, #513)

  • Fix ability to disable Rayleigh scattering when running demo-loop app

  • Fix failure when changing direction on boundary immediately after crossing (@sethrj, #515)

  • Escape rather than segfault on boundary crossing failure in release mode in ORANGE (@sethrj, #516)

Version 0.1.2#

Released 2022/09/07

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

New features#

  • Save JSON exception output if demo loop fails by (@sethrj, #507)

Bug fixes#

  • Fix class name conflict, remove default initializers, and tweak field driver (@sethrj, #504)

  • Fix no-ROOT demo loop for 0.1.x and other summit changes by (@sethrj, #508)

Version 0.1.1#

Released 2022/08/26

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

New features#

  • Filter imported data from Geant4 based on user options by (@sethrj, #482)

  • Add contributing guide and development docs by (@sethrj, #502)

Bug fixes#

  • Fix uninitialized data access in primary generator by (@sethrj, #472)

  • Build processes based on exported data by (@sethrj, #483)

  • NVHPC: silence warnings by (@sethrj, #486)

  • Bring latest upstream updates to the BVHNavigator by (@mrguilima, #484)

  • Force disabling of shared libs for VecGeom 1.2.0+ by (@sethrj, #489)

  • Add minor fixes for UrbanMsc by (@whokion, #492)

  • Set remaining model lower limits to zero and make sure demo loop runs with integral approach off by (@amandalund, #490)

  • Fix VecGeomTrack::move_internal assertion failure by (@mrguilima, #493)

  • Fix clang-14/ROCM build with JSON enabled by (@sethrj, #496)

  • Better workaround for VecGeom 1.2 crashes by (@sethrj, #495)

  • Fix imported model microscopic cross sections by (@amandalund, #487)

  • Fix unintentional MSC enable and some displacement logic by (@sethrj, #500)

  • Fix unusual errors in field propagation by (@sethrj, #499)

  • Fix vecgeom boundary state and add more thorough testing by (@sethrj, #494)

  • Improve static/shared CUDA library choice when linking VecGeom by (@pcanal, #497)

  • Fix ORANGE reentrant boundary crossings by (@sethrj, #501)

Internal changes#

  • Rewrite field tests by (@sethrj, #471)

  • Add range-to-step tests and remove min by (@sethrj, #479)

  • Add unit tests and make minor changes to FieldDriver by (@sethrj, #478)

  • Unify units in EM interactors/data by (@sethrj, #477)

  • Add tests for field propagator near boundaries by (@sethrj, #480)

  • Return one event at a time from EventReader and PrimaryGenerator by (@amandalund, #488)

  • Infrastructure changes for geo heuristic test by (@sethrj, #498)

Version 0.1.0#

Released 2022/07/31

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

New features#

  • Standard EM physics including multiple scattering and energy loss fluctuations

  • VecGeom for GDML navigation, ORANGE for testing

  • Support for CUDA, HIP, and CPU (with and without OpenMP)

  • Magnetic field support with runtime-swappable field types

Known bugs#

  • Magnetic field propagation can fail at geometry boundaries, especially with ORANGE.

  • Multiple scattering requires more steps than expected compared to Geant4.

Contributors#

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

  • Philippe Canal (@pcanal): #115, #119, #130, #171, #172, #166, #222, #239, #242, #243, #254, #338

  • Doaa Deeb (@DoaaDeeb): #257

  • Tom Evans (@tmdelellis): #57, #65, #112

  • Seth R Johnson (@sethrj): #4, #8, #13, #16, #15, #21, #24, #25, #32, #17, #35, #39, #36, #40, #45, #44, #50, #51, #61, #59, #62, #63, #64, #69, #78, #80, #79, #76, #73, #82, #83, #84, #85, #86, #87, #88, #91, #92, #93, #95, #99, #98, #106, #104, #108, #114, #116, #105, #117, #118, #122, #120, #124, #128, #129, #133, #135, #131, #136, #137, #138, #139, #142, #143, #144, #141, #147, #148, #151, #149, #153, #150, #156, #157, #162, #160, #170, #168, #174, #169, #177, #178, #179, #184, #189, #190, #193, #195, #191, #199, #204, #196, #205, #201, #207, #208, #211, #218, #217, #219, #220, #224, #225, #226, #228, #235, #237, #236, #238, #247, #276, #292, #293, #294, #296, #298, #291, #306, #301, #307, #311, #313, #314, #315, #312, #321, #322, #325, #329, #331, #332, #335, #333, #336, #337, #340, #339, #343, #344, #342, #345, #347, #348, #349, #351, #359, #360, #364, #365, #366, #378, #374, #373, #379, #381, #384, #380, #387, #386, #388, #389, #391, #394, #393, #395, #397, #398, #399, #400, #405, #403, #404, #410, #408, #406, #411, #402, #414, #415, #417, #416, #422, #424, #426, #427, #428, #433, #432, #435, #436, #434, #437, #441, #439, #445, #443, #448, #449, #453, #456, #455, #458, #457, #464, #465, #468

  • Soon Yung Jun (@whokion): #41, #70, #173, #200, #214, #221, #230, #250, #259, #258, #260, #316, #317, #320, #324, #370, #375, #390, #396, #407, #413, #430, #454, #467

  • Guilherme Lima (@mrguilima): #42, #38, #109, #90, #167, #229, #234, #232, #328, #383, #446, #452

  • Amanda Lund (@amandalund): #6, #20, #47, #52, #89, #100, #113, #134, #154, #159, #161, #186, #185, #198, #216, #215, #209, #227, #240, #245, #255, #251, #264, #274, #269, #285, #290, #297, #304, #309, #319, #323, #330, #346, #350, #353, #362, #368, #369, #372, #376, #382, #385, #401, #440, #444, #450, #463

  • Ben Morgan (@drbenmorgan): #53, #56, #110, #121, #367, #371

  • Vincent R Pascuzzi (@vrpascuzzi): #68, #72, #111, #241, #248, #246, #287

  • Paul Romano (@paulromano): #107, #197, #265, #268, #270, #275, #273, #289, #299, #303, #305, #308, #310, #318

  • Stefano C Tognini (@stognini): #30, #55, #81, #132, #175, #188, #194, #203, #210, #231, #244, #271, #302, #327, #326, #341, #423