12 #ifndef ROOT_TTreeCloner
13 #define ROOT_TTreeCloner
42 Bool_t fNeedConversion;
47 TObjArray fFromBranches;
48 TObjArray fToBranches;
51 UInt_t *fBasketBranchNum;
54 Long64_t *fBasketSeek;
55 Long64_t *fBasketEntry;
61 Long64_t fToStartEntries;
64 TFileCacheRead *fFileCache;
65 TFileCacheRead *fPrevCache;
69 kSortBasketsByBranch = 1,
70 kSortBasketsByOffset = 2,
71 kSortBasketsByEntry = 3
77 CompareSeek(TTreeCloner *obj) : fObject(obj) {}
78 Bool_t operator()(UInt_t i1, UInt_t i2);
84 CompareEntry(TTreeCloner *obj) : fObject(obj) {}
85 Bool_t operator()(UInt_t i1, UInt_t i2);
88 friend class CompareSeek;
89 friend class CompareEntry;
91 void ImportClusterRanges();
93 UInt_t FillCache(UInt_t from);
97 TTreeCloner(
const TTreeCloner&) =
delete;
98 TTreeCloner &operator=(
const TTreeCloner&) =
delete;
101 enum EClonerOptions {
103 kNoWarnings = BIT(1),
104 kIgnoreMissingTopLevel = BIT(2),
105 kNoFileCache = BIT(3)
108 TTreeCloner(TTree *from, TTree *to, Option_t *method, UInt_t options = kNone);
109 virtual ~TTreeCloner();
111 void CloseOutWriteBaskets();
112 UInt_t CollectBranches(TBranch *from, TBranch *to);
113 UInt_t CollectBranches(TObjArray *from, TObjArray *to);
114 UInt_t CollectBranches();
115 void CollectBaskets();
116 void CopyMemoryBaskets();
117 void CopyStreamerInfos();
118 void CopyProcessIds();
119 const char *GetWarning()
const {
return fWarningMsg; }
121 Bool_t IsValid() {
return fIsValid; }
122 Bool_t NeedConversion() {
return fNeedConversion; }
123 void SetCacheSize(Int_t size);
127 ClassDef(TTreeCloner,0);