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