RE: [ROOT] multiple arrays in TTree::Draw

From: Volker Buescher (buescher@fnal.gov)
Date: Wed Jun 20 2001 - 17:59:08 MEST


Hi Philippe,

yes, I was guessing already that the notation might be the reason... I
have no clue what the issues are when parsing the strings in Draw(), but
from the users perspective I would find it natural to interpret 

Draw("mc_pt:reco_pt")

as i vs. j, and then maybe provide a standard selection function

Draw("mc_pt:reco_pt","pair(mc_pt,reco_pt)") 

that is true if i=j and therefore gets you back to the special case that
is currently the default. Not great, I know - I'm sure someone on this
list will have a better suggestion.

Cheers,
Volker

On Wed, 20 Jun 2001, Philippe Canal wrote:

> Hi Volker,
> 
> You are correct in pointing out that the Draw method of TTree currently
> provides the plotting of pairs:
>  (mc_pt[0],reco_pt[0])
>  (mc_pt[1],reco_pt[1])
>  (mc_pt[2],reco_pt[2])
> and do not provided for plotting every elements of mc_pt versus every
> elements of reco_pt.
> 
> The issue is not an implementation issue but a notation issue.  So far,
>   Draw("mc_pt:reco_pt");
> plot mc_pt[i] versus reco_pt[i].  We have not thought of a good notation
> to indicate that it should plot mc_pt[i] versus reco_pt[j], for all valid
> values of i and j.  
> 
> If you could help in determining a good notation, we should be able to
> implement it. (note that the notation should work also if the command line
> is Draw("mc_pt+reco_pt");
> 
> Cheers,
> 
> Philippe Canal.\
> 
> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
> [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Volker Buescher
> Sent: Wednesday, June 20, 2001 9:53 AM
> To: roottalk@pcroot.cern.ch
> Subject: [ROOT] multiple arrays in TTree::Draw
> 
> 
> 
> Hi All,
> 
> I keep running into an apparent limitation of the Draw method of TTree,
> and I would appreciate very much any advice on whether this is possible in
> root or whether it could be added in future versions. Here is an example
> of what I'm trying to do:
> I have two branches, each with several variable length arrays,
> e.g. arrays mc_pt[nmc], mc_eta[nmc] in one branch and reco_pt[nreco],
> reco_eta[nreco] in the other branch. Now I'd like to use Draw() on the
> command line to plot for each event a) every entry in mc_pt versus every
> entry in reco_pt and b) same as in a) but apply cuts like
> "abs(mc_eta-reco_eta)<0.1", such that only those pairs of mc_pt/reco_pt
> are plotted, for which that condition is true.
> 
> As far as I understand, root only allows to plot pairs 
> 
> (mc_pt[0],reco_pt[0])
> (mc_pt[1],reco_pt[1])
> (mc_pt[2],reco_pt[2])
> ...
> 
> rather than all possible combinations - did I overlook something? Is there
> a way to do this without the inconvenience of using Loop()? If not,
> would it be possible to add this feature?
> 
> Thanks!
> Volker
> 



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:49 MET