62 if (!str.
Index(prefix))
73 fBuffer.PushDataCache( fOnfileObject );
77 if (fOnfileObject)
fBuffer.PopDataCache();
87 for (
Int_t i = 0; i < nbranches; ++i) {
90 case 31: br->
SetType(41);
break;
112 return CanSelfReference(inside);
117 const static TClassRef stringClass(
"std::string");
118 if (cl == stringClass || cl == TString::Class()) {
145, fSTLtype(
ROOT::kNotSTL)
162, fReadActionSequence(0)
163, fFillActionSequence(0)
180, fClassName(sinfo->GetName())
184, fCheckSum(sinfo->GetCheckSum())
185, fClassVersion(sinfo->GetClass()->GetClassVersion())
190, fSTLtype(
ROOT::kNotSTL)
200, fTargetClass(fClassName)
203, fBranchClass(sinfo->GetClass())
207, fReadActionSequence(0)
208, fFillActionSequence(0)
217 Init(
tree, 0, bname,sinfo,
id,pointer,basketsize,splitlevel,btype);
227, fClassName(sinfo->GetName())
231, fCheckSum(sinfo->GetCheckSum())
232, fClassVersion(sinfo->GetClass()->GetClassVersion())
237, fSTLtype(
ROOT::kNotSTL)
247, fTargetClass( fClassName )
250, fBranchClass(sinfo->GetClass())
254, fReadActionSequence(0)
255, fFillActionSequence(0)
262 Init(parent ? parent->
GetTree() : 0, parent, bname,sinfo,
id,pointer,basketsize,splitlevel,btype);
281 if (
fTree == 0)
return;
373 if (hasCustomStreamer) {
392 if (element->IsA() == TStreamerBasicPointer::Class()) {
408 }
else if (element->IsA() == TStreamerLoop::Class()) {
426 if (splitlevel > 0) {
433 }
else if (element->IsA() == TStreamerBase::Class()) {
474 Unroll(
name, clOfElement, clOfElement, pointer, basketsize, splitlevel+splitSTLP, 0);
475 if (strchr(bname,
'.')) {
492 const auto bnamelen = strlen(bname);
494 name.Form(
"%s%s%s", bname, bname[bnamelen-1]==
'.' ?
"" :
".", clOfElement->
GetName());
509 char **ppointer = (
char**)(pointer);
553 Unroll(
name, clOfClones, clOfClones, pointer, basketsize, splitlevel+splitSTLP, 31);
560 TClass* contCl = elementClass;
567 }
else if ((valueClass == TString::Class()) || (valueClass ==
TClass::GetClass(
"string"))) {
608 Unroll(
name, valueClass, valueClass, pointer, basketsize, splitlevel+splitSTLP, 41);
621 TClass* clm = elementClass;
622 Int_t err =
Unroll(
name, clm, clm, pointer, basketsize, splitlevel+splitSTLP, 0);
664, fClassName(
"TClonesArray")
670, fTargetClass( fClassName )
675, fReadActionSequence(0)
676, fFillActionSequence(0)
681 Init(
tree, 0, bname, clones, basketsize, splitlevel, compress);
691, fClassName(
"TClonesArray")
697, fTargetClass( fClassName )
702, fReadActionSequence(0)
703, fFillActionSequence(0)
708 Init(parent ? parent->
GetTree() : 0, parent, bname, clones, basketsize, splitlevel, compress);
752 if (basketsize < 100) basketsize = 100;
772 Error(
"Init",
"Missing class object of the TClonesArray %s\n",clones->
GetName());
785 if (branchname[branchname.
Length()-1]==
'.') {
792 Unroll(
name, clonesClass, clonesClass, 0, basketsize, splitlevel, 31);
819, fClassName(cont->GetCollectionClass()->GetName())
824, fTargetClass( fClassName )
827, fBranchClass(cont->GetCollectionClass())
829, fReadActionSequence(0)
830, fFillActionSequence(0)
835 Init(
tree, 0, bname, cont, basketsize, splitlevel, compress);
845, fClassName(cont->GetCollectionClass()->GetName())
850, fTargetClass( fClassName )
853, fBranchClass(cont->GetCollectionClass())
855, fReadActionSequence(0)
856, fFillActionSequence(0)
861 Init(parent ? parent->
GetTree() : 0, parent, bname, cont, basketsize, splitlevel, compress);
915 if (basketsize < 100) {
956 Unroll(
name, valueClass, valueClass, 0, basketsize, splitlevel, 41);
1035 if (nbranches > 0) {
1036 TList persistentBranches;
1039 while((branch=(
TBranch*)iB())) {
1040 if (branch->
IsFolder()) persistentBranches.
Add(branch);
1066 mempos=strMember.
First(
'[');
1070 if (!
m ||
m->IsPersistent()) persistentBranches.
Add(branch);
1071 }
else persistentBranches.
Add(branch);
1095 pos = mothername.
First(
'[');
1101 if (mothername(len-1) !=
'.') {
1106 TString doublename = mothername;
1108 Int_t isthere = (
name.Index(doublename) == 0);
1110 name.Prepend(doublename);
1113 doublename.
Append(mothername);
1114 isthere = (
name.Index(doublename) == 0);
1117 name.Prepend(mothername);
1128 name.Prepend(mothername);
1151 if (indexname[indexname.
Length()-1]==
'.') {
1156 for (
Int_t i = 0; i < nbranches; ++i) {
1162 }
else if (
fType == 4) {
1165 Error(
"BuildTitle",
"This cannot happen, fType of parent is not 3 or 4!");
1169 const char* fin = strrchr(bre->
GetTitle(),
'.');
1202 if ((stype > 40) && (stype < 61)) {
1244 Error(
"Fill",
"attempt to fill branch %s while address is not set",
GetName());
1267 Error(
"Fill",
"Failed filling branch:%s, nbytes=%d",
GetName(), nwrite);
1279 Error(
"Fill",
"Failed filling branch:%s, nbytes=%d",
GetName(), nwrite);
1287 for (
Int_t i = 0; i < nbranches; ++i) {
1290 nwrite = branch->
FillImpl(imtHelper);
1292 Error(
"Fill",
"Failed filling branch:%s.%s, nbytes=%d",
GetName(), branch->
GetName(), nwrite);
1305 printf(
"Fill: %lld, branch=%s, nbytes=%d\n", entry,
GetName(), nbytes);
1343 }
else if (
fType == 31) {
1364 Error(
"FillLeaves",
"The branch counter address was zero!");
1370 Error(
"FillLeaves",
"Clonesa: %s, n=%d, sorry not supported yet",
GetName(),
n);
1393 for (
Int_t ii = 0; ii <
n; ++ii) {
1394 b.WriteDouble32(&(xx[ii]),se);
1403 for (
Int_t ii = 0; ii <
n; ++ii) {
1404 b.WriteFloat16(&(xx[ii]),se);
1486 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1517 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1547 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1578 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1633 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1638 char **end = arr +
n;
1715 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1759 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1774 std::size_t dim =
name.find_first_of(
"[");
1775 if (dim != std::string::npos) {
1798 if (se && se->
IsBase()) {
1806 std::string longnm_parent;
1810 longnm_parent +=
name;
1816 for(
Int_t i = 0; i < nbranches; ++i) {
1819 const char *brname = branch->
GetName();
1820 UInt_t brlen = strlen(brname);
1821 if (brname[brlen-1]==
']') {
1822 const char *dim = strchr(brname,
'[');
1824 brlen = dim - brname;
1827 if (namelen == brlen
1828 && strncmp(
name,brname,brlen) == 0) {
1831 if (brlen == longnm.length()
1832 && strncmp(longnm.c_str(),brname,brlen) == 0) {
1836 if (brlen == longnm_parent.length()
1837 && strncmp(longnm_parent.c_str(),brname,brlen) == 0) {
1841 if (namelen>brlen &&
name[brlen]==
'.' && strncmp(
name,brname,brlen)==0) {
1852 for(
Int_t i = 0; i < nbranches; ++i) {
1854 if(obj->IsA() != TBranchElement :: Class() )
1858 if (si && br->
GetID() >= 0) {
1860 if (se && se->
IsBase()) {
1878 if( br->IsA() != TBranchElement::Class() )
1882 if (parent==
this || parent->
GetID()<0 )
return 0;
1887 if (! se->
IsBase() )
return 0;
1890 if( br->IsA() != TBranchElement::Class() )
1895 std::string longname( grand_parent->
GetName() );
1901 if ( longname == leafname ) {
1942 if (valueClass == subbe->fInfo->
GetClass()) {
1943 localInfo = subbe->fInfo;
1978 if (targetValueClass && localInfo->
GetClass() != targetValueClass) {
1989 for (
size_t i =0; i < ndata; ++i) {
2004 ename = ename.
Remove(pos);
2008 if (nextel->IsA() == TStreamerArtificial::Class()
2012 ids.back().fElement = nextel;
2013 ids.back().fInfo = info;
2019 if (!be && nextel->
IsBase()) {
2024 if (subprefix.Length() && subprefix[subprefix.Length()-1] ==
'.')
2025 subprefix.Remove(subprefix.Length()-1);
2031 TClass *expectedClass =
nullptr;
2038 for (
Int_t bi = 0; bi < nbranches; ++bi) {
2040 if (subprefix != branch->
GetName())
2054 if (elementClass && (!be || be->
GetType() == -2)) {
2063 if (prefix.
Length() && nextel->IsA() == TStreamerBase::Class()) {
2068 subprefix = ename +
".";
2070 auto nbranches = search->GetEntriesFast();
2071 bool foundRelatedSplit =
false;
2072 for (
Int_t bi = 0; bi < nbranches; ++bi) {
2075 if (!foundRelatedSplit)
2076 foundRelatedSplit = matchSubPrefix;
2087 if (!foundRelatedSplit) {
2097 ids.emplace_back(nextinfo, offset + nextel->
GetOffset());
2100 ids.back().fNestedIDs->fOwnOnfileObject =
kTRUE;
2102 ids.back().fNestedIDs->fOnfileObject = onfileObject;
2103 GatherArtificialElements(branches, ids.back().fNestedIDs->fIDs, subprefix, nextinfo, offset + nextel->
GetOffset());
2104 if (ids.back().fNestedIDs->fIDs.empty())
2138 if ( !targetClass ) {
2139 Error(
"InitInfo",
"The target class dictionary is not present!" );
2157 target +=
"@@emulated";
2166 if( targetClass != cl ) {
2183 if( targetClass != cl )
2223 Error(
"InitInfo",
"StreamerInfo is not compiled.");
2263 Int_t firstindex = 0;
2264 Int_t lastindex = nbranches - 1;
2271 if (!subbranch->
fInfo)
2275 for(
Int_t i = index - 1; i >= 0; --i) {
2278 if ( ! subbranch_name.
BeginsWith(thisprefix)) {
2283 if (!subbranch->
fInfo)
2286 for(
Int_t i = index; i < nbranches; ++i) {
2289 if ( ! subbranch_name.
BeginsWith(thisprefix)) {
2301 for(
Int_t i = 0; i < nbranches; ++i) {
2304 if ( ! subbranch_name.
BeginsWith(thisprefix)) {
2311 for (
Int_t i = firstindex; i <= lastindex; ++i) {
2314 if (
this != subbranch) {
2316 if (!subbranch->
fInfo)
2319 if (subbranch->
fInfo == info)
2321 else if (subbranch->
fInfo ==
nullptr && subbranch->
fBranchClass == currentClass) {
2337 Error(
"SetOnfileObject (lambda)",
"2 distincts fOnfileObject are in the hierarchy of %s for type %s",
2342 seenExisting =
kTRUE;
2346 lastbranch = subbranch;
2351 if (lastbranch !=
this)
2360 size_t pos = s.rfind(
'.');
2361 if (pos != std::string::npos) {
2362 s = s.substr(pos+1);
2364 while ((pos = s.rfind(
'[')) != std::string::npos) {
2365 s = s.substr(0, pos);
2372 for (
size_t i = 0; i < ndata; ++i) {
2404 for (
size_t i =
fID+1+(
fNewIDs.size()); i < ndata; ++i) {
2407 std::string ename = nextel->
GetName();
2408 if (ename[0] ==
'*')
2409 ename = ename.substr(1);
2411 while ((pos = ename.rfind(
'[')) != std::string::npos) {
2412 ename = ename.substr(0, pos);
2436 if (nextel->IsA() != TStreamerArtificial::Class()
2444 fNewIDs.back().fElement = nextel;
2451 for (
size_t i = 0; i < ndata; ++i) {
2466 SetOnfileObject(
fInfo);
2481 auto start = prefix.
Length();
2482 if (prefix[start - 1] ==
'.')
2484 std::string_view view(prefix.
Data(), start);
2485 auto cutoff = view.find_last_of(
'.');
2486 if (cutoff != std::string::npos) {
2487 prefix.
Remove(cutoff + 1);
2490 if (prefix[prefix.
Length()-1] !=
'.') {
2503 SetOnfileObject(localInfo);
2534 const char* className = 0;
2579 Fatal(
"GetCollectionProxy",
2580 "Can not create a Collection Proxy of any kind for the class \"%s\" needed by the branch \"%s\" of the TTree \"%s\"!",
2584 "Fixing the collection proxy of the class \"%s\" \n"
2585 "\tneeded by the branch \"%s\" of the TTree \"%s\" to be similar to \"%s\".",
2591 }
else if (
fType == 41) {
2634 if (newInfo != brInfo) {
2643 if (newType.
Length()==0) {
2726 for (
Int_t i = 0; i < nbranches; ++i) {
2751 char **end = arr +
fNdata;
2754 }
else if (
fType == 4) {
2793 Info(
"GetEntry",
"%lld, branch=%s, nbytes=%d", entry,
GetName(), nbytes);
2811 if ((
type == -1) || (
fID == -1)) {
2820 if (!expectedClass) {
2830 Error(
"GetExpectedType",
"Did not find the type for %s",
GetName());
2843 if (!mother || mother==
this || mother->
GetType() == 3 || mother->
GetType() == 4) {
2848 if (motherName.
Length() && (motherName[motherName.
Length()-1] ==
'.')) {
2851 return motherName +
"." +
fName;
2860 return "TBranchElement-folder";
2862 return "TBranchElement-leaf";
2923 const char *types[20] = {
2946 return types[itype];
2955template <
typename T>
3006 }
else if (
fType <= 2) {
3031 }
else if (
fType == 41) {
3084 }
else if (
fType == 4) {
3087 }
else if (
fType == 31) {
3092 }
else if (
fType == 41) {
3097 }
else if (
fType <= 2) {
3112 }
else if (
fType == 41) {
3114 }
else if (prID < 0) {
3119 char **val = (
char**)(
object+
GetInfoImp()->TStreamerInfo::GetElementOffset(prID));
3174 Warning(
"InitializeOffsets",
"No branch class set for branch: %s",
GetName());
3191 Int_t localOffset = 0;
3204 Warning(
"InitializeOffsets",
"Streamer info for branch: %s has no elements array!",
GetName());
3211 Warning(
"InitializeOffsets",
"Cannot get streamer element for branch: %s!",
GetName());
3232 Error(
"InitializeOffsets",
"Could not find class for branch: %s",
GetName());
3246 stlParentName = br->
GetName();
3255 for (
Int_t subBranchIdx = 0; subBranchIdx < nbranches; ++subBranchIdx) {
3256 bool alternateElement =
false;
3260 if (subBranch == 0) {
3274 Warning(
"InitializeOffsets",
"No streamer info for branch: %s subbranch: %s",
GetName(), subBranch->
GetName());
3279 Warning(
"InitializeOffsets",
"No elements array for branch: %s subbranch: %s",
GetName(), subBranch->
GetName());
3285 if (!subBranchElement) {
3286 Warning(
"InitializeOffsets",
"No streamer element for branch: %s subbranch: %s",
GetName(), subBranch->
GetName());
3300 typedef TStreamerInfoActions::ActionContainer_t::iterator iterator;
3303 iter != end; ++iter) {
3308 subBranchElement =
e;
3309 alternateElement =
true;
3316 localOffset = subBranchElement->
GetOffset();
3324 && CanSelfReference(subBranchElement->
GetClass()))
3340 Warning(
"InitializeOffsets",
"Branch '%s' has no mother!",
GetName());
3346 if (motherName.
Length() && strchr(motherName.
Data(),
'.')) {
3350 if (motherName.
Length() && (motherName[motherName.
Length()-1] ==
'.')) {
3351 motherDotAtEnd =
kTRUE;
3355 if ((subBranch->
fType == 1) || (subBranchElement && subBranchElement->
IsBase())) {
3363 isBaseSubBranch =
kTRUE;
3367 if ((subBranch->
fType == 31) || (subBranch->
fType == 41)) {
3369 isContDataMember =
kTRUE;
3394 if (motherDotAtEnd) {
3398 if (!stlParentNameUpdated && stlParentName.
Length()) {
3400 stlParentNameUpdated =
kTRUE;
3402 }
else if (motherDot) {
3411 if ((
fID < 0) && (subBranchElement->IsA() == TStreamerBase::Class())) {
3419 if (!stlParentNameUpdated && stlParentName.
Length()) {
3427 if (!stlParentNameUpdated && stlParentName.
Length()) {
3433 stlParentNameUpdated =
kTRUE;
3434 if (isBaseSubBranch) {
3448 if (dataName[0] ==
'.') {
3458 if (motherDotAtEnd) {
3461 }
else if (motherDot) {
3470 if ((
fID > -1) && (mother == mother->
GetSubBranch(
this)) && (branchElem->IsA() == TStreamerBase::Class())) {
3511 RemovePrefix(dataName, parentName);
3516 if (dataName[0] ==
'.') {
3523 if (dataName[dataName.
Length()-1] ==
'.') {
3565 target +=
"@@emulated";
3583 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class, and cannot get class for clones class: '%s'!", subBranch->
GetName(),
GetClonesName());
3587 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class! Assuming parent class is: '%s'.", subBranch->
GetName(), pClass->
GetName());
3591 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class! Assuming parent class is: '%s'.", subBranch->
GetName(), pClass ? pClass->
GetName() :
"unknown class");
3596 pClass = branchClass;
3601 if (renamed && pClass) {
3602 if (pClass == branchClass) {
3617 if( !strncmp( stlParentName.
Data(), dataName.
Data(), stlParentName.
Length()-1 )
3618 && dataName[ stlParentName.
Length() ] ==
'.' )
3626 if (alternateElement) {
3629 if (dotpos !=
kNPOS) ++dotpos;
else dotpos = 0;
3651 Error(
"InitializeOffsets",
3652 "Could not find the real data member '%s' when constructing the branch '%s' [Likely missing ShowMember].",
3657 Info(
"InitializeOffsets",
3658 "TTree created with an older schema, some data might not be copied in 'slow-cloning' mode; fast-cloning should have the correct result. '%s' is missing when constructing the branch '%s'. ",
3662 Fatal(
"InitializeOffsets",
3663 "Could not find the real data member '%s' when constructing the branch '%s' [Likely an internal error, please report to the developers].",
3671 if (isBaseSubBranch) {
3674 Warning(
"InitializeOffsets",
"Could not find the data member name for branch '%s' with parent branch '%s', assuming offset is zero!", subBranch->
GetName(),
GetName());
3682 if (isContDataMember) {
3696 if (isBaseSubBranch) {
3703 subBranch->
SetOffset(offset - localOffset);
3713 }
else if (isSplit) {
3714 if (isBaseSubBranch) {
3725 if (isBaseSubBranch) {
3765 if (nbranches >= 1) {
3769 return browsables && browsables->
GetSize();
3784 if (basket &&
fTree) {
3797 bufbegin = entryOffset[entry-
first];
3800 bufnext = entryOffset[entry+1-
first];
3804 if (bufnext == bufbegin) {
3822 for(
auto &cursor : ids) {
3823 auto id = cursor.fElemID;
3829 Error(
"TBranchElement::Print",
"Element for id #%d not found in StreamerInfo for %s",
3833 }
else if (cursor.fNestedIDs) {
3834 Printf(
" Within subobject of type %s offset = %d", cursor.fNestedIDs->fInfo->GetName(), cursor.fNestedIDs->fOffset);
3835 PrintElements(cursor.fNestedIDs->fInfo, cursor.fNestedIDs->fIDs);
3843 if (strncmp(option,
"debugAddress",strlen(
"debugAddress"))==0) {
3844 if (strlen(option)==strlen(
"debugAddress")) {
3845 Printf(
"%-24s %-16s %2s %4s %-16s %-16s %8s %8s %s %s\n",
3846 "Branch Name",
"Streamer Class",
"ID",
"Type",
"Class",
"Parent",
"pOffset",
"fOffset",
"fObject",
"fOnfileObject");
3855 Printf(
"%-16s %2d %4d %-16s %-16s %8x %8x %p %p%s\n",
3860 for (
Int_t i = 0; i < nbranches; ++i) {
3862 subbranch->
Print(
"debugAddressSub");
3866 if (strncmp(option,
"debugInfo",strlen(
"debugInfo"))==0) {
3878 Printf(
" With elements:");
3882 Printf(
" with read actions:");
3884 Printf(
" with write actions:");
3893 Printf(
" with read actions:");
3895 Printf(
" with write actions:");
3898 TString suboption =
"debugInfoSub";
3899 suboption += (option+strlen(
"debugInfo"));
3900 for (
Int_t i = 0; i < nbranches; ++i) {
3902 subbranch->
Print(suboption);
3915 Printf(
"*............................................................................*");
3920 for (
Int_t i=0;i<nbranches;i++) {
3922 branch->
Print(option);
3979 }
else if (
fType <= 2) {
3996 }
else if (
fType == 3) {
3998 }
else if (
fType == 31) {
4003 }
else if (
fType == 41) {
4020 Fatal(
"ReadLeaves",
"The ReadLeaves function has not been configured for %s",
GetName());
4038 b.SetBufferOffset(
b.Length() -
sizeof(
n));
4040 Error(
"ReadLeaves",
"Incorrect size read for the container in %s\nThe size read is %d when the maximum is %d\nThe size is reset to 0 for this entry (%lld)",
GetName(),
n[0],
fMaximum,
GetReadEntry());
4052 for (
Int_t i=0; i<nbranches; i++) {
4069 if (atype > 54)
return;
4078 if (!len_where)
return;
4083 for( k=0; k<
n; k++) {
4084 char **where = &(((
char**)
fAddress)[k]);
4088 case 1: {length = ((
Char_t*) len_where)[k];
break;}
4089 case 2: {length = ((
Short_t*) len_where)[k];
break;}
4090 case 3: {length = ((
Int_t*) len_where)[k];
break;}
4091 case 4: {length = ((
Long_t*) len_where)[k];
break;}
4093 case 6: {length = ((
Int_t*) len_where)[k];
break;}
4095 case 11: {length = ((
UChar_t*) len_where)[k];
break;}
4096 case 12: {length = ((
UShort_t*) len_where)[k];
break;}
4097 case 13: {length = ((
UInt_t*) len_where)[k];
break;}
4098 case 14: {length = ((
ULong_t*) len_where)[k];
break;}
4099 case 15: {length = ((
UInt_t*) len_where)[k];
break;}
4100 case 16: {length = ((
Long64_t*) len_where)[k];
break;}
4101 case 17: {length = ((
ULong64_t*)len_where)[k];
break;}
4102 case 18: {length = ((
Bool_t*) len_where)[k];
break;}
4106 if (length <= 0)
continue;
4107 if (isArray == 0)
continue;
4109 case 1: {*where=
new char[
sizeof(
Char_t)*length];
b.ReadFastArray((
Char_t*) *where, length);
break;}
4110 case 2: {*where=
new char[
sizeof(
Short_t)*length];
b.ReadFastArray((
Short_t*) *where, length);
break;}
4111 case 3: {*where=
new char[
sizeof(
Int_t)*length];
b.ReadFastArray((
Int_t*) *where, length);
break;}
4112 case 4: {*where=
new char[
sizeof(
Long_t)*length];
b.ReadFastArray((
Long_t*) *where, length);
break;}
4113 case 5: {*where=
new char[
sizeof(
Float_t)*length];
b.ReadFastArray((
Float_t*) *where, length);
break;}
4114 case 6: {*where=
new char[
sizeof(
Int_t)*length];
b.ReadFastArray((
Int_t*) *where, length);
break;}
4115 case 8: {*where=
new char[
sizeof(
Double_t)*length];
b.ReadFastArray((
Double_t*)*where, length);
break;}
4116 case 11: {*where=
new char[
sizeof(
UChar_t)*length];
b.ReadFastArray((
UChar_t*) *where, length);
break;}
4117 case 12: {*where=
new char[
sizeof(
UShort_t)*length];
b.ReadFastArray((
UShort_t*)*where, length);
break;}
4118 case 13: {*where=
new char[
sizeof(
UInt_t)*length];
b.ReadFastArray((
UInt_t*) *where, length);
break;}
4119 case 14: {*where=
new char[
sizeof(
ULong_t)*length];
b.ReadFastArray((
ULong_t*) *where, length);
break;}
4120 case 15: {*where=
new char[
sizeof(
UInt_t)*length];
b.ReadFastArray((
UInt_t*) *where, length);
break;}
4121 case 16: {*where=
new char[
sizeof(
Long64_t)*length];
b.ReadFastArray((
Long64_t*) *where, length);
break;}
4122 case 17: {*where=
new char[
sizeof(
ULong64_t)*length];
b.ReadFastArray((
ULong64_t*)*where, length);
break;}
4123 case 18: {*where=
new char[
sizeof(
Bool_t)*length];
b.ReadFastArray((
Bool_t*) *where, length);
break;}
4153 for (
Int_t ii=0;ii<
n;ii++) {
4154 b.ReadDouble32(&(xx[ii]),se);
4162 for (
Int_t ii=0;ii<
n;ii++) {
4163 b.ReadFloat16(&(xx[ii]),se);
4169 }
else if (
fType <= 2) {
4189 loc = counter.
Last(
']');
4193 countname += counter;
4199 Warning(
"ReadLeaves",
"Missing fBranchCount for %s. Data will not be read correctly by the MakeClass mode.",
GetName());
4225 for (
Int_t ii=0;ii<
n;ii++) {
4226 b.ReadDouble32(&(xx[ii]),se);
4234 for (
Int_t ii=0;ii<
n;ii++) {
4235 b.ReadFloat16(&(xx[ii]),se);
4287 b.SetBufferOffset(
b.Length()-
sizeof(
n));
4289 Error(
"ReadLeaves",
"Incorrect size read for the container in %s\n\tThe size read is %d while the maximum is %d\n\tThe size is reset to 0 for this entry (%lld)",
GetName(),
n,
fMaximum,
GetReadEntry());
4323 for (
Int_t i = 0; i < nbranches; ++i) {
4351 if( !
fNdata || *(
void**)proxy->
At( 0 ) != 0 )
4356 void **el = (
void**)proxy->
At( i );
4358 *el = elClass->
New();
4362 proxy->
Commit(alternate);
4388 if (info == 0)
return;
4420 if (info == 0)
return;
4451 if (info == 0)
return;
4482 b.SetBufferOffset(
b.Length()-
sizeof(
n));
4484 Error(
"ReadLeaves",
"Incorrect size read for the container in %s\n\tThe size read is %d while the maximum is %d\n\tThe size is reset to 0 for this entry (%lld)",
GetName(),
n,
fMaximum,
GetReadEntry());
4523 if (info==0)
return;
4531 char **end = arr +
fNdata;
4670 Fatal(
"FillLeaves",
"The FillLeaves function has not been configured for %s",
GetName());
4685 TClonesArray::Class()->Destructor(
fObject);
4693 }
else if (
fType == 4) {