We cannot do an automatic split in case a data member is a pointer
to a fundamental type, say:
Float_t *x
We do not know the length of this array. Very likely one of your
data members contains this length, but we do not know its position.
To implement your solution where you want to read your arrays
always at the same address, I suggest a small class
class myArray ; public TObject {
Int_t n; //length of array
Float_t *rx; //!pointer to some static array
}
Note the character "!" as first character of the comment field for *rx.
This character instructs rootcint that you do not want this member
to be persistent.
You must now implement your own version of
myArray::Streamer(TBuffer &buf) {
if (buf.IsReading()) {
buf >> n;
buf.ReadFastArray(rx,n);
} else {
buf << n;
buf.WriteFastArray(rx,n);
}
}
Now in your Event class, you can have
myArray *a1;
myArray *a2; etc
You must take care of initializing once the pointers rx for
your myArray objects.
Rene Brun