>You can do: > TClonesArray *arr =0; > tree->SetBranchAddress("T", &arr); > tree->SetBranchStatus("*",0); > tree->SetBranchStatus("f1",1); > tree->SetBranchStatus("f2",1); > //then in the loop (see below > tree->GetEntry(i); Hi REne, I compared this method with the following one: (1) From the branch T_, find the dimension of the TClonesArray at i-th entry. (2) double *pf1 = (double *) malloc(dimension*sizeof(double)); (3) tree->SetBranchAddress("T.f1", pf1); (4) tree->SetBranchStatus("T.f1", 1); (5) tree->GetEntry(i) then, the array pointed by pf1 contains the data at the i-th entry. This method appears to be about three time faster than the above TClonesArray method. Is this normal ? Or am I missing something in the TClonesArray method? --HP >On Fri, 6 Dec 2002, HP Wei wrote: > >> I have a tree with one branch ("T") into which I populate with >> TClonesArray of objects of class CL: >> >> Class CL : public TObject { >> public: >> double f1; >> double f2; >> int f3; >> int f4; >> >> .... >> }; >> >> The split is set to 1 when the tree is filled with data. >> >> Now, I want to read data from the resulting root file. >> As in the tcl.C example, I do the following: >> TClonesArray *arr =0; >> tree->SetBranchAddress("T", &arr); >> tree->GetEvent(event_number); >> >> This will extract data for f1, f2, f3, and f3... (all data fields defined >> in class CL.) >> >> Suppose I want only f1, and f2. >> What is the best way ? >> >> --HP >> >> >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:22 MET