solid_gemc project report

ddvcs — FAMU μ⁻ vs π⁻ template at 5 GeV, θ=12°

Last updated · Self-contained snapshot — plots embedded as base64. Generated from report.html by build_report.py.

Overview

Single-particle template study under the canonical SoLID J/ψ → μ⁺μ⁻ DDVCS geometry (CLEO magnet, LH2 target, forward-angle muon detector "moved_full"). Goal: per-layer Edep templates in the three FAMU scintillator layers for both μ⁻ (signal) and π⁻ (punch-through background) at matched kinematics, so the J/ψ trigger has a quantitative μ/π separation handle. Status: μ⁻ N=1000 production run done; π⁻ run killed at 9393 / 100000 events (extrapolated rate would have needed ~33 more hr — partial sample is already enough for the headline comparison). Next: beam-energy scan (3, 7 GeV) to map the trigger's blind spot.

Configuration

Physics goal Per-layer Edep template across the 3 FAMU layers
SoLID config J/ψ DDVCS · CLEO magnet · LH2 · forward-angle muon detector moved_full
Beam 5 GeV · θ = 12° · φ = 0–360° · vertex (0, 0, −315) cm. Two particles, matched kinematics: μ⁻ (N=1000, complete) and π⁻ (n=9393 of 100000 requested, partial — gemc killed by user after 11673 s).
GCards ddvcs_famu_5gev_mu.gcard + ddvcs_famu_5gev_pim.gcard — both patched from solid_gemc/script/solid_JPsi_DDVCS_LH2_moved_full.gcard (only BEAM_P and N differ between them).
Overrides BEAM_P=<mu-|pi->,5*GeV,12*deg,0*deg, BEAM_V=(0,0,−315)cm, SPREAD_P=0,0,180*deg (full φ), USE_GUI=0, OUTPUT=evio,out.evio.
Analysis Per-run: edep_per_layer.py (per-layer Edep + per-event Σ Edep). Comparison: edep_mu_vs_pi.py (overlay plots + comparison_summary.md).

Headline results

μ vs π Σ FAMU Edep, linear + log y
Figure 1. Σ Edep across all three FAMU layers per event, μ⁻ vs π⁻ at the same kinematics. Left: linear y — the μ⁻ peak at ~30 MeV is clearly separated from the π⁻ absorbed-peak near 0–3 MeV. Right: log y — exposes the π⁻ hadronic shower tail extending past 150 MeV, the irreducible Edep-cut contamination under the muon peak (~1% / bin).
μ vs π in 2D: N hits vs Σ Edep, overlay
Figure 2. Joint distribution of N FAMU hits vs Σ Edep, μ⁻ (filled blue, contours at 20/50/80/95% of population) and π⁻ (orange contours; labels are events / generated event). The two populations live in disjoint regions: μ⁻ at N≈5–15 hits and ΣEdep ≈25–40 MeV, π⁻ split between the absorbed strip along Σ≈0 and a shower cloud at higher hits / Edep. A 2D cut here is much sharper than either 1D variable alone.
Per-layer hit multiplicity μ vs π
Figure 3. Hits per generated event in each of the three FAMU scintillator layers. μ⁻ passes through nearly evenly (6.4 / 6.1 / 5.2). π⁻ peaks in L1 (19.7) from upstream-shower secondaries, then is absorbed: L1/L3 = 15.1×, vs 1.24× for μ. An orthogonal handle to Σ Edep.
μ⁻ (N=1000)π⁻ (n=9393, partial)
FAMU acceptance 99.8% 82.1%
Σ Edep median 32.6 MeV 1.88 MeV
Σ Edep mean 34.7 MeV 14.5 MeV
Σ Edep std 7.6 MeV 32.1 MeV
L1 / L2 / L3 hits per event6.4 / 6.1 / 5.2 19.7 / 5.0 / 1.3
L1 / L3 hit ratio 1.24 15.1

Median Σ Edep ratio μ/π ≈ 17× — that's the headline trigger handle. A simple cut at Σ Edep ≳ 10 MeV keeps virtually all muons and rejects roughly two-thirds of pions, with the surviving π fraction being the showering tail (those events deposit MIP-like energy plus shower fragments, and are harder to discriminate on Edep alone). The L1/L3 hit-ratio is an even cleaner orthogonal handle and would pair well with Edep for an offline cut.

Runs

Run idDateGCardn_eventsStatusNotes
20260514-133350 2026-05-14 ddvcs_famu_5gev_mu.gcard 1000 ok μ⁻ template; 716 s gemc wall; Σ Edep 34.7 ± 7.6 MeV
20260514-145707 2026-05-14 ddvcs_famu_5gev_pim.gcard 9393 / 100000 partial π⁻ template; killed at 11673 s wall (rate 1.29 s/event, ETA was ~33 hr); median Σ Edep 1.88 MeV

Run directories are immutable — see each run's config.json for the full provenance record (GCard hash, solid_gemc commit SHA, GEMC_VERSION, container .sif, gemc + evio2root exit codes, wall time).

Methodology

Simulation

Skill-driven via the solid-gemc orchestrator (JLabCE 2.5 container, gemc 2.9 from solid_gemc commit b6d7a954, single-particle BEAM_P gun). The GCard is a patched copy of solid_JPsi_DDVCS_LH2_moved_full.gcard: only the beam, batch flags, and event count differ from upstream; physics list, hall material, magnetic field, and detector tree are canonical. The run cwd is solid_gemc/script/ (cwd-relative geometry lookup); APPTAINER_BIND includes solid_gemc/field/ for the CLEOv9 map.

Analysis

Host-side via uproot. edep_per_layer.py <run_dir> reads out.root, filters the flux tree by id ∈ {6101000, 6102000, 6103000}, and writes per-layer Edep + 2D hit-position histograms plus the per-event Σ Edep over the three layers. The pattern follows solid_gemc/prototype/muon_pro/analysis.C lines 448–490. A second script, edep_mu_vs_pi.py <mu_run_dir> <pi_run_dir>, overlays Σ Edep p.d.f.'s and per-layer hit multiplicities for the μ⁻ vs π⁻ comparison, writing to plots_comparison/<stamp>/ (a fresh dir per invocation, so no existing run dir is mutated).

Open questions / next

next Scan beam energies (3, 7 GeV) for both μ⁻ and π⁻ — π punch-through grows with energy, and the μ/π Edep separation closes; finding the crossover gives the trigger's blind spot. Then μ⁺ + π⁺ at the same kinematics to confirm charge symmetry under the CLEO field.
partial run The π⁻ run 20260514-145707 is incomplete (9393 / 100000 events). It's enough for the headline median + acceptance, but the high-Edep shower tail is statistics-limited. To fix: launch 10× 1e4-event chunks in parallel (if SIF supports concurrent apptainer exec; needs a quick check) and hadd the ROOT outputs.
gotcha evio2root needs -R="<system>" to publish the raw integrated bank. Without it, only the digitized bank lands in out.root — and for the flux hit processor, the digitized bank is just hitn + id. First-pass conversion here gave a 214 KB stale ROOT file; second-pass with -R=flux gave the 4.7 MB rich-flux file used above.

References