Streamer info disappears when opening a file again for writing using update option

Hi @pcanal @Wile_E_Coyote,

we previously discussed on a problem we were experiencing with info not present in the streamer. See the following post:

The problem was partially solved and we now believe to have a clearer understanding on the origin of the problem.

See the following issue:

I am not sure if this is something we should solve in our side or is an issue on the ROOT side.

Thanks!

The “Processes streamer input/output requires deep review” issue gives a simple macro that “demonstrates” the problem.
@Javier_Galan I guess it would help @pcanal if you attached here the three versions of the "abc.root" file (i.e., after “f->Close();”, "fff->Close();, and “ff->Close();”).

Ok, here I leave the resulting files.

I think we are bypassing the problem in our code by writing all required classes at the beginning of data processing, but perhaps it requires further attention on the ROOT side.

Also, the output during the generation:

(base) jgalan@sultan2:~/rest-framework$ restRoot
Warning in <UnknownClass::SetDisplay>: DISPLAY not set, setting it to 192.168.1.2:0.0
= Loading libraries ...
 - /home/jgalan/rest-framework/install/lib/libRestDetector.so
Heed:
    Database path: /programas/garfield/6.26.06/share/Heed/database
 - /home/jgalan/rest-framework/install/lib/libRestFramework.so
 - /home/jgalan/rest-framework/install/lib/libRestRaw.so
 - /home/jgalan/rest-framework/install/lib/libRestGeant4.so
 - /home/jgalan/rest-framework/install/lib/libRestConnectors.so
 - /home/jgalan/rest-framework/install/lib/libRestAxion.so

Error in <TGClient::TGClient>: only one instance of TGClient allowed
root [0] TFile *f = new TFile("abc.root", "recreate");
root [1] TRestRawMultiFEMINOSToSignalProcess *p = new TRestRawMultiFEMINOSToSignalProcess();
root [2] p->Write();
root [3] f->Write();
root [4] f->ShowStreamerInfo();
OBJ: TList	TList	Doubly linked list : 0

StreamerInfo for class: TNamed, version=1, checksum=0xdfb74a3c
  TObject        BASE            offset=  0 type=66 Basic ROOT object   
  TString        fName           offset=  0 type=65 object identifier   
  TString        fTitle          offset=  0 type=65 object title        

StreamerInfo for class: TRestRawMultiFEMINOSToSignalProcess, version=1, checksum=0xdf002dfc
  TRestRawToSignalProcess BASE            offset=  0 type= 0                     
  unsigned short pay             offset=  0 type=12                     
  unsigned int   fLastEventId    offset=  0 type=13                     
  double         fLastTimeStamp  offset=  0 type= 8                     

StreamerInfo for class: TRestRawToSignalProcess, version=1, checksum=0x3e97af3b
  TRestEventProcess BASE            offset=  0 type= 0                     
  unsigned int   payload         offset=  0 type=13                     
  unsigned int   frameBits       offset=  0 type=13                     
  string         fElectronicsType offset=  0 type=300 ,stl=365, ctype=365, AFTER or AGET       
  int            fMinPoints      offset=  0 type= 3                     
  double         tStart          offset=  0 type= 8                     
  Long64_t       totalBytesReaded offset=  0 type=16                     
  Long64_t       totalBytes      offset=  0 type=16                     
  vector<string> fInputFileNames offset=  0 type=300 ,stl=1, ctype=61,                     

StreamerInfo for class: TRestEventProcess, version=3, checksum=0x2513b303
  TRestMetadata  BASE            offset=  0 type= 0                     

StreamerInfo for class: TRestMetadata, version=9, checksum=0xe298dc45
  TNamed         BASE            offset=  0 type=67 The basis for a named object (name, title)
  TString        fVersion        offset=  0 type=65 <                   
  TString        fCommit         offset=  0 type=65 <                   
  TString        fLibraryVersion offset=  0 type=65 <                   
  bool           fOfficialRelease offset=  0 type=18 <                   
  bool           fCleanState     offset=  0 type=18 <                   
  string         fConfigFileName offset=  0 type=300 ,stl=365, ctype=365,                     
  string         fSectionName    offset=  0 type=300 ,stl=365, ctype=365,                     
  string         configBuffer    offset=  0 type=300 ,stl=365, ctype=365,                     
  string         messageBuffer   offset=  0 type=300 ,stl=365, ctype=365,                     
  bool           fError          offset=  0 type=18                     
  int            fNErrors        offset=  0 type= 3                     
  bool           fWarning        offset=  0 type=18                     
  int            fNWarnings      offset=  0 type= 3                     
  TString        fErrorMessage   offset=  0 type=65                     
  TString        fWarningMessage offset=  0 type=65                     
root [5] f->Close();
root [6] TFile *fff = new TFile("abc.root", "update");
root [7] fff->Close();
root [8] delete fff;
root [9] TFile *ff = new TFile("abc.root", "update");
root [10] TRestAxionSolarFlux *fl = new TRestAxionSolarFlux("fluxes.rml", "LennertHoofPrimakoff");
root [11] fl->Write();
root [12] ff->Write();
root [13] ff->ShowStreamerInfo()
OBJ: TList	TList	Doubly linked list : 0

StreamerInfo for class: TNamed, version=1, checksum=0xdfb74a3c
  TObject        BASE            offset=  0 type=66 Basic ROOT object   
  TString        fName           offset=  0 type=65 object identifier   
  TString        fTitle          offset=  0 type=65 object title        

StreamerInfo for class: TRestMetadata, version=9, checksum=0xe298dc45
  TNamed         BASE            offset=  0 type=67 The basis for a named object (name, title)
  TString        fVersion        offset=  0 type=65 <                   
  TString        fCommit         offset=  0 type=65 <                   
  TString        fLibraryVersion offset=  0 type=65 <                   
  bool           fOfficialRelease offset=  0 type=18 <                   
  bool           fCleanState     offset=  0 type=18 <                   
  string         fConfigFileName offset=  0 type=300 ,stl=365, ctype=365,                     
  string         fSectionName    offset=  0 type=300 ,stl=365, ctype=365,                     
  string         configBuffer    offset=  0 type=300 ,stl=365, ctype=365,                     
  string         messageBuffer   offset=  0 type=300 ,stl=365, ctype=365,                     
  bool           fError          offset=  0 type=18                     
  int            fNErrors        offset=  0 type= 3                     
  bool           fWarning        offset=  0 type=18                     
  int            fNWarnings      offset=  0 type= 3                     
  TString        fErrorMessage   offset=  0 type=65                     
  TString        fWarningMessage offset=  0 type=65                     

StreamerInfo for class: TRestAxionSolarFlux, version=1, checksum=0x6997d4a3
  TRestMetadata  BASE            offset=  0 type= 0                     
  string         fFluxDataFile   offset=  0 type=300 ,stl=365, ctype=365, <                   
  string         fFluxSptFile    offset=  0 type=300 ,stl=365, ctype=365, <                   
  string         fCouplingType   offset=  0 type=300 ,stl=365, ctype=365, <                   
  double         fCouplingStrength offset=  0 type= 8 <                   
  int            fSeed           offset=  0 type= 3 <                   
  double         fBinSize        offset=  0 type= 8 <                   
  double         fPeakSigma      offset=  0 type= 8 <                   
root [14] ff->Close();

abc_fff.root (2.0 KB)
abc_ff.root (2.9 KB)
abc_f.root (2.0 KB)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.