Having had many years of experience in developing the interactive data analysis systems PAW and PIAF and the simulation package GEANT, we realized that the growth and maintainability of these products, written in FORTRAN and using some 20 year old libraries, had reached its limits. Although still very popular, these systems do not scale up to the challenges offered by the LHC, where the amount of data to be simulated and analyzed is a few orders of magnitude larger than anything seen before.
It became time to re-think our approach to large scale data analysis and simulation and at the same time we had to profit from the progress made in computer science over the past 15 to 20 years. Especially in the area of Object-Oriented design and development. Thus was born ROOT.
We started the ROOT project in the context of the NA49 experiment at CERN. NA49 generates an impressive amount of data, about 10 Terabytes of raw data per run. This data rate is of the same order of magnitude as the rates expected to be recorded by the LHC experiments. Therefore, NA49 is an ideal environment to develop and test the next generation data analysis tools and to study the problems related to the organization and analysis of such large amounts of data.
With ROOT we try to provide a basic framework that offers a common set of features and tools for all domains shown in the figure below.
Currently the emphasis of ROOT is on the data analysis domain but thanks to the approach of loosely coupled object-oriented frameworks the system can easily be extended to other domains.
We believe that ROOT is an ideal environment to introduce physicists quickly to the new world of Objects and C++.
The ROOT system provides a set of OO frameworks with all the functionality needed to handle and analyse large amounts of data in a very efficient way. Having the data defined as a set of objects, specialised storage methods are used to get direct access to the separate attributes of the selected objects, without having to touch the bulk of the data. Included are histograming methods in 1, 2 and 3 dimensions, curve fitting, function evaluation, minimisation, graphics and visualization classes to allow the easy setup of an analysis system that can query and process the data interactively or in batch mode.
Thanks to the builtin CINT C++ interpreter the command language, the scripting, or macro, language and the programming language are all C++. The interpreter allows for fast prototyping of the macros since it removes the time consuming compile/link cycle. It also provides a good environment to learn C++. If more performance is needed the interactively developed macros can be compiled using a C++ compiler.
The system has been designed in such a way that it can query its databases in parallel on MPP machines or on clusters of workstations or high-end PC's. ROOT is an open system that can be dynamically extended by linking external libraries. This makes ROOT a premier platform on which to build data acquisition, simulation and data analysis systems.