56 void RemovePrefix(
TString& str,
const char* prefix) {
58 if (str.
Length() && prefix && strlen(prefix)) {
59 if (!str.
Index(prefix)) {
60 str.
Remove(0, strlen(prefix));
85 for (
Int_t i = 0; i < nbranches; ++i) {
88 case 31: br->
SetType(41);
break;
110 return CanSelfReference(inside);
115 const static TClassRef stringClass(
"std::string");
160 , fReadActionSequence(0)
161 , fFillActionSequence(0)
211 Init(tree, 0, bname,sinfo,
id,pointer,basketsize,splitlevel,btype);
254 Init(parent ? parent->
GetTree() : 0, parent, bname,sinfo,
id,pointer,basketsize,splitlevel,btype);
273 if (
fTree == 0)
return;
365 if (hasCustomStreamer) {
418 if (splitlevel > 0) {
439 if (!strcmp(name, clOfElement->
GetName())) {
466 Unroll(name, clOfElement, clOfElement, pointer, basketsize, splitlevel+splitSTLP, 0);
467 if (strchr(bname,
'.')) {
500 char **ppointer = (
char**)(pointer);
541 Unroll(name, clOfClones, clOfClones, pointer, basketsize, splitlevel+splitSTLP, 31);
548 TClass* contCl = elementClass;
593 Unroll(name, valueClass, valueClass, pointer, basketsize, splitlevel+splitSTLP, 41);
606 TClass* clm = elementClass;
607 Int_t err =
Unroll(name, clm, clm, pointer, basketsize, splitlevel+splitSTLP, 0);
666 Init(tree, 0, bname, clones, basketsize, splitlevel, compress);
693 Init(parent ? parent->
GetTree() : 0, parent, bname, clones, basketsize, splitlevel, compress);
736 if (basketsize < 100) basketsize = 100;
756 Error(
"Init",
"Missing class object of the TClonesArray %s\n",clones->
GetName());
768 std::string branchname = name + std::string(
"_");
770 leaf->
SetName(branchname.c_str());
772 Unroll(name, clonesClass, clonesClass, 0, basketsize, splitlevel, 31);
815 Init(tree, 0, bname, cont, basketsize, splitlevel, compress);
841 Init(parent ? parent->
GetTree() : 0, parent, bname, cont, basketsize, splitlevel, compress);
853 if (name[name.
Length()-1]==
'.') {
895 if (basketsize < 100) {
936 Unroll(name, valueClass, valueClass, 0, basketsize, splitlevel, 41);
1015 if (nbranches > 0) {
1016 TList persistentBranches;
1019 while((branch=(
TBranch*)iB())) {
1020 if (branch->
IsFolder()) persistentBranches.
Add(branch);
1046 mempos=strMember.
First(
'[');
1051 }
else persistentBranches.
Add(branch);
1054 persistentBranches.
Browse(b);
1075 pos = mothername.
First(
'[');
1081 if (mothername(len-1) !=
'.') {
1086 TString doublename = mothername;
1088 Int_t isthere = (name.
Index(doublename) == 0);
1093 doublename.
Append(mothername);
1094 isthere = (name.
Index(doublename) == 0);
1130 for (
Int_t i = 0; i < nbranches; ++i) {
1134 }
else if (
fType == 4) {
1137 Error(
"BuildTitle",
"This cannot happen, fType of parent is not 3 or 4!");
1141 const char* fin = strrchr(bre->
GetTitle(),
'.');
1174 if ((stype > 40) && (stype < 61)) {
1216 Error(
"Fill",
"attempt to fill branch %s while addresss is not set",
GetName());
1239 Error(
"Fill",
"Failed filling branch:%s, nbytes=%d",
GetName(), nwrite);
1251 Error(
"Fill",
"Failed filling branch:%s, nbytes=%d",
GetName(), nwrite);
1259 for (
Int_t i = 0; i < nbranches; ++i) {
1262 nwrite = branch->
FillImpl(imtHelper);
1264 Error(
"Fill",
"Failed filling branch:%s.%s, nbytes=%d",
GetName(), branch->
GetName(), nwrite);
1277 printf(
"Fill: %lld, branch=%s, nbytes=%d\n", entry,
GetName(), nbytes);
1315 }
else if (
fType == 31) {
1336 Error(
"FillLeaves",
"The branch counter address was zero!");
1342 Error(
"FillLeaves",
"Clonesa: %s, n=%d, sorry not supported yet",
GetName(), n);
1365 for (
Int_t ii = 0; ii <
n; ++ii) {
1375 for (
Int_t ii = 0; ii <
n; ++ii) {
1458 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1489 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1519 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1550 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1605 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1610 char **end = arr +
n;
1687 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1731 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1745 if (name[name.length()-1]==
']') {
1746 std::size_t dim = name.find_first_of(
"[");
1747 if (dim != std::string::npos) {
1751 if (name[name.size()-1] !=
'.') {
1770 if (se && se->
IsBase()) {
1772 UInt_t len = strlen(name);
1778 std::string longnm_parent;
1782 longnm_parent +=
name;
1784 UInt_t namelen = strlen(name);
1788 for(
Int_t i = 0; i < nbranches; ++i) {
1791 const char *brname = branch->
GetName();
1792 UInt_t brlen = strlen(brname);
1793 if (brname[brlen-1]==
']') {
1794 const char *dim = strchr(brname,
'[');
1796 brlen = dim - brname;
1799 if (namelen == brlen
1800 && strncmp(name,brname,brlen) == 0) {
1803 if (brlen == longnm.length()
1804 && strncmp(longnm.c_str(),brname,brlen) == 0) {
1808 if (brlen == longnm_parent.length()
1809 && strncmp(longnm_parent.c_str(),brname,brlen) == 0) {
1813 if (namelen>brlen && name[brlen]==
'.' && strncmp(name,brname,brlen)==0) {
1824 for(
Int_t i = 0; i < nbranches; ++i) {
1830 if (si && br->
GetID() >= 0) {
1832 if (se && se->
IsBase()) {
1854 if (parent==
this || parent->
GetID()<0 )
return 0;
1859 if (! se->
IsBase() )
return 0;
1867 std::string longname( grand_parent->
GetName() );
1873 if ( longname == leafname ) {
1914 if (valueClass == subbe->fInfo->
GetClass()) {
1915 localInfo = subbe->fInfo;
1950 if (targetValueClass && localInfo->
GetClass() != targetValueClass) {
1961 for (
size_t i =0; i < ndata; ++i) {
1976 ename = ename.
Remove(pos);
1984 ids.back().fElement = nextel;
1985 ids.back().fInfo = info;
1992 if (elementClass && (!be || be->
GetType() == -2)) {
2000 if (elementClass == subbe->GetInfo()->
GetClass()) {
2001 nextinfo = subbe->GetInfo();
2002 onfileObject = subbe->GetOnfileObject();
2012 ids.emplace_back(nextinfo, offset + nextel->
GetOffset());
2015 ids.back().fNestedIDs->fOwnOnfileObject =
kTRUE;
2017 ids.back().fNestedIDs->fOnfileObject = onfileObject;
2024 subprefix = ename +
".";
2026 GatherArtificialElements(branches, ids.back().fNestedIDs->fIDs, subprefix, nextinfo, offset + nextel->
GetOffset());
2027 if (ids.back().fNestedIDs->fIDs.empty())
2061 if ( !targetClass ) {
2062 Error(
"InitInfo",
"The target class dictionary is not present!" );
2080 target +=
"@@emulated";
2089 if( targetClass != cl ) {
2106 if( targetClass != cl )
2146 Error(
"InitInfo",
"StreamerInfo is not compiled.");
2169 fOnfileObject =
new TVirtualArray( info->GetElement(0)->GetClassPointer(), arrlen );
2183 for (
Int_t i = 0; i < nbranches; ++i) {
2186 if (
this != subbranch) {
2188 if (!subbranch->
fInfo)
2191 if (subbranch->
fInfo == info)
2193 else if (subbranch->
fInfo ==
nullptr && subbranch->
fBranchClass == currentClass) {
2200 else if (subbranch->
fCheckSum == info->GetCheckSum()) {
2209 Error(
"SetOnfileObject (lambda)",
"2 distincts fOnfileObject are in the hierarchy of %s for type %s",
2214 seenExisting =
kTRUE;
2218 lastbranch = subbranch;
2223 if (lastbranch !=
this)
2232 size_t pos = s.rfind(
'.');
2233 if (pos != std::string::npos) {
2234 s = s.substr(pos+1);
2236 while ((pos = s.rfind(
'[')) != std::string::npos) {
2237 s = s.substr(0, pos);
2244 for (
size_t i = 0; i < ndata; ++i) {
2276 for (
size_t i =
fID+1+(
fNewIDs.size()); i < ndata; ++i) {
2279 std::string ename = nextel->
GetName();
2280 if (ename[0] ==
'*')
2281 ename = ename.substr(1);
2283 while ((pos = ename.rfind(
'[')) != std::string::npos) {
2284 ename = ename.substr(0, pos);
2316 fNewIDs.back().fElement = nextel;
2323 for (
size_t i = 0; i < ndata; ++i) {
2338 SetOnfileObject(
fInfo);
2352 if (prefix[prefix.
Length()-1] !=
'.') {
2365 SetOnfileObject(localInfo);
2396 const char* className = 0;
2441 Fatal(
"GetCollectionProxy",
2442 "Can not create a Collection Proxy of any kind for the class \"%s\" needed by the branch \"%s\" of the TTree \"%s\"!",
2446 "Fixing the collection proxy of the class \"%s\" \n" 2447 "\tneeded by the branch \"%s\" of the TTree \"%s\" to be similar to \"%s\".",
2453 }
else if (
fType == 41) {
2496 if (newInfo != brInfo) {
2505 if (newType.
Length()==0) {
2588 for (
Int_t i = 0; i < nbranches; ++i) {
2610 R__PushCache onfileObject(((
TBufferFile&)b),fOnfileObject,ndata);
2613 char **end = arr +
fNdata;
2616 }
else if (
fType == 4) {
2623 R__PushCache onfileObject(((
TBufferFile&)b),fOnfileObject,ndata);
2655 Info(
"GetEntry",
"%lld, branch=%s, nbytes=%d", entry,
GetName(), nbytes);
2673 if ((type == -1) || (
fID == -1)) {
2682 if (!expectedClass) {
2692 Error(
"GetExpectedType",
"Did not find the type for %s",
GetName());
2705 return "TBranchElement-folder";
2707 return "TBranchElement-leaf";
2768 const char *types[20] = {
2791 return types[itype];
2800 template <
typename T>
2820 }
else if (fOnfileObject) {
2851 }
else if (
fType <= 2) {
2876 }
else if (
fType == 41) {
2912 }
else if (fOnfileObject) {
2929 }
else if (
fType == 4) {
2932 }
else if (
fType == 31) {
2937 }
else if (
fType == 41) {
2942 }
else if (
fType <= 2) {
2957 }
else if (
fType == 41) {
2959 }
else if (prID < 0) {
2964 char **val = (
char**)(
object+
GetInfoImp()->TStreamerInfo::GetElementOffset(prID));
3019 Warning(
"InitializeOffsets",
"No branch class set for branch: %s",
GetName());
3036 Int_t localOffset = 0;
3049 Warning(
"InitializeOffsets",
"Streamer info for branch: %s has no elements array!",
GetName());
3056 Warning(
"InitializeOffsets",
"Cannot get streamer element for branch: %s!",
GetName());
3077 Error(
"InitializeOffsets",
"Could not find class for branch: %s",
GetName());
3091 stlParentName = br->
GetName();
3100 for (
Int_t subBranchIdx = 0; subBranchIdx < nbranches; ++subBranchIdx) {
3101 bool alternateElement =
false;
3105 if (subBranch == 0) {
3119 Warning(
"InitializeOffsets",
"No streamer info for branch: %s subbranch: %s",
GetName(), subBranch->
GetName());
3124 Warning(
"InitializeOffsets",
"No elements array for branch: %s subbranch: %s",
GetName(), subBranch->
GetName());
3130 if (!subBranchElement) {
3131 Warning(
"InitializeOffsets",
"No streamer element for branch: %s subbranch: %s",
GetName(), subBranch->
GetName());
3145 typedef TStreamerInfoActions::ActionContainer_t::iterator iterator;
3148 iter != end; ++iter) {
3153 subBranchElement =
e;
3154 alternateElement =
true;
3161 localOffset = subBranchElement->
GetOffset();
3169 && CanSelfReference(subBranchElement->
GetClass()))
3185 Warning(
"InitializeOffsets",
"Branch '%s' has no mother!",
GetName());
3191 if (motherName.Length() && strchr(motherName.Data(),
'.')) {
3195 if (motherName.Length() && (motherName[motherName.Length()-1] ==
'.')) {
3196 motherDotAtEnd =
kTRUE;
3200 if ((subBranch->
fType == 1) || (subBranchElement && subBranchElement->
IsBase())) {
3208 isBaseSubBranch =
kTRUE;
3212 if ((subBranch->
fType == 31) || (subBranch->
fType == 41)) {
3214 isContDataMember =
kTRUE;
3239 if (motherDotAtEnd) {
3241 dataName.
Remove(0, motherName.Length());
3243 if (!stlParentNameUpdated && stlParentName.
Length()) {
3244 stlParentName.
Remove(0, motherName.Length());
3245 stlParentNameUpdated =
kTRUE;
3247 }
else if (motherDot) {
3261 if (dataName.Length() == motherName.Length()) {
3262 dataName.Remove(0, motherName.Length());
3264 if (!stlParentNameUpdated && stlParentName.
Length()) {
3265 stlParentName.
Remove(0, motherName.Length());
3270 if (dataName.Length() > motherName.Length()) {
3271 dataName.
Remove(0, motherName.Length() + 1);
3272 if (!stlParentNameUpdated && stlParentName.
Length()) {
3273 stlParentName.
Remove(0, motherName.Length());
3278 stlParentNameUpdated =
kTRUE;
3279 if (isBaseSubBranch) {
3283 if (pattern.Length() <= dataName.Length()) {
3284 if (!strcmp(dataName.Data() + (dataName.Length() - pattern.Length()), pattern.Data())) {
3288 dataName.
Remove(dataName.Length() - pattern.Length());
3292 if (dataName.Length()) {
3293 if (dataName[0] ==
'.') {
3303 if (motherDotAtEnd) {
3305 parentName.
Remove(0, motherName.Length());
3306 }
else if (motherDot) {
3320 if (parentName.
Length() == motherName.Length()) {
3321 parentName.
Remove(0, motherName.Length());
3325 if (parentName.
Length() > motherName.Length()) {
3326 parentName.
Remove(0, motherName.Length() + 1);
3339 if (pattern.Length() <= parentName.
Length()) {
3340 if (!strcmp(parentName.
Data() + (parentName.
Length() - pattern.Length()), pattern.Data())) {
3344 parentName.
Remove(parentName.
Length() - pattern.Length());
3356 RemovePrefix(dataName, parentName);
3360 if (dataName.Length()) {
3361 if (dataName[0] ==
'.') {
3362 dataName.Remove(0, 1);
3367 if (dataName.Length()) {
3368 if (dataName[dataName.Length()-1] ==
'.') {
3369 dataName.Remove(dataName.Length() - 1, 1);
3385 if (dataName.Length()) {
3410 target +=
"@@emulated";
3428 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class, and cannot get class for clones class: '%s'!", subBranch->
GetName(),
GetClonesName());
3432 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class! Assuming parent class is: '%s'.", subBranch->
GetName(), pClass->
GetName());
3436 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class! Assuming parent class is: '%s'.", subBranch->
GetName(), pClass ? pClass->
GetName() :
"unknowned class");
3441 pClass = branchClass;
3446 if (renamed && pClass) {
3447 if (pClass == branchClass) {
3459 if( dynamic_cast<TBranchSTL*>(
fParent) && stlParentName.
Length() )
3461 if( !strncmp( stlParentName.
Data(), dataName.Data(), stlParentName.
Length()-1 )
3462 && dataName[ stlParentName.
Length() ] ==
'.' )
3463 dataName.Remove( 0, stlParentName.
Length()+1 );
3470 if (alternateElement) {
3471 Ssiz_t dotpos = dataName.Last(
'.');
3472 Ssiz_t endpos = dataName.Length();
3473 if (dotpos !=
kNPOS) ++dotpos;
else dotpos = 0;
3474 dataName.Replace(dotpos,endpos-dotpos,subBranchElement->
GetFullName());
3495 Error(
"InitializeOffsets",
3496 "Could not find the real data member '%s' when constructing the branch '%s' [Likely missing ShowMember].",
3501 Info(
"InitializeOffsets",
3502 "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'. ",
3506 Fatal(
"InitializeOffsets",
3507 "Could not find the real data member '%s' when constructing the branch '%s' [Likely an internal error, please report to the developers].",
3515 if (isBaseSubBranch) {
3518 Warning(
"InitializeOffsets",
"Could not find the data member name for branch '%s' with parent branch '%s', assuming offset is zero!", subBranch->
GetName(),
GetName());
3526 if (isContDataMember) {
3540 if (isBaseSubBranch) {
3547 subBranch->
SetOffset(offset - localOffset);
3557 }
else if (isSplit) {
3558 if (isBaseSubBranch) {
3569 if (isBaseSubBranch) {
3609 if (nbranches >= 1) {
3613 return browsables && browsables->
GetSize();
3628 if (basket &&
fTree) {
3641 bufbegin = entryOffset[entry-first];
3644 bufnext = entryOffset[entry+1-first];
3648 if (bufnext == bufbegin) {
3666 for(
auto &cursor : ids) {
3667 auto id = cursor.fElemID;
3670 else if (cursor.fNestedIDs) {
3671 Printf(
" Within subobject of type %s offset = %d", cursor.fNestedIDs->fInfo->GetName(), cursor.fNestedIDs->fOffset);
3672 PrintElements(cursor.fNestedIDs->fInfo, cursor.fNestedIDs->fIDs);
3680 if (strncmp(option,
"debugAddress",strlen(
"debugAddress"))==0) {
3681 if (strlen(option)==strlen(
"debugAddress")) {
3682 Printf(
"%-24s %-16s %2s %4s %-16s %-16s %8s %8s %s\n",
3683 "Branch Name",
"Streamer Class",
"ID",
"Type",
"Class",
"Parent",
"pOffset",
"fOffset",
"fObject");
3692 Printf(
"%-16s %2d %4d %-16s %-16s %8x %8x %s\n",
3697 for (
Int_t i = 0; i < nbranches; ++i) {
3699 subbranch->
Print(
"debugAddressSub");
3703 if (strncmp(option,
"debugInfo",strlen(
"debugInfo"))==0) {
3715 Printf(
" With elements:");
3719 Printf(
" with read actions:");
3721 Printf(
" with write actions:");
3729 Printf(
" with read actions:");
3731 Printf(
" with write actions:");
3734 TString suboption =
"debugInfoSub";
3735 suboption += (option+strlen(
"debugInfo"));
3736 for (
Int_t i = 0; i < nbranches; ++i) {
3738 subbranch->
Print(suboption);
3751 Printf(
"*............................................................................*");
3756 for (
Int_t i=0;i<nbranches;i++) {
3758 branch->
Print(option);
3778 }
else if (fOnfileObject) {
3815 }
else if (
fType <= 2) {
3832 }
else if (
fType == 3) {
3834 }
else if (
fType == 31) {
3839 }
else if (
fType == 41) {
3856 Fatal(
"ReadLeaves",
"The ReadLeaves function has not been configured for %s",
GetName());
3871 if ((n[0] < 0) || (n[0] >
fMaximum)) {
3876 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());
3888 for (
Int_t i=0; i<nbranches; i++) {
3905 if (atype > 54)
return;
3914 if (!len_where)
return;
3919 for( k=0; k<
n; k++) {
3920 char **where = &(((
char**)
fAddress)[k]);
3924 case 1: {length = ((
Char_t*) len_where)[k];
break;}
3925 case 2: {length = ((
Short_t*) len_where)[k];
break;}
3926 case 3: {length = ((
Int_t*) len_where)[k];
break;}
3927 case 4: {length = ((
Long_t*) len_where)[k];
break;}
3929 case 6: {length = ((
Int_t*) len_where)[k];
break;}
3931 case 11: {length = ((
UChar_t*) len_where)[k];
break;}
3932 case 12: {length = ((
UShort_t*) len_where)[k];
break;}
3933 case 13: {length = ((
UInt_t*) len_where)[k];
break;}
3934 case 14: {length = ((
ULong_t*) len_where)[k];
break;}
3935 case 15: {length = ((
UInt_t*) len_where)[k];
break;}
3936 case 16: {length = ((
Long64_t*) len_where)[k];
break;}
3937 case 17: {length = ((
ULong64_t*)len_where)[k];
break;}
3938 case 18: {length = ((
Bool_t*) len_where)[k];
break;}
3942 if (length <= 0)
continue;
3943 if (isArray == 0)
continue;
3989 for (
Int_t ii=0;ii<
n;ii++) {
3998 for (
Int_t ii=0;ii<
n;ii++) {
4005 }
else if (
fType <= 2) {
4025 loc = counter.
Last(
']');
4029 countname += counter;
4035 Warning(
"ReadLeaves",
"Missing fBranchCount for %s. Data will not be read correctly by the MakeClass mode.",
GetName());
4061 for (
Int_t ii=0;ii<
n;ii++) {
4070 for (
Int_t ii=0;ii<
n;ii++) {
4125 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());
4131 R__PushCache onfileObject(((
TBufferFile&)b),fOnfileObject,1);
4159 for (
Int_t i = 0; i < nbranches; ++i) {
4187 if( !
fNdata || *(
void**)proxy->
At( 0 ) != 0 )
4192 void **el = (
void**)proxy->
At( i );
4194 *el = elClass->
New();
4198 proxy->
Commit(alternate);
4224 if (info == 0)
return;
4256 if (info == 0)
return;
4287 if (info == 0)
return;
4320 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());
4359 if (info==0)
return;
4367 char **end = arr +
fNdata;
4389 R__PushCache onfileObject(((
TBufferFile&)b),fOnfileObject,1);
4441 R__PushCache onfileObject(((
TBufferFile&)b),fOnfileObject,1);
4476 R__PushCache onfileObject(((
TBufferFile&)b),fOnfileObject,1);
4497 R__PushCache onfileObject(((
TBufferFile&)b),fOnfileObject,1);
4506 Fatal(
"FillLeaves",
"The FillLeaves function has not been configured for %s",
GetName());
4529 }
else if (
fType == 4) {
4534 Warning(
"ReleaseObject",
"Cannot delete allocated STL container because I do not have a proxy! branch: %s",
GetName());
4538 if (needDelete &&
fID >= 0) {
4545 proxy->
Clear(
"force");
4570 proxy->
Clear(
"force");
4574 proxy->
Clear(
"force");
4595 for (
Int_t i = 0; i < nbranches; ++i) {
4597 branch->
Reset(option);
4610 for (
Int_t i = 0; i < nbranches; ++i) {
4632 for (
Int_t i = 0; i < nbranches; ++i) {
4658 for (
Int_t i = 0; i < nb; ++i) {
4684 for (
Int_t i = 0; i < nbranches; ++i) {
4822 if (
Long_t(addr) == -1) {
4914 if (clm == content) {
4920 Warning(
"SetAddress",
"The type of the %s was changed from TClonesArray to %s but we do not have a TVirtualCollectionProxy for that container type!",
GetName(), newType->
GetName());
4946 }
else if (
fType == 4) {
4958 for (
Int_t i = 0; i < nbranches; ++i) {
4991 for (
Int_t i = 0; i < nbranches; ++i) {
5019 Error(
"SetAddress",
"For %s, we can not convert %s into %s\n",