Re: [ROOT] Clone()

From: Anton Fokin (anton.fokin@smartquant.com)
Date: Tue Feb 13 2001 - 10:43:40 MET


Hi Victor,

if you have any "name-dependent" actions in the constructor/streamer,
setting name after Clone() doesn't help.

---
    TPortfolio *Portfolio = (TPortfolio*)
gROOT->GetListOfSpecials()->FindObject(GetName());
    if (Portfolio) {
      Warning("Init","Replacing existing portfolio: %s",GetName());
      gROOT->GetListOfSpecials()->Remove(Portfolio);
      delete Portfolio;
    }

    gROOT->GetListOfSpecials()->Add(this);
---

The code above will delete parent object. I thought TObject::Clone(const
char* Name = "") is quite natural solution which is also back compatible.

Regards,
Anton

http://www.smartquant.com



----- Original Message -----
From: Victor Perevoztchikov <perev@bnl.gov>
To: Anton Fokin <anton.fokin@smartquant.com>
Cc: roottalk <roottalk@pcroot.cern.ch>
Sent: Tuesday, February 13, 2001 12:07 AM
Subject: Re: [ROOT] Clone()


> Hi Anton,
>
> > I think it might be wise to add/improve
> >
> > TObject::Clone(const char* Name="")
> It is easy to do after:
>
>    p = xxx->Clone(); p->SetName("***");
>
> I think that any complication of root basis
> should be done only if user can not do it himself.
> Or it is too complicated.
>
> So it is better to keep TObject as simple as possible.
>
> Victor
>
>
> Anton Fokin wrote:
> >
> > Hi rooters,
> >
> > I think it might be wise to add/improve
> >
> > TObject::Clone(const char* Name="")
> >
> > function, which sets Name in case of  TNamed derived classes. This is
useful
> > if you clone named objects like TH1, especially if you algorithm deletes
> > overwritten object with the same name.
> >
> > TPortfolio *ClonePortfolio = Portfolio->Clone("ClonePortfolio");
> >
> > can help a lot.
> >
> > /Anton
> >
> > http://www.smartquant.com
>
> --
> Victor M. Perevoztchikov   perev@bnl.gov  perev@vxcern.cern.ch
> Brookhaven National Laboratory MS 510A PO Box 5000 Upton NY 11973-5000
> tel office : 631-344-7894; fax 631-344-4206; home 631-345-2690
>
>



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:36 MET