Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TEntryList Class Reference

A List of entry numbers in a TTree or TChain.

Note: It is recommended to use approaches such as TTreeReader::SetEntryRange or ROOT::RDataFrame instead of TEntryList if possible.

Operations on entry lists

  • Add() - if the lists are for the same tree, adds all the entries of the second list to the first list. If the lists are for different trees, creates a TEntryList with 2 sublists for each TTree. If the lists are for TChains, merges the ones for the same trees and adds new sublists for the TTrees that were not included in the first TEntryList
  • Subtract() - if the lists are for the same TTree, removes the entries of the second list from the first list. If the lists are for TChains, loops over all sub-lists
  • GetEntry(n) - returns the n-th entry number
  • Next() - returns next entry number. Note, that this function is much faster than GetEntry, and it's called when GetEntry() is called for 2 or more indices in a row.

TTree::Draw() and TChain::Draw()

Use option entrylist to write the results of TTree::Draw and TChain::Draw into an entry list. Example:

tree->Draw(">>elist", "x<0 && y>0", "entrylist");
TEntryList *elist = (TEntryList*)gDirectory->Get("elist");
#define gDirectory
Definition TDirectory.h:384
A List of entry numbers in a TTree or TChain.
Definition TEntryList.h:26

Example of Loop on TEntryList with a TChain

void loopChain() {
TFile *fe = TFile::Open("myelist.root");
TEntryList *myelist = (TEntryList*)fe->Get("myelist");
TChain *chain = new TChain("ntuple");
chain->Add("hsimple.root");
chain->Add("hsimple2.root");
Long64_t listEntries = myelist->GetN();
Long64_t chainEntries = chain->GetEntries();
Int_t treenum = 0;
chain->SetEntryList(myelist);
for (entry=start;entry < end;entry++) {
entryNumber = chain->GetEntryNumber(entry);
if (entryNumber < 0) break;
localEntry = chain->LoadTree(entryNumber);
if (localEntry < 0) break;
....
then either call
branch->GetEntry(localEntry);
or
chain->GetEntry(entryNumber);
In the later case the LoadTree is then somewhat redundant.
...
}
}
long long Long64_t
Definition RtypesCore.h:80
A chain is a collection of files containing TTree objects.
Definition TChain.h:33
Long64_t GetEntryNumber(Long64_t entry) const override
Return entry number corresponding to entry.
Definition TChain.cxx:995
void SetEntryList(TEntryList *elist, Option_t *opt="") override
Set the input entry list (processing the entries of the chain will then be limited to the entries in ...
Definition TChain.cxx:2677
virtual Int_t Add(TChain *chain)
Add all files referenced by the passed chain to this chain.
Definition TChain.cxx:219
Long64_t LoadTree(Long64_t entry) override
Find the tree which contains entry, and set it as the current tree.
Definition TChain.cxx:1298
Long64_t GetEntries() const override
Return the total number of entries in the chain.
Definition TChain.cxx:952
Int_t GetEntry(Long64_t entry=0, Int_t getall=0) override
Get entry from the file to memory.
Definition TChain.cxx:976
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
virtual Long64_t GetN() const
Definition TEntryList.h:78
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Definition TFile.h:53
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
Definition TFile.cxx:4089

When using the TEntryList interface directly, you can get the 'tree number' and entry in the current tree (i.e. value similar to the return value of LoadTree) from calling TEntryList::GetEntryAndTree:

Long64_t treeEntry = myelist->GetEntryAndTree(el,treenum);
virtual Long64_t GetEntryAndTree(Long64_t index, Int_t &treenum)
Return the index of "index"-th non-zero entry in the TTree or TChain and the # of the corresponding t...

to obtain the entry number within the chain you need to add to it the value of treeEntry+ch->GetTreeOffset()[treenum] such that the loop in the previous example can also be written as:

for (Long64_t el = 0; el < listEntries; el++) {
Long64_t treeEntry = myelist->GetEntryAndTree(el,treenum);
Long64_t chainEntry = treeEntry+ch->GetTreeOffset()[treenum];
printf("el=%lld, treeEntry=%lld, chainEntry=%lld, treenum=%d\n", el, treeEntry, chainEntry, treenum);
ch->LoadTree(chainEntry); // this also returns treeEntry
needed_branch->GetEntry(treeEntry);
}

TSelectors

To fill an TEntryList from a TSelector correctly, one must add the TEntryList object to the output list of the selector (TSelector::fOutput). This is the only way to make the sub-lists of the TEntryList switch when the current tree of the TChain is changed.

Using a TEntryList as input (TTree::SetEntryList() and TChain::SetEntryList())

while the TTree::SetEntryList() function is only setting the TTree::fEntryList data member, the same function in TChain also finds correspondence between the TTrees of this TChain and the sub-lists of this TEntryList.

TEntryList and the current directory

TEntryList objects are automatically added to the current directory (like TTrees). However, in case of a TEntryList for a chain, only the top-level entry list is added, not the sub-lists for specific trees. Placing entry lists in the current directory allows calling them as a part of a TTreeFormula expression, so if the user wants to extract a sublist from a TChain entry list via the GetEntryList() or some other function, they have to add it to the current directory to be able to use it in TTreeFormula expressions.

TEntryList and TEventList

TTree::SetEventList() and TChain::SetEventList() transform a TEventList into a TEntryList See comments to those functions for more details

Types of entry lists

There are two types of entry lists:

1.

for a TTree (fBlocks data member is non-zero) Entry numbers are stored in TEntryListBlocks, which, in their turn, are stored in the TObjArray fBlocks. The range of the entry numbers is cut into intervals of kBlockSize entries (currently 64000), so that the first block contains information which entries out of the first 64000 pass the selection, the second block - which entries out of the 64000-127999 interval pass the selection, etc. Some blocks, obviously, might be empty. The internal representation of entry numbers in the blocks is described in the TEntryListBlock class description, and this representation might be changed by calling OptimizeStorage() function (when the list is filled via the Enter() function, this is done automatically, except for the last block). Individual entry lists can be merged (functions Merge() and Add()) to make an entry list for a TChain of corresponding TTrees.

2.

for a TChain (fLists data member is non-zero) It contains a TList of sub-lists (TEntryList objects, corresponding to each TTree) Trees and lists are matched by the TTree name and its file name (full path). All sub-lists are returned by the GetLists() function and individual lists are returned by GetEntryList() function. Such lists are no different from the lists for TTrees, described above.

Definition at line 25 of file TEntryList.h.

Public Types

enum  { kBlockSize = 64000 }
 
- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = (1ULL << ( 0 )) , kOverwrite = (1ULL << ( 1 )) , kWriteDelete = (1ULL << ( 2 )) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = (1ULL << ( 3 )) }
 
enum  EStatusBits {
  kCanDelete = (1ULL << ( 0 )) , kMustCleanup = (1ULL << ( 3 )) , kIsReferenced = (1ULL << ( 4 )) , kHasUUID = (1ULL << ( 5 )) ,
  kCannotPick = (1ULL << ( 6 )) , kNoContextMenu = (1ULL << ( 8 )) , kInvalidObject = (1ULL << ( 13 ))
}
 

Public Member Functions

 TEntryList ()
 default c-tor
 
 TEntryList (const char *name, const char *title)
 c-tor with name and title
 
 TEntryList (const char *name, const char *title, const char *treename, const char *filename)
 c-tor with name and title, which also sets the treename and the filename
 
 TEntryList (const char *name, const char *title, const TTree *tree)
 constructor with name and title, which also sets the tree
 
 TEntryList (const TEntryList &elist)
 copy c-tor
 
 TEntryList (const TTree *tree)
 c-tor, which sets the tree
 
 ~TEntryList () override
 Destructor.
 
virtual void Add (const TEntryList *elist)
 Add 2 entry lists.
 
void AddSubList (TEntryList *elist)
 Add a sub entry list to the current list.
 
virtual Int_t Contains (Long64_t entry, TTree *tree=nullptr)
 
virtual void DirectoryAutoAdd (TDirectory *)
 Called by TKey and others to automatically add us to a directory when we are read from a file.
 
virtual bool Enter (Long64_t entry, TTree *tree=nullptr)
 Add entry #entry to the list.
 
virtual bool Enter (Long64_t localentry, const char *treename, const char *filename)
 
void EnterRange (Long64_t start, Long64_t end, TTree *tree=nullptr, UInt_t step=1U)
 Enter all entries in a range in the TEntryList.
 
virtual TEntryListGetCurrentList () const
 
virtual TDirectoryGetDirectory () const
 
virtual Long64_t GetEntriesToProcess () const
 
virtual Long64_t GetEntry (Long64_t index)
 Return the number of the entry #index of this TEntryList in the TTree or TChain See also Next().
 
virtual Long64_t GetEntryAndTree (Long64_t index, Int_t &treenum)
 Return the index of "index"-th non-zero entry in the TTree or TChain and the # of the corresponding tree in the chain.
 
virtual TEntryListGetEntryList (const char *treename, const char *filename, Option_t *opt="")
 Return the entry list, corresponding to treename and filename By default, the filename is first tried as is, and then, if the corresponding list is not found, the filename is expanded to the absolute path, and compared again.
 
virtual const char * GetFileName () const
 
virtual TListGetLists () const
 
virtual Long64_t GetN () const
 
virtual bool GetReapplyCut () const
 
virtual const char * GetTreeName () const
 
virtual Int_t GetTreeNumber () const
 
TClassIsA () const override
 
bool IsValid () const
 
virtual Int_t Merge (TCollection *list)
 Merge this list with the lists from the collection.
 
virtual Long64_t Next ()
 Return the next non-zero entry index (next after fLastIndexQueried) this function is faster than GetEntry()
 
virtual void OptimizeStorage ()
 Checks if the array representation is more economical and if so, switches to it.
 
void Print (const Option_t *option="") const override
 Print this list.
 
virtual Int_t RelocatePaths (const char *newloc, const char *oldloc=nullptr)
 Relocate the file paths.
 
virtual bool Remove (Long64_t entry, TTree *tree=nullptr)
 Remove entry #entry from the list.
 
virtual void Reset ()
 Reset this list.
 
virtual Int_t ScanPaths (TList *roots, bool notify=true)
 Scan the paths to find the common roots.
 
virtual void SetDirectory (TDirectory *dir)
 Add reference to directory dir. dir can be 0.
 
virtual void SetEntriesToProcess (Long64_t nen)
 
virtual void SetFileName (const char *filename)
 
virtual void SetReapplyCut (bool apply=false)
 
virtual void SetShift (bool shift)
 
virtual void SetTree (const char *treename, const char *filename)
 If a list for a tree with such name and filename exists, sets it as the current sublist If not, creates this list and sets it as the current sublist.
 
virtual void SetTree (const TTree *tree)
 If a list for a tree with such name and filename exists, sets it as the current sublist If not, creates this list and sets it as the current sublist The name of the file, where the tree is, is taken as tree->GetTree()->GetCurrentFile()->GetName(), and then expanded either to the absolute path, or to full url.
 
virtual void SetTreeName (const char *treename)
 
virtual void SetTreeNumber (Int_t index)
 
void Streamer (TBuffer &) override
 Custom streamer for class TEntryList to handle the different interpretation of fFileName between version 1 and >1 .
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual void Subtract (const TEntryList *elist)
 Remove all the entries of this entry list, that are contained in elist.
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 TNamed copy ctor.
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 TNamed destructor.
 
void Clear (Option_t *option="") override
 Set name and title to empty strings ("").
 
TObjectClone (const char *newname="") const override
 Make a clone of an object using the Streamer facility.
 
Int_t Compare (const TObject *obj) const override
 Compare two TNamed objects.
 
void Copy (TObject &named) const override
 Copy this to obj.
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer.
 
const char * GetName () const override
 Returns name of object.
 
const char * GetTitle () const override
 Returns title of object.
 
ULong_t Hash () const override
 Return hash value for this object.
 
TClassIsA () const override
 
Bool_t IsSortable () const override
 
void ls (Option_t *option="") const override
 List TNamed name and title.
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator.
 
void Print (Option_t *option="") const override
 Print TNamed name and title.
 
virtual void SetName (const char *name)
 Set the name of the TNamed.
 
virtual void SetNameTitle (const char *name, const char *title)
 Set all the TNamed parameters (name and title).
 
virtual void SetTitle (const char *title="")
 Set the title of the TNamed.
 
virtual Int_t Sizeof () const
 Return size of the TNamed part of the TObject.
 
void Streamer (TBuffer &) override
 Stream an object of class TObject.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TObject
 TObject ()
 TObject constructor.
 
 TObject (const TObject &object)
 TObject copy ctor.
 
virtual ~TObject ()
 TObject destructor.
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract.
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad.
 
virtual void Browse (TBrowser *b)
 Browse object. May be overridden for another default action.
 
ULong_t CheckedHash ()
 Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object.
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs.
 
virtual void Delete (Option_t *option="")
 Delete this object.
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object.
 
virtual void Draw (Option_t *option="")
 Default Draw method for all objects.
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs.
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1).
 
virtual void Dump () const
 Dump contents of object on stdout.
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message.
 
virtual void Execute (const char *method, const char *params, Int_t *error=nullptr)
 Execute method on this object with the given parameter string, e.g.
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 Execute method on this object with parameters stored in the TObjArray.
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py).
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message.
 
virtual TObjectFindObject (const char *name) const
 Must be redefined in derived classes.
 
virtual TObjectFindObject (const TObject *obj) const
 Must be redefined in derived classes.
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object.
 
virtual const char * GetIconName () const
 Returns mime type name of object.
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py).
 
virtual Option_tGetOption () const
 
virtual UInt_t GetUniqueID () const
 Return the unique object id.
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out.
 
Bool_t HasInconsistentHash () const
 Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e.
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message.
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname".
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl.
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas.
 
void InvertBit (UInt_t f)
 
Bool_t IsDestructed () const
 IsDestructed.
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory).
 
virtual Bool_t IsFolder () const
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary).
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification (the base implementation is no-op).
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete.
 
void operator delete (void *ptr)
 Operator delete.
 
void operator delete (void *ptr, void *vp)
 Only called by placement new when throwing an exception.
 
void operator delete[] (void *ptr)
 Operator delete [].
 
void operator delete[] (void *ptr, void *vp)
 Only called by placement new[] when throwing an exception.
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *vp)
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator.
 
virtual void Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself.
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list.
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory.
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove this object from a list.
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save this object in the file specified by filename.
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out".
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f.
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object.
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message.
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked.
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory.
 

Static Public Member Functions

static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Int_t Relocate (const char *fn, const char *newroot, const char *oldroot=nullptr, const char *enlnm=nullptr)
 Relocate entry list 'enlnm' in file 'fn' replacing 'oldroot' with 'newroot' in filenames.
 
static Int_t Scan (const char *fn, TList *roots)
 Scan TEntryList in 'fn' to find the common parts of paths.
 
- Static Public Member Functions inherited from TNamed
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TObject
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Longptr_t GetDtorOnly ()
 Return destructor only flag.
 
static Bool_t GetObjectStat ()
 Get status of object stat flag.
 
static void SetDtorOnly (void *obj)
 Set destructor only flag.
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable.
 

Protected Member Functions

void GetFileName (const char *filename, TString &fn, bool *=nullptr)
 To be able to re-localize the entry-list we identify the file by just the name and the anchor, i.e.
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 Interface to ErrorHandler (protected).
 
void MakeZombie ()
 

Protected Attributes

TObjArrayfBlocks
 blocks with indices of passing events (TEntryListBlocks)
 
TEntryListfCurrent
 ! currently filled entry list
 
TDirectoryfDirectory
 ! Pointer to directory holding this tree
 
Long64_t fEntriesToProcess
 used on proof to set the number of entries to process in a packet
 
TString fFileName
 name of the file, where the tree is
 
Long64_t fLastIndexQueried
 ! used to optimize GetEntry() function from a loop
 
Long64_t fLastIndexReturned
 ! used to optimize GetEntry() function from a loop
 
TListfLists
 a list of underlying entry lists for each tree of a chain
 
Long64_t fN
 number of entries in the list
 
Int_t fNBlocks
 number of TEntryListBlocks
 
bool fReapply
 If true, TTree::Draw will 'reapply' the original cut.
 
bool fShift
 ! true when some sub-lists don't correspond to trees (when the entry list is used as input in TChain)
 
ULong_t fStringHash
 ! Hash value of a string of treename and filename
 
TString fTreeName
 name of the tree
 
Int_t fTreeNumber
 ! the index of the tree in the chain (used when the entry list is used as input (TTree::SetEntryList())
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 

Private Member Functions

TEntryListoperator= (const TEntryList &)
 

Friends

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

Additional Inherited Members

- Protected Types inherited from TObject
enum  { kOnlyPrepStep = (1ULL << ( 3 )) }
 

#include <TEntryList.h>

Inheritance diagram for TEntryList:
[legend]

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kBlockSize 

Definition at line 54 of file TEntryList.h.

Constructor & Destructor Documentation

◆ TEntryList() [1/6]

TEntryList::TEntryList ( )

default c-tor

Definition at line 167 of file TEntryList.cxx.

◆ TEntryList() [2/6]

TEntryList::TEntryList ( const char *  name,
const char *  title 
)

c-tor with name and title

Definition at line 188 of file TEntryList.cxx.

◆ TEntryList() [3/6]

TEntryList::TEntryList ( const char *  name,
const char *  title,
const TTree tree 
)

constructor with name and title, which also sets the tree

Definition at line 214 of file TEntryList.cxx.

◆ TEntryList() [4/6]

TEntryList::TEntryList ( const char *  name,
const char *  title,
const char *  treename,
const char *  filename 
)

c-tor with name and title, which also sets the treename and the filename

Definition at line 236 of file TEntryList.cxx.

◆ TEntryList() [5/6]

TEntryList::TEntryList ( const TTree tree)

c-tor, which sets the tree

Definition at line 258 of file TEntryList.cxx.

◆ TEntryList() [6/6]

TEntryList::TEntryList ( const TEntryList elist)

copy c-tor

Definition at line 281 of file TEntryList.cxx.

◆ ~TEntryList()

TEntryList::~TEntryList ( )
override

Destructor.

Definition at line 329 of file TEntryList.cxx.

Member Function Documentation

◆ Add()

void TEntryList::Add ( const TEntryList elist)
virtual

Add 2 entry lists.

Parameters
[in]elistThe list that should be added to the current one.
Note
If you are creating a TEntryList for a TChain and you would like to have a one to one mapping between the sub lists of the TEntryList and the sub trees in the TChain, please do not call this function but use TEntryList::AddSubList instead and pair it with a call to TChain::SetEntryList with option "sync". See the AddSubList function documentation for an example usage. This helps for example in a testing or benchmark scenario where a TChain holds multiple times the same tree in the same file. In that case, this function would not be be able to distinguish different sub entry lists that refer to the same treename and filename. Instead it would create a union of all the sub entry lists into one list.

Reimplemented in TEntryListFromFile, and TEntryListArray.

Definition at line 365 of file TEntryList.cxx.

◆ AddSubList()

void TEntryList::AddSubList ( TEntryList elist)

Add a sub entry list to the current list.

Parameters
[in]elistan entry list that should be added as a sub list of this list.

This function is specifically targeted at situations where there is a global TEntryList that should hold one or more sub TEntryList objects. For example, if one wants to create a one to one mapping between the sub entry lists and the trees in the files that make a TChain. Note that in such cases this configuration of the entry list should be used in pair with the option "sync" of the function TChain::SetEntryList

// Create a TChain with two files. Each contains a tree with 20 entries
TChain chain{"entries"};
chain.Add("file_20entries_1.root");
chain.Add("file_20entries_2.root");
// Create a global, empty TEntryList.
TEntryList elists;
// Create two entry lists. Each one will be referring to a different tree in the chain
TEntryList elist1{"","","entries","file_20entries_1.root"};
TEntryList elist2{"","","entries","file_20entries_2.root"};
// Select the first ten entries from the first tree and all entries from the second
for(auto entry = 0; entry < 10; entry++){
elist1.Enter(entry);
}
for(auto entry = 0; entry < 20; entry++){
elist2.Enter(entry);
}
// Add sub entry lists to the global list
elists.AddSubList(&elist1);
elists.AddSubList(&elist2);
// Set the entry list in the chain. Note the usage of option "sync"
chain.SetEntryList(&elists, "sync");
virtual bool Enter(Long64_t entry, TTree *tree=nullptr)
Add entry #entry to the list.
void AddSubList(TEntryList *elist)
Add a sub entry list to the current list.

Definition at line 572 of file TEntryList.cxx.

◆ Class()

static TClass * TEntryList::Class ( )
static
Returns
TClass describing this class

◆ Class_Name()

static const char * TEntryList::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

static constexpr Version_t TEntryList::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 125 of file TEntryList.h.

◆ Contains()

Int_t TEntryList::Contains ( Long64_t  entry,
TTree tree = nullptr 
)
virtual
  • When tree = 0, returns from the current list
  • When tree != 0, finds the list, corresponding to this tree
  • When tree is a chain, the entry is assumed to be global index and the local entry is recomputed from the treeoffset information of the chain

Reimplemented in TEntryListArray, and TEntryListFromFile.

Definition at line 590 of file TEntryList.cxx.

◆ DeclFileName()

static const char * TEntryList::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 125 of file TEntryList.h.

◆ DirectoryAutoAdd()

void TEntryList::DirectoryAutoAdd ( TDirectory dir)
virtual

Called by TKey and others to automatically add us to a directory when we are read from a file.

Definition at line 619 of file TEntryList.cxx.

◆ Enter() [1/2]

bool TEntryList::Enter ( Long64_t  entry,
TTree tree = nullptr 
)
virtual

Add entry #entry to the list.

  • When tree = 0, adds to the current list
  • When tree != 0, finds the list, corresponding to this tree
  • When tree is a chain, the entry is assumed to be global index and the local entry is recomputed from the treeoffset information of the chain

Reimplemented in TEntryListArray, and TEntryListFromFile.

Definition at line 631 of file TEntryList.cxx.

◆ Enter() [2/2]

bool TEntryList::Enter ( Long64_t  localentry,
const char *  treename,
const char *  filename 
)
virtual

Reimplemented in TEntryListArray, and TEntryListFromFile.

Definition at line 679 of file TEntryList.cxx.

◆ EnterRange()

void TEntryList::EnterRange ( Long64_t  start,
Long64_t  end,
TTree tree = nullptr,
UInt_t  step = 1U 
)

Enter all entries in a range in the TEntryList.

Parameters
[in]startstarting entry to enter.
[in]endending entry to enter.
[in]treepassed as is to TEntryList::Enter.
[in]stepstep increase of the loop entering the entries.

This is a helper function that enters all entries between start (inclusive) and end (exclusive) to the TEntryList in a loop. It is useful also in PyROOT to avoid having to do the same in a Python loop.

Definition at line 703 of file TEntryList.cxx.

◆ GetCurrentList()

virtual TEntryList * TEntryList::GetCurrentList ( ) const
inlinevirtual

Reimplemented in TEntryListFromFile.

Definition at line 71 of file TEntryList.h.

◆ GetDirectory()

virtual TDirectory * TEntryList::GetDirectory ( ) const
inlinevirtual

Definition at line 77 of file TEntryList.h.

◆ GetEntriesToProcess()

virtual Long64_t TEntryList::GetEntriesToProcess ( ) const
inlinevirtual

Definition at line 75 of file TEntryList.h.

◆ GetEntry()

Long64_t TEntryList::GetEntry ( Long64_t  index)
virtual

Return the number of the entry #index of this TEntryList in the TTree or TChain See also Next().

Reimplemented in TEntryListFromFile.

Definition at line 759 of file TEntryList.cxx.

◆ GetEntryAndTree()

Long64_t TEntryList::GetEntryAndTree ( Long64_t  index,
Int_t treenum 
)
virtual

Return the index of "index"-th non-zero entry in the TTree or TChain and the # of the corresponding tree in the chain.

Reimplemented in TEntryListFromFile.

Definition at line 835 of file TEntryList.cxx.

◆ GetEntryList()

TEntryList * TEntryList::GetEntryList ( const char *  treename,
const char *  filename,
Option_t opt = "" 
)
virtual

Return the entry list, corresponding to treename and filename By default, the filename is first tried as is, and then, if the corresponding list is not found, the filename is expanded to the absolute path, and compared again.

To avoid it, use option "ne"

Reimplemented in TEntryListFromFile.

Definition at line 889 of file TEntryList.cxx.

◆ GetFileName() [1/2]

virtual const char * TEntryList::GetFileName ( ) const
inlinevirtual

Reimplemented in TEntryListFromFile.

Definition at line 80 of file TEntryList.h.

◆ GetFileName() [2/2]

void TEntryList::GetFileName ( const char *  filename,
TString fn,
bool local = nullptr 
)
protected

To be able to re-localize the entry-list we identify the file by just the name and the anchor, i.e.

we drop protocol, host, options, ... The result in the form 'file::anchor' (or 'file', if no anchor is present) is saved in 'fn'. The function optionally (is 'local' is defined) checks file locality (i.e. protocol 'file://') returning the result in '*local' .

Definition at line 870 of file TEntryList.cxx.

◆ GetLists()

virtual TList * TEntryList::GetLists ( ) const
inlinevirtual

Definition at line 76 of file TEntryList.h.

◆ GetN()

virtual Long64_t TEntryList::GetN ( ) const
inlinevirtual

Reimplemented in TEntryListFromFile.

Definition at line 78 of file TEntryList.h.

◆ GetReapplyCut()

virtual bool TEntryList::GetReapplyCut ( ) const
inlinevirtual

Definition at line 82 of file TEntryList.h.

◆ GetTreeName()

virtual const char * TEntryList::GetTreeName ( ) const
inlinevirtual

Reimplemented in TEntryListFromFile.

Definition at line 79 of file TEntryList.h.

◆ GetTreeNumber()

virtual Int_t TEntryList::GetTreeNumber ( ) const
inlinevirtual

Reimplemented in TEntryListFromFile.

Definition at line 81 of file TEntryList.h.

◆ IsA()

TClass * TEntryList::IsA ( ) const
inlineoverridevirtual
Returns
TClass describing current object

Reimplemented from TObject.

Reimplemented in TEntryListArray, and TEntryListFromFile.

Definition at line 125 of file TEntryList.h.

◆ IsValid()

bool TEntryList::IsValid ( ) const
inline

Definition at line 84 of file TEntryList.h.

◆ Merge()

Int_t TEntryList::Merge ( TCollection list)
virtual

Merge this list with the lists from the collection.

Reimplemented in TEntryListFromFile.

Definition at line 979 of file TEntryList.cxx.

◆ Next()

Long64_t TEntryList::Next ( )
virtual

Return the next non-zero entry index (next after fLastIndexQueried) this function is faster than GetEntry()

Reimplemented in TEntryListFromFile.

Definition at line 998 of file TEntryList.cxx.

◆ operator=()

TEntryList & TEntryList::operator= ( const TEntryList )
private

◆ OptimizeStorage()

void TEntryList::OptimizeStorage ( )
virtual

Checks if the array representation is more economical and if so, switches to it.

Reimplemented in TEntryListFromFile.

Definition at line 1085 of file TEntryList.cxx.

◆ Print()

void TEntryList::Print ( const Option_t option = "") const
override

Print this list.

  • option = "" - default - print the name of the tree and file
  • option = "all" - print all the entry numbers

Definition at line 1101 of file TEntryList.cxx.

◆ Relocate()

Int_t TEntryList::Relocate ( const char *  fn,
const char *  newroot,
const char *  oldroot = nullptr,
const char *  enlnm = nullptr 
)
static

Relocate entry list 'enlnm' in file 'fn' replacing 'oldroot' with 'newroot' in filenames.

If 'enlnm' is null or '*' all entry lists in the file are relocated. Relocation is mandatory to use the entry-list with the same dataset at a different location (i.e. on a different cluster, machine or disks). This function can be called as many times as need to reach the desired result. The existing 'locations' can be checked qith TEntryList::Scan .

Definition at line 1465 of file TEntryList.cxx.

◆ RelocatePaths()

Int_t TEntryList::RelocatePaths ( const char *  newroot,
const char *  oldroot = nullptr 
)
virtual

Relocate the file paths.

If oldroot is defined, replace oldroot with newroot in all file names, i.e. oldroot/re/st/of/the/path will become newroot/re/st/of/the/path. Ifoldrootis null, the new path will be justnewroot/path`. Relocation is mandatory to use the entry-list with the same dataset at a different location (i.e. on a different cluster, machine or disks).

Definition at line 1406 of file TEntryList.cxx.

◆ Remove()

bool TEntryList::Remove ( Long64_t  entry,
TTree tree = nullptr 
)
virtual

Remove entry #entry from the list.

  • When tree = 0, removes from the current list
  • When tree != 0, finds the list, corresponding to this tree
  • When tree is a chain, the entry is assumed to be global index and the local entry is recomputed from the treeoffset information of the chain

Reimplemented in TEntryListArray, and TEntryListFromFile.

Definition at line 717 of file TEntryList.cxx.

◆ Reset()

void TEntryList::Reset ( )
virtual

Reset this list.

Reimplemented in TEntryListArray.

Definition at line 1138 of file TEntryList.cxx.

◆ Scan()

Int_t TEntryList::Scan ( const char *  fn,
TList roots 
)
static

Scan TEntryList in 'fn' to find the common parts of paths.

If 'roots' is defined, add the found roots to the list as TObjStrings. Return the number of common root paths found.

Definition at line 1608 of file TEntryList.cxx.

◆ ScanPaths()

Int_t TEntryList::ScanPaths ( TList roots,
bool  notify = true 
)
virtual

Scan the paths to find the common roots.

If 'roots' is defined, add the found roots to the list as TObjStrings. Return the number of roots found.

Definition at line 1551 of file TEntryList.cxx.

◆ SetDirectory()

void TEntryList::SetDirectory ( TDirectory dir)
virtual

Add reference to directory dir. dir can be 0.

Definition at line 1170 of file TEntryList.cxx.

◆ SetEntriesToProcess()

virtual void TEntryList::SetEntriesToProcess ( Long64_t  nen)
inlinevirtual

Definition at line 101 of file TEntryList.h.

◆ SetFileName()

virtual void TEntryList::SetFileName ( const char *  filename)
inlinevirtual

Definition at line 106 of file TEntryList.h.

◆ SetReapplyCut()

virtual void TEntryList::SetReapplyCut ( bool  apply = false)
inlinevirtual

Definition at line 108 of file TEntryList.h.

◆ SetShift()

virtual void TEntryList::SetShift ( bool  shift)
inlinevirtual

Definition at line 102 of file TEntryList.h.

◆ SetTree() [1/2]

void TEntryList::SetTree ( const char *  treename,
const char *  filename 
)
virtual

If a list for a tree with such name and filename exists, sets it as the current sublist If not, creates this list and sets it as the current sublist.

! the filename is taken as provided, no extensions to full path or url !

Reimplemented in TEntryListFromFile, and TEntryListArray.

Definition at line 1184 of file TEntryList.cxx.

◆ SetTree() [2/2]

void TEntryList::SetTree ( const TTree tree)
virtual

If a list for a tree with such name and filename exists, sets it as the current sublist If not, creates this list and sets it as the current sublist The name of the file, where the tree is, is taken as tree->GetTree()->GetCurrentFile()->GetName(), and then expanded either to the absolute path, or to full url.

If, for some reason, you want to provide the filename in a different format, use SetTree(const char *treename, const char *filename), where the filename is taken "as is".

Reimplemented in TEntryListFromFile, and TEntryListArray.

Definition at line 1296 of file TEntryList.cxx.

◆ SetTreeName()

virtual void TEntryList::SetTreeName ( const char *  treename)
inlinevirtual

Definition at line 105 of file TEntryList.h.

◆ SetTreeNumber()

virtual void TEntryList::SetTreeNumber ( Int_t  index)
inlinevirtual

Reimplemented in TEntryListFromFile.

Definition at line 107 of file TEntryList.h.

◆ Streamer()

void TEntryList::Streamer ( TBuffer b)
overridevirtual

Custom streamer for class TEntryList to handle the different interpretation of fFileName between version 1 and >1 .

Reimplemented from TObject.

Reimplemented in TEntryListArray, and TEntryListFromFile.

Definition at line 1643 of file TEntryList.cxx.

◆ StreamerNVirtual()

void TEntryList::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 125 of file TEntryList.h.

◆ Subtract()

void TEntryList::Subtract ( const TEntryList elist)
virtual

Remove all the entries of this entry list, that are contained in elist.

Reimplemented in TEntryListFromFile, and TEntryListArray.

Definition at line 1332 of file TEntryList.cxx.

Friends And Related Symbol Documentation

◆ operator||

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

Definition at line 1385 of file TEntryList.cxx.

Member Data Documentation

◆ fBlocks

TObjArray* TEntryList::fBlocks
protected

blocks with indices of passing events (TEntryListBlocks)

Definition at line 35 of file TEntryList.h.

◆ fCurrent

TEntryList* TEntryList::fCurrent
protected

! currently filled entry list

Definition at line 32 of file TEntryList.h.

◆ fDirectory

TDirectory* TEntryList::fDirectory
protected

! Pointer to directory holding this tree

Definition at line 48 of file TEntryList.h.

◆ fEntriesToProcess

Long64_t TEntryList::fEntriesToProcess
protected

used on proof to set the number of entries to process in a packet

Definition at line 37 of file TEntryList.h.

◆ fFileName

TString TEntryList::fFileName
protected

name of the file, where the tree is

Definition at line 39 of file TEntryList.h.

◆ fLastIndexQueried

Long64_t TEntryList::fLastIndexQueried
protected

! used to optimize GetEntry() function from a loop

Definition at line 44 of file TEntryList.h.

◆ fLastIndexReturned

Long64_t TEntryList::fLastIndexReturned
protected

! used to optimize GetEntry() function from a loop

Definition at line 45 of file TEntryList.h.

◆ fLists

TList* TEntryList::fLists
protected

a list of underlying entry lists for each tree of a chain

Definition at line 31 of file TEntryList.h.

◆ fN

Long64_t TEntryList::fN
protected

number of entries in the list

Definition at line 36 of file TEntryList.h.

◆ fNBlocks

Int_t TEntryList::fNBlocks
protected

number of TEntryListBlocks

Definition at line 34 of file TEntryList.h.

◆ fReapply

bool TEntryList::fReapply
protected

If true, TTree::Draw will 'reapply' the original cut.

Definition at line 49 of file TEntryList.h.

◆ fShift

bool TEntryList::fShift
protected

! true when some sub-lists don't correspond to trees (when the entry list is used as input in TChain)

Definition at line 46 of file TEntryList.h.

◆ fStringHash

ULong_t TEntryList::fStringHash
protected

! Hash value of a string of treename and filename

Definition at line 40 of file TEntryList.h.

◆ fTreeName

TString TEntryList::fTreeName
protected

name of the tree

Definition at line 38 of file TEntryList.h.

◆ fTreeNumber

Int_t TEntryList::fTreeNumber
protected

! the index of the tree in the chain (used when the entry list is used as input (TTree::SetEntryList())

Definition at line 41 of file TEntryList.h.

Libraries for TEntryList:

The documentation for this class was generated from the following files: