Re: [ROOT] the commands on normalization doesn't work

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Aug 07 2003 - 23:40:13 MEST


Hi,

What you do seems to be OK, except your command [18]
where you use GetIntegral instead of Integral

Rene Brun

On Thu, 7 Aug 2003, 
tcli wrote:

> Dear root users,
>       From the manual, the commands to normalize a histogram (TH1 *h)
> is:
> Double_t scale = norm/h.Integral();
> h.Scale(scale);
> 
> I tried to normalize a histogram to 1, but that doesn't work. The
> normalized histo isn't drawn. And root doesn't say it's an error.
> However, if I want to include the two lines mentioned above in a macro,
> an error "Error: / Illegal operator for pointer 3 .....
> Error: non class,struct,union object 1/pt used with . or ->..." appears.
> 
> My commands when I do it on the command line, not in the macro:
> root [] TH1F *nj = new TH1F("nj","NJET",100,0,20)
> root [] t.Draw("NJET>>nj")   //NJET is a leave name in a tree
> root [] nj.Draw()            //an un-normalized histo drawn
> root [] Double_t scale = 1/nj.Integral()
> root [] nj.Scale(scale)
> root [] nj.Draw()            //still, an un-normalized histo
> 
> 
> When I try to go further to normalize it per entry and per unit of X
> axis. An error appears.
> 
> My command:
> root [18] Double_t scale = nj.GetXaxis().GetBinWidth(1)/nj.GetIntegral()
> Error: operator '/' divided by zero FILE:(tmpfile) LINE:1
> *** Interpreter error recovered ***
> 
> Any suggestions?
> 
> Thanks in advance!
> 
> tcli
> 



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET