RE: [ROOT] question concerning TChain

From: Philippe Canal (pcanal@fnal.gov)
Date: Wed May 26 2004 - 16:54:45 MEST


Hi,

> MCchain.GetEntries() returns 0

This should not happen in well formed TTrees.  It indicates that the TChain things that either none of the file exist or all the file that do exist contains empty trees.
Since you also have:

> jetInfoBranch[*]->GetEntries() return the number of entries of the last file...

I think that what happened is that there is indeed data of the file but instead of calling
TTree::Fill, TBranch::Fill have been called.  Calling TBranch::Fill tell the branch to put
data in itself but do not inform the TTree object that it has been filled.  

I.e. in your writing code replace:

	branch1->Fill();
	branch2->Fill();
with 
	tree->Fill();

Cheers,
Philippe.

PS.  There are other ways to work around this issues, however they are harder to use.

-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Alain Romeyer
Sent: Wednesday, May 26, 2004 7:57 AM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] question concerning TChain


Dear ROOTers,

I'm trying to chain root files with the following comands (with root 3.10):

TChain MCchain("Calib Tree","Calib Tree");
const int size = 2;
TBranch* jetInfoBranch[size];

MCchain.Add(filename1);
MCchain.Add(filename2);
MCchain.Add(filename3);
MCchain.Add(filename4);
MCchain.Add(filename5);
MCchain.Add(filename6);
MCchain.Add(filename7);
MCchain.Add(filename8);
MCchain.Add(filename9);
MCchain.Add(filename10);

MCchain.SetBranchStatus("*",0);
MCchain.SetBranchStatus("bJetsBranch",1);
MCchain.SetBranchStatus("OtherJetsBranch",1);

MCchain.SetBranchAddress("bJetsBranch",&jetInfo);
MCchain.SetBranchAddress("OtherJetsBranch",&jetInfo2);

cout << "MC chain entries : " << (MCchain.GetBranch("bJetsBranch"))->GetEntries() << endl;
jetInfoBranch[0] = MCchain.GetBranch("bJetsBranch");
cout << "Jet entries : " << jetInfoBranch[0]->GetEntries() << endl;
jetInfoBranch[1] = MCchain.GetBranch("OtherJetsBranch");
cout << "Jet 2 entries : " << jetInfoBranch[1]->GetEntries() << endl;
cout << "MC chain entries : " << MCchain.GetEntries() << endl;
[/i]
Unfortunatelly the (MCchain.GetBranch("bJetsBranch"))->GetEntries() or MCchain.GetEntries() returns 0 and the jetInfoBranch[*]->GetEntries() return the number of entries of the last file...

so where is my error ?

Best regards,

Alain

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Alain Romeyer
Service de Physique des Particules Elémentaires
19 Avenue Maistriau               Tél : +32 (0) 65.37.33.93
B-7000 MONS Belgium               Email : alain.romeyer@umh.ac.be

-----------------------------------------
http://membres.lycos.fr/aromeyer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET