Re: Typical analysis: add leaves to existing tree. Efficient ? Doable ?

Stephen Bailey (bailey@physics.harvard.edu)
Wed, 2 Sep 1998 15:42:32 -0400 (EDT)


On Wed, 2 Sep 1998, Rene Brun wrote:

> David Rousseau, CERN wrote:
> >
> > Hi Rooters,
> >
> > Browsing the documentation, it's not clear to me how I should do the
> > following (not unusual) thing:
> > Starting from a TTree (a converted Ntuple) with lots of events and variables,
> > I want to compute a few complex variables for each of a few selected events,
> > and store them to be able to use them many times (for example
> > to do an unbinned maximum likelihood fit).
> > With Fortran/Hbook I would read the ntuple, select the events, and put
> > the few complex variables for each of a few selected events in a common. Then
> > my MINUIT FCN would use this common.
> > With Root, I imagine I can do exactly the same thing, create a new
> > TTree with only the variables I need and the events I need. Then my MINUIT
> > FCN would use this TTree. But I would have lost all links to the original
> > event data.
> > But since I was told in C++ course that I have to think completely different,
> > I thought I could do the following: add a selection flag as a leaf
> > to all events (not even sure if and how it is doable), add my complex
> > variables as new leaves to the event which are selected. Then my MINUIT FCN
> > would read first the event flag, then the complex variables only for the good
> > events (as explained in the web pages).
> > So, what is the right way ?
> >
> > Note: the examples on the web are in the style: I loop once on the events and
> > fill histograms. I would like to do (but maybe I shouldn't):
> > I loop on the events, and add information to be used later.
> >
> > Thanks a lot
> >
> > David Rousseau
>
> David,
> What you want to do makes a lot of sense.
> I recently added in version 2.00/11 a few utilities in this direction.
> Look at the documentation of TTree::Draw ("Getting more info").
> After a TTree::Draw call, you have access to all the information
> computed in the function. You can call TMinuit with the resulting
> arrays.
>
> Rene Brun
>

The additional information is helpful, but I have also wanted
to do the general case of adding information to a pre-existing
TNtuple as David described. e.g. I have an ntuple coming from
h2root which contains particle track parameters. I loop through
the events, making invariant masses for candidate decays, etc.
It would be very nice if I could add this invariant mass info back
to the original TNtuple so that all of the original information would
still be there for when I want to make interactive cuts later. For
now I put the invariant mass info into another ntuple along with any
data from the original ntuple that I think I might need. Copying the
data seems a bit wasteful, but I'm not sure how else to do it for
now.

But I'm not sure how realistic this request is, both in terms of
ease of implementation and efficiency of running. But if it was
possible to add leaves to an existing TNtuple, I'd use that feature...

Regards,

Stephen