\page root_plugin ROOT plugin for DABC (libDabcRoot.so)
\ingroup dabc_plugins
\subpage root_readme
[JavaScript ROOT](https://github.com/root-project/jsroot/blob/master/docs/JSROOT.md)
[THttpServer](https://github.com/root-project/jsroot/blob/master/docs/HttpServer.md)
\page root_readme Use of ROOT plugin
## Introduction
Original 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](\ref dabc_getting_started) should be performed.
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]( https://root.cern/doc/master/classTHttpServer.html) 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](https://github.com/root-project/jsroot/blob/master/docs/HttpServer.md)
## 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 \n
Sergey Linev S.Linev(at)gsi.de