Dear Rooters,
we want to save an array with variable length in a tree.
The array is a data member of a class and the tree branches are
created according to the class definition in split mode.
The array length is also member of the class.
We tried the following class definition: it is compiled correctly,
but then the program crashes on execution.
What did we not understand?
Many thanks,
Andrea Fontana & Germano Bonomi
THenaEvent.h:
=============
#ifndef ATH_HenaEvent
#define ATH_HenaEvent
//
//
// Athena Event Class
//
//
#include "TObject.h"
#include "TArrayD.h"
class THenaEvent : public TObject {
protected:
Int_t fSlot;
Int_t fRawEventNum;
Char_t fRawEventTime[13];
Int_t fTOFEventNum;
Int_t fSIS_time;
Int_t fNData;
Double_t *fData; //[fNData]
Int_t fType;
public:
THenaEvent();
~THenaEvent();
void SetHead(Int_t, Int_t, Char_t *,Int_t, Int_t);
void SetData(Int_t, Int_t, Double_t *);
Int_t GetSlot() {return fSlot;}
Char_t * GetRawTime() {return fRawEventTime;}
Int_t GetRawNum() {return fRawEventNum;}
Int_t GetTOFNum() {return fTOFEventNum;}
Int_t GetSISTime() {return fSIS_time;}
Int_t GetNData() {return fNData;}
Int_t GetType() {return fType;}
Double_t * GetData() {return fData;}
ClassDef(THenaEvent,1)
};
#endif
THenaEvent.C:
=============
#include "THenaEvent.h"
ClassImp(THenaEvent);
THenaEvent::THenaEvent()
{
}
THenaEvent::~THenaEvent()
{
}
void THenaEvent::SetHead(Int_t Slot, Int_t RawEventNum, Char_t *RawEventTime, Int_t Type, Int_t NData)
{
fSlot=Slot;
fRawEventNum=RawEventNum;
strcpy(fRawEventTime,RawEventTime);
fType=Type;
fNData=NData;
}
void THenaEvent::SetData(Int_t TOFEventNum, Int_t SIS_counts, Double_t *Data)
{
for(int i=0;i<fNData;i++){
fData[i]=Data[i];
}
fTOFEventNum=TOFEventNum;
fSIS_time=SIS_counts;
}
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:36 MET