<img src="example.png" width="500px"/>

## rntviewer
This is an interactive visualization tool for [RNTuple](https://root.cern.ch/doc/v618/md_tree_ntuple_v7_doc_README.html).
It can also be used to read generic TFiles and display some information about them, but it's mostly focused on inspecting
the on-disk structure of RNTuples.

### Getting the repo
Clone this repository with 
```
git clone --recurse-submodules https://codeberg.org/silverweed/rntviewer
```

### Dependencies
rntviewer currently only fully works on Linux, with the terminal-only version working on MacOS as well.

The dynamic dependencies are:
  - GLFW3 (`libglfw3-dev` on debian, `glfw-devel` on fedora, `glfw` on arch)
  - ROOT (likely bleeding edge version, compiled from sources)
  - libxxhash3-dev

Other than those, rntviewer statically depends on [Dear ImGui](https://github.com/ocornut/imgui) (included in the source tree - make sure to clone the submodules!).

For the graphical version, the OS must support OpenGL 3.3 or higher.

For the terminal-only version you don't need GLFW3, ImGui or OpenGL support.

### Building
Building is done with `make`. Make sure to `source /path/to/root/bin/thisroot.sh` before running it.
You probably want to build the release version:
```
make r
```

You can test that the tool is working properly with:
```
./rntviewer testdata/RNTuple.root
```

To build the terminal-only version:
```
make nogfx_r
```

### Usage
Basic usage is:
```
./rntviewer <ntuple_file.root> [ntuple_name]
```

This will open a window and let you browse the RNTuple, jump around its sections and get some
information about them.
If you don't specify `ntuple_name`, the program will look for the first RNTuple in the file.

There is also a non-interactive non-graphical mode that can be used in a terminal (useful
e.g. for ssh sessions):
```
$ ./rntviewer -t <ntuple_file.root> [ntuple_name]
```

The `-t` flag enables terminal mode. Use `./rntviewer -h` to get a help message about the
other flags that rntviewer accepts and are particularly useful in non-interactive mode.