Panda#
Panda is a sparse hierarchical point encoder for LArTPC events, pretrained on unlabeled data with a multi-view, prototype-based self-distillation objective. Its backbone is PT-v3m2, a Point Transformer V3 variant; its pretraining model is Sonata-v1m1, pimm’s implementation of Sonata. Task heads on the encoder label points, find particles and group interactions. Paper: arXiv:2512.01324.
Released checkpoints#
Checkpoint |
Model |
Output |
|---|---|---|
|
|
a |
|
|
|
|
Panda detector on |
query masks and classes; |
|
Panda detector on |
query masks; |
Semantic classes, in output order: shower, track, Michel, delta, low-energy deposit.
Particle classes, in output order: photon, electron, muon, pion, proton. Points that belong to no particle, such as low-energy deposits, get instance -1.
Input pipeline#
The Panda recipes apply these transforms at inference:
from pimm.datasets.transform import Compose
panda_transform = Compose([
dict(type="NormalizeCoord", center=[384.0, 384.0, 384.0], scale=768.0 * 3**0.5 / 2),
dict(type="LogTransform", min_val=0.01, max_val=20.0, keys=("energy",)),
dict(type="GridSample", grid_size=0.001, hash_type="fnv", mode="train", return_grid_coord=True),
dict(type="ToTensor"),
dict(type="Collect", keys=("coord", "grid_coord"), feat_keys=("coord", "energy")),
])
NormalizeCoordmaps the PILArNet-M volume, a cube of side 768 centered at 384, into the unit ball.LogTransformmaps energy onto [-1, 1] on a log scale between 0.01 and 20.GridSamplekeeps one point per occupied cell of a 0.001 grid and adds integergrid_coord. Withmode="train"it picks a random point in each cell; seed NumPy to make the choice repeatable. Predictions refer to the points it keeps.Collectbuildsfeatfrom coordinates then energy, so the backbone hasin_channels=4.
Recipes#
Recipe |
Trained |
|---|---|
|
the Panda encoder, from scratch, with self-distillation |
|
the same with the |
|
semantic head on a frozen encoder |
|
decoder and head on a frozen encoder |
|
the whole semantic model |
|
the whole semantic model; run it without weights |
|
the particle detector |
|
the interaction detector |
|
the whole detector, starting from the released Particle or Interaction weights pinned in the recipe |
To fine-tune the semantic and detector recipes from Panda-Base, pass --train.weight hf://DeepLearnPhysics/Panda-Base; see Fine-tune. The detector recipes build detector-v5. The repository also registers detector-v3m2, detector-v4 and detector-v5m2.
Cite#
@misc{young2025pandaselfdistillationreusablesensorlevel,
title = {Panda: Self-distillation of Reusable Sensor-level Representations for High Energy Physics},
author = {Samuel Young and Kazuhiro Terao},
year = {2025},
eprint = {2512.01324},
archivePrefix = {arXiv},
primaryClass = {hep-ex},
url = {https://arxiv.org/abs/2512.01324}
}
Panda builds on Sonata and Point Transformer V3; their entries are on Citing pimm.