This class is an interface to any ROOT TTree. It aims to ease the access of an existing TTree: the user needs only to define a set of precompiler variables containing the branches to be accessed (and their respective types).
The interface will be created by a set of precompiler macros in the form of a Class from which one can access the TTree branches.
A set of methods is also defined in order to provide a simple way to handle iteration over all the TTree entries.
- Include the DTR header file:
#include "interface/DynamicTTreeReader.h"
- define the name of the interface class and the set of branches:
#define DYNAMIC_TREE_NAME DynamicTTreeReader #define DATA_TABLE \ DATA(int, i) \ DATA(float, f) #define DATA_VECT_TABLE \ DATA(int, vi, i) #define DATA_CLASS_TABLE \ DATA(std::string, s)
- include the precompiler macros to generate the class body and methods:
the following line must be placed below the branches definition
#include "src/DynamicTTreeReader.cc"
- test/DTR_SimpleExample.cpp contains a working example.
Following the different ways in which basic type variables, c-arrays and classes are handled inside the ROOT TTree class there are three different types of branches definition:
- DATA_TABLE(type, name): for basic type branches.
- DATA_VECT_TABLE(type, name, size): for c-arrays.
- DATA_CLASS_TABLE(class, name): for c++ classes.