# HOWTO get ns-3 data into ROOT

# Introduction

The ROOT system provides a set of OO frameworks with all the functionality needed to handle and analyze large amounts of data in a very efficient way. Having the data defined as a set of objects, specialized 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 an arbitrary number of dimensions, curve fitting, function evaluation, minimization, 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, as well as a general parallel processing framework, PROOF, that can considerably speed up an analysis.

Thanks to the built-in 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. If more performance is needed the interactively developed macros can be compiled using a C++ compiler via a machine independent transparent compiler interface called ACliC.

The system has been designed in such a way that it can query its databases in parallel on clusters of workstations or many-core machines. 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.

# Ways to visualize data

ROOT has the following visualization capabilities:

- ROOT can make histograms (from 1 to 3 dimensions), scatter plots, fitting functions, etc.
- ROOT uses trees to handle data sets with an unlimited number of dimensions. They can be represented using all the kind of plots used to draw histograms and graphs, but in addtion they also have specific representions like spider-plot, parallel-coordinates plots and candle plots when more than 3 dimensions should be plotted at the same time.
- ROOT allows the user to export both to bitmap graphics, as PNG or JPEG, and to vector graphics, as Encapsulated PostScript or PDF.
- ROOT graphics may be adjusted in real-time by few mouse clicks using the graphical editor.
- ROOT graphics classes also provide all widgets that can be used to build a graphical user interface.
- For each graphical object displayed by ROOT may be saved the result in the form of a ROOT macro.

# Ways to analyze data

ROOT has the following capabilities related to analyzing data:

You may need to manipulate your data in a number of different ways. Because ROOT is a C++ framework, you can use all C and C++ standard functions to perform your operations. In addition, ROOT provides a number of mathematical and statistical functions, well integrated into the framework, that allow to perform virtually all possible operation with a few simple commands.

The basic mathematical functions and algorithms are provided together with more advanced functions. Geometrical concepts as points and vectors, and physical entities as 4-vectors are also defined, supporting all their transformation properties. Coordinates transformations in 2D, 3D and 4D are also defined, to make easier coding physical simulations. Finally, linear algebra (i.e. vector and matrix) operations are supported by all geometrical or physical quantities.

Among the advanced features, one has many special mathematical functions (e.g. gamma, beta, error and zeta functions, Legendre polynomials, elliptic integrals, hypergeometric, Bessel and Neumann functions), numerical functions used in statistics (probability density functions and cumulative distribution functions for several distributions, methods to compute limits and confidence levels, multi-variate analysis), and algorithms for numerical integration and differentiation, to solve equations, to find minima in multi-dimensional spaces (with different methods), to interpolate data points or to approximate them with a function.