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

From: T Auger (thauger@phns27.cern.ch)
Date: Thu Sep 03 1998 - 14:10:31 MEST


Stephen Bailey writes:
 > 
 > 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
 > 
 > 
 > 
It makes a lot of sense to be able to add leaves to a tree after it
was created, at one point I wanted to do that myself. However, I use a
different approach which can be useful for small event size type analysis.
To be able to use the tree.Draw() function and make cuts on it, I
defined a Event class which does contain method returning invariant
masses, missing masses, angles for certain type of particle, etc... :

Float_t TClasEvent::InvM_gp() {
...
return(inv_mass);
}

Then when creating the tree, I use the split switch set to 0. That
way, the event is saved as a TObject and is no longer a collection of
leaves. Then when I want to draw a quantity I simply need to call the
method I defined InvM_gp() like that :
T.Draw("event.InvM_gp()","event.InvM_gp()>0&&event.Mm_ppip()>0.5")

All of that works because I store the event with the non-split method.

Therefore, I do not want to store these kinematic quantities anymore
since I can recalculate them on the fly.
Of course the drawback is that I have to read back the entire event
from the file which means that it takes longer to draw my
histograms. But I still prefer it because, I do not need to re-create
my tree when I add a cut, I just change the shared library TClasEvent that I
created.

hope this helps,
Thierry



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