====== 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; }