Home | News | Documentation | Download

Spurious StreamerInfo in a TFile

I have a TFile produced by some executable that contains TH1D objects only.
However, when I try to open it with “root”, I get a bunch of errors in the form: “Warning in <TClass::Init>: no dictionary for class SomeClass is available” (these are real classes used in the executable).
I would like to find the place in the source code that “triggers” storing of these spurious “StreamerInfo”.

They are registered to the TFile via either TStreamerInfo::ForceWriteInfo or TBufferIO::TagStreamerInfo (and more exactly by an update of thefile->fClassIndex->fArray[ index_of_streamerinfo] (index is the value of streamerinfo->GetNumber())

I’ve found (and fixed) a bug in the source code where the author erratically executed “aTFile->cd();”, then (in another place) wrote some object into it (which should have been written into another file), then (in yet another place) called “aTFile->Delete("*;1");”. This removed the spurious object, but it left the spurious “StreamerInfo”.
I’m now curious if there exists any way to do a “cleanup” of the existing “StreamerInfo” (e.g., before “aTFile->Write();”).