TBIOROOT works for testbeam Root files (both raw Event data and recon data).
We need Root I/O for both the PDR and the balloon.
Short-term:
Keep TBIOROOT as is.
Add in some code to handle MC and ACD recon
This would be our fall back position, in case no other alternatives present
themselves.
Problems:
Discourages update of the Root classes - though it is possible.
Code is not well understood and not maintainable.
Possible list of tasks:
What | Who |
TBIOROOT use reconRootData and mcRootData | Ian |
MC Root Classes | Dan |
Fill MC data through TBIOROOT | Ian/Dan |
ACD Recon Classes | Heather |
ACD Recon in TDS | Heather |
Fill ACD Recon through TBIOROOT | Ian/Heather |
What if we do not have any other mechanism for Root I/O in time for PDR & balloon? Then any updates we make to the Root classes will ripple into TBIOROOT. We could live with this..though it will be rather painful... If we go down this path...I would strongly suggest making one update to the raw and recon classes...updating TBIOROOT and then freeze. That would be it until we are finished with the PDR & balloon.
New Hope:
The Brookhaven team within Atlas has developed a RootSvc for Gaudi.
This is their first attempt at bridging the gap between providing generic Root
I/O and maintaining the class structure within the Root files.
How do they do it? Their RootSvc uses Root's TDataSet
abstract class to generically handle the Root I/O. Currently, their data
is stored within TTables
(derived from TDataSet)...looks like a flat structure..where each event has
elements: floats, ints, arrays, etc - similar in concept to TNtuple except
that we are not restricted to floats.
Valerie tells me that Star also uses
TObjectSet (also
derived from TDataSet) for their "regular" classes...but that the I/O
is not generic... They are currently looking into the possibility of
storing pointers to TObjects within the TTables. But this is just getting
underway... Plus we would have to modify our own Root classes
to use TObjectSet...or TTable...
For now we may be just as well off to develop a light RootSvc of our own with
specific converters to handle our data...digiRootData, reconRootData, mcRootData
Problems:
This is relatively "new" code..and is still under development.
We will have to adapt the current converters for our own use.
There are some Root (3.00.06) specific fixes within their code...Valeri
recommends upgrading to Root 3.01
We will not have a completely suitable solution for Root I/O in time for the PDR & balloon.. We can have something in place, that will be understandable and maintainable..but it may be an intermediate step until we can take advantage of progress within Atlas - and our own experience with their RootSvc.