# Help for ROOT's Reference Guide

## Parts of the Reference Guide

### Type Index

All basic types and typedefs are documented in the Type Index.

### Class Index

All classes and namespaces are listed alphabetically in the Class Index, along with a short info of what they are used for. You can jump to a class's entry using the shortcuts ontop of the page. They are optimized for quick access: they are distributed evenly, and short. Classes are grouped in modules; these, too, are listed ontop of the list of classes.

### Inheritance

All classes along with their derived and base classes are shown in the Class Hierarchy. The documentation for each class also shows the inheritance diagram. The class hierarchy is meant to give an overview of available classes and their relations.

## Modules

### What they are

Classes are grouped into modules. For ROOT, this is done on a per-directory basis: each module corresponds to a sub-directory. In other cases one module might represent one library. Either way, modules are meant to combine similar or related classes, allowing users to find classes close by context. If you need some functionality that you cannot find in a class you know, you might want to check for classes in the same module - maybe one of them does what you need.

### List of Modules

Modules are listed ontop of the Class Index and as part of the Library Dependencies Chart.

### Modules' Library Dependencies

Each module is assumed to be part of a library. The dependencies of libraries are not only relevant for linking, but often reflect also the contextual dependencies. The dependencies of all modules are shown in the Library Dependencies Chart.

## Class Reference

Pages like the one for TH2 are class references. They document the use and functionality of a class.

### Sections

Each class reference page has a class documentation, which documents what the class can be used for, and gives hints on how to use it. This allows you to figure out whether a certain class is appropriate for what you try to do. The page then lists all available members; they define a class's functionality and its interaction with your code. The next item is a tabbed set of charts, which allow you to study the class's inheritance diagram, what members get inherited from where, and which members are re-implemented, which files get indirectly included by including the class's header, and which libraries this class depends on. The remainder of the page contains the functions' documentation. And there is a little tool box floating around, which gives you some display options and a link to this help page. We will now go through all these parts in detail.

### Link Box

On the top of the page you can find a list of links. The first line contains the current "location", giving the home page, the module name, and the class name. The second line links to generic pages, like ROOT's home page, the Class Index, and the Class Hierarchy. The last line allows you to jump to the sections of the current page and a colored version of the class's header and source file.

### Info Box

There is a little info box, usually floating on the right side of the page (update your browser if it's not). It shows the name of the class you are currently looking at, which library you have to link against to get access to the class, and which header file you have to #include. It also contains options that influence how the list of members is displayed. you can show or hide non-public methods. If you just want to use ROOT you should hide them - you cannot access protected or private members anyway. And you can select whether member that are inherited from a base class should be shown. Again, if you just want to use ROOT you should probably show them, as you often want to use them whether they are defined in the current class or in one of its base classes. Whatever you set these options to should be stored in a cookie, so you will have the same setting next time you look at the class documentation. The two links in the bottom of the box get you to the top of the page and to this help page. You can hide the info box by clicking on the little "-" in the top right corner of the box, and show it again by clicking on the "+".

### List of Data and Function Members

The central part of a class are its members. Some are available to you; some are hidden from you, because they are only meant to be used internally. As an example, a class might allow you to set, access, and print its values, or store them into a file. Because methods should have reasonable names, often the method name itself is already a hint on what it does. If you want to get a TNamed's name, you will immediately see TNamed::GetName() in its list of functions. A click on this name will send you to the documentation for the method. If you enabled the display of inherited members you will see some members with a class name prefix. It tells you where this method has been defined.

#### Display Options

The info box contains options that influence how the list of members is displayed: you can e.g. show or hide non-public methods. If you just want to use ROOT you should hide them - you cannot access protected or private members anyway. And you can select whether member that are inherited from a base class should be shown. Again, if you just want to use ROOT you should probably show them, as you often want to use them whether they are defined in the current class or in one of its base classes. Whatever you set these options to should be stored in a cookie, so you will have the same setting next time you look at the class documentation.

#### Access (public / protected / private)

Not all members are available to everyone (check any C++ introduction to learn why). Public members have a green bar on their left, protected ones have a yellow one, and private members are marked with a red bar. Of course you won't see any protected or private members if you hide them in the display options.

#### Inheritance

You can often access members of a class's base classes, just as if they are defined in the derived class. A histogram, for example, has a name, and you can access it using GetName() as defined in its base class TNamed. If you want to see all available members, and not just the ones defined in the current class, in the display options. They will be prefixed with the name of the class they are defined in.

### Class Charts

The class charts are shown in a tabbed box; click on the names ontop to select a tab.

#### Inheritance

This chart shows the inheritance hierarchy for the current class. Arrows point to base classes. You can click the classes to get to their reference page.

#### Inherited Members

The second chart shows a list of all members of all base classes. You can see at what level they are defined or at what level they are defined. Members that are accessible (public) have a green background, protected ones have a yellow background, and private members have a red background. Members with a dark gray background are re-implemented or hidden by a derived class.

#### Includes

The Includes chart shows which files are indirectly included by including the class's header. Most headers will #include some files, so by #including that header you also #include the #included files, and so on. A illegible chart often means you should read a bit on the C++ trick known as "forward declaration". Including too many headers has some nasty consequences, like compile time, additional dependencies, etc.

#### Libraries

Each class is assumed to be in a library. That library might depend on other libraries. The fourth chart shows the dependencies of these libraries. You will need to link against all of these if you write your own program.

### Member Function Documentation

Each function should be documented by the developer of the class. The documentation can contain HTML, pictures, and example code. It should explain what the function does, what it expects as parameters, what it returns, and what can make it fail. Short functions can have their source displayed. You can click on the function name to jump to a colored version of the function's source.

Author: Axel Naumann
Last update: 2007-01-12
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.

#### This page has been hand crafted. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.