Hi Valery - (I'm sorry for non-finished previous mail sent to you) let
me put it in slightly different form: suppose I comment out the part related to
the to TROOT initialization and the check of whether a
class has a dictionary denerated in TClonesArray constructor (see the code below).
I'd guess that it still would be possible to use such an object in many cases.
Just to give an example: TObjArray which is also supposed to keep pointers to
TObject's doesn't check if the object put into it inherits from TObject or not.
Then one may do the checks commented out in the constructor below in the methods
where these checks are really necessary.
This would allow to decouple to a certain extent the use of TClonesArray's and
the generation of the dictionaries which would be very nice from the point of
view of general design.
-Merry Christmas, pasha
//______________________________________________________________________________
TClonesArray::TClonesArray(Text_t *classname, Int_t s, Bool_t) : TObjArray(s)
{
// Create an array of clone objects of classname. The class must inherit from
// TObject. If the class defines an own operator delete(), make sure that
// it looks like this:
//
// void MyClass::operator delete(void *vp)
// {
// if ((Long_t) vp != TObject::GetDtorOnly())
// ::operator delete(vp); // delete space
// else
// TObject::SetDtorOnly(0);
// }
//
// The third argument is not used anymore and only there for backward
// compatibility reasons.
// if (!gROOT)
// ::Fatal("TClonesArray::TClonesArray", "ROOT system not initialized");
fKeep = 0;
// fClass = gROOT->GetClass(classname);
// if (!fClass) {
// Error("TClonesArray", "%s is not a valid class name", classname);
// return;
// }
// if (!fClass->InheritsFrom(TObject::Class())) {
// Error("TClonesArray", "%s does not inherit from TObject", classname);
// return;
// }
fKeep = new TObjArray(s);
}
--------------------------------------------------------------------------------