RE: (no subject)

From: Philippe Canal <pcanal_at_fnal.gov>
Date: Thu, 24 Nov 2005 11:21:39 -0600


Hi Dmitry,

Note also that TChain::GetBranch returns a TBranch object that explicitly pertain ___only__ to the current underlying TTree.

In the general case, having unevenly filled TTree is a bad idea (it causes many issues including the one you are stumpling upon).

It may (or may not) be more appropriate in your case to separate the branches in different trees.

Cheers,
Philippe.

-----Original Message-----
From: owner-roottalk_at_pcroot.cern.ch [mailto:owner-roottalk_at_pcroot.cern.ch] On Behalf Of Rene Brun
Sent: Thursday, November 24, 2005 10:45 AM To: Dmitry Naumov
Cc: Rene Brun; roottalk_at_cern.ch
Subject: Re: [ROOT] (no subject)

Dmitry,

When you do
root [5] t2->GetBranch("fEvent")->GetEntries() you get 1 entry. So it is normal that
root [4] t->GetBranch("fEvent")->GetEntry(0)

   (Int_t)425
   root [5] t->GetBranch("fEvent")->GetEntry(1)    (Int_t)0
The last command must return 0, since you only have one entry.

Rene

On Thu, 24 Nov
2005, Dmitry
Naumov wrote:

> Sorry, I forgot to mention that I first tried what you suggested and it
did
> not work (By the way
> why it should work if the tree can have in principle different branches
each
> having
> different number of events? What does it mean "Entries" in this case?)
> Thus I though that you probably meant setting number of events in the
given
> branch.
> Just a check of your first message:
>
> root [0] TChain *t = new TChain("nuclon")
> root [1] t->AddFile("t1.root")
> (Int_t)1
> root [2] t->AddFile("t2.root")
> (Int_t)1
> root [3] t->SetEntries(2)
> (Long64_t)2
> root [4] t->GetBranch("fEvent")->GetEntry(0)
> (Int_t)425
> root [5] t->GetBranch("fEvent")->GetEntry(1)
> (Int_t)0
>
>
> Just a check that each event has its 1 event:
> root [0] TFile f1("t1.root")
> root [1] TTree *t1 = (TTree*)f1.Get("nuclon")
> root [2] t1->GetBranch("fEvent")->GetEntries()
> (const Long64_t)1
> root [3] TFile f2("t2.root")
> root [4] TTree *t2 = (TTree*)f2.Get("nuclon")
> root [5] t2->GetBranch("fEvent")->GetEntries()
> (const Long64_t)1
>
> Rene Brun wrote:
>
>> You did not read my mail correctly. I told you to do
>> t->SetEntries(nentries);
>> and not
>> t->GetBranch("fEvent")->SetEntries*();
>>
>> Rene Brun
>>
>> On Thu, 24 Nov 2005, Dmitry Naumov wrote:
>>
>>> Dear Rene,
>>>
>>> thank you for this advice. I tried it but it does not read anyway the
>>> second event:
>>>
>>> root [0] TChain *t = new TChain("nuclon")
>>> root [1] t->AddFile("t1.root")
>>> (Int_t)1
>>> root [2] t->AddFile("t2.root")
>>> (Int_t)1
>>> root [3] t->GetBranch("fEvent")->SetEntries(2)
>>> root [4] t->GetBranch("fEvent")->GetEntries() // to check!
>>> (const Long64_t)2
>>> root [5] t->GetBranch("fEvent")->GetEntry(0)
>>> (Int_t)425 // OK
>>> root [6] t->GetBranch("fEvent")->GetEntry(1)
>>> (Int_t)0 // empty ?!
>>>
>>> root Version 5.02/00 Dmitry
>>>
>>> Rene Brun wrote:
>>>
>>>> Dmitry,
>>>>
>>>> Call t->SetEntries(nentries);
>>>> where nentries is the number of entries if your branches.
>>>>
>>>> Rene Brun
>>>>
>>>> On Thu, 24 Nov 2005, Dmitry Naumov wrote:
>>>>
>>>>> Dear rooters,
>>>>>
>>>>> I have a strange problem:
>>>>> I create TTree with two branches: fRunPars and fEvent.
>>>>> fRunPars is filled only once and it containes simulation settings
>>>>> fEvent s filled for each event:
>>>>>
>>>>> fTree->GetBranch("fEvent")->Fill()
>>>>>
>>>>> Now I created a set of files with these trees. I want to make a TChain

>>>>> of them:
>>>>> TChain *t = new TChain("nuclon");
>>>>> t->AddFile("t1.root"); // has 1 event
>>>>> t->AddFile("t2.root"); // has 1 event
>>>>> t->GetEntries(); // gives 0. It is OK because TTree
>>>>> // has two branches one of
which
>>>>> is filled
>>>>> // many times, another only
once,
>>>>> thus Entries probably has no sense
>>>>> t->GetBranch("fEvent")->GetEntries(); // gives 1 ?! Why not 2?
>>>>>
>>>>> If I do
>>>>> t->GetBranch("fEvent")->GetEntry(0); // it is OK
>>>>> t->GetBranch("fEvent")->GetEntry(1); // this event is empty.
>>>>>
>>>>>
>>>>> Do I misunderstand something? Many thanks in advance, Dmitry
>>>>>
>>>
>
Received on Thu Nov 24 2005 - 18:23:16 MET

This archive was generated by hypermail 2.2.0 : Tue Jan 02 2007 - 14:45:13 MET