Hi everybody,
I (still) have problems reading ROOT files which were written with ROOT 4 in ROOT 4. For one class BbrUuidK I managed to get things work, but for a second class KanObj I always get errors like
Error in : object of class KanObj read too few bytes: 6 instead of 34
If I look to the output of GetStreamerInfo()->ls() for these two classes
root [0] gROOT->GetClass(“BbrUuidK”)->GetStreamerInfo()->ls()
StreamerInfo for class: BbrUuidK, version=1
TObject BASE offset= 0 type=-1 Basic ROOT object
UChar_t _uuid[16] offset= 12 type=31 The Persistent Data
UShort_t _successor offset= 32 type=12 The continuation File Index
TString _extension offset= 36 type=65 Extension of continuation file
i= 0, _uuid type= 31, offset= 12, len=16, method=0
i= 1, _successor type= 12, offset= 32, len=1, method=0
i= 2, _extension type= 65, offset= 36, len=1, method=0
root [1] gROOT->GetClass(“KanObj”)->GetStreamerInfo()->ls()
StreamerInfo for class: KanObj, version=1
TObject BASE offset= 0 type=66 Basic ROOT object
KanPersistable BASE offset= 12 type= 0 Basic Kanga persistent object
KanPersistentRefOwner BASE offset= 36 type= 0 Simple class to keep track of owned references
i= 0, TObject type= 66, offset= 0, len=1, method=0
i= 1, KanPersistable type= 0, offset= 12, len=1, method=206796496
i= 2, KanPersistentRefOwner type= 0, offset= 36, len=1, method=206816992
I noticed that for KanObj TObject shows up at
i= 0, TObject type= 66, offset= 0, len=1, method=0
but for BbrUuid it does not.
To make BbrUuidK work I had to set IgnoreTObjectStreamer(). For KanObj I did the same, but the StreamerInfo looks different. This I do not understand.
BTW, both classes are derived from TObject:
class BbrUuidK : public TObject {
class KanObj : public TObject, public KanPersistable, public KanPersistentRefOwner {
Any help or idea is welcome.
Thanks,
Matthias