472 case kchar:
return 0;
477 case kBits:
return 0;
513 fMethodBit(
tfl.fMethodBit),
514 fPrevious(
tfl.fPrevious)
525 fMethodBit=
tfl.fMethodBit;
526 fPrevious=
tfl.fPrevious;
538 fTree->fFriendLockStatus &= ~(fMethodBit &
kBitMask);
610 if (fEstimatedSize > 0)
return fEstimatedSize;
614 fEstimatedSize = fTree->GetEntries() - 1;
615 if (fEstimatedSize <= 0)
619 Long64_t cacheSize = fTree->GetCacheSize();
620 if (cacheSize == 0) {
622 TFile *file = fTree->GetCurrentFile();
631 if (cacheSize <= 0) {
632 cacheSize = 30000000;
638 return fEstimatedSize;
647 fStartEntry = fNextEntry;
648 if (fTree->fNClusterRange || fTree->GetAutoFlush() > 0) {
649 if (fClusterRange == fTree->fNClusterRange) {
652 fNextEntry += GetEstimatedClusterSize();
654 if (fStartEntry > fTree->fClusterRangeEnd[fClusterRange]) {
657 if (fClusterRange == fTree->fNClusterRange) {
660 fNextEntry += GetEstimatedClusterSize();
667 if (fNextEntry > fTree->fClusterRangeEnd[fClusterRange]) {
671 fNextEntry = fTree->fClusterRangeEnd[fClusterRange] + 1;
677 fNextEntry = fStartEntry + GetEstimatedClusterSize();
679 if (fNextEntry > fTree->GetEntries()) {
680 fNextEntry = fTree->GetEntries();
691 fNextEntry = fStartEntry;
692 if (fTree->fNClusterRange || fTree->GetAutoFlush() > 0) {
693 if (fClusterRange == 0 || fTree->fNClusterRange == 0) {
696 fStartEntry -= GetEstimatedClusterSize();
701 if (fClusterRange == 0) {
714 fStartEntry = fNextEntry - GetEstimatedClusterSize();
716 if (fStartEntry < 0) {
827, fDefaultEntryOffsetLen(1000)
833, fAutoSave( -300000000)
834, fAutoFlush(-30000000)
836, fClusterRangeEnd(nullptr)
837, fClusterSize(nullptr)
860, fExternalFriends(nullptr)
866, fFriendLockStatus(0)
867, fTransientBuffer(nullptr)
868, fCacheDoAutoInit(
true)
869, fCacheDoClusterPrefetch(
false)
870, fCacheUserSet(
false)
871, fIMTEnabled(
ROOT::IsImplicitMTEnabled())
872, fNEntriesSinceSorting(0)
906 if (title[0] ==
'/') {
922#ifdef R__TRACK_BASKET_ALLOC_TIME
1058 Error(
"AddBranchToCache",
"Could not load a tree");
1067 Error(
"AddBranchToCache",
"No tree is available. Branch was not added to the cache");
1073 Error(
"AddBranchToCache",
"No file is available. Branch was not added to the cache");
1078 Error(
"AddBranchToCache",
"No cache is available, branch not added");
1097 Error(
"AddBranchToCache",
"Could not load a tree");
1105 Error(
"AddBranchToCache",
"Error adding branch");
1110 Error(
"AddBranchToCache",
"No tree is available. Branch was not added to the cache");
1116 Error(
"AddBranchToCache",
"No file is available. Branch was not added to the cache");
1121 Error(
"AddBranchToCache",
"No cache is available, branch not added");
1141 Error(
"DropBranchFromCache",
"Could not load a tree");
1150 Error(
"DropBranchFromCache",
"No tree is available. Branch was not dropped from the cache");
1156 Error(
"DropBranchFromCache",
"No file is available. Branch was not dropped from the cache");
1161 Error(
"DropBranchFromCache",
"No cache is available, branch not dropped");
1180 Error(
"DropBranchFromCache",
"Could not load a tree");
1188 Error(
"DropBranchFromCache",
"Error dropping branch");
1193 Error(
"DropBranchFromCache",
"No tree is available. Branch was not dropped from the cache");
1199 Error(
"DropBranchFromCache",
"No file is available. Branch was not dropped from the cache");
1204 Error(
"DropBranchFromCache",
"No cache is available, branch not dropped");
1241 return idx ? idx->IsValidFor(&
mainTree) :
false;
1247 "Tree '%s' has the kEntriesReshuffled bit set and cannot have friends nor can be added as a friend unless the "
1248 "main tree has a TTreeIndex on the friend tree '%s'. You can also unset the bit manually if you know what you "
1249 "are doing; note that you risk associating wrong TTree entries of the friend with those of the main TTree!";
1339 Warning(
"AddFriend",
"FriendElement %s in file %s has less entries %lld than its parent Tree: %lld",
treename,
1373 Warning(
"AddFriend",
"FriendElement %s in file %s has less entries %lld than its parent tree: %lld",
treename,
1377 Error(
"AddFriend",
"Cannot find tree '%s' in file '%s', friend not added",
treename, file->
GetName());
1404 Warning(
"AddFriend",
"FriendElement '%s' in file '%s' has less entries %lld than its parent tree: %lld",
1405 tree->GetName(),
fe->GetFile() ?
fe->GetFile()->GetName() :
"(memory resident)", t->
GetEntries(),
1411 tree->RemoveExternalFriend(
fe);
1504 if (opt.
Contains(
"flushbaskets")) {
1505 if (
gDebug > 0)
Info(
"AutoSave",
"calling FlushBaskets \n");
1539 " is an instance of an stl collection and does not have a compiled CollectionProxy."
1540 " Please generate the dictionary for this collection (%s) to avoid to write corrupted data.";
1572 Error(
"Branch",
"The class requested (%s) for \"%s\" is different from the type of the pointer passed (%s)",
1580 Error(
"Branch",
"The actual class (%s) of the object provided for the definition of the branch \"%s\" does not inherit from %s",
1600 Error(
"Branch",
"The pointer specified for %s is not of a class known to ROOT",
branchname);
1608 Warning(
"Branch",
"The actual TClass corresponding to the object provided for the definition of the branch \"%s\" is missing.\n\tThe object will be truncated down to its %s part",
1612 Error(
"Branch",
"The actual class (%s) of the object provided for the definition of the branch \"%s\" does not inherit from %s",
actualClass->GetName(),
branchname,
ptrClass->GetName());
1638 }
else if (
claim ==
nullptr) {
1639 Error(
"Branch",
"The pointer specified for %s is not of a class known to ROOT and %s is not a known class",
branchname, classname);
1646 Error(
"Branch",
"Reference interface requires a valid object (for branch: %s)!",
branchname);
1657 Error(
"Branch",
"The class requested (%s) for \"%s\" is different from the type of the object passed (%s)",
1665 Error(
"Branch",
"The actual class (%s) of the object provided for the definition of the branch \"%s\" does not inherit from %s",
1671 Warning(
"Branch",
"The actual TClass corresponding to the object provided for the definition of the branch \"%s\" is missing.\n\tThe object will be truncated down to its %s part",
1675 Error(
"Branch",
"The actual class (%s) of the object provided for the definition of the branch \"%s\" does not inherit from %s",
actualClass->GetName(),
branchname,
ptrClass->GetName());
1694 Error(
"Branch",
"The pointer specified for %s is not of a class or type known to ROOT",
branchname);
1703 Error(
"Branch",
"Reference interface requires a valid object (for branch: %s)!",
branchname);
1708 Warning(
"Branch",
"The actual TClass corresponding to the object provided for the definition of the branch \"%s\" is missing.\n\tThe object will be truncated down to its %s part",
1712 Error(
"Branch",
"The actual class (%s) of the object provided for the definition of the branch \"%s\" does not inherit from %s",
actualClass->GetName(),
branchname,
ptrClass->GetName());
1731 "The inner type of the std::array passed specified for %s is not of a class or type known to ROOT",
1840 Error(
"Branch",
"Cannot call this constructor for a TClonesArray");
1846 while ((obj = next())) {
1891 char*
curname =
new char[1000];
1893 while ((obj = next())) {
1898 void* add = (
void*)
folder->GetListOfFolders()->GetObjectRef(obj);
1899 for (
Int_t i = 0; i < 1000; ++i) {
1913 if (
br)
br->SetBranchFolder();
1987 if (
branch->IsZombie()) {
2076 Error(
"BranchOld",
"Cannot find class: '%s'", classname);
2081 Fatal(
"BranchOld",
"The requested class ('%s') does not inherit from TObject.\n"
2082 "\tfgBranchStyle is set to zero requesting by default to use BranchOld.\n"
2083 "\tIf this is intentional use Bronch instead of Branch or BranchOld.", classname);
2085 Fatal(
"BranchOld",
"The requested class ('%s') does not inherit from TObject.\n"
2086 "\tYou can not use BranchOld to store objects of this type.",classname);
2097 const char*
rdname =
nullptr;
2098 const char*
dname =
nullptr;
2132 if (
rd->IsObject()) {
2176 char* pointer = ((
char*) obj) +
offset;
2209 if (!
clobj->IsTObject()) {
2258 Error(
"BranchOld",
"Cannot create branch for rdname: %s code: %d",
branchname.Data(), code);
2281 leaf->SetAddress((
void**) pointer);
2291 Error(
"BranchOld",
"Cannot create branch for rdname: %s code: %d",
branchname.Data(), code);
2305 Warning(
"BranchOld",
"Cannot process member: '%s'",
rdname);
2414 Error(
"Bronch",
"Cannot find class:%s", classname);
2433 Error(
"Bronch",
"Pointer to TClonesArray is null");
2436 if (!
clones->GetClass()) {
2437 Error(
"Bronch",
"TClonesArray with no class defined in branch: %s",
name);
2440 if (!
clones->GetClass()->HasDataMemberInfo()) {
2441 Error(
"Bronch",
"TClonesArray with no dictionary defined in branch: %s",
name);
2447 Warning(
"Bronch",
"Using split mode on a class: %s with a custom Streamer",
clones->GetClass()->GetName());
2463 Error(
"Bronch",
"%s with no class defined in branch: %s", classname,
name);
2469 if (!
inklass->HasDataMemberInfo()) {
2470 Error(
"Bronch",
"Container with no dictionary defined in branch: %s",
name);
2473 if (
inklass->HasCustomStreamerMember()) {
2474 Warning(
"Bronch",
"Using split mode on a class: %s with a custom Streamer",
inklass->GetName());
2499 Error(
"Bronch",
"Cannot find dictionary for class: %s", classname);
2549 Warning(
"Bronch",
"%s cannot be split, resetting splitlevel to 0", cl->
GetName());
2563 Error(
"Bronch",
"Cannot build the StreamerInfo for class: %s", cl->
GetName());
2760 for (
Int_t i = 0; i < 10; ++i) {
2798 Warning(
"ChangeFile",
"file %s already exists, trying with %d underscores",
fname,
nus + 1);
2803 Error(
"Fill",
"Failed to open new file %s, continuing as a memory tree.",
fname);
2811 while ((obj = file->
GetList()->First())) {
2840 file->TObject::Delete();
2890 Error(
"SetBranchAddress",
"Unable to determine the type given for the address for \"%s\". "
2891 "The class expected (%s) refers to an stl collection and do not have a compiled CollectionProxy. "
2892 "Please generate the dictionary for this class (%s)",
2899 Error(
"SetBranchAddress",
"Unable to determine the type given for the address for \"%s\". "
2900 "The class expected (%s) does not have a dictionary and needs to be emulated for I/O purposes but is being passed a compiled object."
2901 "Please generate the dictionary for this class (%s)",
2904 Error(
"SetBranchAddress",
"Unable to determine the type given for the address for \"%s\". "
2905 "This is probably due to a missing dictionary, the original data class for this branch is %s.",
branch->GetName(),
expectedClass->GetName());
2912 Error(
"SetBranchAddress",
"The address for \"%s\" should be the address of a pointer!",
branch->GetName());
2941 Info(
"SetBranchAddress",
"Matching STL collection (at least according to the SchemaRuleSet when "
2949 Error(
"SetBranchAddress",
"The pointer type given \"%s\" does not correspond to the type needed \"%s\" by the branch: %s",
ptrClass->GetName(),
bEl->GetClassName(),
branch->GetName());
2965 ptrClass->GetCollectionProxy()->GetValueClass() )
2982 Error(
"SetBranchAddress",
"The pointer type given (%s) does not correspond to the class needed (%s) by the branch: %s",
ptrClass->GetName(),
expectedClass->GetName(),
branch->GetName());
2992 Error(
"SetBranchAddress",
"The pointer type given \"%s\" (%d) does not correspond to the type needed \"%s\" (%d) by the branch: %s",
3000 Error(
"SetBranchAddress",
"The pointer type given \"%s\" (%d) does not correspond to the type needed \"%s\" by the branch: %s",
3014 if (
rdm->GetThisOffset() == 0) {
3049 Error(
"SetBranchAddress",
"The pointer type given \"%s\" does not correspond to the type needed \"%s\" (%d) by the branch: %s",
3155 if (res < -2 || res == -1) {
3159 Error(
"CloneTree",
"returning nullptr since LoadTree failed with code %lld.", res);
3182 for (
Int_t i = 0; i <
nb; ++i) {
3287 if (
newtree->CopyEntries(
this, -1,
option,
false ) < 0 ) {
3289 Error(
"CloneTTree",
"TTree has not been cloned\n");
3319 tree->ResetBranchAddress(
br);
3335 branch->SetAddress(
nullptr);
3340 if (
br->GetMakeClass() !=
branch->GetMakeClass())
3341 br->SetMakeClass(
branch->GetMakeClass());
3348 Warning(
"CopyAddresses",
"Could not find branch named '%s' in tree named '%s'",
branch->GetName(), tree->GetName());
3373 tree->ResetBranchAddress(
tbranch);
3381 if (
leaf->GetLeafCount()->GetMaximum() <
tleaf->GetLeafCount()->GetMaximum()) {
3382 leaf->GetLeafCount()->IncludeRange(
tleaf->GetLeafCount() );
3393 leaf->SetAddress(
nullptr);
3395 if (!
branch->GetAddress() && !
leaf->GetValuePointer()) {
3403 branch->SetupAddresses();
3405 if (
branch->GetAddress()) {
3406 tree->SetBranchAddress(
branch->GetName(), (
void*)
branch->GetAddress());
3412 "Branch kind mismatch between input tree '%s' and output tree '%s' for branch '%s': '%s' vs '%s'",
3413 tree->GetName(),
br->GetTree()->GetName(),
br->GetName(),
branch->IsA()->GetName(),
3414 br->IsA()->GetName());
3422 Warning(
"CopyAddresses",
"Could not find branch named '%s' in tree named '%s'",
branch->GetName(), tree->GetName());
3425 tleaf->SetAddress(
leaf->GetValuePointer());
3431 ( tree->IsA()->InheritsFrom(
"TNtuple") || tree->IsA()->InheritsFrom(
"TNtupleD") )
3433 tree->ResetBranchAddresses();
3447 if (
newtree->GetTreeIndex() ) {
3448 if (
oldtree->GetTree()->GetTreeIndex() ==
nullptr ) {
3451 delete newtree->GetTreeIndex();
3452 newtree->SetTreeIndex(
nullptr);
3460 if (
oldtree->GetTree()->BuildIndex(
newtree->GetTreeIndex()->GetMajorName(),
newtree->GetTreeIndex()->GetMinorName())) {
3461 newtree->GetTreeIndex()->Append(
oldtree->GetTree()->GetTreeIndex(),
true);
3463 delete oldtree->GetTree()->GetTreeIndex();
3464 oldtree->GetTree()->SetTreeIndex(
nullptr);
3469 newtree->GetTreeIndex()->Append(
oldtree->GetTree()->GetTreeIndex(),
true);
3471 }
else if (
oldtree->GetTree()->GetTreeIndex() !=
nullptr ) {
3484 if (
newtree->GetEntries() == 0) {
3491 if (
newtree->BuildIndex(
oldtree->GetTree()->GetTreeIndex()->GetMajorName(),
oldtree->GetTree()->GetTreeIndex()->GetMinorName())) {
3492 newtree->GetTreeIndex()->Append(
oldtree->GetTree()->GetTreeIndex(),
true);
3555 }
else if (opt.
Contains(
"buildindex")) {
3557 }
else if (opt.
Contains(
"dropindex")) {
3570 Warning(
"CopyEntries",
"The cachesize option can not be parsed: %s. The default size will be used.",
cacheSizeStr.String().Data());
3573 const char *
munit =
nullptr;
3576 Warning(
"CopyEntries",
"The cachesize option is too large: %s (%g%s max). The default size will be used.",
cacheSizeStr.String().Data(),
m,
munit);
3579 if (
gDebug > 0 && cacheSize != -1)
Info(
"CopyEntries",
"Using Cache size: %lld\n",cacheSize);
3593 if (tree->LoadTree(i) < 0) {
3610 if (cacheSize != -1)
cloner.SetCacheSize(cacheSize);
3619 if (
cloner.NeedConversion()) {
3634 if (needCopyAddresses)
3635 tree->ResetBranchAddresses();
3641 if (tree->GetDirectory() && tree->GetDirectory()->GetFile()) {
3642 Warning(
"CopyEntries",
"Skipped file %s\n", tree->GetDirectory()->GetFile()->GetName());
3644 Warning(
"CopyEntries",
"Skipped file number %d\n", tree->GetTreeNumber());
3669 if (tree->LoadTree(i) < 0) {
3678 if (tree->GetEntry(i) <= 0) {
3683 if (needCopyAddresses)
3684 tree->ResetBranchAddresses();
3762 Error(
"Delete",
"File : %s is not writable, cannot delete Tree:%s", file->
GetName(),
GetName());
3789 if (
nbytes <= 0)
continue;
3805 if (
gDebug)
Info(
"TTree::Delete",
"Deleting Tree: %s: %d baskets deleted. Total space freed = %d bytes\n",
GetName(),
nbask,
ntot);
4530 for (
Int_t i = 0; i <
nb; ++i) {
4532 branch->DropBaskets(
"all");
4548 if ((
j ==
branch->GetReadBasket()) || (
j ==
branch->GetWriteBasket())) {
4650 Error(
"Fill",
"Failed filling branch:%s.%s, nbytes=%d, entry=%lld\n"
4651 " This error is symptomatic of a Tree created as a memory-resident Tree\n"
4652 " Instead of doing:\n"
4653 " TTree *T = new TTree(...)\n"
4654 " TFile *f = new TFile(...)\n"
4656 " TFile *f = new TFile(...)\n"
4657 " TTree *T = new TTree(...)\n\n",
4722 Info(
"TTree::Fill",
"OptimizeBaskets called at entry %lld, fZipBytes=%lld, fFlushedBytes=%lld\n",
4771 Info(
"TTree::Fill",
"FlushBaskets() called at entry %lld, fZipBytes=%lld, fFlushedBytes=%lld\n",
fEntries,
4779 Info(
"TTree::Fill",
"AutoSave called at entry %lld, fZipBytes=%lld, fSavedBytes=%lld\n",
fEntries,
4829 if (next)
return next;
4905 std::ostringstream
name;
4964 if (dim >= 0)
leafname.Remove(dim);
5095struct BoolRAIIToggle {
5098 BoolRAIIToggle(
bool &val) : m_val(val) { m_val =
true; }
5173 std::atomic<Int_t>
nerrpar(0);
5174 std::atomic<Int_t>
nbpar(0);
5175 std::atomic<Int_t> pos(0);
5183 Int_t j = pos.fetch_add(1);
5189 std::stringstream
ss;
5190 ss << std::this_thread::get_id();
5191 Info(
"FlushBaskets",
"[IMT] Thread %s",
ss.str().c_str());
5192 Info(
"FlushBaskets",
"[IMT] Running task for branch #%d: %s",
j,
branch->GetName());
5242 return alias->GetTitle();
5279 for (
Int_t i = 0; i <
nb; i++) {
5429 if (cacheSize >= (
INT_MAX / 4)) {
5450 if (cacheSize < 0) {
5525 if (t==
nullptr)
return 0;
5685 if (
nb < 0)
return nb;
5691 std::atomic<Int_t> pos(0);
5692 std::atomic<Int_t>
nbpar(0);
5700 Int_t j = pos.fetch_add(1);
5706 std::stringstream
ss;
5707 ss << std::this_thread::get_id();
5708 Info(
"GetEntry",
"[IMT] Thread %s",
ss.str().c_str());
5709 Info(
"GetEntry",
"[IMT] Running task for branch #%d: %s",
j,
branch->GetName());
5712 std::chrono::time_point<std::chrono::system_clock> start, end;
5714 start = std::chrono::system_clock::now();
5716 end = std::chrono::system_clock::now();
5748 if (
nb < 0)
return nb;
5765 if (
nb < 0)
return nb;
5830 [](std::pair<Long64_t,TBranch*>
a, std::pair<Long64_t,TBranch*>
b) {
5831 return a.first > b.first;
5850 [](std::pair<Long64_t,TBranch*>
a, std::pair<Long64_t,TBranch*>
b) {
5851 return a.first > b.first;
5959 if (
nb < 0)
return nb;
5971 if (serial <0)
return -
nbytes;
5973 if (
nb < 0)
return nb;
6000 return fe->GetTree();
6042 if ((tree ==
this) || (tree ==
GetTree())) {
6060 return fe->GetName();
6063 if (t && t->
GetTree() == tree) {
6064 return fe->GetName();
6072 const char* res =
fe->GetTree()->GetFriendAlias(tree);
6129 const char*
brname =
br->GetName();
6184 if (*
subname !=
'.')
continue;
6205 if (
leafname ==
nullptr)
return nullptr;
6230 std::string path(
name);
6231 const auto sep = path.find_last_of(
'/');
6232 if (sep != std::string::npos)
6342 if (create && !
pe) {
6427 for (
Int_t i = 0; i <
nb; ++i) {
6526 if (
fe->IsUpdated()) {
6650 Warning(
"MakeCode",
"MakeCode is obsolete. Use MakeClass or MakeSelector instead");
6863 if (!
li)
return nullptr;
6868 while ((obj=next())) {
6871 if (tree->GetListOfBranches()->IsEmpty()) {
6873 tree->Warning(
"MergeTrees",
"TTree %s has no branches, skipping.", tree->GetName());
6888 tree->GetListOfClones()->Remove(
newtree);
6889 tree->ResetBranchAddresses();
6890 newtree->ResetBranchAddresses();
6895 newtree->CopyEntries(tree, -1, options,
true);
6898 newtree->GetTreeIndex()->Append(
nullptr,
false);
6913 if (!
li ||
li->IsEmpty())
6918 while ((tree = (
TTree *)next())) {
6919 if (tree ==
this || tree->GetListOfBranches()->IsEmpty()) {
6921 Warning(
"Merge",
"TTree %s has no branches, skipping.", tree->GetName());
6926 tree->SetName(this->
GetName());
6928 auto result = tree->Merge(
li, options);
6934 if (tree->GetCurrentFile()) {
6935 tree->GetCurrentFile()->Flush();
6938 tree->GetDirectory()->ReadTObject(
this, this->
GetName());
6953 while ((tree = (
TTree*)next())) {
6954 if (tree==
this)
continue;
6956 Error(
"Add",
"Attempt to add object of class: %s to a %s", tree->ClassName(),
ClassName());
6984 if (!
li ||
li->IsEmpty())
6989 while ((tree = (
TTree *)next())) {
6990 if (tree ==
this || tree->GetListOfBranches()->IsEmpty()) {
6992 Warning(
"Merge",
"TTree %s has no branches, skipping.", tree->GetName());
6997 tree->SetName(this->
GetName());
7005 info->fOutputDirectory->GetFile()->Flush();
7008 info->fOutputDirectory->ReadTObject(
this, this->
GetName());
7013 const char *options =
info ?
info->fOptions.Data() :
"";
7020 }
else if (
info->fOptions.Contains(
"fast")) {
7026 if (
info->fIOFeatures)
7035 info->fOutputDirectory->GetFile()->Flush();
7036 info->fOutputDirectory->ReadTObject(
this,this->
GetName());
7048 while ((tree = (
TTree*)next())) {
7049 if (tree==
this)
continue;
7051 Error(
"Add",
"Attempt to add object of class: %s to a %s", tree->ClassName(),
ClassName());
7075 src->SetCacheRead(
nullptr,
this);
7076 dst->SetCacheRead(
pf,
this);
7079 pf->WaitFinishPrefetch();
7081 src->SetCacheRead(
nullptr,
this);
7123 leaf->GetBranch()->Notify();
7153 if (nleaves == 0 ||
treeSize == 0) {
7178 if (
branch->GetEntries() == 0) {
7202 if (
branch->GetEntryOffsetLen()) {
7226 if (
pass == 0)
continue;
7231 if (
pDebug)
Info(
"OptimizeBaskets",
"Disabling compression for branch : %s\n",
branch->GetName());
7332 Printf(
"******************************************************************************");
7334 Printf(
"*Entries : %8lld : Total = %15lld bytes File Size = %10lld *",
fEntries,
total, file);
7335 Printf(
"* : : Tree compression factor = %6.2f *",
cx);
7336 Printf(
"******************************************************************************");
7342 if (
strncmp(
option,
"clusters",std::char_traits<char>::length(
"clusters"))==0) {
7343 Printf(
"%-16s %-16s %-16s %8s %20s",
7344 "Cluster Range #",
"Entry Start",
"Last Entry",
"Size",
"Number of clusters");
7354 Printf(
"%-16d %-16lld %-16lld %8lld %10lld",
7363 Printf(
"%-16d %-16lld %-16lld %8lld %10lld (estimated)",
7367 Printf(
"%-16d %-16lld %-16lld %8lld (unknown)",
7383 Printf(
"Total number of clusters: (unknown)");
7397 for (
l=0;
l<
nl;
l++) {
7401 if (
br !=
br->GetMother()) {
7403 count[
keep] +=
br->GetZipBytes();
7406 count[
keep] =
br->GetZipBytes();
7409 for (
l=0;
l<
nl;
l++) {
7410 if (count[
l] < 0)
continue;
7413 Printf(
"branch: %-20s %9lld",
br->GetName(),count[
l]);
7424 st.ReplaceAll(
"/",
"_");
7425 if (
st.Index(re) ==
kNPOS)
continue;
7652 Error(
"ReadFile",
"File name not specified");
7681 Error(
"ReadStream",
"Error reading stream: no newline found.");
7703 std::stringstream
ss;
7707 Error(
"ReadStream",
"Error reading stream");
7711 ss << std::cin.rdbuf();
7718 std::istream& in = *
inTemp;
7724 char *
bdname =
new char[4000];
7725 char *
bd =
new char[100000];
7735 Error(
"ReadStream",
"Error reading stream");
7754 void *address = &
bd[90000];
7782 if (
branch->IsZombie()) {
7784 Warning(
"ReadStream",
"Illegal branch definition: %s",
bdcur);
7787 branch->SetAddress(
nullptr);
7799 Info(
"ReadStream",
"Will use branches:");
7802 Info(
"ReadStream",
" %s: %s [%s]",
br->GetName(),
7803 br->GetTitle(),
br->GetListOfLeaves()->At(0)->IsA()->GetName());
7806 Info(
"ReadStream",
"Dumping read tokens, format:");
7807 Info(
"ReadStream",
"LLLLL:BBB:gfbe:GFBE:T");
7808 Info(
"ReadStream",
" L: line number");
7809 Info(
"ReadStream",
" B: branch number");
7810 Info(
"ReadStream",
" gfbe: good / fail / bad / eof of token");
7811 Info(
"ReadStream",
" GFBE: good / fail / bad / eof of file");
7812 Info(
"ReadStream",
" T: Token being read");
7826 if (
newline ==
'\r' && in.peek() ==
'\n') {
7835 if (
sLine.IsNull()) {
7837 Info(
"ReadStream",
"Skipping empty line number %lld",
nlines);
7841 if (
sLine[0] ==
'#') {
7843 Info(
"ReadStream",
"Skipping comment line number %lld: '%s'",
7849 Info(
"ReadStream",
"Parsing line number %lld: '%s'",
7857 std::stringstream
sToken;
7878 if (
leaf->GetMaximum() > 0) {
7899 sToken.seekp(0, std::ios_base::beg);
7901 sToken.seekg(0, std::ios_base::beg);
7904 Info(
"ReadStream",
"%5lld:%3d:%d%d%d%d:%d%d%d%d:%s",
7908 (
int)in.good(), (
int)in.fail(),
7909 (
int)in.bad(), (
int)in.eof(),
7917 "Buffer error while reading data for branch %s on line %lld",
7919 }
else if (!
sToken.eof()) {
7922 "Couldn't read formatted data in \"%s\" for branch %s on line %lld; ignoring line",
7926 std::string remainder;
7928 if (!remainder.empty()) {
7930 "Ignoring trailing \"%s\" while reading data for branch %s on line %lld",
7939 "Read too few columns (%d < %d) in line %lld; ignoring line",
7942 }
else if (pos !=
kNPOS) {
7944 if (pos <
sLine.Length()) {
7946 "Ignoring trailing \"%s\" while reading line %lld",
7947 sLine.Data() + pos - 1 ,
8105 for (
Int_t i = 0; i <
nb; ++i) {
8135 for (
Int_t i = 0; i <
nb; ++i) {
8152 if (
br &&
br->GetTree()) {
8178 frTree->ResetBranchAddresses();
8473 Error(
"SetBasketSize",
"unknown branch -> '%s'", bname);
8488 if (ptr) *ptr =
nullptr;
8489 Error(
"SetBranchAddress",
"unknown branch -> %s", bname);
8518 if (ptr) *ptr =
nullptr;
8519 Error(
"SetBranchAddress",
"unknown branch -> %s", bname);
8529 branch->SetMakeClass(
true);
8532 if (ptr) *ptr =
nullptr;
8552 TTree* clone =
nullptr;
8553 const char *bname =
branch->GetName();
8554 while ((clone = (
TTree*) next())) {
8641 if (!bname || !*bname) {
8642 Error(
"SetBranchStatus",
"Input regexp is an empty string: no match against branch names will be attempted.");
8716 if (
strchr(bname,
'*') !=
nullptr)
8717 Error(
"SetBranchStatus",
"No branch name is matching wildcard -> %s", bname);
8719 Error(
"SetBranchStatus",
"unknown branch -> %s", bname);
8721 if (
strchr(bname,
'*') !=
nullptr)
8722 Warning(
"SetBranchStatus",
"No branch name is matching wildcard -> %s", bname);
8724 Warning(
"SetBranchStatus",
"unknown branch -> %s", bname);
8733 for (i = 0; i <
nleaves; i++) {
8747 if (!
bson)
continue;
8749 if (
bson->GetNleaves() <= 0)
continue;
8819 if (cacheSize < 0) {
8823 if (cacheSize == 0) {
8825 }
else if (cacheSize < 0) {
8831 if (!file ||
GetTree() !=
this) {
8841 Warning(
"SetCacheSizeAux",
"A TTreeCache could not be created because the TTree has no file");
8862 pf->SetAutoCreated(
false);
8876 if (cacheSize == 0) {
8878 pf->WaitFinishPrefetch();
8884 Int_t res =
pf->SetBufferSize(cacheSize);
8888 cacheSize =
pf->GetBufferSize();
8899 Error(
"SetCacheSizeAux",
"Not setting up an automatically sized TTreeCache because of missing cache previously set");
8907 if (cacheSize == 0 ||
pf) {
8934 Error(
"SetCacheEntryRange",
"Could not load a tree");
8940 return GetTree()->SetCacheEntryRange(first, last);
8943 Error(
"SetCacheEntryRange",
"No tree is available. Could not set cache entry range");
8949 Error(
"SetCacheEntryRange",
"No file is available. Could not set cache entry range");
8954 Error(
"SetCacheEntryRange",
"No cache is available. Could not set entry range");
8957 tc->SetEntryRange(first,last);
9008 for (
Int_t i = 0; i <
nb; i++) {
9048 while ( (
b = (
TBranch*)next() ) ) {
9081 TFile* file =
nullptr;
9135 Warning(
"SetEntries",
"Tree branches have different numbers of entries, eg %s has %lld entries while %s has %lld entries.",
9255 Warning(
"SetFileNumber",
"file number must be positive. Set to 0");
9292 for (
Int_t i = 0; i <
nb; ++i) {
9294 branch->SetMakeClass(make);
9322 TFile *file =
nullptr;
9348 "The tree or chain already has a fNotify registered and it is a TNotifyLink, while the new object is "
9349 "not a TNotifyLink. Setting fNotify to the new value will lead to an orphan linked list of "
9350 "TNotifyLinks and it is most likely not intended. If this is the intended goal, please call "
9351 "SetNotify(nullptr) first to silence this warning.");
9357 "The tree or chain already has a TNotifyLink registered, and the new TNotifyLink `obj` does not link "
9358 "to it. Setting fNotify to the new value will lead to an orphan linked list of TNotifyLinks and it is "
9359 "most likely not intended. If this is the intended goal, please call SetNotify(nullptr) first to "
9360 "silence this warning.");
9378 TFile *file =
nullptr;
9500 Error(
"Show()",
"Cannot read entry %lld (entry does not exist)",
entry);
9502 }
else if (
ret == -1) {
9503 Error(
"Show()",
"Cannot read entry %lld (I/O error)",
entry);
9508 Error(
"Show()",
"Cannot read entry %lld (I/O error)",
entry);
9510 }
else if (
ret == 0) {
9511 Error(
"Show()",
"Cannot read entry %lld (no data read)",
entry);
9534 if (
branch->GetListOfBranches()->GetEntriesFast() > 0) {
9550 leaf->PrintValue(
l);
9551 if (
l == (
len - 1)) {
9588 Error(
"StopCacheLearningPhase",
"Could not load a tree");
9594 return GetTree()->StopCacheLearningPhase();
9597 Error(
"StopCacheLearningPhase",
"No tree is available. Could not stop cache learning phase");
9603 Error(
"StopCacheLearningPhase",
"No file is available. Could not stop cache learning phase");
9608 Error(
"StopCacheLearningPhase",
"No cache is available. Could not stop learning phase");
9611 tc->StopLearningPhase();
9621 for (
Int_t i = 0; i <
nb; ++i) {
9629 tree->IncrementTotalBuffers(
bk->GetBufferSize());
9646 elem->fParentTree = tree;
9657 if (
b.IsReading()) {
9682 Warning(
"Streamer",
"Old style index in this tree is deleted. Rebuild the index via TTree::BuildIndex");
9895, fDirection(iter.fDirection)
9927 if (!
fTree)
return nullptr;
9934 if (!list)
return nullptr;
9943 if (!list)
return next;
#define R__unlikely(expr)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
unsigned long long ULong64_t
const Int_t kDoNotProcess
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
static unsigned int total
Option_t Option_t SetLineWidth
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t cursor
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t SetFillStyle
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t SetLineColor
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t SetFillColor
Option_t Option_t SetMarkerStyle
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void reg
R__EXTERN TInterpreter * gCling
TVirtualProofPlayer * fPlayer
R__EXTERN TVirtualMutex * gROOTMutex
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
R__EXTERN TStyle * gStyle
R__EXTERN TSystem * gSystem
constexpr Int_t kNEntriesResort
static TBranch * R__FindBranchHelper(TObjArray *list, const char *branchname)
Search in the array for a branch matching the branch name, with the branch possibly expressed as a 'f...
static char DataTypeToChar(EDataType datatype)
void TFriendElement__SetTree(TTree *tree, TList *frlist)
Set the fTree member for all friend elements.
bool CheckReshuffling(TTree &mainTree, TTree &friendTree)
static void TBranch__SetTree(TTree *tree, TObjArray &branches)
Set the fTree member for all branches and sub branches.
constexpr Float_t kNEntriesResortInv
#define R__LOCKGUARD(mutex)
A helper class for managing IMT work during TTree:Fill operations.
const_iterator end() const
TIOFeatures provides the end-user with the ability to change the IO behavior of data written via a TT...
UChar_t GetFeatures() const
bool Set(EIOFeatures bits)
Set a specific IO feature.
This class provides a simple interface to execute the same task multiple times in parallel threads,...
void Streamer(TBuffer &) override
Stream a TArrayD object.
void Set(Int_t n) override
Set size of this array to n doubles.
void Set(Int_t n) override
Set size of this array to n ints.
void Streamer(TBuffer &) override
Stream a TArrayI object.
Fill Area Attributes class.
virtual void Streamer(TBuffer &)
virtual Color_t GetFillColor() const
Return the fill area color.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void Streamer(TBuffer &)
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual Width_t GetLineWidth() const
Return the line width.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Size_t GetMarkerSize() const
Return the marker size.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void Streamer(TBuffer &)
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Each class (see TClass) has a linked list of its base class(es).
ROOT::ESTLType IsSTLContainer()
Return which type (if any) of STL container the data member is.
Manages buffers for branches of a Tree.
A Branch for the case of an array of clone objects.
A Branch for the case of an object.
A Branch for the case of an object.
A branch containing and managing a TRefTable for TRef autoloading.
void Reset(Option_t *option="") override
void Print(Option_t *option="") const override
Print the TRefTable branch.
void Clear(Option_t *option="") override
Clear entries in the TRefTable.
void ResetAfterMerge(TFileMergeInfo *) override
Reset a Branch after a Merge operation (drop data but keep customizations) TRefTable is cleared.
A Branch handling STL collection of pointers (vectors, lists, queues, sets and multisets) while stori...
A TTree is a list of TBranches.
TObjArray * GetListOfBranches()
virtual void SetTree(TTree *tree)
static void ResetCount()
Static function resetting fgCount.
virtual void SetFile(TFile *file=nullptr)
Set file where this branch writes/reads its buffers.
virtual void SetEntryOffsetLen(Int_t len, bool updateSubBranches=false)
Update the default value for the branch's fEntryOffsetLen if and only if it was already non zero (and...
virtual void UpdateFile()
Refresh the value of fDirectory (i.e.
Using a TBrowser one can browse all ROOT objects.
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
Buffer base class used for serializing objects.
void Expand(Int_t newsize, Bool_t copy=kTRUE)
Expand (or shrink) the I/O buffer to newsize bytes.
TClass instances represent classes, structs and namespaces in the ROOT type system.
Bool_t CanSplit() const
Return true if the data member of this TClass can be saved separately.
ROOT::ESTLType GetCollectionType() const
Return the 'type' of the STL the TClass is representing.
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
Bool_t HasDataMemberInfo() const
Bool_t HasCustomStreamerMember() const
The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based...
void Destructor(void *obj, Bool_t dtorOnly=kFALSE)
Explicitly call destructor for object.
void BuildRealData(void *pointer=nullptr, Bool_t isTransient=kFALSE)
Build a full list of persistent data members.
TList * GetListOfRealData() const
Bool_t CanIgnoreTObjectStreamer()
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
Version_t GetClassVersion() const
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
An array of clone (identical) objects.
Collection abstract base class.
void SetName(const char *name)
const char * GetName() const override
Return name of this collection.
virtual Int_t GetEntries() const
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
void Browse(TBrowser *b) override
Browse this collection (called by TBrowser).
A specialized string object used for TTree selections.
All ROOT classes may have RTTI (run time type identification) support added.
Bool_t IsPersistent() const
Bool_t IsBasic() const
Return true if data member is a basic type, e.g. char, int, long...
Bool_t IsaPointer() const
Return true if data member is a pointer.
TDataType * GetDataType() const
Longptr_t GetOffset() const
Get offset from "this".
const char * GetTypeName() const
Get the decayed type name of this data member, removing const and volatile qualifiers,...
const char * GetArrayIndex() const
If the data member is pointer and has a valid array size in its comments GetArrayIndex returns a stri...
const char * GetFullTypeName() const
Get the concrete type name of this data member, including const and volatile qualifiers.
Basic data type descriptor (datatype information is obtained from CINT).
TString GetTypeName()
Get basic type of typedef, e,g.: "class TDirectory*" -> "TDirectory".
Bool_t cd() override
Change current directory to "this" directory.
Bool_t IsWritable() const override
TDirectory::TContext keeps track and restore the current directory.
Describe directory structure in memory.
virtual TList * GetList() const
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
virtual Int_t WriteTObject(const TObject *obj, const char *name=nullptr, Option_t *="", Int_t=0)
Write an object with proper type checking.
virtual TFile * GetFile() const
virtual Int_t ReadKeys(Bool_t=kTRUE)
virtual Bool_t IsWritable() const
virtual TKey * GetKey(const char *, Short_t=9999) const
virtual void SaveSelf(Bool_t=kFALSE)
virtual TList * GetListOfKeys() const
void GetObject(const char *namecycle, T *&ptr)
Get an object with proper type checking.
virtual TObject * Remove(TObject *)
Remove an object from the in-memory list.
Streamer around an arbitrary STL like container, which implements basic container functionality.
A List of entry numbers in a TTree or TChain.
virtual bool Enter(Long64_t entry, TTree *tree=nullptr)
Add entry #entry to the list.
virtual void SetTree(const TTree *tree)
If a list for a tree with such name and filename exists, sets it as the current sublist If not,...
virtual TDirectory * GetDirectory() const
virtual void SetReapplyCut(bool apply=false)
virtual void SetDirectory(TDirectory *dir)
Add reference to directory dir. dir can be 0.
virtual Long64_t GetEntry(Long64_t index)
Return the number of the entry #index of this TEntryList in the TTree or TChain See also Next().
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
<div class="legacybox"><h2>Legacy Code</h2> TEventList is a legacy interface: there will be no bug fi...
A cache when reading files over the network.
virtual Int_t GetBufferSize() const
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
virtual void SetCacheRead(TFileCacheRead *cache, TObject *tree=nullptr, ECacheAction action=kDisconnect)
Set a pointer to the read cache.
Int_t GetCompressionSettings() const
Int_t GetCompressionLevel() const
virtual void WriteStreamerInfo()
Write the list of TStreamerInfo as a single object in this file The class Streamer description for al...
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
virtual void WriteHeader()
Write File Header.
@ kCancelTTreeChangeRequest
TFileCacheRead * GetCacheRead(const TObject *tree=nullptr) const
Return a pointer to the current read cache.
<div class="legacybox"><h2>Legacy Code</h2> TFolder is a legacy interface: there will be no bug fixes...
A TFriendElement TF describes a TTree object TF in a file.
virtual TTree * GetTree()
Return pointer to friend TTree.
virtual Int_t DeleteGlobal(void *obj)=0
Iterator abstract base class.
virtual TObject * Next()=0
virtual Option_t * GetOption() const
Book space in a file, create I/O buffers, to fill them, (un)compress them.
void Delete(Option_t *option="") override
Delete an object from the file.
virtual const char * GetClassName() const
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
virtual Int_t GetLenType() const
virtual Int_t GetLen() const
Return the number of effective elements of this leaf, for the current entry.
@ kNewValue
Set if we own the value buffer and so must delete it ourselves.
@ kIndirectAddress
Data member is a pointer to an array of basic types.
virtual Int_t GetOffset() const
void Clear(Option_t *option="") override
Remove all objects from the list.
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
void RecursiveRemove(TObject *obj) override
Remove object from this collection and recursively remove the object from all other objects (and coll...
void Add(TObject *obj) override
TObject * Remove(TObject *obj) override
Remove object from the list.
virtual TObjLink * FirstLink() const
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
A TMemFile is like a normal TFile except that it reads and writes only from memory.
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
void Streamer(TBuffer &) override
Stream an object of class TObject.
const char * GetTitle() const override
Returns title of object.
Int_t GetEntriesFast() const
Int_t GetEntriesUnsafe() const
Return the number of objects in array (i.e.
void Clear(Option_t *option="") override
Remove all objects from the array.
void Streamer(TBuffer &) override
Stream all objects in the array to or from the I/O buffer.
Int_t GetEntries() const override
Return the number of objects in array (i.e.
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
TObject * At(Int_t idx) const override
TObject * UncheckedAt(Int_t i) const
Bool_t IsEmpty() const override
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
void Add(TObject *obj) override
Wrapper around a TObject so it can be stored in a TList.
Mother of all ROOT objects.
virtual Bool_t Notify()
This method must be overridden to handle object notification (the base implementation is no-op).
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
R__ALWAYS_INLINE Bool_t IsZombie() const
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
@ kOnlyPrepStep
Used to request that the class specific implementation of TObject::Write just prepare the objects to ...
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual TClass * IsA() const
@ kCanDelete
if object in a list can be deleted
@ kMustCleanup
if object destructor must call RecursiveRemove()
Principal Components Analysis (PCA)
The TRealData class manages the effective list of all data members for a given class.
A TRefTable maintains the association between a referenced object and the parent object supporting th...
static void SetRefTable(TRefTable *table)
Static function setting the current TRefTable.
static TRefTable * GetRefTable()
Static function returning the current TRefTable.
Regular expression class.
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
static void * ReAlloc(void *vp, size_t size, size_t oldsize)
Reallocate (i.e.
Describes a persistent version of a class.
void ToLower()
Change string to lower-case.
static constexpr Ssiz_t kNPOS
Double_t Atof() const
Return floating-point value contained in string.
const char * Data() const
Bool_t EqualTo(const char *cs, ECaseCompare cmp=kExact) const
TString & ReplaceAll(const TString &s1, const TString &s2)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
void SetHistFillColor(Color_t color=1)
Color_t GetHistLineColor() const
void SetHistLineStyle(Style_t styl=0)
Style_t GetHistFillStyle() const
Color_t GetHistFillColor() const
void SetHistLineColor(Color_t color=1)
Style_t GetHistLineStyle() const
void SetHistFillStyle(Style_t styl=0)
Width_t GetHistLineWidth() const
void SetHistLineWidth(Width_t width=1)
A zero length substring is legal.
virtual const char * Getenv(const char *env)
Get environment variable.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
A TTreeCache which exploits parallelized decompression of its own content.
static bool IsParallelUnzip()
Static function that tells wether the multithreading unzipping is activated.
A cache to speed-up the reading of ROOT datasets.
static void SetLearnEntries(Int_t n=10)
Static function to set the number of entries to be used in learning mode The default value for n is 1...
Class implementing or helping the various TTree cloning method.
Iterator on all the leaves in a TTree and its friend.
TTree * fTree
tree being iterated
TIterator & operator=(const TIterator &rhs) override
Overridden assignment operator. Does NOT copy the 'cursor' location!
TObject * Next() override
Go the next friend element.
TIterator * fLeafIter
current leaf sub-iterator.
Option_t * GetOption() const override
Returns the object option stored in the list.
TIterator * fTreeIter
current tree sub-iterator.
bool fDirection
iteration direction
Helper class to iterate over cluster of baskets.
Long64_t GetEstimatedClusterSize()
Estimate the cluster size.
Long64_t Previous()
Move on to the previous cluster and return the starting entry of this previous cluster.
Long64_t Next()
Move on to the next cluster and return the starting entry of this next cluster.
TClusterIterator(TTree *tree, Long64_t firstEntry)
Regular constructor.
Helper class to prevent infinite recursion in the usage of TTree Friends.
TFriendLock & operator=(const TFriendLock &)
Assignment operator.
TFriendLock(const TFriendLock &)
Copy constructor.
~TFriendLock()
Restore the state of tree the same as before we set the lock.
A TTree represents a columnar dataset.
virtual Int_t Fill()
Fill all branches.
virtual TFriendElement * AddFriend(const char *treename, const char *filename="")
Add a TFriendElement to the list of friends.
TBranchRef * fBranchRef
Branch supporting the TRefTable (if any)
TStreamerInfo * BuildStreamerInfo(TClass *cl, void *pointer=nullptr, bool canOptimize=true)
Build StreamerInfo for class cl.
virtual TBranch * FindBranch(const char *name)
Return the branch that correspond to the path 'branchname', which can include the name of the tree or...
virtual void SetBranchStatus(const char *bname, bool status=true, UInt_t *found=nullptr)
Set branch status to Process or DoNotProcess.
bool EnableCache()
Enable the TTreeCache unless explicitly disabled for this TTree by a prior call to SetCacheSize(0).
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
static Int_t GetBranchStyle()
Static function returning the current branch style.
TList * fFriends
pointer to list of friend elements
bool fIMTEnabled
! true if implicit multi-threading is enabled for this tree
virtual bool GetBranchStatus(const char *branchname) const
Return status of branch with name branchname.
UInt_t fFriendLockStatus
! Record which method is locking the friend recursion
virtual TLeaf * GetLeafImpl(const char *branchname, const char *leafname)
Return pointer to the 1st Leaf named name in any Branch of this Tree or any branch in the list of fri...
Long64_t fTotBytes
Total number of bytes in all branches before compression.
virtual Int_t FlushBaskets(bool create_cluster=true) const
Write to disk all the basket that have not yet been individually written and create an event cluster ...
Int_t fMaxClusterRange
! Memory allocated for the cluster range.
virtual void Show(Long64_t entry=-1, Int_t lenmax=20)
Print values of all active leaves for entry.
TEventList * fEventList
! Pointer to event selection list (if one)
virtual Long64_t GetAutoSave() const
virtual Int_t StopCacheLearningPhase()
Stop the cache learning phase.
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
std::vector< std::pair< Long64_t, TBranch * > > fSortedBranches
! Branches to be processed in parallel when IMT is on, sorted by average task time
virtual void SetCircular(Long64_t maxEntries)
Enable/Disable circularity for this tree.
Long64_t fSavedBytes
Number of autosaved bytes.
virtual Int_t AddBranchToCache(const char *bname, bool subbranches=false)
Add branch with name bname to the Tree cache.
Long64_t GetMedianClusterSize()
Estimate the median cluster size for the TTree.
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
virtual void ResetBranchAddress(TBranch *)
Tell a branch to set its address to zero.
bool fCacheUserSet
! true if the cache setting was explicitly given by user
char GetNewlineValue(std::istream &inputStream)
Determine which newline this file is using.
TIOFeatures fIOFeatures
IO features to define for newly-written baskets and branches.
virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Long64_t fDebugMin
! First entry number to debug
virtual Long64_t SetEntries(Long64_t n=-1)
Change number of entries in the tree.
virtual TObjArray * GetListOfLeaves()
virtual TBranch * BranchOld(const char *name, const char *classname, void *addobj, Int_t bufsize=32000, Int_t splitlevel=1)
Create a new TTree BranchObject.
Long64_t GetCacheAutoSize(bool withDefault=false)
Used for automatic sizing of the cache.
virtual TBranch * BranchRef()
Build the optional branch supporting the TRefTable.
TFile * GetCurrentFile() const
Return pointer to the current file.
TList * fAliases
List of aliases for expressions based on the tree branches.
virtual TTree * CopyTree(const char *selection, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Copy a tree with selection.
virtual Int_t DropBranchFromCache(const char *bname, bool subbranches=false)
Remove the branch with name 'bname' from the Tree cache.
virtual Int_t Fit(const char *funcname, const char *varexp, const char *selection="", Option_t *option="", Option_t *goption="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Fit a projected item(s) from a tree.
Long64_t * fClusterRangeEnd
[fNClusterRange] Last entry of a cluster range.
void Streamer(TBuffer &) override
Stream a class object.
std::atomic< Long64_t > fIMTZipBytes
! Zip bytes for the IMT flush baskets.
void RecursiveRemove(TObject *obj) override
Make sure that obj (which is being deleted or will soon be) is no longer referenced by this TTree.
TVirtualTreePlayer * GetPlayer()
Load the TTreePlayer (if not already done).
virtual Int_t MakeProxy(const char *classname, const char *macrofilename=nullptr, const char *cutfilename=nullptr, const char *option=nullptr, Int_t maxUnrolling=3)
Generate a skeleton analysis class for this Tree using TBranchProxy.
virtual Long64_t ReadStream(std::istream &inputStream, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from an input stream.
virtual void SetDebug(Int_t level=1, Long64_t min=0, Long64_t max=9999999)
Set the debug level and the debug range.
Int_t fScanField
Number of runs before prompting in Scan.
void Draw(Option_t *opt) override
Default Draw method for all objects.
virtual TTree * GetFriend(const char *) const
Return a pointer to the TTree friend whose name or alias is friendname.
virtual void SetNotify(TObject *obj)
Sets the address of the object to be notified when the tree is loaded.
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
static void SetMaxTreeSize(Long64_t maxsize=100000000000LL)
Set the maximum size in bytes of a Tree file (static function).
void Print(Option_t *option="") const override
Print a summary of the tree contents.
virtual Int_t UnbinnedFit(const char *funcname, const char *varexp, const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Unbinned fit of one or more variable(s) from a tree.
Int_t fNClusterRange
Number of Cluster range in addition to the one defined by 'AutoFlush'.
virtual void PrintCacheStats(Option_t *option="") const
Print statistics about the TreeCache for this tree.
virtual Int_t BuildIndex(const char *majorname, const char *minorname="0")
Build a Tree Index (default is TTreeIndex).
TVirtualTreePlayer * fPlayer
! Pointer to current Tree player
virtual TIterator * GetIteratorOnAllLeaves(bool dir=kIterForward)
Creates a new iterator that will go through all the leaves on the tree itself and its friend.
virtual void SetMakeClass(Int_t make)
Set all the branches in this TTree to be in decomposed object mode (also known as MakeClass mode).
virtual bool InPlaceClone(TDirectory *newdirectory, const char *options="")
Copy the content to a new new file, update this TTree with the new location information and attach th...
TObjArray fBranches
List of Branches.
TDirectory * GetDirectory() const
bool fCacheDoAutoInit
! true if cache auto creation or resize check is needed
TTreeCache * GetReadCache(TFile *file) const
Find and return the TTreeCache registered with the file and which may contain branches for us.
Long64_t fEntries
Number of entries.
virtual TFile * ChangeFile(TFile *file)
Called by TTree::Fill() when file has reached its maximum fgMaxTreeSize.
virtual TEntryList * GetEntryList()
Returns the entry list assigned to this tree.
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set tree weight.
void InitializeBranchLists(bool checkLeafCount)
Divides the top-level branches into two vectors: (i) branches to be processed sequentially and (ii) b...
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=nullptr)
Change branch address, dealing with clone trees properly.
Long64_t * fClusterSize
[fNClusterRange] Number of entries in each cluster for a given range.
Long64_t fFlushedBytes
Number of auto-flushed bytes.
virtual void SetPerfStats(TVirtualPerfStats *perf)
Set perf stats.
std::atomic< Long64_t > fIMTTotBytes
! Total bytes for the IMT flush baskets
virtual void SetCacheLearnEntries(Int_t n=10)
Interface to TTreeCache to set the number of entries for the learning phase.
TEntryList * fEntryList
! Pointer to event selection list (if one)
@ kSplitCollectionOfPointers
virtual TVirtualIndex * GetTreeIndex() const
TList * fExternalFriends
! List of TFriendsElement pointing to us and need to be notified of LoadTree. Content not owned.
virtual Long64_t Merge(TCollection *list, Option_t *option="")
Merge the trees in the TList into this tree.
virtual void SetMaxVirtualSize(Long64_t size=0)
virtual void DropBaskets()
Remove some baskets from memory.
virtual void SetAutoSave(Long64_t autos=-300000000)
In case of a program crash, it will be possible to recover the data in the tree up to the last AutoSa...
Long64_t fMaxEntryLoop
Maximum number of entries to process.
virtual void SetParallelUnzip(bool opt=true, Float_t RelSize=-1)
Enable or disable parallel unzipping of Tree buffers.
virtual void SetDirectory(TDirectory *dir)
Change the tree's directory.
void SortBranchesByTime()
Sorts top-level branches by the last average task time recorded per branch.
void Delete(Option_t *option="") override
Delete this tree from memory or/and disk.
virtual TBranchRef * GetBranchRef() const
virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Process this tree executing the TSelector code in the specified filename.
virtual TBranch * BranchImpRef(const char *branchname, const char *classname, TClass *ptrClass, void *addobj, Int_t bufsize, Int_t splitlevel)
Same as TTree::Branch but automatic detection of the class name.
virtual void SetEventList(TEventList *list)
This function transfroms the given TEventList into a TEntryList The new TEntryList is owned by the TT...
void MoveReadCache(TFile *src, TDirectory *dir)
Move a cache from a file to the current file in dir.
Long64_t fAutoFlush
Auto-flush tree when fAutoFlush entries written or -fAutoFlush (compressed) bytes produced.
Int_t fUpdate
Update frequency for EntryLoop.
virtual void ResetAfterMerge(TFileMergeInfo *)
Resets the state of this TTree after a merge (keep the customization but forget the data).
virtual Long64_t GetEntries() const
virtual void SetEstimate(Long64_t nentries=1000000)
Set number of entries to estimate variable limits.
Int_t fTimerInterval
Timer interval in milliseconds.
Int_t fDebug
! Debug level
Int_t SetCacheSizeAux(bool autocache=true, Long64_t cacheSize=0)
Set the size of the file cache and create it if possible.
virtual Long64_t AutoSave(Option_t *option="")
AutoSave tree header every fAutoSave bytes.
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
Int_t fFileNumber
! current file number (if file extensions)
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return pointer to the 1st Leaf named name in any Branch of this Tree or any branch in the list of fri...
virtual Long64_t GetZipBytes() const
TObjArray fLeaves
Direct pointers to individual branch leaves.
virtual void Reset(Option_t *option="")
Reset baskets, buffers and entries count in all branches and leaves.
virtual void KeepCircular()
Keep a maximum of fMaxEntries in memory.
virtual void SetDefaultEntryOffsetLen(Int_t newdefault, bool updateExisting=false)
Update the default value for the branch's fEntryOffsetLen.
virtual void DirectoryAutoAdd(TDirectory *)
Called by TKey and TObject::Clone to automatically add us to a directory when we are read from a file...
Long64_t fMaxVirtualSize
Maximum total size of buffers kept in memory.
virtual Long64_t GetTotBytes() const
virtual Int_t MakeSelector(const char *selector=nullptr, Option_t *option="")
Generate skeleton selector class for this tree.
virtual void SetObject(const char *name, const char *title)
Change the name and title of this tree.
TVirtualPerfStats * fPerfStats
! pointer to the current perf stats object
Double_t fWeight
Tree weight (see TTree::SetWeight)
std::vector< TBranch * > fSeqBranches
! Branches to be processed sequentially when IMT is on
Long64_t fDebugMax
! Last entry number to debug
Int_t fDefaultEntryOffsetLen
Initial Length of fEntryOffset table in the basket buffers.
TTree()
Default constructor and I/O constructor.
Long64_t fAutoSave
Autosave tree when fAutoSave entries written or -fAutoSave (compressed) bytes produced.
TBranch * Branch(const char *name, T *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Add a new branch, and infer the data type from the type of obj being passed.
std::atomic< UInt_t > fAllocationCount
indicates basket should be resized to exact memory usage, but causes significant
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Read entry corresponding to major and minor number.
static TTree * MergeTrees(TList *list, Option_t *option="")
Static function merging the trees in the TList into a new tree.
bool MemoryFull(Int_t nbytes)
Check if adding nbytes to memory we are still below MaxVirtualsize.
virtual Long64_t GetReadEntry() const
virtual TObjArray * GetListOfBranches()
Long64_t fZipBytes
Total number of bytes in all branches after compression.
virtual TTree * GetTree() const
TBuffer * fTransientBuffer
! Pointer to the current transient buffer.
virtual void SetEntryList(TEntryList *list, Option_t *opt="")
Set an EntryList.
bool Notify() override
Function called when loading a new class library.
virtual void AddZipBytes(Int_t zip)
virtual Long64_t LoadTree(Long64_t entry)
Set current entry.
virtual Long64_t ReadFile(const char *filename, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from filename.
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
ROOT::TIOFeatures SetIOFeatures(const ROOT::TIOFeatures &)
Provide the end-user with the ability to enable/disable various experimental IO features for this TTr...
virtual TBasket * CreateBasket(TBranch *)
Create a basket for this tree and given branch.
TList * fUserInfo
pointer to a list of user objects associated to this Tree
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
virtual Long64_t GetEntriesFast() const
Return a number greater or equal to the total number of entries in the dataset.
void Browse(TBrowser *) override
Browse content of the TTree.
virtual TList * GetUserInfo()
Return a pointer to the list containing user objects associated to this tree.
Long64_t fChainOffset
! Offset of 1st entry of this Tree in a TChain
@ kOnlyFlushAtCluster
If set, the branch's buffers will grow until an event cluster boundary is hit, guaranteeing a basket ...
@ kEntriesReshuffled
If set, signals that this TTree is the output of the processing of another TTree, and the entries are...
virtual Long64_t GetEntriesFriend() const
Return pointer to the 1st Leaf named name in any Branch of this Tree or any branch in the list of fri...
virtual TSQLResult * Query(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Loop over entries and return a TSQLResult object containing entries following selection.
virtual TBranch * Bronch(const char *name, const char *classname, void *addobj, Int_t bufsize=32000, Int_t splitlevel=99)
Create a new TTree BranchElement.
virtual void SetBasketSize(const char *bname, Int_t buffsize=16000)
Set a branch's basket size.
static void SetBranchStyle(Int_t style=1)
Set the current branch style.
~TTree() override
Destructor.
void ImportClusterRanges(TTree *fromtree)
Appends the cluster range information stored in 'fromtree' to this tree, including the value of fAuto...
TClass * IsA() const override
Long64_t fEstimate
Number of entries to estimate histogram limits.
Int_t FlushBasketsImpl() const
Internal implementation of the FlushBaskets algorithm.
virtual Long64_t LoadTreeFriend(Long64_t entry, TTree *T)
Load entry on behalf of our master tree, we may use an index.
Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) override
Write this object to the current directory.
TVirtualIndex * fTreeIndex
Pointer to the tree Index (if any)
void UseCurrentStyle() override
Replace current attributes by current style.
TObject * fNotify
Object to be notified when loading a Tree.
virtual TBranch * BranchImp(const char *branchname, const char *classname, TClass *ptrClass, void *addobj, Int_t bufsize, Int_t splitlevel)
Same as TTree::Branch() with added check that addobj matches className.
Long64_t fCacheSize
! Maximum size of file buffers
TList * fClones
! List of cloned trees which share our addresses
std::atomic< Long64_t > fTotalBuffers
! Total number of bytes in branch buffers
virtual void SetTreeIndex(TVirtualIndex *index)
The current TreeIndex is replaced by the new index.
virtual void OptimizeBaskets(ULong64_t maxMemory=10000000, Float_t minComp=1.1, Option_t *option="")
This function may be called after having filled some entries in a Tree.
virtual Long64_t Project(const char *hname, const char *varexp, const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Make a projection of a tree using selections.
virtual Int_t SetCacheEntryRange(Long64_t first, Long64_t last)
interface to TTreeCache to set the cache entry range
static Long64_t GetMaxTreeSize()
Static function which returns the tree file size limit in bytes.
bool fCacheDoClusterPrefetch
! true if cache is prefetching whole clusters
Int_t SetBranchAddressImp(TBranch *branch, void *addr, TBranch **ptr)
Change branch address, dealing with clone trees properly.
virtual bool SetAlias(const char *aliasName, const char *aliasFormula)
Set a tree variable alias.
virtual void CopyAddresses(TTree *, bool undo=false)
Set branch addresses of passed tree equal to ours.
Long64_t fMaxEntries
Maximum number of entries in case of circular buffers.
virtual void DropBuffers(Int_t nbytes)
Drop branch buffers to accommodate nbytes below MaxVirtualsize.
virtual TList * GetListOfFriends() const
virtual void Refresh()
Refresh contents of this tree and its branches from the current status on disk.
virtual void SetAutoFlush(Long64_t autof=-30000000)
This function may be called at the start of a program to change the default value for fAutoFlush.
static Long64_t fgMaxTreeSize
Maximum size of a file containing a Tree.
Long64_t fReadEntry
! Number of the entry being processed
TArrayD fIndexValues
Sorted index values.
void MarkEventCluster()
Mark the previous event as being at the end of the event cluster.
UInt_t fNEntriesSinceSorting
! Number of entries processed since the last re-sorting of branches
virtual void SetFileNumber(Int_t number=0)
Set fFileNumber to number.
virtual TLeaf * FindLeaf(const char *name)
Find leaf..
virtual void StartViewer()
Start the TTreeViewer on this tree.
Int_t GetMakeClass() const
virtual Int_t MakeCode(const char *filename=nullptr)
Generate a skeleton function for this tree.
bool fIMTFlush
! True if we are doing a multithreaded flush.
TDirectory * fDirectory
! Pointer to directory holding this tree
@ kNeedEnableDecomposedObj
@ kMatchConversionCollection
@ kMissingCompiledCollectionProxy
static Int_t fgBranchStyle
Old/New branch style.
virtual void ResetBranchAddresses()
Tell all of our branches to drop their current objects and allocate new ones.
Int_t fNfill
! Local for EntryLoop
void SetName(const char *name) override
Change the name of this tree.
virtual void RegisterExternalFriend(TFriendElement *)
Record a TFriendElement that we need to warn when the chain switches to a new file (typically this is...
TArrayI fIndex
Index of sorted values.
virtual Int_t SetCacheSize(Long64_t cachesize=-1)
Set maximum size of the file cache .
void AddClone(TTree *)
Add a cloned tree to our list of trees to be notified whenever we change our branch addresses or when...
virtual Int_t CheckBranchAddressType(TBranch *branch, TClass *ptrClass, EDataType datatype, bool ptr)
Check whether or not the address described by the last 3 parameters matches the content of the branch...
TBuffer * GetTransientBuffer(Int_t size)
Returns the transient buffer currently used by this TTree for reading/writing baskets.
ROOT::TIOFeatures GetIOFeatures() const
Returns the current set of IO settings.
virtual Int_t MakeClass(const char *classname=nullptr, Option_t *option="")
Generate a skeleton analysis class for this tree.
virtual const char * GetFriendAlias(TTree *) const
If the 'tree' is a friend, this method returns its alias name.
virtual void RemoveExternalFriend(TFriendElement *)
Removes external friend.
Int_t fPacketSize
! Number of entries in one packet for parallel root
virtual TBranch * BranchImpArr(const char *branchname, EDataType datatype, std::size_t N, void *addobj, Int_t bufsize, Int_t splitlevel)
virtual Long64_t Scan(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Loop over tree entries and print entries passing selection.
virtual TBranch * BronchExec(const char *name, const char *classname, void *addobj, bool isptrptr, Int_t bufsize, Int_t splitlevel)
Helper function implementing TTree::Bronch and TTree::Branch(const char *name, T &obj);.
virtual void AddTotBytes(Int_t tot)
virtual Long64_t CopyEntries(TTree *tree, Long64_t nentries=-1, Option_t *option="", bool needCopyAddresses=false)
Copy nentries from given tree to this tree.
Int_t fMakeClass
! not zero when processing code generated by MakeClass
virtual Int_t LoadBaskets(Long64_t maxmemory=2000000000)
Read in memory all baskets from all branches up to the limit of maxmemory bytes.
static constexpr Long64_t kMaxEntries
TPrincipal * Principal(const char *varexp="", const char *selection="", Option_t *option="np", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Interface to the Principal Components Analysis class.
virtual Long64_t GetAutoFlush() const
Defines a common interface to inspect/change the contents of an object that represents a collection.
Abstract interface for Tree Index.
virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor) const =0
virtual Long64_t GetEntryNumberFriend(const TTree *)=0
virtual void SetTree(TTree *T)=0
virtual Long64_t GetN() const =0
virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor) const =0
Provides the interface for the PROOF internal performance measurement and event tracing.
Abstract base class defining the interface for the plugins that implement Draw, Scan,...
virtual Long64_t Scan(const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)=0
virtual void UpdateFormulaLeaves()=0
virtual Long64_t DrawSelect(const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)=0
virtual Int_t MakeCode(const char *filename)=0
virtual Int_t UnbinnedFit(const char *formula, const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)=0
virtual Long64_t GetEntries(const char *)=0
virtual Int_t MakeProxy(const char *classname, const char *macrofilename=nullptr, const char *cutfilename=nullptr, const char *option=nullptr, Int_t maxUnrolling=3)=0
virtual TSQLResult * Query(const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)=0
virtual TPrincipal * Principal(const char *varexp="", const char *selection="", Option_t *option="np", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)=0
virtual void StartViewer(Int_t ww, Int_t wh)=0
virtual Int_t MakeReader(const char *classname, Option_t *option)=0
virtual TVirtualIndex * BuildIndex(const TTree *T, const char *majorname, const char *minorname)=0
virtual TTree * CopyTree(const char *selection, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)=0
virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)=0
virtual void SetEstimate(Long64_t n)=0
static TVirtualTreePlayer * TreePlayer(TTree *obj)
Static function returning a pointer to a Tree player.
virtual Int_t MakeClass(const char *classname, const char *option)=0
virtual Int_t Fit(const char *formula, const char *varexp, const char *selection, Option_t *option, Option_t *goption, Long64_t nentries, Long64_t firstentry)=0
Special implementation of ROOT::RRangeCast for TCollection, including a check that the cast target ty...
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Bool_t IsImplicitMTEnabled()
Returns true if the implicit multi-threading in ROOT is enabled.
void CallRecursiveRemoveIfNeeded(TObject &obj)
call RecursiveRemove for obj if gROOT is valid and obj.TestBit(kMustCleanup) is true.
void ToHumanReadableSize(value_type bytes, Bool_t si, Double_t *coeff, const char **units)
Return the size expressed in 'human readable' format.
EFromHumanReadableSize FromHumanReadableSize(std::string_view str, T &value)
Convert strings like the following into byte counts 5MB, 5 MB, 5M, 3.7GB, 123b, 456kB,...
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t Median(Long64_t n, const T *a, const Double_t *w=nullptr, Long64_t *work=nullptr)
Same as RMS.
Double_t Ceil(Double_t x)
Rounds x upward, returning the smallest integral value that is not less than x.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Binary search in an array of n values to locate value.
@ kUseGlobal
Use the global compression algorithm.
@ kInherit
Some objects use this value to denote that the compression algorithm should be inherited from the par...
@ kUseCompiledDefault
Use the compile-time default setting.