Hi Ole
TTree::AddFriend accepts a TTree as input. It is not clever enough
to accept a TChain. However, a TChain::AddFriend accepts either
a TTree or a TChain as argument.
TTree::AddFriend should be protected against use with a TChain.
Rene Brun
On Thu, 19 Sep 2002, Ole Streicher wrote:
> Hi!
>
> I have a problem using TChain and TTree::AddFriend together. ROOT
> version is 3.03/09:
>
> -----------------------------------------------------------------------------
> // create the main tree:
> TFile h("Run0001.Physics.Header.root");
> TTree *t = (TTree *)h.Get("Physics");
>
> t->Draw("Counter.Physics"); // <--- Works
>
> TChain *c = new TChain("Tracker");
> c->Add("Run0001.Physics.Tracker.Raw*.root"); // <--- Adds 11 files, 1MB each
>
> c->Draw("Unpacked.NChannels"); // <-- Works
>
> t->AddFriend(c, "Tracker");
> t->Draw("Tracker.Unpacked.NChannels"); // *** Break *** segmentation violation
> -----------------------------------------------------------------------------
>
> The last line gives a segfault.
>
> If I open just the first file of the chain (or put all events into one
> file without chains), it works:
>
> -----------------------------------------------------------------------------
> TFile f("Run0001.Physics.Tracker.Raw.root");
> TTree *c = (TTree*)f.Get("Tracker");
> c->Draw("Unpacked.NChannels"); // <-- Works
>
> t->AddFriend(c, "Tracker");
> t->Draw("Tracker.Unpacked.NChannels"); // <-- Works
> -----------------------------------------------------------------------------
>
> It also works if the chain uses only one file (removing the "*" in the
> first code snippet). Adding the second file gives the error, but already at
> the first event.
>
> Is this a bug in ROOT or can't I just add TChains as friends to other
> trees?
>
> Ole
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:10 MET