Skip to content

Releases: gemc/src

Dev Nightly

01 Jun 06:33

Choose a tag to compare

Dev Nightly Pre-release
Pre-release

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

17 Jun 15:52

Choose a tag to compare

GEMC Release 0.3

This version includes:

  • New python module: pygemc
  • Generators in GUI
  • Photon detection
  • Binary gemc tarballs 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*unit notation for gparticle kinematic fields
  • digitization_variation option to override the gsystem variation for digitization constants/tables
  • GEMC_PLUGIN_PATH and -plugin_path for 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-advertised search <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 gemc tarballs 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 the dev release.
  • Isolated ROOT linkage to the ROOT gstreamer plugin so the main gemc executable can run without ROOT
    shared libraries.
  • Reorganized all source modules under a gemc/ subdirectory and adopted <gemc/module/header.h>
    namespaced #include directives throughout.
  • Moved the API and analyzer into the pygemc Python module; examples and tests now run through it, and
    Python workflows no longer need GEMC-specific environment variables — only the gemc executable in
    PATH.
  • Replaced the separate punit, aunit, and vunit fields in gparticle with direct value*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_variation option to override the per-system gsystem variation used when
    digitization routines load their calibration constants and translation tables.
  • Added GEMC_PLUGIN_PATH and -plugin_path for external plugin discovery, plus a pre-parse hook that
    registers plugin-specific options so they appear in gemc <config>.yaml -h and 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-advertised search <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-volume description
    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 pygemc and used it for the Cherenkov homepage photon hit-position
    maps.
  • Fixed an intermittent SIGSEGV in batch mode with TOOLSSG_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 repeated BeamOn calls.
  • Fixed a SIGSEGV in 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 pygemc release 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_barrel example: a 48-paddle barrel array of G4Trap scintillator paddles
    distributed on a circle (distribute_on_circle) with flux digitization, with each paddle's wider
    face oriented radially outward.
  • Added annotations.yaml files to the b1 and material examples demonstrating g4decoration
    (scale, axes, event ID, date, logo, frame) and g4text 2D/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 pygemc API and the unified value*unit gparticle notation, and made
    the YAML steering cards more consistent across examples.

Tests

  • Added a Binary Tarballs workflow that uploads deploy-produced tarballs to
    the dev release and then tests those release assets. It can also run the
    same install checks on a nightly schedule or by manual dispatch.
  • Removed redundant dev prefixes from deploy and sanitizer matrix job names.
  • Updated CodeQL to use build-mode: none for 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 to ci/build.sh and 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 pygemc for y-vs-x plotting and CLI image output.
  • Added gemc-analyzer plot 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-analyzer histogram test at priority -20; b1 overrides n to 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...
Read more

0.2

21 May 12:37

Choose a tag to compare

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.sh and gemc.csh environment setup scripts so users
    can source one file to configure PATH, library paths, and PYTHONPATH.
    The scripts add both the installed bin and api directories to PATH,
    since the api directory 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


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.sh for 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 g4view option 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.sh and gemc.csh environment setup scripts that configure
    PATH, library paths, and PYTHONPATH, including the installed api directory
    on PATH
  • Cleaned up Meson test behavior by fixing duplicate test names and making
    ROOT-dependent tests conditional on ROOT availability
  • Used $SIM_HOME instead of $GEMC for installation paths
  • Preloaded streamer plugins before Geant4 creates worker threads
  • gemc.cc preloads only the streamers that are configured.
  • Temporarily protected explicit G4VisExecutive teardown 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 gparticles events 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_template to provide simpler geometry and methane target material
  • Adjusted simple_flux target material to G4_lH2
  • Added handling of style=2 in PyVista by using cloud rendering
  • Fixed wireframe rendering in PyVista
  • Improved the PyVista example
  • Added the g4light option to g4camera to set the light direction
  • Fixed not assigning optical properties to materials when they were set to zero

0.1

29 Apr 20:14

Choose a tag to compare

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 dev release
  • 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