ReconNN

One forward pass instead of 500 gradient steps — neutrino event reconstruction.

In a liquid-argon time-projection chamber the charge readout gives a track's shape but not its position along the drift direction; the light seen by the PMTs does. The usual fix is a gradient-descent fit per event against a photon library. ReconNN reads the track and the PMT pattern and answers in one forward pass, about 300× faster on an A100, and can train without position labels through the collaboration's differentiable forward model. Built in 2024 within the US–Japan CIDeR-ML collaboration.

Why

The collaboration's XOptimizer fits each event's drift offset dx with Adam, up to 500 steps after a coarse scan. At ~17 s per 100 events on an A100 a 100k-event sample takes hours, and the landscape is unfriendly: several tracks have more than one basin, so results depend on configuration (one track gave a residual of 46 with default settings, 1.2 with tuned ones). Amortised inference pays that cost once, at training time.

Line chart of mean-squared error between predicted and observed PMT patterns against trial drift offset dx from minus 200 to plus 200 cm, one curve per simulated track for ten tracks. Most curves have a single minimum near the true offset, but several have a second dip or a plateau elsewhere.
Figure 1. Predicted-versus-observed PMT mismatch against trial offset dx for ten simulated ICARUS tracks, the landscape a per-event optimiser descends; several curves have more than one minimum.

How

Each event is a variable-length point cloud, ~1.1–1.3k points of (x, y, z, charge), plus a 180-channel PMT vector. I tried three cloud encoders, a chain-graph GCN (245k parameters), a 1-D CNN over a 400-point resample with global average pooling (279k) and a MinkowskiEngine sparse 3-D CNN (419k), each fused with an MLP over the PMT vector to regress dx, trained on 10k simulated ICARUS events.

The part that matters is cycle training: shift the track by the predicted dx, drop points that leave the detector, push it through the differentiable photon library, and score the predicted PMT pattern against the observed one with a Poisson negative log-likelihood. The library's custom autograd carries the gradient back into the network. Batching the forward model made the loss ~30× faster; a track-normalisation fix removed the need for a labelled warm-up.

TPC trackPMT patternReconNNdxShift track by dxDifferentiable photon libraryPoisson NLL(x, y, z, q) × ~1.3k points180 channels, observedGNN · CNN · sparse CNNpredicted offsetdrop points that leave the detectorforward model → predicted PMTpredicted vs observedobserved patterngradient ∂L/∂θthrough the forward model, no labels
Figure 2. The cycle-training loop. Nothing in it needs the true position, so it can run on real detector data.

Results

Inference takes ~0.06 s per 100 events versus ~17 s for the optimiser's defaults (~300×; ~130× against a tuned ~8 s). On a typical track the cycle-trained GNN matches the optimiser's light-pattern fit, rms 1.20 versus 1.19, but its position error is 0.33 cm versus 0.023 cm. That gap is the honest headline: label-trained test rms is 5.14 cm against a ~1 mm goal, and some tracks miss by tens of centimetres. A fast first guess, not yet the final fit.

Line chart of photo-electron count per PMT channel, 0 to 180, for one track: the observed pattern in thick blue and the pattern predicted from ReconNN's offset in thin orange, nearly overlapping. Title reads track 0, rms dx error 0.3268 cm.
Figure 3a. ReconNN, cycle-trained: predicted light pattern (orange) over observed (blue); rms 1.20, offset error 0.33 cm.
The same chart for XOptimizer on the same track: observed pattern in thick blue, fitted pattern in thin orange, nearly overlapping. Title reads track 0, rms dx error 0.0230 cm.
Figure 3b. XOptimizer, same track; rms 1.19, offset error 0.023 cm.

Monte-Carlo production

For the Water-Cherenkov effort I ran the WCSim campaign behind its optical surrogate model: Slurm arrays of 8,000 jobs, 2,000 concurrent, 150 events × 200k photons each, across SLAC S3DF, Compute Canada Cedar and NERSC, porting the production framework to Shifter. WCSim uses one core, so 8-core requests ran at 12.5% CPU; one core per job fixed that, and S3DF then delivered 2,500 files an hour with no timeouts.

What I did. Sole developer of ReconNN, every commit: encoders, data pipeline, cycle-training loop and the XOptimizer comparison. The forward model, photon library, toy Monte Carlo and XOptimizer are collaboration code (siren-pfmatch, photonlib) I built on. For Water-Cherenkov I was computing co-lead with Kazuhiro Terao, whose production framework I ran. No paper; five collaboration talks, including at the University of Tokyo.

US–Japan CIDeR-ML collaboration (SLAC, Kavli IPMU / U. Tokyo, Tufts, Tokyo Tech, Minnesota); organisation chart: "Computing (Zhe, Kazu)". Numbers from my close-out talk (8 Aug 2024), the repository notebooks and my MC-production reports (Feb–Mar 2024).