Re: TEntryList for TChain

From: Rene Brun <Rene.Brun_at_cern.ch>
Date: Wed, 23 Jun 2010 10:28:39 +0200


I see that there is a missing function in TEntryList to loop the way you intend to do it.
So,instead of:

  CollectionTree->Draw(">>seltrackevents",cut,"entrylist");   TEntryList *seltrackevents =
(TEntryList*)gDirectory->Get("seltrackevents");

  Int_t jj = -1;
  seltrackevents->GetEntry(0);
  do {

    jj = seltrackevents->Next();
    cout << "jj = " << jj << endl;

    CollectionTree->GetEntry(jj);
    //
   .....
   .......

   } while(jj != -1);

I suggest to do:

  CollectionTree->Draw(">>seltrackevents",cut);   TEventList *seltrackevents =
(TEventList*)gDirectory->Get("seltrackevents");

  int nentries = seltrackevents->GetN();   for (int jj = 0;jj<nentries;jj++) {

     Long64_t entry = seltrackevents->GetEntry(jj);
     cout << "jj = " << jj <<" entry= " <<entry << endl;

     CollectionTree->GetEntry(entry);
     //
     .....
     .......

   }

Rene Brun

Hovhannes Khandanyan wrote:

>
>   Dear ROOTers,
>
> I have a chain of ROOT trees:
>
> TChain* CollectionTree = new TChain("CollectionTree");
> CollectionTree->Add("many files *.root");
>
> for which I create an entrylist
>
>   CollectionTree->Draw(">>seltrackevents",cut,"entrylist");
>   TEntryList *seltrackevents = 
> (TEntryList*)gDirectory->Get("seltrackevents");
>
> Then I try to look through my entrylist in the following way:
>
>    Int_t jj = -1;
>   seltrackevents->GetEntry(0);
>   do {
>
>     jj = seltrackevents->Next();
>     cout << "jj = " << jj << endl;
>
>     CollectionTree->GetEntry(jj);
>     //
>    .....
>    .......
>
>    } while(jj != -1);
>
> This works correctly only for the 1st file of the chain, since jj is 
> always the event number within the given file 'local event number' as 
> opposed 'global event number' for the whole chain. Please let me know 
> what I should use instead/on top of   jj = seltrackevents->Next();  to 
> make sure that I get the event from the correct chain file.
>
> Thanks for any help,
> Hovhannes
>
Received on Wed Jun 23 2010 - 10:28:44 CEST

This archive was generated by hypermail 2.2.0 : Wed Jun 23 2010 - 11:50:01 CEST