-
Notifications
You must be signed in to change notification settings - Fork 2
TMVA
ROOT provides a flexible interface for a number of Multivariate Analysis, now more commonly referred to as Machine Learning. As well as their own classifiers you can use popular machine learning libraries such as R or Keras.
chanser provides an additional layer to simplify the steering of TMVA and include the classifiers as cuts in event loop analysis.
Machine learning has helped popularise python and Jupyter notebooks and so chanser is configured via pyROOT to run in python. This actually applies to all chanser analysis not just chanser_mva.
Please see the chanser interpretation of the TMVA tutorials TMVAClassifier and TMVAClassifierApplication in $CHANSER/tutorials/tmva
We will not go into any detail here on the different types of clssifier, please see TMVA resource for that and we will assume you know which you would like to use.
To include a classifier we must first choose one or some, train them, then include as a MVASignalIDAction
The darkest art of machine learning is the middle part (in principle ROOT/chanser_mva simplify the first and last parts) and you will need to work out what you are going to train your classifier with, i.e. how to get a sample of signal events and background events. Here we will outline some possibilities, but great care must be taken with each and it is ultimately the analysers own responsibility to make sure what they are doing is sensible and works in the way they expect.
The basic point of a MVA classifier is to take many input variables and produce a single output. In the case of signal identification this output will reflect the probability of having a signal or background event. In our analysis we can then cut on this output to reject or accept an event as signal.
The input variables use will in general be related to particle tracks, for example, times, energy deposits, Cherenkov photons,... . These can be accessed from the DST banks via the clas12root region_particles. To select which track variables we wish to use we create particle data classes, see the section on particle data for more details.