Logo ROOT   6.10/09
Reference Guide
TChain.h
Go to the documentation of this file.
1 // @(#)root/tree:$Id$
2 // Author: Rene Brun 03/02/97
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TChain
13 #define ROOT_TChain
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TChain //
19 // //
20 // A chain of TTrees. //
21 // //
22 //////////////////////////////////////////////////////////////////////////
23 
24 #include "TTree.h"
25 
26 class TFile;
27 class TBrowser;
28 class TCut;
29 class TEntryList;
30 class TEventList;
31 class TCollection;
32 
33 class TChain : public TTree {
34 
35 protected:
36  Int_t fTreeOffsetLen; ///< Current size of fTreeOffset array
37  Int_t fNtrees; ///< Number of trees
38  Int_t fTreeNumber; ///<! Current Tree number in fTreeOffset table
39  Long64_t *fTreeOffset; ///<[fTreeOffsetLen] Array of variables
40  Bool_t fCanDeleteRefs; ///<! If true, TProcessIDs are deleted when closing a file
41  TTree *fTree; ///<! Pointer to current tree (Note: We do *not* own this tree.)
42  TFile *fFile; ///<! Pointer to current file (We own the file).
43  TObjArray *fFiles; ///< -> List of file names containing the trees (TChainElement, owned)
44  TList *fStatus; ///< -> List of active/inactive branches (TChainElement, owned)
45  TChain *fProofChain; ///<! chain proxy when going to be processed by PROOF
46 
47 private:
48  TChain(const TChain&); // not implemented
49  TChain& operator=(const TChain&); // not implemented
50  void ParseTreeFilename(const char *name, TString &filename, TString &treename, TString &query, TString &suffix, Bool_t wildcards) const;
51 
52 protected:
53  void InvalidateCurrentTree();
54  void ReleaseChainProof();
55 
56 public:
57  // TChain constants
58  enum {
63  };
64 
65  // This used to be 1234567890, if user code hardcoded this number, the user code will need to change.
66  static constexpr auto kBigNumber = TTree::kMaxEntries;
67 
68 public:
69  TChain();
70  TChain(const char* name, const char* title = "");
71  virtual ~TChain();
72 
73  virtual Int_t Add(TChain* chain);
74  virtual Int_t Add(const char* name, Long64_t nentries = TTree::kMaxEntries);
75  virtual Int_t AddFile(const char* name, Long64_t nentries = TTree::kMaxEntries, const char* tname = "");
77  virtual TFriendElement *AddFriend(const char* chainname, const char* dummy = "");
78  virtual TFriendElement *AddFriend(const char* chainname, TFile* dummy);
79  virtual TFriendElement *AddFriend(TTree* chain, const char* alias = "", Bool_t warn = kFALSE);
80  virtual void Browse(TBrowser*);
81  virtual void CanDeleteRefs(Bool_t flag = kTRUE);
82  virtual void CreatePackets();
83  virtual void DirectoryAutoAdd(TDirectory *);
84  virtual Long64_t Draw(const char* varexp, const TCut& selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
85  virtual Long64_t Draw(const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
86  virtual void Draw(Option_t* opt) { Draw(opt, "", "", kMaxEntries, 0); }
87  virtual Int_t Fill() { MayNotUse("Fill()"); return -1; }
88  virtual TBranch *FindBranch(const char* name);
89  virtual TLeaf *FindLeaf(const char* name);
90  virtual TBranch *GetBranch(const char* name);
91  virtual Bool_t GetBranchStatus(const char* branchname) const;
92  virtual Long64_t GetCacheSize() const { return fTree ? fTree->GetCacheSize() : fCacheSize; }
93  virtual Long64_t GetChainEntryNumber(Long64_t entry) const;
94  virtual TClusterIterator GetClusterIterator(Long64_t firstentry);
95  Int_t GetNtrees() const { return fNtrees; }
96  virtual Long64_t GetEntries() const;
97  virtual Long64_t GetEntries(const char *sel) { return TTree::GetEntries(sel); }
98  virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0);
99  virtual Long64_t GetEntryNumber(Long64_t entry) const;
100  virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0);
101  TFile *GetFile() const;
102  virtual TLeaf *GetLeaf(const char* branchname, const char* leafname);
103  virtual TLeaf *GetLeaf(const char* name);
104  virtual TObjArray *GetListOfBranches();
105  // Warning, GetListOfFiles returns the list of TChainElements (not the list of files)
106  // see TChain::AddFile to see how to get the corresponding TFile objects
107  TObjArray *GetListOfFiles() const {return fFiles;}
108  virtual TObjArray *GetListOfLeaves();
109  virtual const char *GetAlias(const char *aliasName) const;
110  virtual Double_t GetMaximum(const char *columname);
111  virtual Double_t GetMinimum(const char *columname);
112  virtual Int_t GetNbranches();
113  virtual Long64_t GetReadEntry() const;
114  TList *GetStatus() const { return fStatus; }
115  virtual TTree *GetTree() const { return fTree; }
116  virtual Int_t GetTreeNumber() const { return fTreeNumber; }
117  Long64_t *GetTreeOffset() const { return fTreeOffset; }
119  virtual Double_t GetWeight() const;
120  virtual Int_t LoadBaskets(Long64_t maxmemory);
121  virtual Long64_t LoadTree(Long64_t entry);
122  void Lookup(Bool_t force = kFALSE);
123  virtual void Loop(Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
124  virtual void ls(Option_t *option="") const;
125  virtual Long64_t Merge(const char *name, Option_t *option = "");
126  virtual Long64_t Merge(TCollection *list, Option_t *option = "");
127  virtual Long64_t Merge(TCollection *list, TFileMergeInfo *info);
128  virtual Long64_t Merge(TFile *file, Int_t basketsize, Option_t *option="");
129  virtual void Print(Option_t *option="") const;
130  virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
131  virtual Long64_t Process(TSelector* selector, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
132  virtual void RecursiveRemove(TObject *obj);
133  virtual void RemoveFriend(TTree*);
134  virtual void Reset(Option_t *option="");
135  virtual void ResetAfterMerge(TFileMergeInfo *);
136  virtual void ResetBranchAddress(TBranch *);
137  virtual void ResetBranchAddresses();
138  virtual Long64_t Scan(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
139  virtual void SetAutoDelete(Bool_t autodel=kTRUE);
140  virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr = 0);
141  virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
142  virtual Int_t SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
143  template <class T> Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr = 0) {
144  return TTree::SetBranchAddress<T>(bname, add, ptr);
145  }
146 #ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
147  // This can only be used when the template overload resolution can distringuish between
148  // T* and T**
149  template <class T> Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr = 0) {
150  return TTree::SetBranchAddress<T>(bname, add, ptr);
151  }
152 #endif
153 
154  virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0);
155  virtual Int_t SetCacheSize(Long64_t cacheSize = -1);
156  virtual void SetDirectory(TDirectory *dir);
157  virtual void SetEntryList(TEntryList *elist, Option_t *opt="");
158  virtual void SetEntryListFile(const char *filename="", Option_t *opt="");
159  virtual void SetEventList(TEventList *evlist);
160  virtual void SetMakeClass(Int_t make) { TTree::SetMakeClass(make); if (fTree) fTree->SetMakeClass(make);}
161  virtual void SetPacketSize(Int_t size = 100);
162  virtual void SetProof(Bool_t on = kTRUE, Bool_t refresh = kFALSE, Bool_t gettreeheader = kFALSE);
163  virtual void SetWeight(Double_t w=1, Option_t *option="");
164  virtual void UseCache(Int_t maxCacheSize = 10, Int_t pageSize = 0);
165 
166  ClassDef(TChain,5) //A chain of TTrees
167 };
168 
169 #endif // ROOT_TChain
virtual Int_t LoadBaskets(Long64_t maxmemory)
Dummy function.
Definition: TChain.cxx:1233
virtual void SetAutoDelete(Bool_t autodel=kTRUE)
Set the global branch kAutoDelete bit.
Definition: TChain.cxx:2296
virtual void SetMakeClass(Int_t make)
Set all the branches in this TTree to be in decomposed object mode (also known as MakeClass mode)...
Definition: TChain.h:160
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:32
An array of TObjects.
Definition: TObjArray.h:37
virtual void Browse(TBrowser *)
Browse the contents of the chain.
Definition: TChain.cxx:712
virtual TObjArray * GetListOfLeaves()
Return a pointer to the list of leaves of the current tree.
Definition: TChain.cxx:1093
long long Long64_t
Definition: RtypesCore.h:69
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
Definition: TChain.cxx:966
virtual void ls(Option_t *option="") const
List the chain.
Definition: TChain.cxx:1791
virtual Bool_t GetBranchStatus(const char *branchname) const
See TTree::GetReadEntry().
Definition: TChain.cxx:885
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return a pointer to the leaf name in the current tree.
Definition: TChain.cxx:1023
virtual void Reset(Option_t *option="")
Resets the state of this chain.
Definition: TChain.cxx:2240
Int_t fNtrees
Number of trees.
Definition: TChain.h:37
const char Option_t
Definition: RtypesCore.h:62
double T(double x)
Definition: ChebyshevPol.h:34
Bool_t fCanDeleteRefs
! If true, TProcessIDs are deleted when closing a file
Definition: TChain.h:40
virtual Int_t SetCacheSize(Long64_t cacheSize=-1)
Set maximum size of the file cache .
Definition: TChain.cxx:2305
#define BIT(n)
Definition: Rtypes.h:75
virtual void ResetBranchAddress(TBranch *)
Reset the addresses of the branch.
Definition: TChain.cxx:2330
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set chain weight.
Definition: TChain.cxx:2801
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:46
virtual void SetDirectory(TDirectory *dir)
Remove reference to this chain from current directory and add reference to new directory dir...
Definition: TChain.cxx:2495
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition: TChain.cxx:1114
Basic string class.
Definition: TString.h:129
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
constexpr std::array< decltype(std::declval< F >)(std::declval< int >))), N > make(F f)
virtual Long64_t Scan(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Loop on tree and print entries passing selection.
Definition: TChain.cxx:2281
virtual void Loop(Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Loop on nentries of this chain starting at firstentry. (NOT IMPLEMENTED)
Definition: TChain.cxx:1747
virtual void RecursiveRemove(TObject *obj)
Make sure that obj (which is being deleted or will soon be) is no longer referenced by this TTree...
Definition: TChain.cxx:2198
TTree * fTree
! Pointer to current tree (Note: We do not own this tree.)
Definition: TChain.h:41
virtual void DirectoryAutoAdd(TDirectory *)
Override the TTree::DirectoryAutoAdd behavior: we never auto add.
Definition: TChain.cxx:751
Long64_t * GetTreeOffset() const
Definition: TChain.h:117
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition: TChain.cxx:845
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=0)
Definition: TChain.h:143
virtual Long64_t GetCacheSize() const
Definition: TChain.h:92
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
Definition: TChain.cxx:1131
virtual void CanDeleteRefs(Bool_t flag=kTRUE)
When closing a file during the chain processing, the file may be closed with option "R" if flag is se...
Definition: TChain.cxx:730
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition: TChain.cxx:902
virtual Int_t AddFileInfoList(TCollection *list, Long64_t nfiles=TTree::kMaxEntries)
Add all files referenced in the list to the chain.
Definition: TChain.cxx:540
void ReleaseChainProof()
virtual void Draw(Option_t *opt)
Default Draw method for all objects.
Definition: TChain.h:86
virtual Long64_t GetCacheSize() const
Definition: TTree.h:372
virtual Long64_t Merge(const char *name, Option_t *option="")
Merge all the entries in the chain into a new tree in a new file.
Definition: TChain.cxx:1824
TObjArray * GetListOfFiles() const
Definition: TChain.h:107
Helper class to iterate over cluster of baskets.
Definition: TTree.h:241
virtual Long64_t Draw(const char *varexp, const TCut &selection, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Draw expression varexp for selected entries.
Definition: TChain.cxx:764
#define ClassDef(name, id)
Definition: Rtypes.h:297
virtual void SetEntryListFile(const char *filename="", Option_t *opt="")
Set the input entry list (processing the entries of the chain will then be limited to the entries in ...
Definition: TChain.cxx:2612
virtual TBranch * FindBranch(const char *name)
See TTree::GetReadEntry().
Definition: TChain.cxx:803
virtual void SetEntryList(TEntryList *elist, Option_t *opt="")
Set the input entry list (processing the entries of the chain will then be limited to the entries in ...
Definition: TChain.cxx:2517
void InvalidateCurrentTree()
Set the TTree to be reloaded as soon as possible.
Definition: TChain.cxx:1215
virtual Long64_t GetEntries(const char *sel)
Return the number of entries matching the selection.
Definition: TChain.h:97
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch name in the current tree.
Definition: TChain.cxx:864
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 clas...
Definition: TObject.cxx:926
virtual Long64_t LoadTree(Long64_t entry)
Find the tree which contains entry, and set it as the current tree.
Definition: TChain.cxx:1259
TChain & operator=(const TChain &)
virtual Long64_t GetEntries() const
Return the total number of entries in the chain.
Definition: TChain.cxx:923
Long64_t * fTreeOffset
[fTreeOffsetLen] Array of variables
Definition: TChain.h:39
Int_t fTreeOffsetLen
Current size of fTreeOffset array.
Definition: TChain.h:36
A specialized string object used for TTree selections.
Definition: TCut.h:25
A doubly linked list.
Definition: TList.h:43
Int_t fTreeNumber
! Current Tree number in fTreeOffset table
Definition: TChain.h:38
Int_t GetTreeOffsetLen() const
Definition: TChain.h:118
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition: TChain.cxx:2217
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
virtual Long64_t GetReadEntry() const
See TTree::GetReadEntry().
Definition: TChain.cxx:1165
virtual Int_t GetNbranches()
Return the number of branches of the current tree.
Definition: TChain.cxx:1150
TList * GetStatus() const
Definition: TChain.h:114
Collection abstract base class.
Definition: TCollection.h:42
unsigned int UInt_t
Definition: RtypesCore.h:42
virtual void SetProof(Bool_t on=kTRUE, Bool_t refresh=kFALSE, Bool_t gettreeheader=kFALSE)
Enable/Disable PROOF processing on the current default Proof (gProof).
Definition: TChain.cxx:2754
void ParseTreeFilename(const char *name, TString &filename, TString &treename, TString &query, TString &suffix, Bool_t wildcards) const
Get the tree url or filename and other information from the name.
Definition: TChain.cxx:2086
A TEventList object is a list of selected events (entries) in a TTree.
Definition: TEventList.h:31
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:71
virtual Int_t AddFile(const char *name, Long64_t nentries=TTree::kMaxEntries, const char *tname="")
Add a new file to this chain.
Definition: TChain.cxx:443
virtual Int_t Fill()
Fill all branches.
Definition: TChain.h:87
const Bool_t kFALSE
Definition: RtypesCore.h:92
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Return entry corresponding to major and minor number.
Definition: TChain.cxx:999
virtual void SetMakeClass(Int_t make)
Set all the branches in this TTree to be in decomposed object mode (also known as MakeClass mode)...
Definition: TTree.cxx:8616
TFile * GetFile() const
Return a pointer to the current file.
Definition: TChain.cxx:1010
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Get entry from the file to memory.
Definition: TChain.cxx:947
virtual TFriendElement * AddFriend(const char *chainname, const char *dummy="")
Add a TFriendElement to the list of friends of this chain.
Definition: TChain.cxx:630
double Double_t
Definition: RtypesCore.h:55
Describe directory structure in memory.
Definition: TDirectory.h:34
void Lookup(Bool_t force=kFALSE)
Check / locate the files in the chain.
Definition: TChain.cxx:1677
virtual Int_t GetTreeNumber() const
Definition: TChain.h:116
static RooMathCoreReg dummy
int nentries
Definition: THbookFile.cxx:89
virtual void UseCache(Int_t maxCacheSize=10, Int_t pageSize=0)
Dummy function kept for back compatibility.
Definition: TChain.cxx:2857
EDataType
Definition: TDataType.h:28
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0)
Set branch status to Process or DoNotProcess.
Definition: TChain.cxx:2468
static constexpr auto kBigNumber
Definition: TChain.h:66
virtual Double_t GetWeight() const
Return the chain weight.
Definition: TChain.cxx:1186
virtual void Print(Option_t *option="") const
Print the header information of each tree in the chain.
Definition: TChain.cxx:2135
virtual void ResetBranchAddresses()
Reset the addresses of the branches.
Definition: TChain.cxx:2344
virtual Long64_t GetEntries() const
Definition: TTree.h:381
Int_t GetNtrees() const
Definition: TChain.h:95
Mother of all ROOT objects.
Definition: TObject.h:37
virtual TTree * GetTree() const
Definition: TChain.h:115
virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Process all entries in this chain, calling functions in filename.
Definition: TChain.cxx:2158
TChain()
Default constructor.
Definition: TChain.cxx:63
Definition: file.py:1
A TFriendElement TF describes a TTree object TF in a file.
A chain is a collection of files containing TTree objects.
Definition: TChain.h:33
virtual void ResetAfterMerge(TFileMergeInfo *)
Resets the state of this chain after a merge (keep the customization but forget the data)...
Definition: TChain.cxx:2262
virtual void SetPacketSize(Int_t size=100)
Set number of entries per packet for parallel root.
Definition: TChain.cxx:2733
TObjArray * fFiles
-> List of file names containing the trees (TChainElement, owned)
Definition: TChain.h:43
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=0)
Definition: TChain.h:149
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Set branch address.
Definition: TChain.cxx:2373
virtual void CreatePackets()
Initialize the packet descriptor string.
Definition: TChain.cxx:738
A TTree object has a header with a name and a title.
Definition: TTree.h:78
TFile * fFile
! Pointer to current file (We own the file).
Definition: TChain.h:42
TChain * fProofChain
! chain proxy when going to be processed by PROOF
Definition: TChain.h:45
A TTree is a list of TBranches.
Definition: TBranch.h:57
virtual TLeaf * FindLeaf(const char *name)
See TTree::GetReadEntry().
Definition: TChain.cxx:824
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Definition: TSelector.h:33
A List of entry numbers in a TTree or TChain.
Definition: TEntryList.h:25
const Bool_t kTRUE
Definition: RtypesCore.h:91
virtual ~TChain()
Destructor.
Definition: TChain.cxx:177
virtual TObjArray * GetListOfBranches()
Return a pointer to the list of branches of the current tree.
Definition: TChain.cxx:1070
static constexpr Long64_t kMaxEntries
Definition: TTree.h:213
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Return absolute entry number in the chain.
Definition: TChain.cxx:913
virtual void SetEventList(TEventList *evlist)
This function transfroms the given TEventList into a TEntryList.
Definition: TChain.cxx:2658
TList * fStatus
-> List of active/inactive branches (TChainElement, owned)
Definition: TChain.h:44
virtual Int_t Add(TChain *chain)
Add all files referenced by the passed chain to this chain.
Definition: TChain.cxx:220
Long64_t fCacheSize
! Maximum size of file buffers
Definition: TTree.h:102