ddvcs — FAMU μ⁻ vs π⁻ template at 5 GeV, θ=12°
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
| μ⁻ (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 event | 6.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 id | Date | GCard | n_events | Status | Notes |
|---|---|---|---|---|---|
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
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.
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
- GCard option reference: gemc.jlab.org