Re: [ROOT] TChain after MakeClass

From: Daniel CUSSOL (cussol@in2p3.fr)
Date: Tue Jun 03 2003 - 11:48:38 MEST


Hi Peter,

Peter H Fisher wrote:

>
> 2. Given the above, it might be worthwhile for me to make a reduced data
> set containing only a fraction of the events.  Do you have an example of
> how to do this?
>

One way to speed up your analysis is to use the TEventList class. This allows
you to store the entry numbers corresponding to a specific selection. This
can be used the following way:

for example, if you have a tree containing a branch named "X", and you want
to select entries for which X is greater than 20, you can do:

mychain->Draw(">> evlist","X > 20");

This generates a TEventList object named "evlist". To use it, you have to do:

TEventList *evl=(TEventList *)gROOT->FindObject("evlist"); // obtaining the
pointer to "evlist"
mychain->SetEventList(evl);

The next mychain->Draw() or mychain->Process() calls will only read entries
contained in the TEventList named "evlist". To come back to the "usual"
behavior (reding all entries of the TChain), you just have to type:


mychain->SetEventList(0);

In a treatment routine, you can add an entry number to the TEventList by
using the Enter(Int_t entry) method:

TEventList *evl=new TEventList("evlist");

......
// some declarations
......
// treatment loop
for(Int_t entry=0;entry<mychain->GetEntries();entry++)
 {
 Bool_t ok=kFALSE;
 .....
 // some selection algorithm setting ok to kTRUE if the selection condition
is filled
 if(ok)
  {
  evl->Enter(entry);  // Adding the entry number to the TEventList
  }

 }
...
// some code
...

evl->Write(); // to write the TEventList in a file

To use this eventlist in another analyses, you just have to do, if filep is
the poiter to the TFile which contains the TEventList:

 TEventList *evl=(TEventList *)filep->FindObject("evlist"); // obtaining the
pointer to "evlist"
mychain->SetEventList(evl);

The use of TEventList objects is very efficient if the selection algorithm is
complicated and/or a CPU consumer. For more complete information on
TEventList, look at

http://root.cern.ch/cgi-bin/print_hit_bold.pl/root/html/TEventList.html?TEventList#first_hit

I hope this helps

-
Daniel

LPC Caen
Boulevard du Marechal Juin
14050 CAEN CEDEX

e-mail : cussol@in2p3.fr
Tel    : +33-(0)2-31-45-29-73
FAX    : +33-(0)2-31-45-25-49



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET