Hi Alberto, If you have difficulties understandind what a TEventList is, you will find a trivial example below. This function sorts the Tree from the Root tutorials hsimple.root in decreasing order of the variable pz. void sort() { TFile f("hsimple.root"); TTree *tree = (TTree*)f.Get("ntuple"); Int_t nentries = (Int_t)tree->GetEntries(); //Drawing variable pz with no graphics option. //variable pz stored in array fV1 (see TTree::Draw) tree->Draw("pz","","goff"); Int_t *index = new Int_t[nentries]; //sort array containing pz in decreasing order //The array index contains the entry numbers in decreasing order of pz TMath::Sort(nentries,tree->GetV1(),index); //open new file to store the sorted Tree TFile f2("hsimple_sorted.root","recreate"); //Create an empty clone of the original tree TTree *tsorted = (TTree*)tree->CloneTree(0); for (Int_t i=0;i<nentries;i++) { tree->GetEntry(index[i]); tsorted->Fill(); } tsorted->Write(); delete [] index; } Rene Brun On Mon, 22 Oct 2001, Rene Brun wrote: > Hi Alberto, > > You can use a TEventList to sort the Tree. > Just create an empty TEventList and enter your events in an order > that can choose based on your own algorithm. > Once you have the TEventlist, you can > - use TTree::SetEventList(mylist). When looping on the entries, > functions such as TTree::draw will loop in the order specified in the list > - write a new sorted Tree in the same loop > > Rene Brun > > Alberto Pulvirenti wrote: > > > > Dear rooters, > > is there anyone who knows if (and, eventually, how) it is possible to > > sort a tree, re-ordering its entries with respect to a specified criterion? > > > > Thanks. > > > > Alberto >
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:03 MET