Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
But the second bug offers no clues as to how it can be solved.
Here's the issue: according to TObject's streamers (and a lot of other things),
fBits
is 4 bytes.This is also true of almost all of the
fBits
branches:The exception is
Particle/Particle.fBits
, whose first event has a number of bytes that does not divide evenly by 4. Upon closer inspection, it's clearly a 6-byte value.However, there's nothing to distinguish this branch with 6 bytes:
from branches with 4 bytes:
So they can't be given different interpretations.
In the end, I think that the 6-bytes vs 4-bytes indicator might be in the
fBits
themselves. See the first 4 bytes of the first event:The ones that have a
16
in them also have event sizes that are divisible by 6:That
16
could bekIsReferenced
...If this is the issue, then the
fBits
would have to become an object type (uproot.AsObjects) that includes the extra 2 bytes if it sees a16
. That would be slow to deserialize (before AwkwardForth) and annoying because nobody cares aboutfBits
.I had another idea: why not just read them in as 1-byte values? Then at least it doesn't break.
That's the second commit.