250 if (!fDirector->GetTree()) {
253 if (!fNotify.IsLinked()) {
254 fNotify.PrependLink(*fDirector->GetTree());
258 if (!fParent->Setup()) {
268 Int_t i = fDirector->GetReadEntry();
269 if (i<0) fDirector->SetReadEntry(0);
270 if (fParent->Read()) {
271 if (i<0) fDirector->SetReadEntry(i);
278 }
else if (
pcl->GetCollectionProxy()) {
281 if (fCollection)
delete fCollection;
282 fCollection =
pcl->GetCollectionProxy()->Generate();
283 pcl = fCollection->GetValueClass();
284 if (
pcl ==
nullptr) {
286 Error(
"Setup",
"Not finding TClass for collection for the data member %s seems no longer be in class %s",fDataMember.Data(),fParent->GetClass()->GetName());
291 fElement = (
TStreamerElement*)
pcl->GetStreamerInfo()->GetStreamerElement(fDataMember, fOffset);
293 fIsaPointer = fElement->IsaPointer();
294 fClass = fElement->GetClassPointer();
295 fMemberOffset = fElement->GetOffset();
296 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();
360 if (
leaf2->GetLeafCount()) {
361 fLeafCount =
leaf2->GetLeafCount();
362 fHasLeafCount =
true;
377 fWhere = (
double*)fBranch->GetAddress();
387 if (
be->GetType() == 3) {
388 fClassName =
"TClonesArray";
391 fOffset =
info->GetElementOffset(
id);
393 fIsaPointer = fElement->IsaPointer();
394 fClass = fElement->GetClassPointer();
396 if ((fIsMember || (
be->GetType()!=3 &&
be->GetType() !=4))
397 && (
be->GetType()!=31 &&
be->GetType()!=41)) {
400 Int_t i =
be->GetTree()->GetReadEntry();
405 if ( fIsMember &&
be->GetType()==3 ) {
407 }
else if (fIsaPointer) {
412 if (!fIsMember) fIsClone =
true;
416 fCollection =
fClass->GetCollectionProxy()->Generate();
417 fClass = fCollection->GetValueClass();
423 fClassName =
be->GetClassName();
427 if (
be->GetType()==3) {
430 if (!fIsMember) fIsClone =
true;
432 fWhere =
be->GetObject();
434 }
else if (
be->GetType()==4) {
437 fCollection =
be->GetCollectionProxy()->Generate();
439 fWhere =
be->GetObject();
445 fWhere =
be->GetObject();
447 }
else if (
be->GetType()==41) {
449 fCollection =
be->GetCollectionProxy()->Generate();
450 fWhere =
be->GetObject();
451 fOffset +=
be->GetOffset();
453 }
else if (
be->GetType()==31) {
455 fWhere =
be->GetObject();
456 fOffset +=
be->GetOffset();
458 }
else if (
be->GetType()==2) {
461 fWhere =
be->GetObject();
466 fWhere = ((
unsigned char*)
be->GetObject()) + fOffset;
471 fClassName = fBranch->GetClassName();
474 fClassName = fBranch->GetClassName();
520 if (fMemberOffset < 0) {
521 Error(
"Setup",
"%s",
Form(
"Negative offset %d for %s in %s",
522 fMemberOffset,fBranch->
GetName(),
527 Form(
"Missing data member in a TClonesArray, %s in %s and %s", fDataMember.Data(),
532 }
else if (fParent &&
fClass) {
535 fClass->GetStreamerInfo()->GetElements()->FindObject(fDataMember);
537 fMemberOffset = fElement->GetOffset();
547 if (fMemberOffset < 0) {
549 Form(
"Negative offset %d for %s in %s, class: %s", fMemberOffset, fDataMember.Data(),
554 Form(
"Missing data member %s in %s, class: %s", fDataMember.Data(), fBranch->
GetName(),
564 Error(
"Setup",
"%s",
Form(
"Missing TClass object for %s", fClassName.Data()));
570 fOffset = fMemberOffset;
574 fWhere = ((
unsigned char*)fWhere) + fMemberOffset;
579 if (fWhere!=
nullptr) {