TClonesArray::AddAt

From: Pasha Murat (murat@cdfsga.fnal.gov)
Date: Wed Dec 24 1997 - 06:22:52 MET


	Hi Steve,

you understand everything correctly however what you are observing is not 
a bug but something intentionally put into design (which is not what is called 
"design feature"). TClonesArray is designed to behave very much like 
a regular array of pointers to *the same* objects and not like STL container.
It is optimised for handling arrays of clones as its name states. In particular
it means that all your track objects should have the *same* length.
You can't insert new pointers in the middle of TClonesArray, however [] operator
is smart enough to expand TClonesArray if necessary so you can't overwrite
(write out of) it. 

Run-time message you are getting says that the corresponding virtual Add* 
methods of TSeqCollection from which TClonesArray is derived have been 
explicitly defined for TClonesArray to overwtrite corresponding methods 
of TObjArray (which is also a base class for TClonesArray). You may want 
to use TObjArray instead of TClonesArray to get more container-like and 
less array-like behaviour.

						Regards, Pasha.
--------------------------------------------------------------------------------
Stephen_Eichblatt writes:
 > 
 > Hello,
 > 
 > I am building a class to use in ROOT. I want to use a TClonesArray
 > to store an array of my subclass.
 > >From reading the documentation, i see that the TClonesArray::AddAt
 > is the method i want to use to add elements.
 > eg:
 > 
 >   fTracks->AddAt((TObject *)track,i);
 > 
 > where fTracks is a TClonesArray* .
 > 
 > When i use it, i get the run-time message:
 > 
 > Warning in <TClonesArray::AddAt>: may not use this method
 > 
 > 
 > I then decided that TClonesArray::AddLast would suit my needs, but
 > i get a similar run-time error.
 > Similarly for AddAfter & AddFirst.
 > 
 > In the end, i do it like the Event / Track example, using the 
 > 
 >    TClonesArray &tracks = *fTracks;
 >    new(tracks[fNtrack++]) Track(random);
 > 
 > which works. Is this a bug or am i misunderstanding the documentation?
 > 
 > I am using Linux version 1.03/06.
 > 
 > Thank you very much.
 > 
 > Steve Eichblatt
 > eichblatt@fnal.gov



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:26:23 MET