Logo ROOT  
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#include <iosfwd>
26
27class TFile;
28class TBrowser;
29class TCut;
30class TEntryList;
31class TEventList;
32class TCollection;
33
34class TChain : public TTree {
35
36protected:
37 Int_t fTreeOffsetLen; ///< Current size of fTreeOffset array
38 Int_t fNtrees; ///< Number of trees
39 Int_t fTreeNumber; ///<! Current Tree number in fTreeOffset table
40 Long64_t *fTreeOffset; ///<[fTreeOffsetLen] Array of variables
41 Bool_t fCanDeleteRefs; ///<! If true, TProcessIDs are deleted when closing a file
42 TTree *fTree; ///<! Pointer to current tree (Note: We do *not* own this tree.)
43 TFile *fFile; ///<! Pointer to current file (We own the file).
44 TObjArray *fFiles; ///< -> List of file names containing the trees (TChainElement, owned)
45 TList *fStatus; ///< -> List of active/inactive branches (TChainElement, owned)
46 TChain *fProofChain; ///<! chain proxy when going to be processed by PROOF
47
48private:
49 TChain(const TChain&); // not implemented
50 TChain& operator=(const TChain&); // not implemented
51 void ParseTreeFilename(const char *name, TString &filename, TString &treename, TString &query, TString &suffix, Bool_t wildcards) const;
52
53protected:
56
57public:
58 // TChain constants
63 kProofLite = BIT(18)
64 };
65
66 // This used to be 1234567890, if user code hardcoded this number, the user code will need to change.
67 static constexpr auto kBigNumber = TTree::kMaxEntries;
68
69public:
70 TChain();
71 TChain(const char* name, const char* title = "");
72 virtual ~TChain();
73
74 virtual Int_t Add(TChain* chain);
75 virtual Int_t Add(const char* name, Long64_t nentries = TTree::kMaxEntries);
76 virtual Int_t AddFile(const char* name, Long64_t nentries = TTree::kMaxEntries, const char* tname = "");
78 virtual TFriendElement *AddFriend(const char* chainname, const char* dummy = "");
79 virtual TFriendElement *AddFriend(const char* chainname, TFile* dummy);
80 virtual TFriendElement *AddFriend(TTree* chain, const char* alias = "", Bool_t warn = kFALSE);
81 virtual void Browse(TBrowser*);
82 virtual void CanDeleteRefs(Bool_t flag = kTRUE);
83 virtual void CreatePackets();
84 virtual void DirectoryAutoAdd(TDirectory *);
85 virtual Long64_t Draw(const char* varexp, const TCut& selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
86 virtual Long64_t Draw(const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
87 virtual void Draw(Option_t* opt) { Draw(opt, "", "", kMaxEntries, 0); }
88 virtual Int_t Fill() { MayNotUse("Fill()"); return -1; }
89 virtual TBranch *FindBranch(const char* name);
90 virtual TLeaf *FindLeaf(const char* name);
91 virtual TBranch *GetBranch(const char* name);
92 virtual Bool_t GetBranchStatus(const char* branchname) const;
93 virtual Long64_t GetCacheSize() const { return fTree ? fTree->GetCacheSize() : fCacheSize; }
94 virtual Long64_t GetChainEntryNumber(Long64_t entry) const;
95 virtual TClusterIterator GetClusterIterator(Long64_t firstentry);
96 Int_t GetNtrees() const { return fNtrees; }
97 virtual Long64_t GetEntries() const;
98 virtual Long64_t GetEntries(const char *sel) { return TTree::GetEntries(sel); }
99 virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0);
100 virtual Long64_t GetEntryNumber(Long64_t entry) const;
101 virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0);
102 TFile *GetFile() const;
103 virtual TLeaf *GetLeaf(const char* branchname, const char* leafname);
104 virtual TLeaf *GetLeaf(const char* name);
105 virtual TObjArray *GetListOfBranches();
106 // Warning, GetListOfFiles returns the list of TChainElements (not the list of files)
107 // see TChain::AddFile to see how to get the corresponding TFile objects
108 TObjArray *GetListOfFiles() const {return fFiles;}
109 virtual TObjArray *GetListOfLeaves();
110 virtual const char *GetAlias(const char *aliasName) const;
111 virtual Double_t GetMaximum(const char *columname);
112 virtual Double_t GetMinimum(const char *columname);
113 virtual Int_t GetNbranches();
114 virtual Long64_t GetReadEntry() const;
115 TList *GetStatus() const { return fStatus; }
116 virtual TTree *GetTree() const { return fTree; }
117 virtual Int_t GetTreeNumber() const { return fTreeNumber; }
118 Long64_t *GetTreeOffset() const { return fTreeOffset; }
120 virtual Double_t GetWeight() const;
121 virtual Bool_t InPlaceClone(TDirectory *newdirectory, const char *options = "");
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 void SavePrimitive (std::ostream &out, Option_t *option="");
141 virtual Long64_t Scan(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
142 virtual void SetAutoDelete(Bool_t autodel=kTRUE);
143 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr = 0);
144 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
145 virtual Int_t SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
146 template <class T> Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr = 0) {
147 return TTree::SetBranchAddress<T>(bname, add, ptr);
148 }
149#ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
150 // This can only be used when the template overload resolution can distringuish between
151 // T* and T**
152 template <class T> Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr = 0) {
153 return TTree::SetBranchAddress<T>(bname, add, ptr);
154 }
155#endif
156
157 virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0);
158 virtual Int_t SetCacheSize(Long64_t cacheSize = -1);
159 virtual void SetDirectory(TDirectory *dir);
160 virtual void SetEntryList(TEntryList *elist, Option_t *opt="");
161 virtual void SetEntryListFile(const char *filename="", Option_t *opt="");
162 virtual void SetEventList(TEventList *evlist);
164 virtual void SetName(const char *name);
165 virtual void SetPacketSize(Int_t size = 100);
166 virtual void SetProof(Bool_t on = kTRUE, Bool_t refresh = kFALSE, Bool_t gettreeheader = kFALSE);
167 virtual void SetWeight(Double_t w=1, Option_t *option="");
168 virtual void UseCache(Int_t maxCacheSize = 10, Int_t pageSize = 0);
169
170 ClassDef(TChain,5) //A chain of TTrees
171};
172
173#endif // ROOT_TChain
static RooMathCoreReg dummy
int Int_t
Definition: RtypesCore.h:43
unsigned int UInt_t
Definition: RtypesCore.h:44
const Bool_t kFALSE
Definition: RtypesCore.h:90
bool Bool_t
Definition: RtypesCore.h:61
double Double_t
Definition: RtypesCore.h:57
long long Long64_t
Definition: RtypesCore.h:71
const Bool_t kTRUE
Definition: RtypesCore.h:89
const char Option_t
Definition: RtypesCore.h:64
#define ClassDef(name, id)
Definition: Rtypes.h:322
#define BIT(n)
Definition: Rtypes.h:83
EDataType
Definition: TDataType.h:28
char name[80]
Definition: TGX11.cxx:109
int nentries
Definition: THbookFile.cxx:89
A TTree is a list of TBranches.
Definition: TBranch.h:91
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
A chain is a collection of files containing TTree objects.
Definition: TChain.h:34
TChain & operator=(const TChain &)
virtual void Reset(Option_t *option="")
Resets the state of this chain.
Definition: TChain.cxx:2291
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch name in the current tree.
Definition: TChain.cxx:886
virtual ~TChain()
Destructor.
Definition: TChain.cxx:180
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save TChain as a C++ statements on output stream out.
Definition: TChain.cxx:2330
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:786
virtual void ResetAfterMerge(TFileMergeInfo *)
Resets the state of this chain after a merge (keep the customization but forget the data).
Definition: TChain.cxx:2313
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Get entry from the file to memory.
Definition: TChain.cxx:969
Int_t fNtrees
Number of trees.
Definition: TChain.h:38
TObjArray * GetListOfFiles() const
Definition: TChain.h:108
virtual void SetAutoDelete(Bool_t autodel=kTRUE)
Set the global branch kAutoDelete bit.
Definition: TChain.cxx:2414
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set chain weight.
Definition: TChain.cxx:2951
virtual Long64_t LoadTree(Long64_t entry)
Find the tree which contains entry, and set it as the current tree.
Definition: TChain.cxx:1290
virtual void SetDirectory(TDirectory *dir)
Remove reference to this chain from current directory and add reference to new directory dir.
Definition: TChain.cxx:2622
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:2209
virtual void Print(Option_t *option="") const
Print the header information of each tree in the chain.
Definition: TChain.cxx:2186
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition: TChain.cxx:1136
virtual Int_t GetTreeNumber() const
Definition: TChain.h:117
virtual void DirectoryAutoAdd(TDirectory *)
Override the TTree::DirectoryAutoAdd behavior: we never auto add.
Definition: TChain.cxx:771
virtual TObjArray * GetListOfBranches()
Return a pointer to the list of branches of the current tree.
Definition: TChain.cxx:1092
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition: TChain.cxx:2268
TChain(const TChain &)
virtual TObjArray * GetListOfLeaves()
Return a pointer to the list of leaves of the current tree.
Definition: TChain.cxx:1115
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:461
Long64_t * fTreeOffset
[fTreeOffsetLen] Array of variables
Definition: TChain.h:40
virtual Bool_t GetBranchStatus(const char *branchname) const
See TTree::GetReadEntry().
Definition: TChain.cxx:907
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=0)
Definition: TChain.h:152
virtual TTree * GetTree() const
Definition: TChain.h:116
virtual TLeaf * FindLeaf(const char *name)
See TTree::GetReadEntry().
Definition: TChain.cxx:846
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:2644
virtual TBranch * FindBranch(const char *name)
See TTree::GetReadEntry().
Definition: TChain.cxx:825
static constexpr auto kBigNumber
Definition: TChain.h:67
virtual Bool_t InPlaceClone(TDirectory *newdirectory, const char *options="")
Move content to a new file. (NOT IMPLEMENTED for TChain)
Definition: TChain.cxx:1226
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:1778
TChain * fProofChain
! chain proxy when going to be processed by PROOF
Definition: TChain.h:46
virtual void Browse(TBrowser *)
Browse the contents of the chain.
Definition: TChain.cxx:732
virtual Int_t AddFileInfoList(TCollection *list, Long64_t nfiles=TTree::kMaxEntries)
Add all files referenced in the list to the chain.
Definition: TChain.cxx:558
virtual Int_t SetCacheSize(Long64_t cacheSize=-1)
Set maximum size of the file cache .
Definition: TChain.cxx:2423
TList * GetStatus() const
Definition: TChain.h:115
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:2399
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:163
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0)
Set branch status to Process or DoNotProcess.
Definition: TChain.cxx:2595
Long64_t * GetTreeOffset() const
Definition: TChain.h:118
virtual void CreatePackets()
Initialize the packet descriptor string.
Definition: TChain.cxx:758
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:2124
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return a pointer to the leaf name in the current tree.
Definition: TChain.cxx:1045
TList * fStatus
-> List of active/inactive branches (TChainElement, owned)
Definition: TChain.h:45
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:1855
TTree * fTree
! Pointer to current tree (Note: We do not own this tree.)
Definition: TChain.h:42
virtual Long64_t GetEntries() const
Return the total number of entries in the chain.
Definition: TChain.cxx:945
virtual Int_t Add(TChain *chain)
Add all files referenced by the passed chain to this chain.
Definition: TChain.cxx:226
virtual TFriendElement * AddFriend(const char *chainname, const char *dummy="")
Add a TFriendElement to the list of friends of this chain.
Definition: TChain.cxx:648
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition: TChain.cxx:867
virtual void ResetBranchAddress(TBranch *)
Reset the addresses of the branch.
Definition: TChain.cxx:2448
virtual void ResetBranchAddresses()
Reset the addresses of the branches.
Definition: TChain.cxx:2462
virtual Int_t LoadBaskets(Long64_t maxmemory)
Dummy function.
Definition: TChain.cxx:1263
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:2904
TChain()
Default constructor.
Definition: TChain.cxx:67
void ReleaseChainProof()
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:2739
virtual Long64_t GetEntries(const char *sel)
Return the number of entries matching the selection.
Definition: TChain.h:98
Int_t fTreeOffsetLen
Current size of fTreeOffset array.
Definition: TChain.h:37
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:750
virtual Long64_t GetReadEntry() const
See TTree::GetReadEntry().
Definition: TChain.cxx:1187
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Return entry corresponding to major and minor number.
Definition: TChain.cxx:1021
Int_t GetTreeOffsetLen() const
Definition: TChain.h:119
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition: TChain.cxx:924
virtual Int_t GetNbranches()
Return the number of branches of the current tree.
Definition: TChain.cxx:1172
TObjArray * fFiles
-> List of file names containing the trees (TChainElement, owned)
Definition: TChain.h:44
virtual void SetEventList(TEventList *evlist)
This function transfroms the given TEventList into a TEntryList.
Definition: TChain.cxx:2785
Int_t GetNtrees() const
Definition: TChain.h:96
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:2249
Bool_t fCanDeleteRefs
! If true, TProcessIDs are deleted when closing a file
Definition: TChain.h:41
TFile * fFile
! Pointer to current file (We own the file).
Definition: TChain.h:43
virtual Double_t GetWeight() const
Return the chain weight.
Definition: TChain.cxx:1208
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
Definition: TChain.cxx:988
virtual Long64_t GetCacheSize() const
Definition: TChain.h:93
virtual void UseCache(Int_t maxCacheSize=10, Int_t pageSize=0)
Dummy function kept for back compatibility.
Definition: TChain.cxx:3007
virtual void SetName(const char *name)
Change the name of this TChain.
Definition: TChain.cxx:2860
void InvalidateCurrentTree()
Set the TTree to be reloaded as soon as possible.
Definition: TChain.cxx:1245
virtual void ls(Option_t *option="") const
List the chain.
Definition: TChain.cxx:1822
TFile * GetFile() const
Return a pointer to the current file.
Definition: TChain.cxx:1032
virtual void SetPacketSize(Int_t size=100)
Set number of entries per packet for parallel root.
Definition: TChain.cxx:2883
Int_t fTreeNumber
! Current Tree number in fTreeOffset table
Definition: TChain.h:39
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=0)
Definition: TChain.h:146
void Lookup(Bool_t force=kFALSE)
Check / locate the files in the chain.
Definition: TChain.cxx:1708
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
Definition: TChain.cxx:1153
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Return absolute entry number in the chain.
Definition: TChain.cxx:935
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Set branch address.
Definition: TChain.cxx:2491
virtual void Draw(Option_t *opt)
Default Draw method for all objects.
Definition: TChain.h:87
@ kProofLite
Definition: TChain.h:63
@ kAutoDelete
Definition: TChain.h:61
@ kProofUptodate
Definition: TChain.h:62
@ kGlobalWeight
Definition: TChain.h:60
virtual Int_t Fill()
Fill all branches.
Definition: TChain.h:88
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
Collection abstract base class.
Definition: TCollection.h:63
A specialized string object used for TTree selections.
Definition: TCut.h:25
Describe directory structure in memory.
Definition: TDirectory.h:40
A List of entry numbers in a TTree or TChain.
Definition: TEntryList.h:26
A TEventList object is a list of selected events (entries) in a TTree.
Definition: TEventList.h:31
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:53
A TFriendElement TF describes a TTree object TF in a file.
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:49
A doubly linked list.
Definition: TList.h:44
An array of TObjects.
Definition: TObjArray.h:37
Mother of all ROOT objects.
Definition: TObject.h:37
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:944
EStatusBits
Definition: TObject.h:57
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Definition: TSelector.h:33
Basic string class.
Definition: TString.h:131
A TTree represents a columnar dataset.
Definition: TTree.h:78
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:9024
virtual Long64_t GetEntries() const
Definition: TTree.h:457
Long64_t fCacheSize
! Maximum size of file buffers
Definition: TTree.h:104
virtual Long64_t GetCacheSize() const
Definition: TTree.h:447
static constexpr Long64_t kMaxEntries
Definition: TTree.h:224
double T(double x)
Definition: ChebyshevPol.h:34
constexpr std::array< decltype(std::declval< F >()(std::declval< int >())), N > make(F f)
Definition: file.py:1