Re: [ROOT] TGraph

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed Feb 28 2001 - 17:21:25 MET


Hi Angela,

By default, only objects of classes TH1 or TTree are automaticalled added
to the list of objects in memory associated to the current directory.
TGraphs, TGraphErrors, etc are not added by default.
You can add any named object to the current directory list if you like.
I have added the relevant statement in your code below.

Rene Brun

Angela Biselli wrote:
> 
> Hi Oliver
> Here a more specific example.
> Try to run this macro
> 
> void test(){
>   Float_t x[2]={2,4};
>   Float_t errx[2]={0.2,0.4};
>   Float_t y[2]={5,6};
>   Float_t erry[2]={0.2,0.4};
>   TGraphErrors *a =new  TGraphErrors(2,x,y,errx,erry);
>   a->SetName("graph");
    gDirectory->GetList()->Add(a); // <==== to add your object a to the cd
> 
>   TH1F *b =new  TH1F("pp","pp",10,0,10);
>   b->Fill(2);
>   b->Fill(4);
> }
> 
> You can get the histogram using FindObject and for example draw it:
> root [2] a=(TH1F*)gROOT->FindObject("pp")
> (const class TH1F*)0x8763500
> root [3] a->Draw()
> 
> But I'm not able to find the graph
> root [4] b=(TGraphErrors*)gROOT->FindObject("graph")
> (const class TGraphErrors*)0x0          <------------pointer to nothing!
> root [5] b->Draw("AP")
> Error: illegal pointer to class object b 0x0 117
> FILE:/tmp/fileB7tW9P_cint LINE:1
> *** Interpreter error recovered ***
> 
> It seems that the graph 'is not in memory'(if this is the right way to
> say) like histograms are.
> I'm just trying to understand if I can recall from the command line a
> graph that I previously created in macro,like I do with histograms
> 
> hope this time is clear
>         Angela
> 
> On Wed, 28 Feb 2001, Oliver Mang wrote:
> 
> > Hi Angela,
> >
> > as you don't give an example of your code, I can only make a rough guess.
> > I assume your macro looks like this:
> > {
> >   TGraph mygraph(...);
> >   [...]
> >   mygraph->Draw();
> > }
> > In this case, the TGraph is created on the stack and exists only inside
> > the macro, i.e. it will disappear when the macro finishes execution. This
> > is normal C/C++ behaviour.
> > If you change your macro to
> >
> > TGraph mygraph();
> > {
> >   [...]
> > }
> > then mygraph will be a global object and 'survive' the end of macro
> > execution (even without being drawn). You should be able to locate it with
> > gROOT->FindObject() _if_ you named your TGraph with SetName() (TGraphs
> > have to have their names explicitly set).
> >
> > HTH,
> > Oliver
> >
> 
> --
> Angela Biselli             homepage : http://ignatz.phys.rpi.edu/~biselli
> Graduate Student           e-mail:biselli@angel.phys.rpi.edu
> Office TEL.518-276-2050



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