Master project Maarten.
ROOT
AANET
JPP
Tensorflow GPU
h5py
PyRoot
- Get monte carlo (.evt) files from Lyon. (a)nu- eCC eNC for showers (a)numuCC for tracks. Perhaps also tauon and atmospheric muons.
- Run detector simulation with JPP (example: JTriggerEfficientcy or JEventTimesliceWriter) get .root files. Also make events with only K40 (with JRandomTimeSliceWriter). Here use the custom clock that makes time-blocks (20000 ns) instead of timeslices (100 miliseconds).
- Transform events from .root files into numpy arrays according to your Neural Network model. (models/) Save as .hdf5 files. Also save meta data like Energy, direction, position and type of neutrino. (network_data_writer.py)
- Feed numpy arrays to Neural network model to train as trigger, classifier or reconstructor. Keep 20% test set. Save weights (network_trainer.py)
- Feed test set to Neural network save output to .hdf5 (network_tester.py)
- Show results with a lot of plots (network_plotter.py)
- Profit
- A image is made from the DOM line id's to a matrix x and y index.
- DOM z positions index is used for the matrix z index.
- For a given time interval all the hits on a dom (one matrix element) is added together.
- Here either the TOT or the Number of hits are added.
- This value can also be weighted with the direction vector of the PMT that is hit. Than each matrix element becomes a 3 vector.
- All non DOM or non-hit matrix element are 0.
- Neural network like data that is mostely in range between -1 and 1. So the matrix elements should/can be normelized.
- The time interval is the duration of a whole event (~12000 ns) and all the hits on a dom are added together.
- You now have a (13, 13, 18, 3) or (13, 13, 18, 1) shaped matrix where the TOTs or NumHits are weighted with de PMT direction or not respectively. (x, y, z, c)
- This matrix/numpy array goed into a 3D convolutional network where the RGB channel can be used for the weighted 3 vector.
- Number of layers and nodes can vary. But here 3 3dConv layers and 2 fully connected layers are used. With .. .. .. nodes.
- The time interval can be any length but a length of 20000 ns is chosen.
- For each 400 ns (~lighttime betweens 2 doms) all hits are added as in the TID model. I call this a minitimeslice
- You now have a (50, 13, 13, 18, 3) or (50, 13, 13, 18, 1) shaped matrix where the TOTs or NumHits are weighted with de PMT direction or not respectively. (t, x, y, z, c)
- Each minitimeslice matrix with shape (13, 13, 18, 3) is passed through a 3Dconv similar to the TID model.
- The outputs of each minitimeslice are passed in order through a LSTM cell for reaching the final output
Cost funtion: (softmax) Cross entropy Optimizer: Adam optimizer with learning rate = 0.003 * .97 ^ (num epoch)
If you get a CUDA_ERROR on schol or schar ask Jan Just Keijser or Roel Aaij to reset it.