Hi!
Try this:
TCanvas * asde () {
TCanvas * canvas = new TCanvas("d", "c", 600, 400);
TH2D * hist = new TH2D("a", "b", 4, 0, 10, 2, -3, 3);
cout << hist->GetNcells() << endl;
for (size_t i = 1; i <= hist->GetNcells(); i++)
hist->SetBinContent(i, i);
hist->Draw("COLZ");
return canvas;
}
Why do I get “24” as result of “GetNcells()” when my TH2D is made of 2x4 = 8 bins.
“Bins” is not equivalent to “cells”? So what “cells” mean? And what’s the right method “Get…” to call in order to get 8?
In your case GetNcells returns “(1 + GetNbinsX + 1) * (1 + GetNbinsY + 1)” (where these “1s” represent the underflow and the overflow bins).
1 Like
So it counts the underflow and overflow bins too…
How do I set the bin contents correctly then?
I tried this but I do not get what I want:
TCanvas * asde () {
TCanvas * canvas = new TCanvas("d", "c", 600, 400);
TH2D * hist = new TH2D("a", "b", 4, 0, 10, 2, -3, 3);
cout << hist->GetNbinsX() * hist->GetNbinsY() << endl;
for (size_t i = 1; i <= hist->GetNbinsX() * hist->GetNbinsY(); i++)
hist->SetBinContent(i, i);
hist->Draw("COLZ");
return canvas;
}
for (Int_t i = 1; i <= hist->GetNbinsX(); i++)
for (Int_t j = 1; j <= hist->GetNbinsY(); j++)
hist->SetBinContent(i, j, some_double_value);
where you could also use:
hist->SetBinContent(hist->GetBin(i, j), some_double_value);
system
Closed
5
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.