DABC (Data Acquisition Backbone Core)  2.9.1
Usage of DABC with ROOT

Introduction

Oroginal motivation for writing of libDabcRoot plugin was providing web interface to the arbitrary ROOT-based analysis. Current THttpServer class in ROOT fully solving such tasks.

Now idea of this plugin - access to ROOT application with DABC methods. Any ROOT application which runs THttpServer can create TDabcEngine and be attached to master DABC application. It could be many of such ROOT process and all of them could be access seamless via central http server, implemented in DABC.

Plugin also provides root::TreeStore class, which let use TTree storage in DABC without direct linking of ROOT functionality to DABC plugins.

There is also dabc_root utility, which let convert DABC internal histograms into ROOT representation.

Also this plugin was a place where JavaScript ROOT was developed for a while. Now it is just copy of central JSROOT repository from https://github.com/linev/jsroot

DABC Compilation

First of all, ROOT itself should be compiled and configured. DABC uses ROOTSYS shell variable, therefore it should be defined before DABC compilation starts. One could use ". your_root_path/bin/thisroot.sh" script.

Normal DABC compilation procedure should be performed, details can be found here. At the end of the DABC compilation libDabcRoot.so library will be created in $DABCSYS/lib subdirectory.

Running of web server

After DABC compiled and ". dabclogin" initialization script is called, one just starts root session and creates THttpServer instance at any moment of macro execution. For instance:

[shell] root -b -l

root [0] new THttpServer("http:8095");
root [1] .x $ROOTSYS/tutorials/hsimple.C
hsimple   : Real Time =   0.14 seconds Cpu Time =   0.15 seconds
(class TFile*)0x2b74510
root [2] 

After http server is started, one should be able to access it with the address http://your_host_name:8095/

One could continue root usage, creating or deleting histograms or any other objects - it will not disturb running server.

More information about ROOT http server one could find in ROOT documentation

Running of DABC server

In addition to ROOT-based http and fastcgi server, one could use following servers: DABC-based http server DABC-based fastcgi server DABC master socket DABC slave socket

DABC-based http server

root [0] new THttpServer("dabc:http:8095");

DABC-based fastcgi server

root [0] new THttpServer("dabc:fastcgi:9000");

DABC master socket

root [0] new THttpServer("dabc:1237");

This is DABC command socket. Go4 can connect with this socket and request all objects in binary form.

DABC slave socket

root [0] new THttpServer("dabc:master_node:1237");

This is possibility to attach slave to some running master and export all objects via master. This gives possibility to merge many slave jobs together.

For any comments and wishes contact
Sergey Linev S.Linev(at)gsi.de