Re: Tree Questions

From: Nick West (n.west1@physics.oxford.ac.uk)
Date: Tue Jan 12 1999 - 15:32:14 MET


Hi Rene,

> I take this opportunity to ask users to send now specific requirements
> regarding TTrees. It is the right time.

I suspect you are going to get a great deal of feedback - TTrees play such a
central role in analysis.  I would second the plea for a review of the
documentation.  ROOT is a victim of its own success; the more it gets used, the
more it draws in people who are new to OO and C++ and need their hands holding.
A group of us in the MINOS experiment are trying to persuade the collaboration
to adopt ROOT and I am currently writing a ROOT Crib aimed at neophytes.  The
idea is provide just enough to get people started and not to let them loose on
the ROOT web until they have.  In this endeavour I have spent more time writing
something on TTrees than anything else.

> The type of query as you show above, is in general, difficult to
> implement for an automatic split algorithm. 

I would argue that there is always going to be a limit to what splitting can be
done automatically.  Splitting is about I/O optimisation, but ROOT is never
going to know how the user has organised his/her tree, what data is frequently
accessed and what not.  The current system works well if the main TTree
TBranches correspond to access patterns.  Beyond that, let the user do things by
hand if they want to mix data with different access frequencies in the same
branch.

So, along with previous repliers, I would vote to place the effort into
extending the functionality not performance. Symmetric behaviour, and
specifically being able to use member functions in all circumstances would be
good. Extending the reach down into lower levels of the TTree would also be
great. For example would it be possible to lift the restriction that, for TTree
access, TClonesArray can only have objects whose data members are basic data
types?

I have another request which involves the composition of queries that draw data
from multiple TBranches. For example in the Event class doing something like:-

  Draw("fTracks.fPx:fTemperature");

- I don't claim this example makes sense!  In PAW terms this is like trying to
plot data from two or more n-tuples at once.  Unlike PAW, ROOT lets you do it,
but if I understand the current implementation, this works but in a somewhat
arbitrary way, you get one entry: (the first fPx, fTemperature).  If picking
from two separate TClonesArray you get combinations until one TBranch is
exhausted for the current event.  Maybe in general combinations between
TClonesArrays are not that useful but the simple case above, where only one
TClonesArray is involved, I think it would be good if you got every member of
the array, rather than just the first.

Cheers,

Nick West



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:28 MET