Hello root gurus,
We have found a problem when writing more than one TArrayF pointer into a
buffer. For example, we can write a Test (see code below) object into a
file, but when reading it back we get the following error message:
Error in <TBuffer::ReadClass>: illegal class tag=55 (0<tag<=3),
I/O buffer corrupted
*** Break *** segmentation violation
The error does not appear if one of the TArrayF pointers is not
persistent, or if we use the Streamer function in the code below. This
Streamer function only differs from the one automatically generated by
rootcint in the use of the TArrayF::Streamer instead of the >>
and << operators.
This problem did not appear in ROOT version 2.21/08. Have you got insight
what the problem is?
Thanks in advance,
Manuel Sanchez Garcia
Beatriz Fuentes Arenaz
# ifndef TEST_H
# define TEST_H
# include "TObject.h"
# include "TArrayF.h"
class Test : public TObject{
private:
Short_t nSectors, nModules; // number of sectors and modules in
setup
TArrayF *resolution; // plane resolution in cm
TArrayF *efficiency; // efficiency of chamber (in %)
public:
Test(void);
~Test(void);
ClassDef(Test,1)
};
# endif
# include "test.h"
# include <iostream.h>
ClassImp(Test)
Test :: Test(void){
nSectors = 6;
nModules = 4;
efficiency = new TArrayF(nSectors*nModules);
resolution = new TArrayF(nSectors*nModules);
}
Test :: ~Test(void){
if (resolution) delete resolution;
if (efficiency) delete efficiency;
}
#if 0
void Test::Streamer(TBuffer &R__b)
{
// Stream an object of class HMdcsDigiPar.
if (R__b.IsReading()) {
Version_t R__v = R__b.ReadVersion(); if (R__v) { }
TObject::Streamer(R__b);
R__b >> nSectors;
R__b >> nModules;
resolution->Streamer(R__b);
efficiency->Streamer(R__b);
} else {
R__b.WriteVersion(Test::IsA());
TObject::Streamer(R__b);
R__b << nSectors;
R__b << nModules;
resolution->Streamer(R__b);
efficiency->Streamer(R__b);
}
}
#endif
---
Manuel Sanchez Garcia
Beatriz Fuentes Arenaz
Org: Departamento de Fisica de Particulas, despacho 106
Facultad de Fisica
Universidad de Santiago de Compostela
Mail: E - 15706 - Santiago de Compostela Tlf: +34-981-563100 ext:13981
E-Mail: manuel@fpddv1.usc.es Fax: +34-981-521091
beatriz@fpddux.usc.es
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:41 MET