[ROOT] Root 3.00.06, schema evolution, and StreamerInfo

From: Heather Kelly (heather@lheapop.gsfc.nasa.gov)
Date: Thu Mar 22 2001 - 22:36:33 MET


Hi,

I am trying to use to Root 3.00.06, and am using Windows NT 4.

I have an Event class that I have used with both Root 2.22/10 and Root
2.25/03.  I wanted to start using the schema evolution that is now
available.  To that end I followed the directions in the page
http://root.cern.ch/root/SchemaEvolution.html.  

In this case, I moved the streamers to the implementation files,
incremented the version numbers of all classes, and modified the LinkDef.h
so that all classes were of the form:
#pragma link C++ class Event-;

Here is an example streamer, where we use the new method ReadBuffer if the
version number is > 1:


void Event::Streamer(TBuffer &R__b)
{
   // Stream an object of class Event.
   if (R__b.IsReading()) {
      UInt_t R__s, R__c;
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); 
      if (R__v > 1) 
      { 
          Event::Class()->ReadBuffer(R__b, this, R__v, R__s, R__c);
          return;
      }
      /// Old Versions
      TObject::Streamer(R__b);
      R__b >> m_run;
      R__b >> m_event;
      R__b >> m_CAL;
      R__b >> m_ACD;
      R__b >> m_TKR;
      R__b >> m_MCPart;
      R__b >> m_L1Trigger;
      R__b >> m_Tagger;
   } else {
       Event::Class()->WriteBuffer(R__b, this);
   }
}

I can write a file (using Root 3.00.06) just fine, with no warnings...but
when I go to open the root file (again in Root 3.00.06)..I receive a number
of warning messages:

WARNING, class:Event StreamerInfo read from file:myfile.root
        has the same version:2 than the active class
        but a different checksum.
        You should update the version to ClassDef(Event,3).
        Do not try to write objects with the current class definition,
        the files will not be readable.

What am I doing incorrectly?

Thank you,
Heather

********************************************************************
Heather Maria Theresa Arrighi Kelly
Goddard Space Flight Center
T2 Room 59
phone (301) 286-8359
fax   (301) 286-1629



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:40 MET