249 if (!fDirector->GetTree()) {
252 if (!fNotify.IsLinked()) {
253 fNotify.PrependLink(*fDirector->GetTree());
257 if (!fParent->Setup()) {
267 Int_t i = fDirector->GetReadEntry();
268 if (i<0) fDirector->SetReadEntry(0);
269 if (fParent->Read()) {
270 if (i<0) fDirector->SetReadEntry(i);
277 }
else if (
pcl->GetCollectionProxy()) {
280 if (fCollection)
delete fCollection;
281 fCollection =
pcl->GetCollectionProxy()->Generate();
282 pcl = fCollection->GetValueClass();
283 if (
pcl ==
nullptr) {
285 Error(
"Setup",
"Not finding TClass for collection for the data member %s seems no longer be in class %s",fDataMember.Data(),fParent->GetClass()->GetName());
290 fElement = (
TStreamerElement*)
pcl->GetStreamerInfo()->GetStreamerElement(fDataMember, fOffset);
292 fIsaPointer = fElement->IsaPointer();
293 fClass = fElement->GetClassPointer();
294 fMemberOffset = fElement->GetOffset();
295 fArrayLength = fElement->GetArrayLength();
298 Error(
"Setup",
"Data member %s seems no longer be in class %s",fDataMember.Data(),
pcl->GetName());
304 fWhere = fParent->fWhere;
306 if (fParent->IsaPointer()) {
320 fBranch = fDirector->GetTree()->GetBranch(fBranchName.Data());
322 if (!fSuppressMissingBranchError && !
AreThereSubBranches(fBranchName.View(), *fDirector->GetTree())) {
329 auto *tree = fDirector->GetTree()->GetTree();
330 Error(
"TBranchProxy::Setup()",
"%s",
331 Form(
"Branch '%s' is not available from tree '%s' in file '%s'.", fBranchName.Data(),
338 fWhere = (
double*)fBranch->GetAddress();
345 be->GetMother()->SetAddress(
nullptr);
346 fWhere = (
double*)fBranch->GetAddress();
351 if (fDataMember.Length()) {
352 leaf2 = fBranch->GetLeaf(fDataMember);
353 }
else if (!fWhere) {
354 leaf2 = (
TLeaf*)fBranch->GetListOfLeaves()->At(0);
355 fWhere =
leaf2->GetValuePointer();
358 fWhere =
leaf2->GetValuePointer();
359 fArrayLength =
leaf2->GetLen();
361 if (
leaf2->GetLeafCount()) {
362 fLeafCount =
leaf2->GetLeafCount();
363 fHasLeafCount =
true;
378 fWhere = (
double*)fBranch->GetAddress();
388 if (
be->GetType() == 3) {
389 fClassName =
"TClonesArray";
392 fOffset =
info->GetElementOffset(
id);
394 fIsaPointer = fElement->IsaPointer();
395 fClass = fElement->GetClassPointer();
398 if ((fIsMember || (
be->GetType()!=3 &&
be->GetType() !=4))
399 && (
be->GetType()!=31 &&
be->GetType()!=41)) {
402 Int_t i =
be->GetTree()->GetReadEntry();
407 if ( fIsMember &&
be->GetType()==3 ) {
409 }
else if (fIsaPointer) {
414 if (!fIsMember) fIsClone =
true;
418 fCollection =
fClass->GetCollectionProxy()->Generate();
419 fClass = fCollection->GetValueClass();
425 fClassName =
be->GetClassName();
429 if (
be->GetType()==3) {
432 if (!fIsMember) fIsClone =
true;
434 fWhere =
be->GetObject();
437 }
else if (
be->GetType()==4) {
440 fCollection =
be->GetCollectionProxy()->Generate();
442 fWhere =
be->GetObject();
448 fWhere =
be->GetObject();
450 }
else if (
be->GetType()==41) {
452 fCollection =
be->GetCollectionProxy()->Generate();
453 fWhere =
be->GetObject();
454 fOffset +=
be->GetOffset();
456 }
else if (
be->GetType()==31) {
458 fWhere =
be->GetObject();
459 fOffset +=
be->GetOffset();
461 }
else if (
be->GetType()==2) {
464 fWhere =
be->GetObject();
469 fWhere = ((
unsigned char*)
be->GetObject()) + fOffset;
474 fClassName = fBranch->GetClassName();
477 fClassName = fBranch->GetClassName();
523 if (fMemberOffset < 0) {
524 Error(
"Setup",
"%s",
Form(
"Negative offset %d for %s in %s",
525 fMemberOffset,fBranch->
GetName(),
530 Form(
"Missing data member in a TClonesArray, %s in %s and %s", fDataMember.Data(),
535 }
else if (fParent &&
fClass) {
538 fClass->GetStreamerInfo()->GetElements()->FindObject(fDataMember);
540 fMemberOffset = fElement->GetOffset();
550 if (fMemberOffset < 0) {
552 Form(
"Negative offset %d for %s in %s, class: %s", fMemberOffset, fDataMember.Data(),
557 Form(
"Missing data member %s in %s, class: %s", fDataMember.Data(), fBranch->
GetName(),
567 Error(
"Setup",
"%s",
Form(
"Missing TClass object for %s", fClassName.Data()));
573 fOffset = fMemberOffset;
577 fWhere = ((
unsigned char*)fWhere) + fMemberOffset;
582 if (fWhere!=
nullptr) {