| --- |
| license: apache-2.0 |
| tags: |
| - physics |
| - calorimeter |
| - fast-simulation |
| - generative-model |
| - flow-matching |
| datasets: |
| - FLC-QU-hep/calorimeter-showers-multi-geometry |
| --- |
| |
| # PointCountFM, multi-geometry pre-trained models |
|
|
| [](https://arxiv.org/abs/2608.18233) |
| [](https://www.python.org/) |
| [](https://pytorch.org/) |
|
|
| Flow-matching models (fully connected) for the **per-layer hit counts** of |
| electromagnetic calorimeter showers. PointCountFM is the condition producer in |
| the cascade of *[Transferable Fast Calorimeter Shower Generation via Multi-Geometry Pre-training](https://arxiv.org/abs/2608.18233)*: it samples the number of points in |
| each calorimeter layer, which then conditions the shower point cloud model |
| [FLC-QU-hep/AllShowers-multi-geometry](https://huggingface.co/FLC-QU-hep/AllShowers-multi-geometry). |
|
|
| Conditioning inputs: incident energy, sampling fraction, number of layers, and |
| the direction unit vector, in the order `[E, SF, n_layers, dir_x, dir_y, dir_z]`. |
|
|
| ## Checkpoints |
|
|
| | Folder | Pre-training data | Output dim (layers) | |
| |---|---|---| |
| | `simplebox/` | 4M showers, SimpleBox parametric geometry | 45 | |
| | `lemurs/` | 4M showers, 4 detectors (Par04 SciPb, Par04 SiW, ODD, CLD) | 90 | |
|
|
| Architecture (both): fully connected flow-matching network, hidden dims |
| [128, 256, 512, 256, 128], 6-dim condition, 6-dim time embedding. |
|
|
| ## Files and usage |
|
|
| ``` |
| <folder>/ |
| βββ best_model.pt # best-validation checkpoint (includes fitted norm_stats) |
| βββ conf.yaml # architecture + transform pipeline definitions |
| ``` |
|
|
| The checkpoint stores the fitted normalization statistics (`norm_stats`), so |
| these two files are all that is needed. With the |
| [PointCountFM repository](https://github.com/FLC-QU-hep/PointCountFM/tree/multi-geometry) |
| code, point the model loader at the downloaded folder: |
|
|
| ```python |
| from huggingface_hub import snapshot_download |
| model_dir = snapshot_download("FLC-QU-hep/PointCountFM-multi-geometry", |
| allow_patterns="lemurs/*") + "/lemurs" |
| # then load with load_pcfm_model() from src/pcfm_conditioning.py, which reads |
| # best_model.pt + conf.yaml from this directory and restores the transforms |
| # from the checkpoint's norm_stats |
| ``` |
|
|
| For `lemurs/`, the 90-dim output is zero-padded at the tail: for a detector with |
| `n_layers` layers, take entries `0..n_layers-1`. |
|
|
| ## Training data |
|
|
| The pre-training datasets (Geant4, LEMURS + SimpleBox) are published at |
| [doi:10.25592/uhhfdm.19103](https://doi.org/10.25592/uhhfdm.19103). |
|
|
| ## Citation |
|
|
| If you use these weights, please cite: |
|
|
| ```bibtex |
| @article{Buss2026b, |
| author = {Buss, Thorsten and Day-Hall, Henry and Gaede, Frank and Kasieczka, Gregor and Kr{\"u}ger, Katja and McKeown, Peter and Valente, Lorenzo}, |
| title = "{Transferable Fast Calorimeter Shower Generation via Multi-Geometry Pre-training}", |
| eprint = "2608.18233", |
| archivePrefix = "arXiv", |
| primaryClass = "physics.ins-det", |
| month = "8", |
| year = "2026" |
| } |
| ``` |
|
|