// @(#)root/tree:$Name:  $:$Id: TEntryList.h,v 1.4 2006/11/30 07:49:39 brun Exp $
// Author: Anna Kreshuk 27/10/2006

/*************************************************************************
 * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TEntryList
#define ROOT_TEntryList

#ifndef ROOT_TNamed
#include "TNamed.h"
#endif

class TTree;
class TDirectory;
class TObjArray;
class TString;

class TEntryList: public TNamed 
{
 protected:
   TList      *fLists;   //a list of underlying entry lists for each tree of a chain
   TEntryList *fCurrent; //! currently filled entry list

   Int_t            fNBlocks;   //number of TEntryListBlocks
   TObjArray       *fBlocks;    //blocks with indices of passing events (TEntryListBlocks)
   Long64_t         fN;         //number of entries in the list
   TString          fTreeName;  //name of the tree
   TString          fFileName;  //name of the file, where the tree is
   ULong_t          fStringHash;//! Hash value of a string of treename and filename
   Int_t            fTreeNumber;//! the index of the tree in the chain (used when the entry
                                //list is used as input (TTree::SetEntryList())

   Long64_t         fLastIndexQueried; //! used to optimize GetEntry() function from a loop 
   Long64_t         fLastIndexReturned; //! used to optimize GetEntry() function from a loop
   Bool_t           fShift;            //! true when some sub-lists don't correspond to trees
                                       //(when the entry list is used as input in TChain)
   TDirectory      *fDirectory;   //! Pointer to directory holding this tree

 public:
   enum {kBlockSize = 64000}; //number of entries in each block (not the physical size).

   TEntryList();
   TEntryList(const char *name, const char *title);
   TEntryList(const char *name, const char *title, const TTree *tree);
   TEntryList(const char *name, const char *title, const char *treename, const char *filename);
   TEntryList(const TTree *tree);
   TEntryList(const TEntryList& elist);
   virtual ~TEntryList();

   virtual void        Add(const TEntryList *elist);
   virtual Int_t       Contains(Long64_t entry, TTree *tree = 0);
   virtual Bool_t      Enter(Long64_t entry, TTree *tree = 0);
   virtual TEntryList  *GetCurrentList(){ return fCurrent; };
   virtual TEntryList  *GetEntryList(const char *treename, const char *filename);
   virtual Long64_t    GetEntry(Int_t index);
   virtual Long64_t    GetEntryAndTree(Int_t index, Int_t &treenum);
   virtual TList       *GetLists() const { return fLists; }
   virtual TDirectory  *GetDirectory() const { return fDirectory; }
   virtual Long64_t    GetN() const { return fN; }
   virtual const char  *GetTreeName() { return fTreeName.Data(); }
   virtual const char  *GetFileName() { return fFileName.Data(); }
   virtual Int_t       GetTreeNumber() {return fTreeNumber; }
   virtual Int_t       Merge(TCollection *list);

   virtual Long64_t    Next();
   virtual void        OptimizeStorage();
   virtual Bool_t      Remove(Long64_t entry, TTree *tree = 0);
   virtual void        Reset();

   virtual void        Print(const Option_t* option = "") const;

   virtual void        SetDirectory(TDirectory *dir);
   virtual void        SetShift(Bool_t shift) { fShift = shift; };
   virtual void        SetTree(const TTree *tree);
   virtual void        SetTree(const char *treename, const char *filename);
   virtual void        SetTreeName(const char *treename){ fTreeName = treename; };
   virtual void        SetFileName(const char *filename){ fFileName = filename; };
   virtual void        SetTreeNumber(Int_t index) { fTreeNumber=index;  }
   virtual void        Subtract(const TEntryList *elist);


   friend TEntryList operator||(TEntryList& elist1, TEntryList& elist2);

   ClassDef(TEntryList, 1);  //A list of entries in a TTree
};
#endif


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.