Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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 bool fGlobalRegistration; ///<! if true, bypass use of global lists
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:
71
73 TChain(const char *name, const char *title = "", Mode mode = kWithGlobalRegistration);
74 virtual ~TChain();
75
76 virtual Int_t Add(TChain* chain);
77 virtual Int_t Add(const char* name, Long64_t nentries = TTree::kMaxEntries);
78 virtual Int_t AddFile(const char* name, Long64_t nentries = TTree::kMaxEntries, const char* tname = "");
80 virtual TFriendElement *AddFriend(const char* chainname, const char* dummy = "");
81 virtual TFriendElement *AddFriend(const char* chainname, TFile* dummy);
82 virtual TFriendElement *AddFriend(TTree* chain, const char* alias = "", Bool_t warn = kFALSE);
83 virtual void Browse(TBrowser*);
84 virtual void CanDeleteRefs(Bool_t flag = kTRUE);
85 virtual void CreatePackets();
86 virtual void DirectoryAutoAdd(TDirectory *);
87 virtual Long64_t Draw(const char* varexp, const TCut& selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
88 virtual Long64_t Draw(const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
89 virtual void Draw(Option_t* opt) { Draw(opt, "", "", kMaxEntries, 0); }
90 virtual Int_t Fill() { MayNotUse("Fill()"); return -1; }
91 virtual TBranch *FindBranch(const char* name);
92 virtual TLeaf *FindLeaf(const char* name);
93 virtual TBranch *GetBranch(const char* name);
94 virtual Bool_t GetBranchStatus(const char* branchname) const;
95 virtual Long64_t GetCacheSize() const { return fTree ? fTree->GetCacheSize() : fCacheSize; }
96 virtual Long64_t GetChainEntryNumber(Long64_t entry) const;
97 virtual TClusterIterator GetClusterIterator(Long64_t firstentry);
98 Int_t GetNtrees() const { return fNtrees; }
99 virtual Long64_t GetEntries() const;
100 virtual Long64_t GetEntries(const char *sel) { return TTree::GetEntries(sel); }
101 virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0);
102 virtual Long64_t GetEntryNumber(Long64_t entry) const;
103 virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0);
104 TFile *GetFile() const;
105 virtual TLeaf *GetLeaf(const char* branchname, const char* leafname);
106 virtual TLeaf *GetLeaf(const char* name);
107 virtual TObjArray *GetListOfBranches();
108 // Warning, GetListOfFiles returns the list of TChainElements (not the list of files)
109 // see TChain::AddFile to see how to get the corresponding TFile objects
110 TObjArray *GetListOfFiles() const {return fFiles;}
111 virtual TObjArray *GetListOfLeaves();
112 virtual const char *GetAlias(const char *aliasName) const;
113 virtual Double_t GetMaximum(const char *columname);
114 virtual Double_t GetMinimum(const char *columname);
115 virtual Int_t GetNbranches();
116 virtual Long64_t GetReadEntry() const;
117 TList *GetStatus() const { return fStatus; }
118 virtual TTree *GetTree() const { return fTree; }
119 virtual Int_t GetTreeNumber() const { return fTreeNumber; }
120 Long64_t *GetTreeOffset() const { return fTreeOffset; }
122 virtual Double_t GetWeight() const;
123 virtual Bool_t InPlaceClone(TDirectory *newdirectory, const char *options = "");
124 virtual Int_t LoadBaskets(Long64_t maxmemory);
125 virtual Long64_t LoadTree(Long64_t entry);
126 void Lookup(Bool_t force = kFALSE);
127 virtual void Loop(Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
128 virtual void ls(Option_t *option="") const;
129 virtual Long64_t Merge(const char *name, Option_t *option = "");
130 virtual Long64_t Merge(TCollection *list, Option_t *option = "");
131 virtual Long64_t Merge(TCollection *list, TFileMergeInfo *info);
132 virtual Long64_t Merge(TFile *file, Int_t basketsize, Option_t *option="");
133 virtual void Print(Option_t *option="") const;
134 virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
135 virtual Long64_t Process(TSelector* selector, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
136 virtual void RecursiveRemove(TObject *obj);
137 virtual void RemoveFriend(TTree*);
138 virtual void Reset(Option_t *option="");
139 virtual void ResetAfterMerge(TFileMergeInfo *);
140 virtual void ResetBranchAddress(TBranch *);
141 virtual void ResetBranchAddresses();
142 virtual void SavePrimitive (std::ostream &out, Option_t *option="");
143 virtual Long64_t Scan(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0); // *MENU*
144 virtual void SetAutoDelete(Bool_t autodel=kTRUE);
145 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr = 0);
146 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
147 virtual Int_t SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
148 template <class T> Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr = 0) {
149 return TTree::SetBranchAddress<T>(bname, add, ptr);
150 }
151#ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
152 // This can only be used when the template overload resolution can distinguish between
153 // T* and T**
154 template <class T> Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr = 0) {
155 return TTree::SetBranchAddress<T>(bname, add, ptr);
156 }
157#endif
158
159 virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0);
160 virtual Int_t SetCacheSize(Long64_t cacheSize = -1);
161 virtual void SetDirectory(TDirectory *dir);
162 virtual void SetEntryList(TEntryList *elist, Option_t *opt="");
163 virtual void SetEntryListFile(const char *filename="", Option_t *opt="");
164 virtual void SetEventList(TEventList *evlist);
165 virtual void SetMakeClass(Int_t make) { TTree::SetMakeClass(make); if (fTree) fTree->SetMakeClass(make);}
166 virtual void SetName(const char *name);
167 virtual void SetPacketSize(Int_t size = 100);
168 virtual void SetProof(Bool_t on = kTRUE, Bool_t refresh = kFALSE, Bool_t gettreeheader = kFALSE);
169 virtual void SetWeight(Double_t w=1, Option_t *option="");
170 virtual void UseCache(Int_t maxCacheSize = 10, Int_t pageSize = 0);
171
172 ClassDef(TChain,5) //A chain of TTrees
173};
174
175#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
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:2315
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch name in the current tree.
Definition TChain.cxx:899
virtual ~TChain()
Destructor.
Definition TChain.cxx:172
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save TChain as a C++ statements on output stream out.
Definition TChain.cxx:2354
virtual void ResetAfterMerge(TFileMergeInfo *)
Resets the state of this chain after a merge (keep the customization but forget the data).
Definition TChain.cxx:2337
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Get entry from the file to memory.
Definition TChain.cxx:982
Int_t fNtrees
Number of trees.
Definition TChain.h:37
TObjArray * GetListOfFiles() const
Definition TChain.h:110
virtual void SetAutoDelete(Bool_t autodel=kTRUE)
Set the global branch kAutoDelete bit.
Definition TChain.cxx:2438
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set chain weight.
Definition TChain.cxx:3039
virtual Long64_t LoadTree(Long64_t entry)
Find the tree which contains entry, and set it as the current tree.
Definition TChain.cxx:1302
virtual void SetDirectory(TDirectory *dir)
Remove reference to this chain from current directory and add reference to new directory dir.
Definition TChain.cxx:2646
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:2233
virtual void Print(Option_t *option="") const
Print the header information of each tree in the chain.
Definition TChain.cxx:2210
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition TChain.cxx:1149
virtual Int_t GetTreeNumber() const
Definition TChain.h:119
virtual void DirectoryAutoAdd(TDirectory *)
Override the TTree::DirectoryAutoAdd behavior: we never auto add.
Definition TChain.cxx:784
virtual TObjArray * GetListOfBranches()
Return a pointer to the list of branches of the current tree.
Definition TChain.cxx:1105
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition TChain.cxx:2292
TChain(const TChain &)
virtual TObjArray * GetListOfLeaves()
Return a pointer to the list of leaves of the current tree.
Definition TChain.cxx:1128
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:474
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:920
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=0)
Definition TChain.h:154
virtual TTree * GetTree() const
Definition TChain.h:118
virtual TLeaf * FindLeaf(const char *name)
See TTree::GetReadEntry().
Definition TChain.cxx:859
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:2683
virtual TBranch * FindBranch(const char *name)
See TTree::GetReadEntry().
Definition TChain.cxx:838
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:1239
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:1802
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:745
virtual Int_t AddFileInfoList(TCollection *list, Long64_t nfiles=TTree::kMaxEntries)
Add all files referenced in the list to the chain.
Definition TChain.cxx:572
virtual Int_t SetCacheSize(Long64_t cacheSize=-1)
Set maximum size of the file cache .
Definition TChain.cxx:2447
TList * GetStatus() const
Definition TChain.h:117
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:2423
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:165
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0)
Set branch status to Process or DoNotProcess.
Definition TChain.cxx:2619
Long64_t * GetTreeOffset() const
Definition TChain.h:120
virtual void CreatePackets()
Initialize the packet descriptor string.
Definition TChain.cxx:771
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:2148
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return a pointer to the leaf name in the current tree.
Definition TChain.cxx:1058
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:1879
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:958
virtual Int_t Add(TChain *chain)
Add all files referenced by the passed chain to this chain.
Definition TChain.cxx:218
virtual TFriendElement * AddFriend(const char *chainname, const char *dummy="")
Add a TFriendElement to the list of friends of this chain.
Definition TChain.cxx:662
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition TChain.cxx:880
virtual void ResetBranchAddress(TBranch *)
Reset the addresses of the branch.
Definition TChain.cxx:2472
virtual void ResetBranchAddresses()
Reset the addresses of the branches.
Definition TChain.cxx:2486
virtual Int_t LoadBaskets(Long64_t maxmemory)
Dummy function.
Definition TChain.cxx:1276
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:2992
bool fGlobalRegistration
! if true, bypass use of global lists
Definition TChain.h:46
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:2828
virtual Long64_t GetEntries(const char *sel)
Return the number of entries matching the selection.
Definition TChain.h:100
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:763
virtual Long64_t GetReadEntry() const
See TTree::GetReadEntry().
Definition TChain.cxx:1200
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Return entry corresponding to major and minor number.
Definition TChain.cxx:1034
Int_t GetTreeOffsetLen() const
Definition TChain.h:121
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition TChain.cxx:937
virtual Int_t GetNbranches()
Return the number of branches of the current tree.
Definition TChain.cxx:1185
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:2874
Int_t GetNtrees() const
Definition TChain.h:98
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:2273
Bool_t fCanDeleteRefs
! If true, TProcessIDs are deleted when closing a file
Definition TChain.h:40
@ kWithGlobalRegistration
Definition TChain.h:70
@ kWithoutGlobalRegistration
Definition TChain.h:70
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:1221
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
Definition TChain.cxx:1001
virtual Long64_t GetCacheSize() const
Definition TChain.h:95
virtual void UseCache(Int_t maxCacheSize=10, Int_t pageSize=0)
Dummy function kept for back compatibility.
Definition TChain.cxx:3095
virtual void SetName(const char *name)
Change the name of this TChain.
Definition TChain.cxx:2949
void InvalidateCurrentTree()
Set the TTree to be reloaded as soon as possible.
Definition TChain.cxx:1258
virtual void ls(Option_t *option="") const
List the chain.
Definition TChain.cxx:1846
TFile * GetFile() const
Return a pointer to the current file.
Definition TChain.cxx:1045
virtual void SetPacketSize(Int_t size=100)
Set number of entries per packet for parallel root.
Definition TChain.cxx:2971
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:148
void Lookup(Bool_t force=kFALSE)
Check / locate the files in the chain.
Definition TChain.cxx:1732
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
Definition TChain.cxx:1166
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Return absolute entry number in the chain.
Definition TChain.cxx:948
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Set branch address.
Definition TChain.cxx:2515
virtual void Draw(Option_t *opt)
Default Draw method for all objects.
Definition TChain.h:89
EStatusBits
Definition TChain.h:59
@ 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:90
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:38
An array of TObjects.
Definition TObjArray.h:31
Mother of all ROOT objects.
Definition TObject.h:41
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:1016
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:9143
virtual Long64_t GetEntries() const
Definition TTree.h:460
Long64_t fCacheSize
! Maximum size of file buffers
Definition TTree.h:105
virtual Long64_t GetCacheSize() const
Definition TTree.h:450
static constexpr Long64_t kMaxEntries
Definition TTree.h:226
Definition file.py:1
th1 Draw()