====== Getting started with ROOT ======
''ROOT'' is a framework based on ''C++'' that is specialized in processing data in High Energy Physics. Some of its central classes are
* ''[[https://root.cern.ch/doc/master/classTTree.html|TTree]]'' to store data; typically variables are stored in branches for each entry/event (e.g. a proton-proton collision),
* ''[[https://root.cern.ch/doc/master/classTH1.html|TH1]]'' to make histograms,
* ''[[https://root.cern.ch/doc/master/classTLorentzVector.html|TLorentzVector]]'' to make a four-vectors that you can boost, or add together with simply ''+'',
* ''[[https://root.cern.ch/doc/master/classTBrowser.html|TBrowser]]'' to browse ''ROOT'' files containing trees, histograms, ...
Once installed, you can use its extensive libraries in your ''C++'' code or in the ''ROOT'' command line. If you don't like ''C++'' or pointers, it is also possible to use ''ROOT'' in ''python'', a.k.a. ''pyROOT''. This is definitely a good choice for doing simple things, such as making plots.
Always keep the [[https://root.cern.ch/root/html/ClassIndex.html|the reference manual]] (a.k.a. class index) handy: it lists all the available classes and their methods, sometimes even examples.
Helpful materials to get started:
* [[https://www.nevis.columbia.edu/~seligman/root-class/|ROOT tutorial by Dr. Seligman]] is very nice; it covers the all basics of ''ROOT'' in both ''C++'' and ''python'' and teaches how to use the reference manual to solve problems by yourself.
* [[https://indico.desy.de/getFile.py/access?contribId=2&resId=0&materialId=slides&confId=11460|These introductory slides to ROOT]] also covers ''ROOT'' in both ''C++'' and ''python'', and is shorter. It uses these [[http://www.desy.de/~clseitz/Students/TeraScale/|files]].
* [[https://root.cern.ch/root/html/tutorials/|The official ROOT examples]] and [[https://root.cern/doc/master/group__Tutorials.html|tutorials]] (which should also be available on your machine in ''$ROOTSYS/tutorials/'' after installation of ''root'').
* [[https://root.cern.ch/root/html/ClassIndex.html|The official ROOT reference manual]] (a.k.a. class index) lists all available classes and their methods, which is really useful to keep handy.
* [[https://root.cern.ch/root/htmldoc/guides/users-guide/ROOTUsersGuide.html|The official ROOT user guide]] ([[https://root.cern.ch/root-user-guides-and-manuals|index of older versions]]).
* [[root:pyROOT|Some useful pyROOT examples]]:
* [[root:pyroot_TTree|handling TTree trees]],
* [[root:pyroot_TH1|handling TH1 histograms]],
* [[root:pyroot_TFile|handling TFile files and TDirectory directories]],
* [[https://github.com/clelange/roofit|RooFit]] and [[https://github.com/clelange/roostats|RooStats]] tutorials, [[https://www.nikhef.nl/~vcroft/GettingStartedWithRooFit.html|RooFit manual]].
* [[root:fit|More on fitting in ROOT]].
* [[https://wiki.physik.uzh.ch/lhcb/root:root|Some useful and advanced examples made by the LHCb group]].
__Protip__: to quickly open root files in ''ROOT'''s ''TBrowser'', use this predefined function, together with [[computing:TBrowse|this macro]]: function TBrowse { root -l "$@" ~/macros/myMacro.C; }