Hi Norbert,
actually there is no bug in the rootcint generated code
and for me it works fine. I use:
//------------------------------ MT.h
#ifndef __MT_HH__
#define __MT_HH__
#include <TObject.h>
#include <TH1.h> // need include, forward decl of TH1F is not enough
class MT: public TObject {
private:
Float_t FoilZ; // Z Position of the Foil
TH1F* hSpinAngleCut[256][16]; //!
TH1F* hSpinAnglePhi;
TH1F* hSpinAngleDiv[256][16]; //
public:
MT(){;}
MT(Text_t* Name, Text_t* Title);
~MT(){;}
void Print(Option_t *);
ClassDef(MT,1) // Muon Spin Rotation Analysis
};
//--------------------------------- MT.cxx
#include <TString.h>
#include "MT.h"
ClassImp(MT)
MT::MT(Text_t *name, Text_t *title)
{
for (int i = 0; i < 256; i++)
for (int j = 0; j < 16; j++)
hSpinAngleDiv[i][j] = new TH1F(Form("%s%d",name, i*100+j), title,
100,0.,100.);
}
void MT::Print(Option_t *)
{
for (int i = 0; i < 256; i++)
for (int j = 0; j < 16; j++)
hSpinAngleDiv[i][j]->Print();
}
#---------- Make
rootcint -f dict.cxx -c MT.h
g++ -fPIC -g `root-config --cflags` -c MT.cxx
g++ -fPIC -g `root-config --cflags` -c dict.cxx
g++ -g -shared -o libmt.so MT.o dict.o
//---------- write.C
{
gSystem.Load("libmt");
MT a("aap","noot");
TFile *f = new TFile("aa.root","recreate");
a.Write();
delete f;
}
//---------- read.C
{
gSystem.Load("libmt");
TFile *f = new TFile("aa.root");
MT.Dump();
MT.Print();
}
Try this and if it still does not work let me know.
Cheers, Fons.
Rene Brun wrote:
>
> Hi Norbert,
> The rootcint code generating the Streamer function in case
> of a 2-d array of pointers is not correct.
> We will fix this in the next release.
> Meanwhile implement your owm Streamer.
>
> Rene Brun
>
> Norbert Danneberg wrote:
> >
> > HI ,
> >
> > I am writing an Object (MTMuSRAnalysis) which contains a 2-dim array of
> > TH1F to a file.
> > When I read this object back from disk I get the error :
> >
> > Error in <TBuffer::ReadObject>: got object of wrong class
> > Error in <TBuffer::ReadObject>: got object of wrong class
> >
> > This problem does not exist in the case of one dimensional arrays of
> > histograms.
> >
> > Do I have to write a custum streamer function ?
> >
> > Cheers,
> >
> > Norbert
> >
> > class MTMuSRAnalysis: public MTAnalysis
> > {
> > private:
> > Float_t FoilZ; // Z Position of the Foil
> > TH1F* hSpinAngleCut[256][16]; //!
> > TH1F* hSpinAnglePhi;
> > TH1F* hSpinAngleDiv[256][16]; //
> >
> > public:
> > MTMuSRAnalysis(){;}
> > MTMuSRAnalysis(Text_t* Name, Text_t* Title, TTree* tree);
> > ~MTMuSRAnalysis(){;}
> >
> > ClassDef(MTMuSRAnalysis,1) // Muon Spin Rotation Analysis
> > };
> >
> > --
> >
> > Norbert Danneberg
> >
> > ETH Zurich - Institute for Particle Physics
> > Laboratory for Nuclear Physics Phone.: +41-1-633-2034
> > Hoenggerberg Fax.: +41-1-633-1067
> > CH-8093 Zurich
> >
> > ETH Zurich - Institute for Particle Physics
> > Paul Scherrer Institute Phone.: +41-56-310-3284
> > CH-5232 Villigen PSI Fax.: +41-56-310-4362
> >
> > email: Norbert.Danneberg@psi.ch
--
Org: CERN, European Laboratory for Particle Physics.
Mail: 1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248
WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7677910
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:16 MET