Skip to content

[tree] Run multi-source I/O rules regardless of target order - #23762

Open
SamdaniSayam wants to merge 1 commit into
root-project:masterfrom
SamdaniSayam:fix-ioread-target-order
Open

SamdaniSayam wants to merge 1 commit into
root-project:masterfrom
SamdaniSayam:fix-ioread-target-order

Conversation

@SamdaniSayam

@SamdaniSayam SamdaniSayam commented Oct 19, 2026 •

Copy link
Copy Markdown

TStreamerInfo::InsertArtificialElements attaches the rule read function only to the artificial element of the first target and inserts all artificial elements of the rule after the element of the last source.

Previously, TBranchElement::InitInfo stopped collecting artificial elements for a sub-branch as soon as the artificial element name differed from the sub-branch name, while GatherArtificialElements skipped any artificial element whose target name matched an existing sub-branch. When the first target was not the last source, neither the last-source sub-branch nor the parent branch claimed the artificial element carrying the read function.

Allow sub-branches in InitInfo to collect immediately following TStreamerArtificial elements regardless of target name, and update GatherArtificialElements so the parent branch only collects artificial elements not already claimed by a preceding sub-branch.

Fixes #23686.

This Pull request:

Changes or fixes:

Checklist:

  • tested changes locally
  • updated the docs (if necessary)

This PR fixes #

TStreamerInfo::InsertArtificialElements attaches the rule read function
only to the artificial element of the first target and inserts all
artificial elements of the rule after the element of the last source.

Previously, TBranchElement::InitInfo stopped collecting artificial
elements for a sub-branch as soon as the artificial element name
differed from the sub-branch name, while GatherArtificialElements
skipped any artificial element whose target name matched an existing
sub-branch. When the first target was not the last source, neither the
last-source sub-branch nor the parent branch claimed the artificial
element carrying the read function.

Allow sub-branches in InitInfo to collect immediately following
TStreamerArtificial elements regardless of target name, and update
GatherArtificialElements so the parent branch only collects artificial
elements not already claimed by a preceding sub-branch.

Fixes root-project#23686.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

I/O rule with several same-named sources is not executed for a class read from split sub-branches

1 participant