/Triforce_CaloML

Machine learning tool for identification of physics objects in particle detector calorimeters

Primary LanguagePython

                     -------------------------------
        -------------- TriForce Particle ID System --------------
                     -------------------------------

                                    ▄
                                  ▄▀░▀▄
                                ▄▀░░░░░▀▄
                              ▄▀░░░░░░░░░▀▄
                            ▄█▄▄▄▄▄▄▄▄▄▄▄▄▄█▄
                           ▄▀▄             ▄▀▄
                         ▄▀░░░▀▄         ▄▀░░░▀▄
                       ▄▀░░░░░░░▀▄     ▄▀░░░░░░░▀▄
                     ▄▀░░░░░░░░░░░▀▄ ▄▀░░░░░░░░░░░▀▄
                    ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

Triforce performs particle ID and energy regression, and produces GAN images
using calorimeter data.

                               -----------
        ------------------------ Contact ------------------------
                               -----------

                    Matt Zhang - set.stun@gmail.com

                             --------------
        ---------------------- How To Use -----------------------
                             --------------

Create an options file in the Options/ folder. default_options.py is a
template. In the file, set training options and initialize the tools you want
to use.

On L25 of triforce.py, choose which options file you want to load.

** PLEASE DO NOT PUSH YOUR LOCAL OPTIONS FILES TO GIT. **

Then, simply do "python3 triforce.py <args>" to run your script, passing
whatever arguments are specified in your options file. Run with Python 3.

E.g. with the default settings you can do "python3 triforce.py Output_001 0.01
0 0.5 256 4".

                      ---------------------------
        --------------- How To Create a New Tool ----------------
                      ---------------------------

There are four tools in this package:

    Classification - for particle classification (electron/gamma/pion)
    Regression - for determination of particle energy
    GAN - for generating new particle shower images
    Analysis - for data analysis and plotting

If you want to alter a tool (e.g. use a different neural net architecture for
regression), open the tool folder and create a new file with the
configuration you want. Then initialize it in your options file. You can use
the default tools as templates.

Critically, you need to implement a net with an __init__() and forward()
function, and you need to set a loss function and an optimizer.

                          --------------------
        ------------------- Bugs and Features -------------------
                          --------------------

If you find a bug, or want a feature added, please email Matt and add your
request to the TODO file.