Version History


The biggest change for 2023 is a big new section on using RDataFrame to analyze an n-tuple. This was in response to the ROOT developers stating that RDataFrame (and a still-experimental class, RNtuple) represented the future of ROOT-based analysis.

I also went over the instructions on Installing ROOT on your own computer. In particular, I re-ordered the material to emphasize the approach (using conda) that the students were most likely to use on their laptops. I also address some issues with trying to install ROOT on Windows systems.


People have reported to me that this tutorial is being more widely used outside of Nevis. Considering all the resources that CERN and other institutions have put into their own ROOT tutorials, this is quite a compliment! In recognition of this, I’ve tried to make the ROOT setup information and installation information less Nevis-centric.

I’ve added some material about directories in the “Introduction to Linux” section. This is in response to my (perhaps false or biased) impression that an increasing number of students have no background in using the command line on their laptops; they’re accustomed to their GUIs and saving all their files on the desktop.

On the advice of Prof. Schellman of Oregon State University, I added a few paragraphs on Poisson distributions to the section on statistics.

The biggest change to the tutorial for 2022 was also due to an idea from Prof. Schellman: In prior years, the tutorial was a PDF file generated from a Microsoft Word document. It is now maintained using the Sphinx documentation management system and written in a combination of MyST and reStructuredText, both of which are variants of Markdown. This enables the main web-based presentation of the tutorial, with a simultaneous release of a supplementary PDF version.

I added expansions of the three additional talks that I give during the ROOT tutorial (on statistics, speeding up code, and batch systems). These are now available in an appendix.


This year I had some extra time to teach the tutorial. I asked for suggestions from the working groups at Nevis for additional topics. One of them was to teach the students some common concepts that physicists use in statistics. The result was longer than I’d like, since statistics is a big topic that’s worthy of its own courses and texts. This doesn’t have much to do with ROOT, so I created a new section on the topic.


I sincerely hope that by the time you read this, the impact of the 2020 pandemic will have faded into irrelevance. There could be no organized summer student program at Nevis that year, and certainly no in-person ROOT tutorial. However, I decided to update the tutorial anyway.

The primary changes were to the intermediate topics:

  • I moved more optional material into this section, so it would be less distracting for those going through the tutorial page-by-page, but still be available as a reference.

  • I offered more detailed options for installing ROOT and Jupyter on your laptop.


Included a new “intermediate topics” section, to act as a reference for useful material that the students may not immediately need for summer research.


We now have a Jupyterhub-based notebook installation available to Nevis students. I’ve incorporated this into the lessons. It’s now a six-part course, but the part introducing notebooks is quite short.


I’ve edited the Python portion to use IPython instead of the “vanilla” Python console.

The ROOT web site has changed, and its class documentation is now even worse than it was before. (Yay!) I’ve done my best to revise this course for those changes.


Many changes in response to feedback from the working groups:

  • Upgrade to ROOT 6, which affected the exercises and examples for Part Four and Five.

  • The TreeViewer is back in the course.

  • A few more “this is what it should look like” figures added (along with more xkcd cartoons).

  • Most of the working groups now have their students use Python for their summer work.

  • The C++ portion on creating a code skeleton for reading an n-tuple now uses the newer MakeSelector method instead of the older MakeClass method.


At the request of some of the experimental groups, I added a parallel track in pyroot, the Python wrapper around ROOT. The student can choose to learn ROOT/C++, pyroot, or both. This increased the size of the tutorial to five parts, but up to three of these parts are optional.


In response to student feedback, what had been one full day of work was split into two half-day classes. Instead of eliminating the advanced exercises, I divided the two days of the 2009 class into four parts, each part roughly corresponding to a half-day’s work. This allows each student to set their own pace and gives experienced programmers a challenge if they need it.


I was asked to expand the class to two full days. In past years, many students weren’t able to complete all the exercises that were intended to be done in a single day. I added a set of advanced exercises for students who knew enough C++ to get through the original material quickly, but allowed for the rest of the students to do in two days what earlier classes had been asked to do in one.

xkcd tech support

Figure 120: by Randall Munroe. Your reward for reaching the end of the very last page is to learn what I do most of the day.