[ROOT] Get TTree entries

From: Tommaso Chiarusi (Tommaso.Chiarusi@bo.infn.it)
Date: Wed Aug 29 2001 - 18:21:14 MEST


Hi rooters,
My problem concerns retriving the values from several TTrees, all with
the same structure.

So lets assume I have data.root that is a trees composed file.
Inside data.root I have the following TTrees

t1,t2,t3, ... etc.

Every TTree is composed by N branches, each representing one variable.

In order to retrive the first TTree's data I do the following:



// ------------------------------STEP i

 TTree *TREE1 = (TTree*)f->Get("t1"); // initialising the TREE
 Int_t entries = (Int_t)TREE1->GetEntries();



// ------------------------------STEP ii

// I declare the components of TREE1

 Double_t var1=0;
 Double_t var2=0;
 Double_t var3=0;
       .
       .
       .
// and so on (NOTE THAT THIS could be a long set of declaration!!!!!)!

// ------------------------------STEP iii
//then I associate each branch of TREE1 to each previously
//declared variable:

 TREE1->SetBranchAddress("var1",&var1);
 TREE1->SetBranchAddress("var2",&var2);

//.... and so on for all branches/variables (NOTE AGAIN that this could
be a long list of assignments!).


// ------------------------------STEP iv
//Then in order to do my analysis I loop over all the entries:

 for (Int_t ki=0;ki<entries;ki++)
   {
     TREE1->GetEntry(ki);
	
	do my stuff!
   }
 
NOW!!
passing to the next TTrees t2,t3, ...  etc I managed to make the program
working good  with defining new TREE2 TREE3... etc only!

This means that I had to rewrite all the times the assignements between
branches and variables (STEP iii) thus making longer and longer and
heavier and heavier the code!

Are there other alternative methods (for example resetting the content
of the TREE1 with the command
TREE1->Reset();)
and then repeating only the STEP i and STEP iv ?
I've already tried this strategy, but it doesn't seem to work!

Meanwhile, thanks  to all
Tommaso



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:58 MET