[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Handling ROOT files



Hi,

I guess just like in the STAF case, where there is all this "behind the
scenes" work to
present an event to the user from the event id set that gets sent, a similar
thing will need to
be done with ROOT, though less complicated.  Once the user code has the
event id list + file name, it could make a loop over the event id numbers
and then for the appropriate number, reads the event information.

It can be done efficiently if the ROOT tree contains two branches, one with
the event id listing and a pointer to the event and the other with the event
data. The "header" information and the event information are then contained
in two separate buffers.  You can also make it so that the two parts are in
separate files (split mode) but still one logical tree.

Looping over the event id listing will be quick, since it is stored
contiguously on disk, either in several  large buffers contained in 1 file,
or in a completely separate file.  Then dereferencing the pointer will give
you direct access to the event object data.

I know that CORBA is being used to transmit the information, but it is very
easy to send ROOT objects over the network.  It is sort of like making a
comparison with java RMI vs CORBA. RMI is easier to use but limited in use
to only the java language.  The 'advantage' there is that if it is a root
client, no version of CORBA is necessary to be installed on the client side,
just ROOT.

- Mark



-----Original Message-----
From:	Arie Shoshani [mailto:arie@math.lbl.gov]
Sent:	Tuesday, December 15, 1998 6:52 PM
To:	arie@math.lbl.gov; morrison@bnl.gov; DLOlson@lbl.gov; markp@bnl.gov
Cc:	gcdev@sseos.lbl.gov
Subject:	RE: Handling ROOT files

Mark, thanks for the quick reply.

> There is no file ID (or system name in objy lingo) for ROOT file in a
> central repository.
> Just the file name, no different than if it was an ascii file.  The list
of
> file names could be generated by a listing of files in HPSS directories.
> There is a TChain class that represents a collection of root files which
> will be used for an analysis pass.  It has methods to get the list of
files
> in the chain and so on.
> http://root.cern.ch/root/html/TChain.html

I suspected that this is the case.  I think we'll have to generate file IDs
internal to the Storage Manager, and maintain a map to the real file names.
The CM will then get the names of the files from that map.

> I guess the ROOT Tagdb could have for each entry the filename and event
> number, even though seems a bit wasteful, it might be an easy direct
> approach.  The data is compressed before writing to disk so it will not be
> such a big deal.  Since the Tagdb for the ROOT version has yet to be
> designed it can contain whatever information needed.  One could pass the
> list of filename + event IDs in that file to analysis code.

What we need to know is that we do not have to pass anything but the event
id set for the events that qualified.  So, we rely on any additional info
that
the User Code needs to be in the TagDB.

Arie.