Hi Shaun,
This is certainly possible if you have some time to spend on the problem.
Recently Tony Johnson has been able to read the Root files from
his Java based application. See his recent posting at:
http://root.cern.ch/root/roottalk/roottalk01/1973.html
you can also have look at the following presentation by Tony at the recent
HEPVIS workshop:
http://www.atsweb.neu.edu/hepvis01/Site/Talks/Talk021.pdf
There are two issues here:
- find the location of a particular object in a Root file.
- Rebuild the object in memory
The first operation is not too complex (unless the Root file has
multiple levels of sub-directories.
The second operation can be realized by using the StreamerInfo record
written at the end of the file and describing all the classes in the file.
You can get an idea of the file format by taking a small Root file and
doing:
TFile f("file.root")
f.Map(); //will show all the records on a file
f.ShowStreamerInfo(); //will show all the classes in the file
The Root classes to be emulated are
TFile, TKey, TBuffer, TStreamerInfo, TStreamerElement
Now, this may be only the top of the iceberg.
If the Root file contains only simple objects, the operation will not
be too complex. However, if the Root file contains more complex objects
like Trees, you have to understand more classes (TTree, TBranchxxx, TLeafxxx)
managing the internals of a Tree.
This procedure will be described one day. We have other priorities
for the time being.
I am curious to know in which context you will like to implement your own
reader.
Rene Brun
shaun roe wrote:
>
> Is there some way of reading ROOT data files into a non-ROOT program,
> without linking to ROOT at all?
> another way of asking this: whats the data file format, in terms of its
> byte structure?
>
> cheers
>
> shaun
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:49 MET