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();
”).
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.