CINT and pointers on array of pointer on THF1 (and more)

From: Patois Yannick (patois@ganil.fr)
Date: Fri Oct 08 1999 - 14:35:42 MEST


Hello,

/*
I wrote ths message before digging into the rootalk
digest.

I found a message that might be an answer :
http://root.cern.ch/root/roottalk/roottalk98/1293.html

(2D/3D array classes
Masaharu Goto (MXJ02154@nifty.ne.jp)
Sun, 19 Jul 1998 21:37:00 +0900)

Another might refer to a related problem :
http://root.cern.ch/root/roottalk/roottalk98/1295.html

Just tell me if this 2D/3D class is what I need in this case, and if
there's anything new to add.
*/


(  *   Version   2.22/10      28 July 1999   * )
(  on a DEC Alpha OSF1                         )

I have this macro in a file called tototest.C

TH1F *B_sect_r [12][3];
void sub_n_print_hist1(TH1F *sector[][]);
tototest()
{  
  B_sect_r[5][2] = new TH1F("stuff","stuff",200,-10,130);  
  B_sect_r [5][2] ->Fill(20);

  B_sect_r[5][2]->Draw();
  c1->Modified();
  c1->Update();
  sub_n_print_hist1(B_sect_r);
}
void sub_n_print_hist1(TH1F *sector[][])
{
  sector[5][2]->Draw();
  c1->Modified();
  c1->Update();
}


If I do :

root [3] .L prvtest.C
root [4] .b tototest
root [5] tototest()
[...]
19     sub_n_print_hist1(B_sect_r);
FILE:prvtest.C LINE:19 cint>
Error: No symbol sub_n_print_hist1(B_sect_r) in current scope
FILE:/tmp_mnt/home/patois/work/root/rootscripts/./prvtest.C LINE:19
Possible candidates are...
filename       line:size busy function type and name
/tmp_mnt/home/patois/work/root/rootscripts/./prvtest.C  24:7    0
public: void sub_n_print_hist1(TH1F***sector); 
<<<<<<<

I can have it work if I declare sub_n_print_hist1 as taking a TH1F**
instead of a TH1F***:
[...]
void sub_n_print_hist1(TH1F sector[][])
{
  sector[5][2].Draw();
[...]

This would be the first question... Obviously B_sect_r is declared as a
2d array of pointer to TH1F, why then should I refence it as a 2d array
of TH1F when calling a subroutine? CINT seems somethimes not to care too
much about the way I call a member of a class, often, foo->Function()
has the same effect as foo.Function(). Is there any clear rules for
that?



My second question is that the modification doesnt work :
27     sector[5][2].Draw();
FILE:prvtest.C LINE:27 cint> 
 *** Break *** floating point exception

Could someone explain me what I didnt understand about the way CINT work?
thanx.

	Yannick

PS:
btw how to reset root after this kind of crash ? I often get things like
this when loading a new version of a macro after it crashed :

root [12] .L prvtest.C
Function sub_n_print_hist1() busy. loaded after
"/tmp_mnt/home/patois/work/root/rootscripts/./prvtest.C" 

I only know .q and start again... I'm sure there's something better ?


 _/ Yannick Patois _________________ Address (home) __________________
| irc(undernet): Garp on #france25+ | La Villa des Sciences            |
| email : patois@ganil.fr           | 12, avenue de Cambridge          |
| web :http://www.sura.org/~patois/ | 14200 Herouville-Saint-Clair     |
| Tel(home) :+33 (0)2 31 94 50 32   | FRANCE                           |
|___________________________________|__________________________________|



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:40 MET