[ROOT] gPad inaccessable

From: Sven Schagen (h31@nikhef.nl)
Date: Wed Jul 10 2002 - 14:52:56 MEST


Dear Rooters,

I came across a slight problem in accessing the gPad-pointer in one of my 
macros. The script below does not execute properly with my version of ROOT
(3.01/06 on RedHat Linux 6.?). ROOT is unable to find or access the 
gPad-pointer:

 Error: non class,struct,union object $gPad used with . or -> FILE:tc.C
LINE:15

Any ideas on what is causing this effect ?

	Cheers,
		Sven Schagen

// Failing Macro
void test1(void)
{
  gROOT->Reset();
  TCanvas c1("c1","test canvas",400,400);
  c1.Divide(2,2);
  TH1F* histo = new TH1F("histo","histo",1,1,2);
  histo->SetBinContent(1,10);
  for(Int_t i = 0; i < 4; i++){
    c1.cd(i+1); 
    if(i == 1)           // Remove this statement, and the script works
      gPad->SetLogx();
    histo->Draw();
  }
}

The problem can be solved by doing the following:

// Successfull Macro
void test2(void)
{
  gROOT->Reset();
  TCanvas c1("c1","test canvas",400,400);
  c1.Divide(2,2);
  TH1F* histo = new TH1F("histo","histo",1,1,2);
  histo->SetBinContent(1,10);
  for(Int_t i = 0; i < 4; i++){
    c1.cd(i+1);
    TPad* paddy = gPad;         // Store the gPad pointer in a temp var.
    if(i==1)
      paddy->SetLogx();
    histo->Draw();
  }
}



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:59 MET