Hi Carlos,
Instead of using the "conventional" Event-like class,
with hardwired data members, I recommend a dynamic collection of TObject*.
This is much more flexible. One can easily add a new object or collection
to the list of collections for the Event.
TTree has several Branch constructors. Look at the following:
TTree::Branch(TCollection *list, Int_t bufsize, Int_t splitlevel, const
char *name)
This constructor answers your problem/question. see the documentation
of this class that includes an example of use.
http://root.cern.ch/root/htmldoc/src/TTree.cxx.html#TTree:Branch
Rene Brun
On Thu, 6 Mar 2003,
Carlos Muņoz Camacho wrote:
>
> Hi,
>
> Consider a class TEvent containing a pointer to an object
> TDetectorAEvent, which contains itself TClonesArrays and some other
> objects. Everything inherit from TObject. If we write a tree with a TEvent
> in a branch and set maximum splitting, TDetectorAEvent will not split
> because it is not an object itself but a pointer (and even if it is an
> object only splits one level). This behaviour is documented. Only pointers
> to TClonesArray work. The workarounds I can think of are:
>
> 1.- Manual splitting of TEvent, which may be extremely tedious if TEvent
> contains many data members.
>
> 2.- Remove the pointer to the object and use an object itself. This allows
> at least one level of splitting, but having objects themselves and not
> pointers does not allow dynamic allocation.
>
> Are there any other, more interesting, solutions ? Will splitting of
> pointers to TObjects be supported in a near future ? Thanks!
>
> ROOT 3.03/08 in RedHat 7.2
>
> Carlos Muņoz
> SPhN/CEA-Saclay
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET