Re: [ROOT] gROOT->FindObject in TH*::Profile* and TH*::Project*

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Dec 17 2004 - 10:51:28 MET


Hi Thomas,

I understand your argument in your special case.
However we will not apply you suggestion
 -because it will be a violation of the general rule
 -very often the TH2::Projection functions do not produce graphics
 -it is your problem if one of your canvas has the same name as the projection
  of a 2-d histogram

Rene Brun

Thomas Bretz wrote:
> 
> Dear rooters,
> 
> having a possibility to update an existing profile histogram or a
> projection is a good idea, but finding the already existing histogram
> via gROOT->FindObject in my opinion is not a good idea.
> 
> The reason in very simple: gROOT->FindObject searches first everything
> else (eg. canvases, current directory, etc) So the probability is high
> that for example a canvas with the same name is found - which results in
> strange behaviour.
> 
> I guess the typical application is that I draw a profile into a pad.
> Somewhere (eg in a Paint-funtion) I change directory (cd()) into this
> pad and call Profile*() to update the existing profile. In this case it
> would be much more convinient if FindObject would first search in the
> current pad. Because I assume that this is a dangerous change - because
> other parts of the code may rely on the order of searches in FindObject
> I suggest to replace gROOT->FindObject by:
> TObject *obj = gPad ? gPad->FindObject(pname) : 0;
> if (!obj)
>     gROOT->FindObject(pname);
> 
> This in: TH2::ProfileX, TH2::ProfileY, TH2::ProjectX, TH2::ProjectY,
> TH3::ProjectionZ, TH3::Project3D
> 
> Best regards,
> Thomas.



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET