Root and Davix Tutorial

This page is deprecated; please see this page for ROOT usage instructions.

 

 

Using Davix for ROOT analysis

ROOT has a plugin for Davix (TDavixFile) allowing to use Davix for HTTP, WebDav or S3  I/O.

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
                
    /usr/share/root/system.rootrc
                 here for config details
  4. Have fun.

Installation from source :

  1. Go to http://root.cern.ch/drupal/
  2. Download your favorite version of ROOT
  3. Install the dependencies : cmake, openssl-devel, libxml2-devel
  4. run the script installDavix.sh in order to get a compiled version of davix
  5. configure ROOT with  the options --with-davix-incdir and --with-davix-libdir indicating the davix directory created by installDavix.sh, davix should be displayed in the list of "enabled modules" at the end of the configuration step
  6. compile
  7. Have fun

Use Davix

Using Davix is completely transparent once installed and configure, Just proceed like with any other TFile plugin 

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

Debug I/O With Davix

- For ROOT's logging, increasing the gDebug variable level  

gDebug = 2

- For Davix's internal logging, use the Davix.Debug parameter, 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

Limitations

Please note that for the moment, it's not possible to use TDavixFile directly with pre-signed S3 URLs. This is because by default, TFile issues a stat request towards the endpoint, which is translated into a HEAD. The problem is, an S3 URL can only be signed for a single HTTP verb - either HEAD or GET, and obviously for reading a file, we have to sign it with GET.
 
This makes the initial HEAD request that TFile issues to fail, thinking that there's no permission to read the file.
 
This does not preclude TDavixFile from using federated S3 URLs, however, as long as the dav:// or davs:// URL scheme is used to talk to the federator.

Configure TDavixFile

  TDavixFile can be configured via the system.rootrc file, via ROOT environment variable 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 or disable Https Certificate validity check Davix.GSI.CACheck y|n
Specify S3 authentication tokens Davix.S3.SecretKey
Davix.S3.AccessKey
string

Specify User X509 credentials in PEM format

Davix.GSI.UserCert
Davix.GSI.UserKey
filepath (string)
Specify VOMS proxy to use Davix.GSI.UserProxy filepath (string)
Define log verbosity of davix Davix.Debug integer

 

 

 

 

 

 

 

 

 

 


Running HTTP ROOT TDavixFile Benchmarks

 

1- Execute

git clone https://github.com/cern-it-sdc-id/tdavixfile-bench-tools.git tdavixfile-bench-tools

2- cd tdavixfile-bench-tools

3- Follow README instructions to RUN the tests

 


 

You are here