Re: [ROOT] TVector3 and TLorentzVector

From: Clark McGrew (mcgrew@ale.physics.sunysb.edu)
Date: Tue Oct 10 2000 - 21:26:36 MEST


>>>>> "GAH" == George Heintzelman <gah@bnl.gov> writes:

    >> > TVector3 and TLorentzVector have been left unchanged since
    >> your mail > and the discussion following it. These two classes
    >> were supposed to be in > phase with the same classes in
    >> CLHEP. It is my understanding that the CLHEP > maintainers were
    >> against your proposal (from some private emails!).

    >> I think allowing more powerful and understandable code to be
    >> written is far more important than saving a few bytes here and
    >> there, but anyway.

    GAH> However, when you build a library, this is completely
    GAH> different. Since you're building it (hopefully) for general
    GAH> use and re-use, you do not have any constraint on the
    GAH> application people will eventually put it to, and so you
    GAH> should make it as lean and mean as possible.

Yes, but I think the key here is reuse.  Unless there is an extremely
good justification for *preventing* a class from being inherited, then
it seems library classes should be designed to encourage it.  I gather
this is not a problem in ROOT since the vector classes derive from
TObject, but it's pretty short sighted in CLHEP.  And, if a class can
be inherited then an application that needs special performance can
start by sub-classing the base class while the application is being
written and debugged.  Later after it's debugged, through the magic of
C++ the class's inheritance can be changed to use the extremely
fast/small/whatever special purpose class.

Cheers,
Clark



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:35 MET