See it in action
Two browser-readable reports produced end-to-end by the plugin — same orchestrator, same bin/solid-gemc-run, two very different physics goals.
- Cherenkov radiator + spherical mirror 1 GeV e⁻ pencil beam into a 1 m³ CO₂ box; tilted spherical mirror focuses Cherenkov light onto an off-axis sensor. Three-volume detector authored from a plain-English spec.
- DDVCS muon / pion PID template at 5 GeV canonical SoLID J/ψ → μ⁺μ⁻ DDVCS geometry (CLEO magnet, LH2 target, forward-angle “moved_full” muon detector); per-layer Edep templates give the J/ψ trigger a quantitative μ/π separation handle.
Install
In Claude Code:
/plugin marketplace add zhaozhiwen/solid_gemc_claude
/plugin install solid-gemc-claude@solid-gemc-claude
In Codex CLI:
codex plugin marketplace add zhaozhiwen/solid_gemc_claude
codex plugin add solid-gemc-claude@solid-gemc-claude
/plugin update (Claude) handles upgrades. Apptainer ≥ 1.4 must already be on the host; the plugin pulls its pinned .sif on first use via wget.
Quickstart
There are no slash commands. The solid-gemc orchestrator skill auto-loads on any SoLID-flavored request (Claude Code or Codex CLI), gap-checks a seven-field spec (project name, physics goal, SoLID config, beam, GCard, output, analysis), shows a plan, and runs it on approval — driving everything through bin/solid-gemc-run (bootstrap the workspace, pick + edit a GCard, run solid_gemc, convert EVIO → ROOT, record provenance, plot).
Ask your harness something like:
Learn the examples at solid_gemc repo "solid_gemc/analysis/hgc_study/" and "solid_gemc/geometry/hgc_moved/",
Do the heavy gas Cherenkov simulation on SIDIS He3 moved configuration with 1000 events of 5 GeV pi- at 10 degree theta angle and full phi angle,
then plot number of photoelectron yield in various illustrative ways,
verify the sim result with physics analytic calculation,
finally show me the results in an html file
init runs once as a one-shot bootstrap (pull the .sif, clone solid_gemc, run both scons builds, scaffold a workspace) — automatically on first use, or when you ask to “init solid-gemc-claude”. After it, two upstream worked examples live in your workspace, both self-contained:
| Example | What it teaches |
|---|---|
solid_gemc/analysis/hgc_study/ |
the config + run + analyze pipeline — GCards, batch run scripts, ROOT analysis macros |
solid_gemc/geometry/hgc_moved/ |
custom detector authoring — Perl generators, the factory text files they emit, and the GCard wiring |
bin/solid-gemc-run analyze runs/<id> produces uproot plots from the post-converted out.root. bin/solid-gemc-run shell drops you into a tcsh prompt with the env exported, to follow upstream’s scripts directly.
What it does
- NL-driven simulation as a first-class step. The orchestrator turns a plain-English study spec into a validated GCard + run command. Edit the GCard or re-describe to iterate.
- Single runtime seam. All
gemc,xmllint, ROOT, andevio2rootcalls go throughbin/solid-gemc-run. The container tag is pinned in one place. No host-side ROOT required. - EVIO + post-convert to ROOT.
gemc2.9 writes EVIO natively; the wrapper post-converts to ROOT inside the same container so analysis can stay Python via uproot. Both files end up inruns/<id>/.
Requirements
- Apptainer ≥ 1.4 on Linux.
wget,giton the host. (No host-sidetcshneeded — the wrapper invokestcshinside the container.)- Python 3.9+ with
uproot numpy matplotlib(only for theanalyzestep). - ~1.7 GB of disk for the cached JLabCE 2.5 image plus ~1 GB for the cloned + built
solid_gemctree, both per workspace (the cache lives in the workspace so it survives plugin updates; set$SOLID_GEMC_CLAUDE_CACHEto share one.sifacross workspaces). - Claude Code (plugin support) or OpenAI Codex CLI (Agent Skills).
Links
Acknowledgments
- solid_gemc — the SoLID experiment’s GEMC-based simulation. See github.com/JeffersonLab/solid_gemc.
- GEMC — the geometry-and-tracking framework underneath. See gemc.jlab.org.
- JLabCE 2.5 container — built and maintained at Jefferson Lab; see github.com/JeffersonLab/solid_release.