Hi, all,
I’m having difficulty storing data to a TClonesArray filled with a user-defined class. A simple program that reproduces the error is shown below. (In the actual program, this is part of some code to store the TClonesArray along with other things in a tree.) In this simple code, I try to store data to a TClonesArray and read it back out, but this output doesn’t match what I tried to store. No error messages are generated. Any help would be most appreciated.
Best wishes,
-Daniel
class calcclass : public TObject
{
public:
double Eprecal;
double Ecal;
int debugoutput() {
cerr<<"calcclass----\nEprecal: "<<Eprecal<<"\nEcal : "<<Ecal<<endl;
return 0;
}
};
int clonetest() {
calcclass calcobj;
TClonesArray *calcarr = new TClonesArray("calcclass",40);
for (int i=0; i<20; i++) {
calcarr->Delete();
for (int c=0; c<4; c++) {
calcobj.Eprecal=1234;
calcobj.Ecal=5678;
cerr << i << "\t" << c << endl;
cerr << "object Eprecal: " << calcobj.Eprecal << endl;
cerr << "object Ecal : " << calcobj.Ecal << endl;
new((*calcarr)[c]) calcobj;
calcclass *objectptr = (calcclass*)calcarr->At(c);
cerr << "clones Eprecal: " << objectptr->Eprecal << endl;
cerr << "clones Ecal : " << objectptr->Ecal << endl;
}
}
return 0;
}