Re: [ROOT] gPad inaccessable

From: Fabrizio Pierella (Fabrizio.Pierella@cern.ch)
Date: Wed Jul 10 2002 - 17:02:35 MEST


 Hi Sven,
the following is working for me (3.03/06)

void test1(){
  TCanvas c1("c1","test canvas",400,400);
  c1->Divide(2,2);
  gPad->GetCanvas()->FeedbackMode(kTRUE);
  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) 
      gPad->SetLogx(); 
    histo->Draw(); 
  }
}

 Regards,
                                    Fabrizio

+=======================================================+ 
||  Fabrizio Pierella                                  ||        
||  E-mail: Fabrizio.Pierella@cern.ch                  ||        
||          pierella@bo.infn.it                        ||        
||  Tel.    CERN (Bld.29-R-019)   +41 (22) 7677767     ||      
||          in Bologna (off.203)  +39 051  2091103     ||
+=======================================================+



On Wed, 10 Jul 2002, Sven Schagen wrote:

> 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