Static array as datamember and backward compability

From: Christoph Blume (C.Blume@gsi.de)
Date: Thu Feb 24 2000 - 15:22:29 MET


Hi All,

  We have the following problem: We use a class that contains arrays of
fixed size as data member and we store these objects in a TClonesArray as
part of a tree. After a while, we found that for some reasons we had to
increase the dimensions of the arrays, which made the root files
containing the old version of that class unreadable. In principle,
streaming the old version with the smaller arrays into the new version is
no problem, since TBuffer::ReadStaticArray() knows about the actual
dimension of the array written to file. However, as soon as the objects
are stored as a part of a TClonesArray the backward compability gets lost.
Somehow the TClonesArray is not able to adjust itself to the different
object size, when it is read in, event though the object itself can be
read in correctly. This problem seems only to occur  in connection with
array-dimensions. Adding a basic type data member for instance, like
a single Int_t, does not cause a problem, provided the streamer function
is customized accordingly.
  So, is this a known limitation of TClonesArray and is there a workaround
(apart from using TObjArray, of course)?

		Greetings,
			Christoph

####################################################################
      Christoph Blume                                         
      GSI, KP1                          E-mail: C.Blume@gsi.de 
      Planckstr. 1                        Tel.: 49-6159-712589
      64220 Darmstadt                     FAX.: 49-6159-712989      
####################################################################



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:19 MET