Re: [ROOT] Dynamic array length in a class

From: Andrea Fontana (Andrea.Fontana@pv.infn.it)
Date: Fri Nov 03 2000 - 08:51:11 MET


Hi Rene,
    thank you very much for the prompt replay. For our case, 
what would you suggest? Shall we try a different approach, 
such as TArrayD or TClonesArray to have arrays with variable 
lenght in a class or at the moment this is not possible yet?

Many thanks and regards,
Andrea

On Thu, 2 Nov 2000, Rene Brun wrote:

> Hi Andrea,
> 
> Data members like SOMETYPE *fData   //[fNdata]
> are OK with the non-split mode, but not with the split mode.
> See the recently announced Users Guide for more info.
> 
> We are planning to support also this case in split mode in the near future.
> 
> Rene Brun
> 
> 
> Andrea Fontana wrote:
> > 
> > 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