See an example below in file objarray.C
To run the example, do:
root > .L objarray.C+
root > objarray()
Rene
[code]#include “TH1.h”
#include “TFile.h”
#include “TRandom.h”
class myclass: public TObject {
protected:
TH1F *fA;
TH1F *fB;
public:
myclass();
virtual ~myclass();
myclass(int n);
void Set(int n);
ClassDef(myclass,1)
};
myclass::myclass() {
fA = 0;
fB = 0;
}
myclass::~myclass() {
delete fA;
delete fB;
}
myclass::myclass(int n) {
Set(n);
}
void myclass::Set(int n) {
fA = new TH1F(“A”,“testa”,100,-3,3);
fB = new TH1F(“B”,“testb”,100,-3,3);
if (n <= 0) n=1000;
fA->FillRandom(“gaus”,n);
fA->FillRandom(“landau”,n);
}
void objarray() {
myclass m(5000);
TFile *f = TFile::Open(“objarray.root”,“recreate”);
TH1::AddDirectory(kFALSE);
//write one object to the file
m.Write(“m”);
//create 2-d array and write each array element to the file
myclass m2[10][5];
for (int i=0;i<10;i++) {
for (int j=0;j<5;j++) {
m2[i][j].Set(10i+100j);
m2[i][j].Write(Form(“m2_%d_%d”,i,j));
}
}
//create a 1-d dynamic array of myclass objects
//write all these objects as one single key to to the file
int nm = 25;
TObjArray *array = new TObjArray(nm);
for (int k=0;k<nm;k++) {
myclass m3 = new myclass(100k);
array->AddAt(m3,k);
}
array->Write(“m3”,TObject::kSingleKey);
f->ls();
delete f;
}
[/code]