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
26class TFile;
27class TBrowser;
28class TCut;
29class TEntryList;
30class TEventList;
31class TCollection;
32
33class TChain : public TTree {
34
35protected:
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
47private:
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
52protected:
55
56public:
57 // TChain constants
62 kProofLite = BIT(18)
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
68public:
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 Bool_t InPlaceClone(TDirectory *newdirectory, const char *options = "");
121 virtual Int_t LoadBaskets(Long64_t maxmemory);
122 virtual Long64_t LoadTree(Long64_t entry);
123 void Lookup(Bool_t force = kFALSE);
124 virtual void Loop(Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
125 virtual void ls(Option_t *option="") const;
126 virtual Long64_t Merge(const char *name, Option_t *option = "");
127 virtual Long64_t Merge(TCollection *list, Option_t *option = "");
128 virtual Long64_t Merge(TCollection *list, TFileMergeInfo *info);
129 virtual Long64_t Merge(TFile *file, Int_t basketsize, Option_t *option="");
130 virtual void Print(Option_t *option="") const;
131 virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
132 virtual Long64_t Process(TSelector* selector, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
133 virtual void RecursiveRemove(TObject *obj);
134 virtual void RemoveFriend(TTree*);
135 virtual void Reset(Option_t *option="");
136 virtual void ResetAfterMerge(TFileMergeInfo *);
137 virtual void ResetBranchAddress(TBranch *);
138 virtual void ResetBranchAddresses();
139 virtual void SavePrimitive (std::ostream &out, Option_t *option="");
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 distinguish 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);
163 virtual void SetName(const char *name);
164 virtual void SetPacketSize(Int_t size = 100);
165 virtual void SetProof(Bool_t on = kTRUE, Bool_t refresh = kFALSE, Bool_t gettreeheader = kFALSE);
166 virtual void SetWeight(Double_t w=1, Option_t *option="");
167 virtual void UseCache(Int_t maxCacheSize = 10, Int_t pageSize = 0);
168
169 ClassDef(TChain,5) //A chain of TTrees
170};
171
172#endif // ROOT_TChain
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
int Int_t
Definition: RtypesCore.h:45
unsigned int UInt_t
Definition: RtypesCore.h:46
const Bool_t kFALSE
Definition: RtypesCore.h:101
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
long long Long64_t
Definition: RtypesCore.h:80
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
#define ClassDef(name, id)
Definition: Rtypes.h:325
#define BIT(n)
Definition: Rtypes.h:85
EDataType
Definition: TDataType.h:28
char name[80]
Definition: TGX11.cxx:110
int nentries
Definition: THbookFile.cxx:91
A TTree is a list of TBranches.
Definition: TBranch.h:89
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:33
TChain & operator=(const TChain &)
virtual void Reset(Option_t *option="")
Resets the state of this chain.
Definition: TChain.cxx:2323
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch name in the current tree.
Definition: TChain.cxx:911
virtual ~TChain()
Destructor.
Definition: TChain.cxx:184
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save TChain as a C++ statements on output stream out.
Definition: TChain.cxx:2362
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:811
virtual void ResetAfterMerge(TFileMergeInfo *)
Resets the state of this chain after a merge (keep the customization but forget the data).
Definition: TChain.cxx:2345
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Get entry from the file to memory.
Definition: TChain.cxx:994
Int_t fNtrees
Number of trees.
Definition: TChain.h:37
TObjArray * GetListOfFiles() const
Definition: TChain.h:107
virtual void SetAutoDelete(Bool_t autodel=kTRUE)
Set the global branch kAutoDelete bit.
Definition: TChain.cxx:2446
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set chain weight.
Definition: TChain.cxx:3048
virtual Long64_t LoadTree(Long64_t entry)
Find the tree which contains entry, and set it as the current tree.
Definition: TChain.cxx:1314
virtual void SetDirectory(TDirectory *dir)
Remove reference to this chain from current directory and add reference to new directory dir.
Definition: TChain.cxx:2654
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:2241
virtual void Print(Option_t *option="") const
Print the header information of each tree in the chain.
Definition: TChain.cxx:2218
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition: TChain.cxx:1161
virtual Int_t GetTreeNumber() const
Definition: TChain.h:116
virtual void DirectoryAutoAdd(TDirectory *)
Override the TTree::DirectoryAutoAdd behavior: we never auto add.
Definition: TChain.cxx:796
virtual TObjArray * GetListOfBranches()
Return a pointer to the list of branches of the current tree.
Definition: TChain.cxx:1117
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition: TChain.cxx:2300
TChain(const TChain &)
virtual TObjArray * GetListOfLeaves()
Return a pointer to the list of leaves of the current tree.
Definition: TChain.cxx:1140
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:486
Long64_t * fTreeOffset
[fTreeOffsetLen] Array of variables
Definition: TChain.h:39
virtual Bool_t GetBranchStatus(const char *branchname) const
See TTree::GetReadEntry().
Definition: TChain.cxx:932
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=0)
Definition: TChain.h:151
virtual TTree * GetTree() const
Definition: TChain.h:115
virtual TLeaf * FindLeaf(const char *name)
See TTree::GetReadEntry().
Definition: TChain.cxx:871
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:2691
virtual TBranch * FindBranch(const char *name)
See TTree::GetReadEntry().
Definition: TChain.cxx:850
static constexpr auto kBigNumber
Definition: TChain.h:66
virtual Bool_t InPlaceClone(TDirectory *newdirectory, const char *options="")
Move content to a new file. (NOT IMPLEMENTED for TChain)
Definition: TChain.cxx:1251
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:1810
TChain * fProofChain
! chain proxy when going to be processed by PROOF
Definition: TChain.h:45
virtual void Browse(TBrowser *)
Browse the contents of the chain.
Definition: TChain.cxx:757
virtual Int_t AddFileInfoList(TCollection *list, Long64_t nfiles=TTree::kMaxEntries)
Add all files referenced in the list to the chain.
Definition: TChain.cxx:583
virtual Int_t SetCacheSize(Long64_t cacheSize=-1)
Set maximum size of the file cache .
Definition: TChain.cxx:2455
TList * GetStatus() const
Definition: TChain.h:114
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:2431
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
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0)
Set branch status to Process or DoNotProcess.
Definition: TChain.cxx:2627
Long64_t * GetTreeOffset() const
Definition: TChain.h:117
virtual void CreatePackets()
Initialize the packet descriptor string.
Definition: TChain.cxx:783
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:2156
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return a pointer to the leaf name in the current tree.
Definition: TChain.cxx:1070
TList * fStatus
-> List of active/inactive branches (TChainElement, owned)
Definition: TChain.h:44
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:1887
TTree * fTree
! Pointer to current tree (Note: We do not own this tree.)
Definition: TChain.h:41
virtual Long64_t GetEntries() const
Return the total number of entries in the chain.
Definition: TChain.cxx:970
virtual Int_t Add(TChain *chain)
Add all files referenced by the passed chain to this chain.
Definition: TChain.cxx:230
virtual TFriendElement * AddFriend(const char *chainname, const char *dummy="")
Add a TFriendElement to the list of friends of this chain.
Definition: TChain.cxx:673
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition: TChain.cxx:892
virtual void ResetBranchAddress(TBranch *)
Reset the addresses of the branch.
Definition: TChain.cxx:2480
virtual void ResetBranchAddresses()
Reset the addresses of the branches.
Definition: TChain.cxx:2494
virtual Int_t LoadBaskets(Long64_t maxmemory)
Dummy function.
Definition: TChain.cxx:1288
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:3001
TChain()
Default constructor.
Definition: TChain.cxx:71
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:2836
virtual Long64_t GetEntries(const char *sel)
Return the number of entries matching the selection.
Definition: TChain.h:97
Int_t fTreeOffsetLen
Current size of fTreeOffset array.
Definition: TChain.h:36
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:775
virtual Long64_t GetReadEntry() const
See TTree::GetReadEntry().
Definition: TChain.cxx:1212
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Return entry corresponding to major and minor number.
Definition: TChain.cxx:1046
Int_t GetTreeOffsetLen() const
Definition: TChain.h:118
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition: TChain.cxx:949
virtual Int_t GetNbranches()
Return the number of branches of the current tree.
Definition: TChain.cxx:1197
TObjArray * fFiles
-> List of file names containing the trees (TChainElement, owned)
Definition: TChain.h:43
virtual void SetEventList(TEventList *evlist)
This function transfroms the given TEventList into a TEntryList.
Definition: TChain.cxx:2882
Int_t GetNtrees() const
Definition: TChain.h:95
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:2281
Bool_t fCanDeleteRefs
! If true, TProcessIDs are deleted when closing a file
Definition: TChain.h:40
TFile * fFile
! Pointer to current file (We own the file).
Definition: TChain.h:42
virtual Double_t GetWeight() const
Return the chain weight.
Definition: TChain.cxx:1233
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
Definition: TChain.cxx:1013
virtual Long64_t GetCacheSize() const
Definition: TChain.h:92
virtual void UseCache(Int_t maxCacheSize=10, Int_t pageSize=0)
Dummy function kept for back compatibility.
Definition: TChain.cxx:3104
virtual void SetName(const char *name)
Change the name of this TChain.
Definition: TChain.cxx:2957
void InvalidateCurrentTree()
Set the TTree to be reloaded as soon as possible.
Definition: TChain.cxx:1270
virtual void ls(Option_t *option="") const
List the chain.
Definition: TChain.cxx:1854
TFile * GetFile() const
Return a pointer to the current file.
Definition: TChain.cxx:1057
virtual void SetPacketSize(Int_t size=100)
Set number of entries per packet for parallel root.
Definition: TChain.cxx:2980
Int_t fTreeNumber
! Current Tree number in fTreeOffset table
Definition: TChain.h:38
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=0)
Definition: TChain.h:145
void Lookup(Bool_t force=kFALSE)
Check / locate the files in the chain.
Definition: TChain.cxx:1740
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
Definition: TChain.cxx:1178
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Return absolute entry number in the chain.
Definition: TChain.cxx:960
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Set branch address.
Definition: TChain.cxx:2523
virtual void Draw(Option_t *opt)
Default Draw method for all objects.
Definition: TChain.h:86
@ kProofLite
Definition: TChain.h:62
@ kAutoDelete
Definition: TChain.h:60
@ kProofUptodate
Definition: TChain.h:61
@ kGlobalWeight
Definition: TChain.h:59
virtual Int_t Fill()
Fill all branches.
Definition: TChain.h:87
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
Collection abstract base class.
Definition: TCollection.h:65
A specialized string object used for TTree selections.
Definition: TCut.h:25
Describe directory structure in memory.
Definition: TDirectory.h:45
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:54
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:57
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:946
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:31
Basic string class.
Definition: TString.h:136
A TTree represents a columnar dataset.
Definition: TTree.h:79
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:9115
virtual Long64_t GetEntries() const
Definition: TTree.h:459
Long64_t fCacheSize
! Maximum size of file buffers
Definition: TTree.h:105
virtual Long64_t GetCacheSize() const
Definition: TTree.h:449
static constexpr Long64_t kMaxEntries
Definition: TTree.h:226
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