Releases: gemc/src
Releases · gemc/src
Dev Nightly
Commits on main since 2026-06-17
- 2026-06-28 82bcbe9 — new reference and correct G4 data for gemc tags (by Maurizio Ungaro)
- 2026-06-26 edc1786 — tarballs for release (by Maurizio Ungaro)
- 2026-06-26 40ee5fa — added plots in readme (by Maurizio Ungaro)
- 2026-06-26 ebe4a26 — better README (by Maurizio Ungaro)
- 2026-06-26 06e9841 — better README (by Maurizio Ungaro)
- 2026-06-25 6b72dd9 — added watchdog workflow for failed ci jobs (by Maurizio Ungaro)
- 2026-06-25 597fe77 — added max_field_step option (by Maurizio Ungaro)
- 2026-06-25 2a839bd — publishing to docker gemc org (by Maurizio Ungaro)
- 2026-06-25 bd48392 — using export_dynamic to export CLHEP/Geant4 so theyre avaialble to the plugins (by Maurizio Ungaro)
- 2026-06-24 36d83f7 — field line options and examples (by Maurizio Ungaro)
- 2026-06-24 e926cb1 — magnetif fields examples (by Maurizio Ungaro)
- 2026-06-24 2572709 — added trivial geometry if no system selected (by Maurizio Ungaro)
- 2026-06-24 1c66679 — added ascii map factory (by Maurizio Ungaro)
- 2026-06-23 1a16f54 — field-probe logic added into GEMC core (by Maurizio Ungaro)
- 2026-06-23 ec1fcf2 — added no_field option to reset a gvolume or global fields (by Maurizio Ungaro)
- 2026-06-22 a2270e8 — just release notes (by Maurizio Ungaro)
- 2026-06-22 66f2b50 — using root dimensions to set field visualization extent (by Maurizio Ungaro)
- 2026-06-22 dd2feea — added event and summary log options, and using only clhep, g4 includes in gemc_dep (by Maurizio Ungaro)
- 2026-06-21 7929ed4 — new option for global field (by Maurizio Ungaro)
- 2026-06-21 6cca221 — update to macos26 (by Maurizio Ungaro)
- 2026-06-20 34adb06 — test retry configurable (by Maurizio Ungaro)
- 2026-06-20 b3f2a76 — skip geant4-config when doing data install (by Maurizio Ungaro)
- 2026-06-20 3bc4a23 — added macos tarball generation (by Maurizio Ungaro)
- 2026-06-19 a381e45 — site badge (by Maurizio Ungaro)
- 2026-06-19 e78316e — new license and citations files (by Maurizio Ungaro)
- 2026-06-19 c508e10 — new license and CITATION.cff (by Maurizio Ungaro)
- 2026-06-19 eae9ab8 — skopeo copy --all in the dockerhub_mirror job. (by Maurizio Ungaro)
- 2026-06-18 5bdab7b — deploy to docker hub in series to address concurrency (by Maurizio Ungaro)
- 2026-06-18 3010bbf — added deploy to docker hub personal space (by Maurizio Ungaro)
- 2026-06-18 fc23a36 — added field inquiry option (by Maurizio Ungaro)
- 2026-06-17 1da2b31 — issues in 0.4 (by Maurizio Ungaro)
- 2026-06-17 db445d3 — updated since and added release template (by Maurizio Ungaro)
- 2026-06-17 526955f — release notes (by Maurizio Ungaro)
0.3
GEMC Release 0.3
This version includes:
- New python module: pygemc
- Generators in GUI
- Photon detection
- Binary
gemctarballs for Linux CI platforms - Namespaced module includes (
<gemc/module/header.h>) - Theme-aware SVG toggle icons for display options
- Volume inspection from the geometry tree
- Geometry-tree right panel redesign: sticky style buttons, expanding parameters box, system-aware visibility
- Unified
value*unitnotation forgparticlekinematic fields digitization_variationoption to override the gsystem variation for digitization constants/tablesGEMC_PLUGIN_PATHand-plugin_pathfor external plugin discovery- Pre-parse plugin options hook for dynamic plugin option registration
- Clearer command-line help: reviewed every module's option/switch help, added usage examples, and
implemented the previously-advertisedsearch <value>command - ROOT gstreamer and event-action bug fixes
- Fixed TOOLSSG_OFFSCREEN batch crash (race condition between screenshot rendering and vis subthread)
- Optical photon trajectories rendered in cyan in both GUI and offscreen screenshots
- Fixed geometry-tree opacity slider resetting volume color to original
- Plotting tests for digitizing-SD examples and Cherenkov photon hit maps
Release notes
- Added Linux binary
gemctarballs to the development deployment workflow. The archives contain the
installed executable, support files, selected smoke tests,gemc.env, and a generated Geant4 data
installer, and are attached to thedevrelease. - Isolated ROOT linkage to the ROOT gstreamer plugin so the main
gemcexecutable can run without ROOT
shared libraries. - Reorganized all source modules under a
gemc/subdirectory and adopted<gemc/module/header.h>
namespaced#includedirectives throughout. - Moved the API and analyzer into the
pygemcPython module; examples and tests now run through it, and
Python workflows no longer need GEMC-specific environment variables — only thegemcexecutable in
PATH. - Replaced the separate
punit,aunit, andvunitfields ingparticlewith directvalue*unit
notation on each kinematic field (e.g.p: 4*GeV,theta: 23*deg,vz: -10*cm). A plain number without
a unit still falls back to MeV / deg / cm with a logged warning. See the compatibility notes below. - Added a
digitization_variationoption to override the per-systemgsystemvariation used when
digitization routines load their calibration constants and translation tables. - Added
GEMC_PLUGIN_PATHand-plugin_pathfor external plugin discovery, plus a pre-parse hook that
registers plugin-specific options so they appear ingemc <config>.yaml -hand can be set from the
command line or YAML. - Reviewed every module's command-line option/switch help, added usage examples, and implemented the
previously-advertisedsearch <value>command. - Made the GUI follow the active Qt palette consistently (setup tables, log/search widgets, geometry-tree
color controls, navigation buttons, splash screen) and replaced the four display-option toggle buttons
with theme-aware SVG icons. - Improved the geometry tree: volume inspection in a dedicated viewer window, a redesigned right panel
(sticky style buttons, expanding parameters box, system-aware visibility), a per-volumedescription
field shown in the properties panel, and "Centre"/"Twinkle" navigation buttons. - Added optical-photon detection support: optical photon trajectories are now drawn in cyan in both the GUI
and offscreen screenshots, distinguishing them from other neutral particles. - Added y-vs-x analyzer plotting in
pygemcand used it for the Cherenkov homepage photon hit-position
maps. - Fixed an intermittent
SIGSEGVin batch mode withTOOLSSG_OFFSCREEN, caused by a race between
screenshot rendering and the Geant4 vis subthread freeing the same scene-graph nodes. - Fixed several GUI geometry-reload issues: crashes when reloading geometry after running events, and hits
not being recorded after a setup-tab reload or on repeatedBeamOncalls. - Fixed a
SIGSEGVin the ROOT gstreamer plugin and an event-mode null-pointer crash when a plugin
returned no digitized data. - Fixed the geometry-tree opacity slider silently resetting a volume's color to its original value.
- The related
pygemcrelease notes are maintained separately in the
gemc/pygemc repository.
Documentation
- Added binary tarball installation instructions with per-platform download,
unpack, Geant4 data install, environment setup, and smoke-test commands. - Added ROOT-free binary installation prerequisite tabs and retitled the full
source-build prerequisite section to distinguish it from binary installation. - Updated the Cherenkov homepage documentation for the neutral radiator
variations and one-electron quick workflow. - Updated the Cherenkov example documentation to use a one-electron quick
workflow and to note that optical constants may be unphysical in the demo.
Examples
- Added a
scintillator_barrelexample: a 48-paddle barrel array ofG4Trapscintillator paddles
distributed on a circle (distribute_on_circle) withfluxdigitization, with each paddle's wider
face oriented radially outward. - Added
annotations.yamlfiles to theb1andmaterialexamples demonstratingg4decoration
(scale, axes, event ID, date, logo, frame) andg4text2D/3D overlays. - Reworked the Cherenkov optical example to use neutral demonstration radiator variation names
(lowIndexRadiator,mediumIndexRadiator,highIndexRadiator) instead of real gas names, and a
one-electron quick workflow. - Migrated all examples to the
pygemcAPI and the unifiedvalue*unitgparticlenotation, and made
the YAML steering cards more consistent across examples.
Tests
- Added a
Binary Tarballsworkflow that uploads deploy-produced tarballs to
thedevrelease and then tests those release assets. It can also run the
same install checks on a nightly schedule or by manual dispatch. - Removed redundant
devprefixes from deploy and sanitizer matrix job names. - Updated CodeQL to use
build-mode: nonefor all analyzed languages and
removed the manual Geant4 container build from the analysis workflow. - Made installed examples database generation skip cleanly when sanitizer
builds intentionally skip installing the Python environment. - Made the Test and Sanitize workflows use the same runner/container execution
model and shared matrix source; Sanitize differs only by passing the sanitizer
option toci/build.shand by naming sanitizer log artifacts. - Switched sanitizer builds to shared GEMC project libraries so plugin-loading
tests avoid Linux/aarch64 static TLS exhaustion from sanitizer-instrumented
static archives. - Added analyzer coverage in
pygemcfor y-vs-x plotting and CLI image output. - Added
gemc-analyzerplot tests to the examples test suite: examples with a digitizing SD
(simple_flux,b1,b2) get a dedicated CSV gemc run at priority -15 feeding into a
gemc-analyzerhistogram test at priority -20;b1overridesnto 50 events so the
dosimeter fires reliably (a 6 MeV gamma has only ~27% interaction probability per event in
bone). The Cherenkov example gets a y-vs-x photon hit-position map from its true-info stream.
Addressed issues
- Issue #62: fix reload geometry : run/beamOn does not work after a reload
- Issue #74: add generator in the GUI with tabs fore each particle.
- Issue #84: add photon_detector
- Issue #86: add options for background colors and num cloud points
- Issue #89: Pyvista installed on the container
- Issue #93: add pygemc repo for api and analyzer
- Issue #94: add barrel scintillator array example
- Issue #95: add text and arrow options to g4display
- Issue #96: fix detector not showing in the gui if running with just gemc -gui
- Issue #97: geometry reload crash
- Issue #103: [High] EventDispenser: run weights are not normalized before stochastic sampling
- Issue #104: [High] Run header stores the Geant4 internal run ID instead of the GEMC run number
- Issue #105: [High] Run-level normalization applied once per streamer causes double-normalization
- Issue #106: [High] Multiple same-format gstreamer outputs collapse into a single streamer
- Issue #107: [High] Multipole field parameters bypass unit parsing (stod/stoi ignore unit expressions)
- Issue #108: [High] Inverted dependency-stall check aborts geometry/material build when progress is made
- Issue #109: [High] Sphere vertex sampling compares squared radius against un-squared bound
- Issue #110: [High] Fix CAD loader mutating dirLocation in-place inside the per-file loop
- Issue #111: [High] Add missing opacity field in addVolumeFromFile so GVolume gets all 21 parameters
- Issue #112: [High] Run optical-property size validation once after parsing, not on every rayleigh token
- [Issue...
0.2
This version includes:
- Support for the LUND generator format
- Installed environment setup scripts for easier GEMC usage
- Python analyzer
- Additional examples
- Jupyter support
- Various bug fixes and improvements
Release notes
- Cleaned up registry container names and improved the CI summary
- Added a more robust algorithm to determine the GEMC version from the GitHub tag
- Updated Assimp to 6.0.5
- Added examples:
- Simple_Flux
- Materials
- PyVista
- Cherenkov
New developments
- Support for the LUND generator format through the generator factory. Events are distributed over Geant4 threads.
- Installed the Python analyzer package alongside GEMC.
- Added Jupyter support for the examples and quickstart.
- Added installed
gemc.shandgemc.cshenvironment setup scripts so users
can source one file to configurePATH, library paths, andPYTHONPATH.
The scripts add both the installedbinandapidirectories toPATH,
since theapidirectory includes executables. - Added VTK export to the API. This requires the optional PyVista Jupyter extras:
pip install "pyvista[jupyter]". - Included various bug fixes and improvements.
Addressed issues
- Issue #87: Support the LUND generator format
- Issue #83: Install environment setup scripts
- Issue #82: Add analyzer scripts
- Issue #81: Fix Cherenkov bug and add example (thanks to Zhiwen)
- Issue #79: Add Jupyter support
Supported platforms
Both x86_64 and ARM64 platforms are supported.
- macOS: 26
- Ubuntu: 24.04
- AlmaLinux: 9.4
- Fedora: 42
- Debian: 13
- Arch Linux: latest
Dependencies
- Geant4: 11.4.1 or higher
- CLHEP: 2.4.6.0 or higher
- Xerces-C: 3.2 or higher
Detailed list of changes and fixes
- Changed Docker image names by removing the Geant4 version
- Removed Docker build from the workflow summary
- Used
ci/gemc_version.shfor both the Meson project version and the GEMC version.
Uses the tag name to determine the version - Added optical properties and moved material routines in
g4materials.cc - Fixed CI tests not exiting after failures
- Fixed the Python API not resetting ASCII files for new variations
- Fixed
g4viewoption help - Added a screenshot boolean and function in
GRunAction::EndOfRunAction - Added cloud style for volumes (
0=wireframe,1=solid,2=cloud) - YAML files are more consistent across examples
- Installed the Python analyzer package alongside GEMC, matching the existing installed API layout.
- Added installed
gemc.shandgemc.cshenvironment setup scripts that configure
PATH, library paths, andPYTHONPATH, including the installedapidirectory
onPATH - Cleaned up Meson test behavior by fixing duplicate test names and making
ROOT-dependent tests conditional on ROOT availability - Used
$SIM_HOMEinstead of$GEMCfor installation paths - Preloaded streamer plugins before Geant4 creates worker threads
gemc.ccpreloads only the streamers that are configured.- Temporarily protected explicit
G4VisExecutiveteardown on Linux. This is a possible
Geant4 bug: a double-free in a process-wide G4Colour map during static destruction - Added a workaround for UndefinedBehaviorSanitizer on Linux by using
LD_PRELOAD - Used common library and OS/version definitions for deployment and sanitizer workflows
- Made CI workflow job names more consistent
- Added the LUND input format through
gmanager - Distributed LUND events and
gparticlesevents to Geant4 threads - Added VTK capabilities: examples now display the interactive view
- Added vertex information to true and digitized data
- Fixed a missing closing brace in the JSON format
- Adjusted
system_templateto provide simpler geometry and methane target material - Adjusted
simple_fluxtarget material toG4_lH2 - Added handling of
style=2in PyVista by using cloud rendering - Fixed wireframe rendering in PyVista
- Improved the PyVista example
- Added the
g4lightoption tog4camerato set the light direction - Fixed not assigning optical properties to materials when they were set to zero
0.1
The code is stable enough at this point to call this a release.
Release notes
The core of GEMC is now complete and includes:
- Python API to create geometry and materials
- Support for ASCII, SQLite, GDML, CAD meshes volume imports
- Custom extensibility of digitization, output formats, electro-magnetic fields
- Built-in dosimeter, flux, particle_counter
- Built-in ASCII, CSV, JSON, ROOT output
- PyVista 3D visualization
Two examples are provided that reproduce the Geant4 basic examples B1 and B2.
The CI workflow includes:
- Code deployment and testing
- A nightly
devrelease - Homepage and Doxygen documentation
- Sanitizer checks
- CodeQL analysis
Issues Addressed
- [#21]: Complete multipole fields implementation
- [#25]: add g4 dialog with search capabilities
- [#34]: SQLite database support.
- [#29]: new class logger
- [#23]: complete B1 example
- [#1]: Update homepage
- [#19]: Add doxygen
- [#50]: simplify goptions command line
- [#51]: use verbosity and options in meson.build
- [#60]: revisit i_test meson option
- [#68]: add JSON output format
- [#67]: gdata flow not clear
- [#44]: all options help consistency
- [#69]: add detector tree viewer
- [#26]: add csv output
- [#37]: add B2 example
- [#53]: each subclass should instantiate its own logger
Supported platforms
Both AMD and ARM processors are supported.
- macOS: 26
- Ubuntu: 24.04
- AlmaLinux: 9.4
- Fedora: 42
- Debian: 13
- ArchLinux: latest
Dependencies
- Geant4: 11.4.1 or higher
- CLHEP: 2.4.6.0 or higher
- Xerces-C: 3.2 or higher