Hi,
I faced the strange behavior.
Assuming two 2D histograms
h_ptshouldervsn_eff and h_ptshouldervsn
are defined, I run the function (2deff.C file):
void twodeff ()
{
h_ptshouldervsn_eff.Reset ();
int in = 0;
for (; in < 3; in++) {
double sum = 0.;
int ip = 3;
while (--ip >= 0) {
printf ("before: ip %d in %d sum %f\n", ip, in, sum);
sum += h_ptshouldervsn.GetBinContent(ip, in);
printf ("after: ip %d in %d sum %f\n",
ip, in, sum);
h_ptshouldervsn_eff.SetBinContent(ip, in, sum);
}
}
}
.root [16] .L 2deff.C
root [17] twodeff()
It results to infinite loop:
...
after: ip 0 in 0 sum 0.000000
before: ip 2 in 1 sum 0.000000
after: ip 2 in 0 sum 0.000000
before: ip 1 in 0 sum 0.000000
after: ip 1 in 0 sum 0.000000
before: ip 0 in 0 sum 0.000000
after: ip 0 in 0 sum 0.000000
before: ip 2 in 1 sum 0.000000
after: ip 2 in 0 sum 0.000000
before: ip 1 in 0 sum 0.000000
after: ip 1 in 0 sum 0.000000
...
I conclude that GetBinContent overwrites second
argument. Why?
Thanks, Fedor.
root [17] twodeff() --
MS318(CDF/Rutgers) Fermilab, Batavia, IL 60510 USA
Tel.:+1(630)840-8435 Fax:+1(630)840-6315
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:47 MET