# Exercise 13: A more realistic x-y plotting task **(1-2 hours)** :::{admonition} It's not as easy as it looks :class: note It took several pages to set up the previous exercise. It only takes one page to describe this one. Don't be fooled: this exercise is harder! ::: Take a look at folder `example2` in {file}`folders.root`. You'll see histograms and an n-tuple named `histogramList`. Right-click on `histogramList` and **Scan** the n-tuple. On the ROOT text window, you'll see that the n-tuple is a list of histogram ID numbers and an associated value. Once again, you're going to fit all those histograms to a Gaussian and make an x-y plot. The y values and error bars will come from the fits, as in the previous exercise. The x values will come from the n-tuple; for example, the value of x for histogram ID 14 is 1.0122363. I'll let you pick the axis labels for this graph; don't make the x-axis logarithmic. :::{figure-md} log_scale-fig :class: align-center xkcd log_scale by Randall Munroe ::: :::{admonition} Getting started :class: note You can use `MakeSelector` on the `histogramList` n-tuple, like you may have done {ref}`before `. The challenge will be putting together the code inside the `Process` method of the new class with code from the previous exercise. In the previous exercise, perhaps you hard-coded the number of histograms in the folder. Don't do that here. You could get the number of histograms from the number of entries in the n-tuple. Or maybe that's not a good idea; what if there were an entry in the n-tuple but no corresponding histogram? Keep a separate count of the number of "valid" histograms you're able to read. This means you'll have to check if you've read each histogram correctly. C++ tip: If a ROOT operation to read a pointer fails, that pointer will be {ref}`set to nullptr `. :::