Hi,
===
gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)
root-config --version
3.05/07
===
I would like to create branches in a tree, subsequently.
Enclosed, you will find a macro with 3 function test1() test2() and test3().
In test1, when a new branch is created, the TTree::Fill() method is used.
You realize that the first event contains AAAA in branch A and BBBB in branch B.
This is what we want, however, Tree T contains two entries and we would like to
have only one entry.
In test2, the problem with the number of entries is solved, since when B branch
is created we only fill the branch B.
In this case the only problem is "B" should be fill always after branch A is
created and "A" should be there.
In test3, I thought this would be the solution, when a branch is created it is
filled using TBranch::Fill().
However, I realize this is not working for the branch "A".
I realize that the number of entries is 0.
I would like to know why option test3() is not working, since this is the option
I would implement in my code.
Thanks in advance, Ginés
void test1()
{
TTree T("test","test",99);
TNamed * data1 = new TNamed("AAAA","AAAA");
TNamed * data2 = new TNamed("BBBB","BBBB");
T.Branch("A","TNamed",&data1,35000);
T->Fill();
T.Branch("B","TNamed",&data2,35000);
T->Fill();
Int_t nentries = T.GetEntries();
printf(">>> nentries=%d \n",nentries);
TNamed * lire = new TNamed("ZZZZ","ZZZZ");
T.GetBranch("A")->SetAddress(&lire);
T.GetEvent(0);
lire->Print("");
TNamed * lire2 = new TNamed("XXXX","XXXX");
T.GetBranch("B")->SetAddress(&lire2);
T.GetEvent(0);
lire2->Print("");
}
void test2()
{
TTree T("test","test",99);
TNamed * data1 = new TNamed("AAAA","AAAA");
TNamed * data2 = new TNamed("BBBB","BBBB");
T.Branch("A","TNamed",&data1,35000);
T->Fill();
T.Branch("B","TNamed",&data2,35000);
T->GetBranch("B")->Fill();
Int_t nentries = T.GetEntries();
printf(">>> nentries=%d \n",nentries);
TNamed * lire = new TNamed("ZZZZ","ZZZZ");
T.GetBranch("A")->SetAddress(&lire);
T.GetEvent(0);
lire->Print("");
TNamed * lire2 = new TNamed("XXXX","XXXX");
T.GetBranch("B")->SetAddress(&lire2);
T.GetEvent(0);
lire2->Print("");
}
void test3()
{
TTree T("test","test",99);
TNamed * data1 = new TNamed("AAAA","AAAA");
TNamed * data2 = new TNamed("BBBB","BBBB");
T.Branch("A","TNamed",&data1,35000);
T->GetBranch("A")->Fill();
T.Branch("B","TNamed",&data2,35000);
T->GetBranch("B")->Fill();
Int_t nentries = T.GetEntries();
printf(">>> nentries=%d \n",nentries);
TNamed * lire = new TNamed("ZZZZ","ZZZZ");
T.GetBranch("A")->SetAddress(&lire);
T.GetEvent(0);
lire->Print("");
TNamed * lire2 = new TNamed("XXXX","XXXX");
T.GetBranch("B")->SetAddress(&lire2);
T.GetEvent(0);
lire2->Print("");
}
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:15 MET