[ROOT] TCanvas strange behaviour

From: Henrique de Melo Jorge Barbosa (hbarbosa@ifi.unicamp.br)
Date: Wed Mar 27 2002 - 01:46:28 MET


Dear root masters,

I found something at least peculiar in the behaviour of TCanvas within
cint interpreter:

1) when I create a TCanvas object with:

	t = new TCanvas("","",100,100);

the canvas is not created, but if I type:

	t2 = new TCanvas("name","title",100,100);

the canvas is really created. (it appears on the screen)

2) Now suppose I want to divide the canvas t2 into two, without
space inbetween and both on the same line, then I have to do:

	t2->Divide(2,1,0.,0.);

But then I have no access to the pads:

	t2_1->cd();  // or
	c1_1->cd();

both commands returns error messages.

3) To get tcanvas::divide to work, one must create the canvas with:

	t3 = new TCanvas();

and then one have no control over the dimensions (w x h) but the
TCanvas::Divide works fine. Well, not so fine:

4) why the pads are named c1_1 and c1_2.... and not t3_1 and t3_2??
Naming all divided pads with c1_[index] make it not possible, for 
exemple, to divide two canvas that exist at the sametime. What
happens is that the second divided canvas does not respond to c1_1->cd().


I know that it is most probably that I am missing something, but I
could not figure out what. I am using linux redhat 7, and I tried it with
root3.02/06 and root 3.03. 

I am sending attached a macro with the commands I have described
and its result from within the interpreter. I hope it is of some
help.

thanks,

Henrique Barbosa
--------------------
Campinas - Brasil
The Pierre Auger Observatory





{
t = new TCanvas("","",800,400);
t2 = new TCanvas("a","b",800,400);
t2->Divide(3,2,0.,0.);
t2_1->cd();
c1_1->cd();
t3 = new TCanvas();
t3->Divide(3,2,0.,0.);
t3_1-cd();
c1_1->cd();
t3->~TCanvas();
t4 = new TCanvas();
t4->Divide(3,2,0.,0.);
c1_1->cd();
t5 = new TCanvas();
t5->Divide(3,2,0.,0.);
c1->cd();
c1_1->cd();
c1_n4_1->cd();
c1_n4->cd();
t4->cd();
t5->cd();
c1_1->cd();
t4->cd();
c1_1->cd();
t5->cd();
c1_1->cd();
t5->Divide(3,2,0.,0.);
c1_1->cd();
}

root [0] t = new TCanvas("","",800,400)   
(class TCanvas*)0x86485c0
root [1] t2 = new TCanvas("a","b",800,400)
(class TCanvas*)0x8648a90
root [2] t2->Divide(3,2,0.,0.)            
root [3] t2_1->cd()
Error: No symbol t2_1 in current scope  FILE:/tmp/fileqRsNkD_cint LINE:1
Error: Failed to evaluate t2_1->cd()Possible candidates are...
filename       line:size busy function type and name  
*** Interpreter error recovered ***
root [4] c1_1->cd()
Error: No symbol c1_1 in current scope  FILE:/tmp/filetQ0awX_cint LINE:1
Error: Failed to evaluate c1_1->cd()Possible candidates are...
filename       line:size busy function type and name  
*** Interpreter error recovered ***
root [5] t3 = new TCanvas()
(class TCanvas*)0x868e020
root [6] t3->Divide(3,2,0.,0.)
root [7] t3_1-cd()
Error: No symbol t3_1 in current scope  FILE:/tmp/fileKBEXuf_cint LINE:1
(const int)0
*** Interpreter error recovered ***
root [8] c1_1->cd()
root [9] t3->~TCanvas()
root [10] t4 = new TCanvas()   
(class TCanvas*)0x85a7670
root [11] t4->Divide(3,2,0.,0.)
root [12] c1_1->cd()           
root [13] t5 = new TCanvas()   
(class TCanvas*)0x868f4b0
root [14] t5->Divide(3,2,0.,0.)
root [15] c1->cd()
root [16] c1->cd()
root [17] c1_1->cd()
root [18] c1_n4_1->cd()
Error: No symbol c1_n4_1 in current scope  FILE:/tmp/fileFIuFVm_cint LINE:1
Error: Failed to evaluate c1_n4_1->cd()Possible candidates are...
filename       line:size busy function type and name  
*** Interpreter error recovered ***
root [19] c1_n4->cd()  
root [20] t4->cd()
root [21] t5->cd()
root [22] c1_1->cd()
Error: No symbol c1_1 in current scope  FILE:/tmp/filem6YNAN_cint LINE:1
Error: Failed to evaluate c1_1->cd()Possible candidates are...
filename       line:size busy function type and name  
*** Interpreter error recovered ***
root [23] t4->cd()  
root [24] c1_1->cd()
root [25] t5->cd()  
root [26] c1_1->cd()
Error: No symbol c1_1 in current scope  FILE:/tmp/fileDUBl8m_cint LINE:1
Error: Failed to evaluate c1_1->cd()Possible candidates are...
filename       line:size busy function type and name  
*** Interpreter error recovered ***
root [27] t5->Divide(3,2,0.,0.)
root [28] c1_1->cd()           
Error: No symbol c1_1 in current scope  FILE:/tmp/fileGpXal2_cint LINE:1
Error: Failed to evaluate c1_1->cd()Possible candidates are...
filename       line:size busy function type and name  
*** Interpreter error recovered ***
root [29] .q

This is the end of ROOT -- Goodbye



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