Re: [ROOT] TH1::GetMinimum(), TH1::GetMaximum() and operator/

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed Oct 02 2002 - 21:08:49 MEST


Hi  Alexandr,

Once you have set a max/minimum for an histogram, this min/max value
is not changed by an operation because in general this does not make
sense.
If you do not set the min/max, then GetMaximum/GetMinimum will
return the expected value after the operation.
In your case, you can reset the max/min (see code below).
Then GetMaximum/Minimum will recompute it automatically.

Rene Brun

On 2 Oct 2002, Alexandr Malusek wrote:

> Hi,
> 
> I just wonder if the following is a bug or feature.
> 
> Functions GetMinimum() and GetMaximum() don't return minimum and
> maximum values for "hc = hb/ha" in the following situation:
> 
> $ cat ex_test.C
> // A problem with GetMinimum() and GetMaximum()
> {
>   const Int_t dim = 3;
>   // The histogram ha
>   TH1F *ha = new TH1F("ha", "ha", dim, 0, 1);
>   for (Int_t i = 1; i <= dim; i++)
>     ha->SetBinContent(i, i);
>   ha->SetMinimum(1);
>   ha->SetMaximum(10);
> 
>   // The histogram hb
>   TH1F *hb = new TH1F("hb", "hb", 3, 0, 1);
>   for (Int_t i = 1; i <= dim; i++)
>     hb->SetBinContent(i, i*i);
>   hb->SetMinimum(0.5);
>   hb->SetMaximum(100);
> 
>   // The histogram hc
>   TH1F *hc = new TH1F(*hb / *ha);
    hc->SetMaximum(-1111); //-1111 is a special value to reset the max/min
    hc->SetMinimum(-1111);
>   
>   cout << "\tminimum\tmaximum" << endl;
>   cout << "ha:\t" << ha->GetMinimum() << '\t' << ha->GetMaximum() << endl;
>   cout << "hb:\t" << hb->GetMinimum() << '\t' << hb->GetMaximum() << endl;
>   cout << "hc:\t" << hc->GetMinimum() << '\t' << hc->GetMaximum() << endl;
> }
> 
> root [] .x ex_test.C
>         minimum maximum
> ha:     1       10          # OK
> hb:     0.5     100         # OK
> hc:     0.5     100         # I expected min = 1/1 = 1, max = 9/3 = 3
> 
> I use root 3.03/08 on IA32 Linux.
> 
> --
> Alexandr.Malusek@imv.liu.se
> 



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