Hi Tommaso, It looks like you are trying to program a la Fortran in C++. You should use a class to hold all your variables. Instead of defining one branche per variable, setting the address for each variable, you can do all that in a much simpler way by simply creating one top level branch for your object. See an example in $ROOTSYS/test/Event.h,cxx and $ROOTSYS/tutorials/tree4.C On an existing Tree, you can also use TTree::MakeClass to automatically generate the class skeleton for your Tree. See the Users Guide. Rene Brun Tommaso Chiarusi wrote: > > 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