-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failed to read triply jagged structure #226
Comments
So one of the problems is that Line 322 in 3c2ad37
uproot3 does, it's of course obvious that it's neither straightforward, nor easy 😆 cf. https://github.com/scikit-hep/uproot3/blob/54f5151fb7c686c3a161fbe44b9f299e482f346b/uproot3/interp/auto.py#L246
For
Here, we need to hook into the
and there we can see that
Now we get the correct Apparently the I need to sort this out but I am currently lost in all the details (it's along time ago I worked on the automatic parsing part). |
OK, got a bit further Lines 59 to 72 in 3c2ad37
This is definitely not working here. As written above, the regex match on |
I just realised that
and here another example for
|
also #119 |
Indeed, the day has come |
Fixed in #231 and works nicely 🙂 |
I just hit the wall when trying to read triply jagged data in our ROOT files. Let me use this issue to collect my findings, I have to fix this for sure 😉 Feel free to comment though, I am happy about every feedback 😆
E/Evt/trks/trks.fitinf
points to a branch, which is coming from a classEvt
which has avector<Trk>
and eachTrk
has a field calledfitinf
which is avector<double>
. There are other fields which are doubly jagged in this sense, e.g.rec_stages
which is avector<int>
. This means that"E/Evt/trks/trks.fitinf"
will be triply nested.I thought
UnROOT
can eat this but unfortunately it cannot.The streamer information reveals the following differences:
f["E/Evt/trks/trks.E"]
which is a "doubly nested" doublef["E/Evt/trks/trks.fitinf"]
which is a "triply nested" double300
comes fromconst kSTL = 300
(constants.jl
), so it's already giving the correct hint that it's an STL container of the parent class (in this caseTrk
), while the former (E
branch) has streamer type8
(double).Another example is
f["E/Evt/trks/trks.hit_ids"]
which is avector<int>
ofTrk
, so similar tofitinf
butint
. This is obviously encoded infID
:The text was updated successfully, but these errors were encountered: