Logo ROOT   6.08/07
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 #ifndef ROOT_TTree
25 #include "TTree.h"
26 #endif
27 
28 class TFile;
29 class TBrowser;
30 class TCut;
31 class TEntryList;
32 class TEventList;
33 class TCollection;
34 
35 class TChain : public TTree {
36 
37 protected:
38  Int_t fTreeOffsetLen; ///< Current size of fTreeOffset array
39  Int_t fNtrees; ///< Number of trees
40  Int_t fTreeNumber; ///<! Current Tree number in fTreeOffset table
41  Long64_t *fTreeOffset; ///<[fTreeOffsetLen] Array of variables
42  Bool_t fCanDeleteRefs; ///<! If true, TProcessIDs are deleted when closing a file
43  TTree *fTree; ///<! Pointer to current tree (Note: We do *not* own this tree.)
44  TFile *fFile; ///<! Pointer to current file (We own the file).
45  TObjArray *fFiles; ///< -> List of file names containing the trees (TChainElement, owned)
46  TList *fStatus; ///< -> List of active/inactive branches (TChainElement, owned)
47  TChain *fProofChain; ///<! chain proxy when going to be processed by PROOF
48 
49 private:
50  TChain(const TChain&); // not implemented
51  TChain& operator=(const TChain&); // not implemented
52  void ParseTreeFilename(const char *name, TString &filename, TString &treename, TString &query, TString &suffix, Bool_t wildcards) const;
53 
54 protected:
55  void InvalidateCurrentTree();
56  void ReleaseChainProof();
57 
58 public:
59  // TChain constants
60  enum {
65  };
66 
67  // This used to be 1234567890, if user code hardcoded this number, the user code will need to change.
68  static constexpr auto kBigNumber = TTree::kMaxEntries;
69 
70 public:
71  TChain();
72  TChain(const char* name, const char* title = "");
73  virtual ~TChain();
74 
75  virtual Int_t Add(TChain* chain);
76  virtual Int_t Add(const char* name, Long64_t nentries = TTree::kMaxEntries);
77  virtual Int_t AddFile(const char* name, Long64_t nentries = TTree::kMaxEntries, const char* tname = "");
79  virtual TFriendElement *AddFriend(const char* chainname, const char* dummy = "");
80  virtual TFriendElement *AddFriend(const char* chainname, TFile* dummy);
81  virtual TFriendElement *AddFriend(TTree* chain, const char* alias = "", Bool_t warn = kFALSE);
82  virtual void Browse(TBrowser*);
83  virtual void CanDeleteRefs(Bool_t flag = kTRUE);
84  virtual void CreatePackets();
85  virtual void DirectoryAutoAdd(TDirectory *);
86  virtual Long64_t Draw(const char* varexp, const TCut& selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
87  virtual Long64_t Draw(const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
88  virtual void Draw(Option_t* opt) { Draw(opt, "", "", kMaxEntries, 0); }
89  virtual Int_t Fill() { MayNotUse("Fill()"); return -1; }
90  virtual TBranch *FindBranch(const char* name);
91  virtual TLeaf *FindLeaf(const char* name);
92  virtual TBranch *GetBranch(const char* name);
93  virtual Bool_t GetBranchStatus(const char* branchname) const;
94  virtual Long64_t GetCacheSize() const { return fTree ? fTree->GetCacheSize() : fCacheSize; }
95  virtual Long64_t GetChainEntryNumber(Long64_t entry) const;
96  virtual TClusterIterator GetClusterIterator(Long64_t firstentry);
97  Int_t GetNtrees() const { return fNtrees; }
98  virtual Long64_t GetEntries() const;
99  virtual Long64_t GetEntries(const char *sel) { return TTree::GetEntries(sel); }
100  virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0);
101  virtual Long64_t GetEntryNumber(Long64_t entry) const;
102  virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0);
103  TFile *GetFile() const;
104  virtual TLeaf *GetLeaf(const char* branchname, const char* leafname);
105  virtual TLeaf *GetLeaf(const char* name);
106  virtual TObjArray *GetListOfBranches();
107  // Warning, GetListOfFiles returns the list of TChainElements (not the list of files)
108  // see TChain::AddFile to see how to get the corresponding TFile objects
109  TObjArray *GetListOfFiles() const {return fFiles;}
110  virtual TObjArray *GetListOfLeaves();
111  virtual const char *GetAlias(const char *aliasName) const;
112  virtual Double_t GetMaximum(const char *columname);
113  virtual Double_t GetMinimum(const char *columname);
114  virtual Int_t GetNbranches();
115  virtual Long64_t GetReadEntry() const;
116  TList *GetStatus() const { return fStatus; }
117  virtual TTree *GetTree() const { return fTree; }
118  virtual Int_t GetTreeNumber() const { return fTreeNumber; }
119  Long64_t *GetTreeOffset() const { return fTreeOffset; }
121  virtual Double_t GetWeight() const;
122  virtual Int_t LoadBaskets(Long64_t maxmemory);
123  virtual Long64_t LoadTree(Long64_t entry);
124  void Lookup(Bool_t force = kFALSE);
125  virtual void Loop(Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
126  virtual void ls(Option_t *option="") const;
127  virtual Long64_t Merge(const char *name, Option_t *option = "");
128  virtual Long64_t Merge(TCollection *list, Option_t *option = "");
129  virtual Long64_t Merge(TCollection *list, TFileMergeInfo *info);
130  virtual Long64_t Merge(TFile *file, Int_t basketsize, Option_t *option="");
131  virtual void Print(Option_t *option="") const;
132  virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
133  virtual Long64_t Process(TSelector* selector, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
134  virtual void RecursiveRemove(TObject *obj);
135  virtual void RemoveFriend(TTree*);
136  virtual void Reset(Option_t *option="");
137  virtual void ResetAfterMerge(TFileMergeInfo *);
138  virtual void ResetBranchAddress(TBranch *);
139  virtual void ResetBranchAddresses();
140  virtual Long64_t Scan(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
141  virtual void SetAutoDelete(Bool_t autodel=kTRUE);
142  virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr = 0);
143  virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
144  virtual Int_t SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
145  template <class T> Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr = 0) {
146  return TTree::SetBranchAddress<T>(bname, add, ptr);
147  }
148 #ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
149  // This can only be used when the template overload resolution can distringuish between
150  // T* and T**
151  template <class T> Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr = 0) {
152  return TTree::SetBranchAddress<T>(bname, add, ptr);
153  }
154 #endif
155 
156  virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0);
157  virtual Int_t SetCacheSize(Long64_t cacheSize = -1);
158  virtual void SetDirectory(TDirectory *dir);
159  virtual void SetEntryList(TEntryList *elist, Option_t *opt="");
160  virtual void SetEntryListFile(const char *filename="", Option_t *opt="");
161  virtual void SetEventList(TEventList *evlist);
162  virtual void SetMakeClass(Int_t make) { TTree::SetMakeClass(make); if (fTree) fTree->SetMakeClass(make);}
163  virtual void SetPacketSize(Int_t size = 100);
164  virtual void SetProof(Bool_t on = kTRUE, Bool_t refresh = kFALSE, Bool_t gettreeheader = kFALSE);
165  virtual void SetWeight(Double_t w=1, Option_t *option="");
166  virtual void UseCache(Int_t maxCacheSize = 10, Int_t pageSize = 0);
167 
168  ClassDef(TChain,5) //A chain of TTrees
169 };
170 
171 #endif // ROOT_TChain
virtual Int_t LoadBaskets(Long64_t maxmemory)
Dummy function.
Definition: TChain.cxx:1227
virtual void SetAutoDelete(Bool_t autodel=kTRUE)
Set the global branch kAutoDelete bit.
Definition: TChain.cxx:2311
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:162
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:37
An array of TObjects.
Definition: TObjArray.h:39
virtual void Browse(TBrowser *)
Browse the contents of the chain.
Definition: TChain.cxx:706
virtual TObjArray * GetListOfLeaves()
Return a pointer to the list of leaves of the current tree.
Definition: TChain.cxx:1087
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:960
virtual void ls(Option_t *option="") const
List the chain.
Definition: TChain.cxx:1785
virtual Bool_t GetBranchStatus(const char *branchname) const
See TTree::GetReadEntry().
Definition: TChain.cxx:879
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return a pointer to the leaf name in the current tree.
Definition: TChain.cxx:1017
virtual void Reset(Option_t *option="")
Resets the state of this chain.
Definition: TChain.cxx:2255
Int_t fNtrees
Number of trees.
Definition: TChain.h:39
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:42
virtual Int_t SetCacheSize(Long64_t cacheSize=-1)
Set maximum size of the file cache .
Definition: TChain.cxx:2320
#define BIT(n)
Definition: Rtypes.h:120
virtual void ResetBranchAddress(TBranch *)
Reset the addresses of the branch.
Definition: TChain.cxx:2345
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set chain weight.
Definition: TChain.cxx:2814
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:50
virtual void SetDirectory(TDirectory *dir)
Remove reference to this chain from current directory and add reference to new directory dir...
Definition: TChain.cxx:2508
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition: TChain.cxx:1108
Basic string class.
Definition: TString.h:137
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
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:2296
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:1741
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:2213
TTree * fTree
! Pointer to current tree (Note: We do not own this tree.)
Definition: TChain.h:43
virtual void DirectoryAutoAdd(TDirectory *)
Override the TTree::DirectoryAutoAdd behavior: we never auto add.
Definition: TChain.cxx:745
Long64_t * GetTreeOffset() const
Definition: TChain.h:119
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition: TChain.cxx:839
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=0)
Definition: TChain.h:145
virtual Long64_t GetCacheSize() const
Definition: TChain.h:94
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
Definition: TChain.cxx:1125
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:724
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition: TChain.cxx:896
virtual Int_t AddFileInfoList(TCollection *list, Long64_t nfiles=TTree::kMaxEntries)
Add all files referenced in the list to the chain.
Definition: TChain.cxx:534
void ReleaseChainProof()
virtual void Draw(Option_t *opt)
Default Draw method for all objects.
Definition: TChain.h:88
virtual Long64_t GetCacheSize() const
Definition: TTree.h:384
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:1818
TObjArray * GetListOfFiles() const
Definition: TChain.h:109
Helper class to iterate over cluster of baskets.
Definition: TTree.h:256
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:758
#define ClassDef(name, id)
Definition: Rtypes.h:254
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:2625
virtual TBranch * FindBranch(const char *name)
See TTree::GetReadEntry().
Definition: TChain.cxx:797
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:2530
void InvalidateCurrentTree()
Set the TTree to be reloaded as soon as possible.
Definition: TChain.cxx:1209
virtual Long64_t GetEntries(const char *sel)
Return the number of entries matching the selection.
Definition: TChain.h:99
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch name in the current tree.
Definition: TChain.cxx:858
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:978
virtual Long64_t LoadTree(Long64_t entry)
Find the tree which contains entry, and set it as the current tree.
Definition: TChain.cxx:1253
TChain & operator=(const TChain &)
virtual Long64_t GetEntries() const
Return the total number of entries in the chain.
Definition: TChain.cxx:917
Long64_t * fTreeOffset
[fTreeOffsetLen] Array of variables
Definition: TChain.h:41
Int_t fTreeOffsetLen
Current size of fTreeOffset array.
Definition: TChain.h:38
A specialized string object used for TTree selections.
Definition: TCut.h:27
A doubly linked list.
Definition: TList.h:47
Int_t fTreeNumber
! Current Tree number in fTreeOffset table
Definition: TChain.h:40
Int_t GetTreeOffsetLen() const
Definition: TChain.h:120
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition: TChain.cxx:2232
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:41
virtual Long64_t GetReadEntry() const
See TTree::GetReadEntry().
Definition: TChain.cxx:1159
virtual Int_t GetNbranches()
Return the number of branches of the current tree.
Definition: TChain.cxx:1144
TList * GetStatus() const
Definition: TChain.h:116
Collection abstract base class.
Definition: TCollection.h:48
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:2767
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:2072
A TEventList object is a list of selected events (entries) in a TTree.
Definition: TEventList.h:33
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:81
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:437
virtual Int_t Fill()
Fill all branches.
Definition: TChain.h:89
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Return entry corresponding to major and minor number.
Definition: TChain.cxx:993
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:8503
TFile * GetFile() const
Return a pointer to the current file.
Definition: TChain.cxx:1004
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Get entry from the file to memory.
Definition: TChain.cxx:941
virtual TFriendElement * AddFriend(const char *chainname, const char *dummy="")
Add a TFriendElement to the list of friends of this chain.
Definition: TChain.cxx:624
double Double_t
Definition: RtypesCore.h:55
Describe directory structure in memory.
Definition: TDirectory.h:44
void Lookup(Bool_t force=kFALSE)
Check / locate the files in the chain.
Definition: TChain.cxx:1671
virtual Int_t GetTreeNumber() const
Definition: TChain.h:118
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:2864
EDataType
Definition: TDataType.h:30
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0)
Set branch status to Process or DoNotProcess.
Definition: TChain.cxx:2481
static constexpr auto kBigNumber
Definition: TChain.h:68
virtual Double_t GetWeight() const
Return the chain weight.
Definition: TChain.cxx:1180
virtual void Print(Option_t *option="") const
Print the header information of each tree in the chain.
Definition: TChain.cxx:2150
virtual void ResetBranchAddresses()
Reset the addresses of the branches.
Definition: TChain.cxx:2359
virtual Long64_t GetEntries() const
Definition: TTree.h:393
Int_t GetNtrees() const
Definition: TChain.h:97
Mother of all ROOT objects.
Definition: TObject.h:37
virtual TTree * GetTree() const
Definition: TChain.h:117
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:2173
TChain()
Default constructor.
Definition: TChain.cxx:62
Definition: file.py:1
A TFriendElement TF describes a TTree object TF in a file.
A chain is a collection of files containg TTree objects.
Definition: TChain.h:35
virtual void ResetAfterMerge(TFileMergeInfo *)
Resets the state of this chain after a merge (keep the customization but forget the data)...
Definition: TChain.cxx:2277
virtual void SetPacketSize(Int_t size=100)
Set number of entries per packet for parallel root.
Definition: TChain.cxx:2746
TObjArray * fFiles
-> List of file names containing the trees (TChainElement, owned)
Definition: TChain.h:45
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=0)
Definition: TChain.h:151
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Set branch address.
Definition: TChain.cxx:2387
virtual void CreatePackets()
Initialize the packet descriptor string.
Definition: TChain.cxx:732
A TTree object has a header with a name and a title.
Definition: TTree.h:98
TFile * fFile
! Pointer to current file (We own the file).
Definition: TChain.h:44
TChain * fProofChain
! chain proxy when going to be processed by PROOF
Definition: TChain.h:47
A TTree is a list of TBranches.
Definition: TBranch.h:58
virtual TLeaf * FindLeaf(const char *name)
See TTree::GetReadEntry().
Definition: TChain.cxx:818
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Definition: TSelector.h:39
const Bool_t kTRUE
Definition: Rtypes.h:91
A List of entry numbers in a TTree or TChain.
Definition: TEntryList.h:27
virtual ~TChain()
Destructor.
Definition: TChain.cxx:174
virtual TObjArray * GetListOfBranches()
Return a pointer to the list of branches of the current tree.
Definition: TChain.cxx:1064
static constexpr Long64_t kMaxEntries
Definition: TTree.h:228
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Return absolute entry number in the chain.
Definition: TChain.cxx:907
char name[80]
Definition: TGX11.cxx:109
virtual void SetEventList(TEventList *evlist)
This function transfroms the given TEventList into a TEntryList.
Definition: TChain.cxx:2671
TList * fStatus
-> List of active/inactive branches (TChainElement, owned)
Definition: TChain.h:46
virtual Int_t Add(TChain *chain)
Add all files referenced by the passed chain to this chain.
Definition: TChain.cxx:214
Long64_t fCacheSize
! Maximum size of file buffers
Definition: TTree.h:121