# Usage in ROOT

We have also created a davix plugin for ROOT, TDavixFile. It can be used to perform I/O on HTTP, WebDAV or S3.

## Installation from EPEL repositories

1. Install root and root-davix

       $ sudo yum install root root-net-davix

2. Enable the davix plugin by default

       $ sudo sed -i 's/Davix.UseOldClient: yes/Davix.UseOldClient: no/g' /usr/share/root/system.rootrc

3. Tune configuration of rootrc with your HTTP parameters. See the available options in Configure TDavixFile.

       $ vim /usr/share/root/system.rootrc

## Installation from source

1. Download your favorite version of ROOT from https://root.cern.ch

2. Install the dependencies: cmake, openssl-devel, libxml2-devel

3. Run `installDavix.sh` which downloads and compiles davix.

4. Configure ROOT with `--with-davix-incdir` and `--with-davix-libdir` indicating the davix installation created by `installDavix.sh`. Davix should be displayed in the list of “enabled modules” at the end of the configuration step.

5. Compile ROOT.

## Usage

Using Davix is completely transparent once installed and configured, just proceed like with any other TFile plugin.

    TFile* f  = TFile::Open("http://root.cern.ch/files/h1big.root")

## Debugging

- To use ROOT’s logging, increase the gDebug variable level.

      $ gDebug = 2

- To use Davix’s internal logging, use the Davix.Debug parameter. It can be used independently of gDebug. To display only Davix’s logging infomation, set gDebug to 0 and Davix.Debug to 1-4, with 4 being most verbose. In code:

      $ gEnv->SetValue("Davix.Debug", 4);

- In system.rootrc:

      $ Davix.Debug: 4

## Configure TDavixFile

TDavixFile can be configured via the system.rootrc file, via ROOT environment variables or via TFile::Open flags at runtime. All configuration parameters are documented inside system.rootrc. Main options:

Feature | ROOT parameter | Value
--- | --- | ---
Enable/disable grid authentication support | Davix.GSI.GridMode | y/n
Enable/disable TLS certificate validity check | Davix.GSI.CACheck | y/n
Specify S3 authentication tokens | Davix.S3.SecretKey | string
Davix.S3.AccessKey | string
Specify user x509 credentials in PEM format | Davix.GSI.UserCert | filepath (string)
Davix.GSI.UserKey | filepath (string)
Specify VOMS proxy to use | Davix.GSI.UserProxy | filepath (string)
Define log verbosity | Davix.Debug | integer (1-4)

## Running HTTP ROOT TDavixFile Benchmarks

Check this repository: https://github.com/cern-it-sdc-id/tdavixfile-bench-tools.git