Repository navigation
CLAS12 GEMC Systems 0.3
This version includes:
- Installation from scratch with no pre-existing GEMC: GEMC is compiled from the
gemcsubproject on a bare
Geant4 environment, verified in CI ong4installimages across every supported distro. - The CLAS12 Forward Tagger geometry and digitization: FTCAL, FTHODO, and variation-dependent FTTRK.
- The CLAS12 HTCC geometry and digitization: native mirrors and PMTs, the CAD cones, and the nphe plugin.
Release notes
-
Added independent installation-path options for CCDB, HIPO, and clas12-cmag to skip their subprojects.
-
GEMC can now be built as a subproject, so CLAS12 systems install from scratch without a pre-existing GEMC:
with no installed GEMC and no-Duse-gemc-location, the build compiles GEMC from the newgemcwrap and
installs it into the same prefix.-Duse-gemc-location=<dir>reuses an existing GEMC install, and an
installed GEMC on pkg-config/PATHis still preferred over building. Geant4 is never built and must already
be available, or configuration fails. -
The field plugin now honors
use-fields-locationas its default map directory while preserving explicit
fielddiroverrides and the relocatable installed-map default. -
Added FT-Cal streaming readout through GEMC's
srofactory, with translation-table electronics routing
and JLAB integral frames written by one thread per crate. -
Added the
ftsystem with the PbWO4 calorimeter, scintillator hodoscope, Micromegas tracker, support
structures, custom materials, and all eight run-group variations from clas12Tags. -
Added the
htccsystem, ported from clas12Tags: the native CO2 gas volume, entry/exit windows, 48
elliptical mirrors (boolean cuts of a polycone barrel and an ellipsoid front surface), and 48 Winston-cone
PMTs, across the default, rga_spring2018 and rga_fall2018 variations. The three beamline CAD cones
(htccCone,htccMollerCone,htccMollerConeExt) are cured/decimated into watertight solids in a
companionhtcc_cadsystem. Thehtccdigitization plugin reproduces the clas12Tags nphe response:
photocathode quantum efficiency on optical photons,ADC = gain * Gauss(nphe*mc_gain, nphe*mc_smear), and
per-half/per-ring time offsets. Native HTCC ellipsoids require GEMC's newG4Ellipsoidnative solid (see
thesrcrelease notes). -
Added the
ft_cal,ft_hodo, andft_trkdigitization plugins, including the FTCAL/FTHODO CCDB constants
and translation tables and FTTRK multi-strip charge sharing. -
CLAS12 field maps now come from the
magfieldgit-lfs subproject and are copied into<prefix>/fieldsat
meson install(no download).-Duse-fields-location=<dir>reuses an existing maps directory instead. -
Bundled subprojects (ccdb, hipo-cpp, clas12-cmag) no longer install their libraries, headers, tools, or
tests by default; enable-Dinclude-subproject-install=true/-Dinclude-subproject-tests=trueto opt in.
Documentation
-
Documented all dependency/map paths (including
use-gemc-locationand the GEMC subproject fallback),
installation layouts, and the CCDB checkout refresh procedure. -
Documented FT-Cal SRO configuration, timing bounds, payload encoding, and current format limitations.
-
Documented the git-lfs
magfieldfield-map mechanism and the-Duse-fields-locationoption in the README.
Tests
-
Added a GEMC construction smoke test for every detector, including native and CAD geometry and plugin
loading, using the generated database and installed executable in theclas12suite. -
Updated macOS tarball builds to compile GEMC from its subproject, requiring only the prebuilt Geant4
archive, and report available release assets when the Geant4 download fails. -
Checked named DAQ header setup, metadata overrides, length overflow, and 64-bit word ordering.
-
Added offline JLAB format fixtures and a full FT-Cal CCDB-to-crate test with one and four workers.
-
Added FT to the Meson geometry suite and the automatic GEMC2 ASCII geometry/material comparison.
-
Added a runnable FT steering card that loads all three digitizers from the sensitive geometry rows.
-
Added HIPO
ADC_ADCcomparisons for LTCC and the FTCAL, FTHODO, and FTTRK banks. -
Added HTCC to the Meson geometry suite and the ASCII comparison, and generalized the semantic comparator to
treat GEMC2 absolute-placement boolean spellings (Operation:@), sub-micron and unit-only numeric
differences, and passive mirror surfaces as equal. -
Added the
htcchipo-histos subsystem (HTCC::adc/HTCC::tdc, detector 15) and its entry in the
GEMC2-reference ADC/TDC comparison workflow. -
Serialized image deployments, preserved the running deployment when a newer one is scheduled, and ensured
each eligible deployment checks out the commit that passed its triggering test. -
Standardized container workflows on Geant4-only
ghcr.io/gemc/g4installimages, building GEMC from source
for deployment, sanitizers, comparisons, profiling, and smoke tests while preserving published image tags.
Addressed issues
Supported platforms
Dependencies
Compatibility notes
-
FT-Cal SRO requires GEMC's current
GSROImplementationAPI and an explicitly configuredeventTimeWidth. -
Updated the CLAS12 plugins for GEMC 0.5's scoped electronic-address comparison modes and required scalar
option accessors.
Detailed list of changes and fixes
-
Expose the relocated Geant4, CLHEP, and Xerces libraries to macOS dyld so the installed GEMC can run
during the full-path FT-Cal SRO test in tarball CI. -
Select the macOS Geant4 archive by configured Geant4 version and runner macOS/Clang version, allowing
older builds to remain on the same release without failing the download step. -
Corrected a malformed pygemc wrap section header that prevented Meson configuration in CI.
-
Resolve the Geant4 core dependency through the GEMC source subproject when a Geant4-only installation
has no GEMC-generated pkg-config files yet. -
Let plugins resolve gdata symbols from GEMC like other framework symbols, removing the static-archive
requirement that broke builds against profiling images. -
Unified the compiled external field-map default with GEMC2 through
GEMC_DEFAULT_FIELD_DIR. -
Applied the CCDB system-SQLite wrap patch and enabled
CCDB_USE_SYSTEM_SQLITE, removing the bundled
SQLite targets and detecting stale unpatched subproject checkouts during configuration. -
Ported the required DAQ definitions into
DataFrameHeaderwith centralized setup, serialization, and
layout checks; removed obsolete source copies and documented their provenance and port decisions.
FT-Hodo and FT-TRK remain without SRO, matching the supplied old code. -
Routed every detector geometry volume through pygemc's
GVolume.publish_passive()API. FT now constructs
and publishes eachGVolumedirectly, and its primitives plus directly authored LTCC boxes, tubes, and traps
use pygemc solid builders. -
The semantic ASCII comparator now canonicalizes non-zero numeric tokens and maps the GEMC2/GEMC3 polycone
array orders, treating equivalent geometry values as equal while continuing to compare their units. -
Added an options-only
ft.gpluginbootstrap registrar because the FT geometry selects three independent
digitizers while a YAMLgsystem.digitizationoverride accepts one plugin name. -
Updated FTCAL translation-table keys to
{ix, iy}, matching the sensitive geometry and direct worker lookup.
FTCAL and FTHODO retain crate comparison mode; FTHODO retainsorderin its detector identity. -
Qualified the CLAS12 magnetic-field plugin's error code with its GEMC 0.5
gfieldsnamespace. -
Split LTCC native and mesh geometry into
ltccandltcc_cadsystems so each uses the correct Geant4
object factory, with CAD-local material and mirror definitions. -
Corrected FTTRK strip assignment to use the GEMC2 post-step position.
-
Replaced the download-based
install_fields.pywith a copy from themagfieldgit-lfs subproject
(subprojects/magfield.wrap+packagefiles/magfield/meson.build), erroring on unresolved LFS pointers,
and added theuse-fields-locationoption to bypass it, matching the clas12Tags source build. -
Added the
include-subproject-installandinclude-subproject-testsoptions and wired them through the
hipo-cpp and clas12-cmag subprojects via thehipo_install_option.patchand
clas12_cmag_install_option.patchdiffs, and gated the ccdb cmake install withset_install. -
Switched the
clas12-cmagwrap from the localpatch_directoryoverlay to the upstream v1.4 meson build
plus the install-option diff, dropping the redundantpackagefiles/clas12-cmag/meson.build.