Hi,
I have a class similar to Event.h with an array of Float_t as a member.
I want the dimension of the array to be a non-const parameter (as it will
be read from an input file). The parameter is a static member of an
inherited class, but this can change. The important thing is I don't want
to hardcode the value of the parameter, because it is read from a file.
The solution I found in the documentation is to allocate it dynamically
via a pointer and tell the streamer the size of the array in the
commentary field : //[fSize] . However, fSize needs to be a data member of
the class. Obviously, I don't want to save this data member to file
because it is constant for all the events. If I use fSize //! to avoid
writing it, I get an Error in <TStreamerInfo::Build>. Below is a short
example which reproduces the problem.
Is there a way around this?
ROOT 3.03/08 on a RH 7.2
File: class.C
______________________________________________________
#include "TObject.h"
class TEvent : public TObject {
private :
Int_t fSize; //!
Float_t* fBlocks; //[fSize]
ClassDef(TEvent,1)
};
_______________________________________________
Result:
CINT/ROOT C/C++ Interpreter version 5.15.53, Aug 15 2002
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] .L class.C+
Info in <TUnixSystem::ACLiC>: creating shared library
/dsm/phnpcd232/local/home/cmunoz/./class_C.so
root [1] TEvent *ev=new TEvent();
root [2] TTree t("t","My tree");
root [3] t.Branch("event","TEvent",&ev,16000,99);
Error in <TStreamerInfo::Build>: TEvent, discarding: Float_t* fBlocks,
illegal [fSize]
Carlos Munoz Camacho
SPhN/CEA-Saclay
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET