This repository holds the scripts and classes for the Hyper Kamiokande Machine Learning hands-on session at 2025 TRISEP Summer School. We will explore the application of different Neural Networks to the problem of particle identification in Water Cherenkov Detector. It is advisable to fork this repository by clicking on a button above in top right corner of the page before proceeding.
I borrowed code liberally from code and tutorials developed by Kazu Terao and code by Julian Ding and Abhishek Kajal. Big thanks also to the Water Cherenkov Machine Learning collaboration for lending their data - particularly Nick Prouse for actually running the simulations and to Julian for 'massaging' the data. Thanks to Wojtek Fedorko for providing this code and for assistance.
To access triumf-ml1 or triumf-ml2, follow the instructions to log in to the TRIUMF ML server and launch the container as described here
You should fork the HyperK ML repo in the TRISEP 2025 ML Repo
First time setup, if you forked fill out your GitHub username as [your-username]
mkdir hk_ml_trisep_tutorial
cd hk_ml_trisep_tutorial
git clone https://github.com/[your-username]/IntermediateTutorial.git
cd IntermediateTutorial
mkdir -p plots/data_exploration
mkdir -p plots/training
mkdir -p plots/analysis
mkdir diagrams
mkdir model_state_dumps
Every time, once you login, and if you've used the same directory names as above, you'll have to do
cd hk_ml_trisep_tutorial/HK_ML_tutorial
source source.me
In general we would suggest using e.g. VSCode IDE over ssh to go through this tutorial. It also makes it much easier to view plots that you make.
When going through a water detector, such as Super Kamiokande, neutrinos have a small chance to interact with a water molecule. This will often (but not always!) produce the neutrino's corresponding lepton.
Due to the Cherenkov effect, the lepton will produce a ring of light, which can be used for both classification and regression.
In this project we will tackle the task of classification of neutrino type (
The cylinder wall or 'barrel' and end-caps are lined with 'multi-PMT' or 'mPMT' modules arranged in a rectangular grid. Each mPMT is a dome with 19 PMTs arranged in two rings and one at the center:
Here is an event display where the barrel was 'unrolled':

You can clearly see a Cherenkov ring appearing The 'brightness' corresponds to charge collected by each PMT. Each PMT also tells us the arrival time of the signal.
The sequence of the tutorial is: