Dr J. LIST (University of Wuppertal)
Analyses in high-energy physics often involve the filling of large amounts of histograms from n-tuple like data structures, e.g. RooT trees. Even when using an object-oriented framework like RooT, a the user code often follows a functional programming approach, where booking, application of cuts, calculation of weights and histogrammed quantities and finally the filling of the histogram is performed separately in different places of the program. We will present a set of RooT based histogram classes that allow to define the histogrammed quantity, its weight and the cuts to be applied at the time of booking. We use lightweight function object classes to define plotted quantities and cut conditions; the "self-filling" histograms hold references to these objects, and evaluate them in a fill method that thus needs no parameters. The use of function objects rather than strings to define plotted quantities and cuts permits error detection at compile rather than run time, and allows the implementation of caching mechanisms if costly computations are to be performed. Arithmetic and logical expressions are implemented by operator overloading. Histograms can be grouped in collections. We apply the visitor pattern to perform operations like filling, writing, fitting or attribute setting on such a group, without having to extend the collection class each time a new functionality is needed. Although developed within the object oriented analysis framework of the H1 experiment, this toolkit can be used on any RooT tree.