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