You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The standard ROOT provides the TFile::MakeProject method, which can generate "source code" for classes present in the file (only "data members" are "recovered" from the "streamer info", of course).
I understand uproot does not provide such functionality (i.e., I cannot get "automatically generated" Python classes).
To start, I'd now like to play with a small "header" tree with just a single branch:
POTInfo_v2 | Header | AsObjects(Model_Header)
The root_directory.file.show_streamers('Header') returns:
Header (v1)
_POT_CountedPerFile: double (TStreamerBasicType)
_POT_NoCut: double (TStreamerBasicType)
_POT_BadBeam: double (TStreamerBasicType)
_POT_BadND280: double (TStreamerBasicType)
_POT_GoodBeamGoodND280: double (TStreamerBasicType)
_POT_0KA: double (TStreamerBasicType)
_POT_200KA: double (TStreamerBasicType)
_POT_250KA: double (TStreamerBasicType)
_POT_m250KA: double (TStreamerBasicType)
_POT_OtherKA: double (TStreamerBasicType)
_POTInfo: double (TStreamerBasicType)
_Spill_NoCut: int (TStreamerBasicType)
_Spill_BadBeam: int (TStreamerBasicType)
_Spill_BadND280: int (TStreamerBasicType)
_Spill_GoodBeamGoodND280: int (TStreamerBasicType)
_SpillInfo: int (TStreamerBasicType)
_IsMC: bool (TStreamerBasicType)
_SoftwareVersion: string (TStreamerSTLstring)
_pot_def_counter: int (TStreamerBasicType)
_spill_def_counter: int (TStreamerBasicType)
So, there are just some double, some int, one bool, and one std::string ordinary variables (no arrays at all).
I get (note: it now thinks _POTInfo and _SpillInfo are arrays):
(...)
DeserializationError: while reading
Header version 6792 as uproot.dynamic.Model_Header_v1 (71320410 bytes)
_POT_CountedPerFile: 2.6612249000050942e-110
_POT_NoCut: 0.0
_POT_BadBeam: 0.0
_POT_BadND280: 0.0
_POT_GoodBeamGoodND280: 0.0
_POT_0KA: 0.0
_POT_200KA: 0.0
_POT_250KA: 0.0
_POT_m250KA: 0.0
_POT_OtherKA: 3.7076069415964e-310
_POTInfo: array([7.67844769e-239, 0.00000000e+000, 0.00000000e+000, 3.70760694e-310,
7.67844769e-239, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
0.00000000e+000], dtype='>f8')
_Spill_NoCut: 0
_Spill_BadBeam: 0
_Spill_BadND280: 96
_Spill_GoodBeamGoodND280: -1051394048
_SpillInfo: array([ 0, 0, 96, -1051394048, 320,
2304], dtype='>i4')
_IsMC: True
Members for Header: (_POT_CountedPerFile), (_POT_NoCut), (_POT_BadBeam), (_POT_BadND280), (_POT_GoodBeamGoodND280), (_POT_0KA), (_POT_200KA), (_POT_250KA), (_POT_m250KA), (_POT_OtherKA), (_POTInfo), (_Spill_NoCut), (_Spill_BadBeam), (_Spill_BadND280), (_Spill_GoodBeamGoodND280), (_SpillInfo), (_IsMC), _SoftwareVersion, _pot_def_counter, _spill_def_counter
attempting to get bytes 234:283
outside expected range 0:246 for this Chunk
in file NumuCCMultiPi_MCrun4.root
in object /header;1
It seems I'm missing something again (adding "library='ak'", "library='np'", or "library='pd'" does not help).
There's nothing exotic about this class definition, so Uproot should be able to read it. I've labeled it "bug (unverified)" as a reminder to try to reproduce it and fix whatever the problem is.
The text was updated successfully, but these errors were encountered:
Discussed in #948
Originally posted by JacekHoleczek August 24, 2023
I need to "move" (to here) my original StackOverflow topic: How can I "dump" / get the content of objects of "experiment specific" / "custom" classes (from a TTree)
Apparently, they do not allow any discussions there (they simply deleted my follow-up).
Many thanks for your reply on the StackOverflow.
The standard ROOT provides the
TFile::MakeProject
method, which can generate "source code" for classes present in the file (only "data members" are "recovered" from the "streamer info", of course).I understand
uproot
does not provide such functionality (i.e., I cannot get "automatically generated" Python classes).To start, I'd now like to play with a small "
header
" tree with just a single branch:The
root_directory.file.show_streamers('Header')
returns:So, there are just some
double
, someint
, onebool
, and onestd::string
ordinary variables (no arrays at all).When I try to retrieve just the first entry:
I get (note: it now thinks
_POTInfo
and_SpillInfo
are arrays):It seems I'm missing something again (adding "
library='ak'
", "library='np'
", or "library='pd'
" does not help).There's nothing exotic about this class definition, so Uproot should be able to read it. I've labeled it "bug (unverified)" as a reminder to try to reproduce it and fix whatever the problem is.
The text was updated successfully, but these errors were encountered: