Re: problem with 2.22/09 and TH2F::Fill

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Aug 02 1999 - 17:23:06 MEST


Hi Matt,
A TH2F has the following Fill function prototypes:

private:
   Int_t Fill(Axis_t) { MayNotUse("Fill(Axis_t)"); return -1; }
   Int_t Fill(Axis_t, Stat_t) { MayNotUse("Fill(Axis_t, Stat_t)");
return -1; }
   Int_t Fill(Axis_t, Axis_t, Axis_t, Stat_t) { MayNotUse("Fill(Axis_t,
Axis_t, Axis_t, Stat_t)"); return -1; }

public:
   virtual Int_t   Fill(Axis_t x, Axis_t y);
   virtual Int_t   Fill(Axis_t x, Axis_t y, Stat_t w);

We have implemented in 2.22 some Fill functions to be private to
generate a compilation error in case of a wrong calling sequence.
You can call TH2F::Fill(x,y) with x and y being Axis_t(float).
What happen probably in your case is the following:
  -you use a double for the second argument.
  -you use a constant for the first and second argument

In particular, in the case of a CINT macro, CINT will try to promote
your argument to double if it finds the corresponding prototype.

If you want to call Fill with constants, use Fill with 3 arguments,
the third argument =1.

Rene Brun



Matt Fritts wrote:
> 
> I have successfully downloaded the new version (thanks for the help!) and
> while testing it out with my macros, I found most things ran just fine, but
> when I ran a macro in which I need to fill a 2d histogram the following
> error messages occurred:
> 
> Error: TH2F::Fill is private or protected
> !!!Dictionary position not recorvered because G__unloadfile() in macro!!!
> *** Interpreter error recovered ***
> 
> The file I downloaded was root_v2.22x86.Windows_NT.tar.gz
> 
> Does anyone know why this problem occurs and/or how to fix it? The macro
> runs without error in my copy of version 2.21/08. (Also, there is another
> macro in which TH1D::Fill is used, and this works in both versions.)
> 
> -Matt Fritts



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