Re: [ROOT] TTree::Draw and arrays

From: Pasha Murat (630)840-8237@169G ((630)840-8237@169G)
Date: Fri Jul 07 2000 - 01:35:38 MEST


I think that the existing mechanism provided by TTree::MakeClass 
is much more flexible and robust than the one based on coding in 
non-trivial (and sometimes non-intuitive) rules of interpreting 
the parameters passed to TTree::Draw(). 
	I woudn't say that TTree::MakeClass facility is perfect.
For example, when a tree is written out in split mode, the 
autogenerated analysis function is very different from
the function generated for the same tree written in non-split mode and
very far from one might hope for. TTree::MakeClass doesn't always generate 
the code which compiles - see, for example, ROOTBUGS#708. 
However improving this utility seems to me to be the best direction 
for putting the efforts into. 

David - did you try to use the auto cogegen facility and if so, 
where didn't it work for you?
					-best, Pasha

Philippe Canal wrote:
> 
> Hi,
> 
> This looks like a toughy, both conceptually and implementation wise.
> 
> First, how should the Draw command decide what the user means by:
> 
>    t->Draw("hit.t","hit.id == hit_list.id");
> or by
>    t->Draw("hit.t","hit.size == hit_ref.size");
> 
> In which case should it do a lookup to find two different index that match (as David
> is looking for) or do a simple index match (as it is now)?
> I suppose, a new syntax could be invented to express these two differents semantics,
> but it is really worth the extra complexity in syntax?
> 
> In addition, codewise it would be a non-trivial change to add this concept.
> 
> Philippe.
> 
> > -----Original Message-----
> > From: owner-roottalk@pcroot.cern.ch
> > [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of David Bailey (Antares
> > Post Graduate)
> > Sent: Thursday, July 06, 2000 10:25 AM
> > To: Roottalk (E-mail)
> > Subject: [ROOT] TTree::Draw and arrays
> >
> >
> > Hi,
> >
> >   I've been trying to use the TTree::Draw method to loop over different
> > TClonesArrays and compare the values of data members of the
> > objects in each
> > array. Reading the release notes for v2.25, as I understand it,
> > it will only
> > loop over the number of entries in each array corresponding to the smaller
> > of the two array sizes and will only compare entries with the same index.
> > What I would like to be able to do is a double loop over all
> > entries in both
> > arrays and compare the values for each possible pair of entries:
> >
> > e.g.
> >
> > t->Draw("hit.t","hit.id == hit_list.id");
> >
> > where: hit is a TClonesArray of "hits" ( with members "t" and "id" )
> >        hit_list is a TClonesArray of some "hit_id" object which
> > has a member
> > "id" giving the corresponding value of hit.id.
> >
> > i.e. What I want is to be able to draw some property of "hit" iff its "id"
> > corresponds to one in the "hit_list". Clearly, I could write a macro with
> > the loops explicitly to do this but it would be nice to be able to do it
> > automatically... Is this possible with the current release or can it be
> > easily added?
> >
> >   Thanks for your help,
> >
> >     Cheers, Dave
> >
> > /------------------------------------------/
> >   David Bailey : Antares post-Graduate    /
> >   Nuclear and Astrophysics Laboratory    /
> >   Keble Road, Oxford OX1 3RH    /-------/
> >   (01865) 273395  /------------/
> > -----------------/ d.bailey2@physics.ox.ac.uk
> >
> >



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:29 MET