# References
There are several ways to figure out how to do something in ROOT:
- The ROOT web site. As of 2023, these are the areas of the [ROOT
manual](https://root.cern/manual/) on that site which are supposed
to act as documentation:
- The [ROOT Reference](https://root.cern/doc/master/index.html).
You've already visited this area. It contains the detailed
description of the ROOT classes.
- [ROOT Basics](https://root.cern/manual/basics/). The web pages
here outline a basic approach to ROOT. They assume you're already
familiar with C++ or Python. It's especially useful if you don't
need the step-by-step hand-holding approach I took in this tutorial.
- [ROOT Functional
Parts](https://root.cern/manual/functional_parts/). While this
describes the ROOT classes, it does so from a technical
perspective rather than act as a teaching guide. For example,
take a look at their [introduction to
histograms](https://root.cern/manual/histograms/) to see if its
approach works for you.
- The [ROOT User's
Guide](https://root.cern/root/htmldoc/guides/users-guide/ROOTUsersGuide.html).
As I've mentioned before, this is a bit out-of-date; it has not been
revised since 2018 (and it appears it [never will
be](https://root.cern/blog/manual-week/)). For example, there's
nothing in that guide about {ref}`RDataFrames `.
But I feel it's a much better tutorial for new users
than any of the other items on this list.[^f98]
- Create something "by hand," save it as a .C file, then examine the
file to see how ROOT does it.
There's one other resource: the example ROOT programs that come with the
package. There's a ROOT-based command that will tell you where they are:
root-config --tutdir
When I ask myself the question "How do I do something complicated in
ROOT?" I often find the answer in one of the examples they provide.
I've found it handy to make my own copy:[^f99]
> cp -arv `root-config --tutdir` $PWD
Then I go into the "tutorials" sub-directory, run their examples, and
look at their code:
> cd tutorials
> root demos.C
> cd graphics
> root first.C
> less first.C
You can also find the
[tutorials](https://root.cern/doc/master/group__Tutorials.html) on the
ROOT web site, but I find it harder to search for specific examples.
:::{admonition} The documentation is all over the place!
:class: note
If the distributed nature of the information is annoying to you, welcome
to the club! I often have to go hunting to find the answers I want when
using ROOT, even after years of working with the package.
Occasionally I've had no other choice but to examine the C++ source
code of the ROOT program itself to find out the answer to a question.
:::
:::{figure-md} teaching_physics-fig
:class: align-center
by Randall Munroe.
Perhaps this is the reason why the ROOT web site no longer teaches its
concepts from scratch. It definitely explains the cartoons and jokes in
this tutorial.
:::
[^f98]: So what ROOT resources are out there that are both up-to-date and
suitable for students who are not familiar with programming or
data-analysis concepts? Unfortunately, the only one I know of is the
tutorial you're reading now!
[^f99]: I'm being tricky here by using the
[backtick](https://unix.stackexchange.com/questions/27428/what-does-backquote-backtick-mean-in-commands)
in a UNIX command. In this particular case, what this does is take the
output of the command `root-config --tutdir` and insert it into the
command.