Records the volume and material a track is about to enter when a step
ends at a geometric boundary, since post-step's physical volume still
refers to the volume the step occurred in. Also adds
run-sampling-batch.sh to run all run_sampling configs in parallel from
isolated directories, avoiding output filename collisions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pre-step direction was already recorded; post_dx/dy/dz lets students
compare momentum direction before and after each step.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each Steps row now carries a variable-length child_track_ids int array
containing the track IDs of all secondaries spawned during that step.
The parent_id column is removed — parentage is now expressed
unidirectionally (parent→children) via child_track_ids and the Spawning
ntuple, rather than bidirectionally.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each step that spawns secondaries now writes one row per secondary to a
new Spawning ntuple (event_id, parent_track_id, parent_step_no,
child_track_id). This enables direct shower-tree reconstruction without
position joins. Requires the companion Geant4 submodule change that
pre-assigns track IDs in ProcessSecondariesFromParticleChange.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add 15 new columns to the Steps ntuple: edep, step_length, parent_id,
process name, layer_id, material, pre-step momentum direction, and
B/E field components (in T and V/m) at the pre-step point.
Replace wget Geant4 tarball download in all three Dockerfiles with
ADD of the lib/geant4 submodule source; narrow submodule init to
lib/pybind11 only so builds no longer require network access for Geant4.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a second ntuple alongside the existing "Hits" ntuple with one row
per Geant4 step. Records event_id, track_id, step_no, PDG code, and
pre/post position + kinetic energy for every step in the simulation.
Also extends run_batch() with return_steps=False; when True, returns
(hits_mf, steps_mf) instead of just hits_mf.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>