15 #include "TVirtualPad.h"
16 #include "TPolyMarker.h"
22 #include "TMemberInspector.h"
53 Int_t nbinsx, Axis_t xlow, Axis_t xup,
54 Int_t nbinsy, Axis_t ylow, Axis_t yup)
73 Int_t nbinsx,
const Double_t*
xbins,
74 Int_t nbinsy, Axis_t ylow, Axis_t yup)
94 Int_t nbinsy, Axis_t ylow, Axis_t yup)
113 TH2F::Paint (option);
118 double oldmax = GetMaximumStored ();
119 double oldmin = GetMinimumStored ();
124 TH2F::Paint (option);
139 GetListOfFunctions()->Clear();
143 Double_t umin = gPad->GetUxmin();
144 Double_t umax = gPad->GetUxmax();
145 Double_t
vmin = gPad->GetUymin();
146 Double_t
vmax = gPad->GetUymax();
148 int pxmin = gPad->XtoAbsPixel (umin);
149 int pxmax = gPad->XtoAbsPixel (umax);
150 int pymin = gPad->YtoAbsPixel (
vmin);
151 int pymax = gPad->YtoAbsPixel (
vmax);
152 if (pxmin > pxmax)
std::swap (pxmin, pxmax);
153 if (pymin > pymax)
std::swap (pymin, pymax);
154 int pxsize = pxmax - pxmin + 1;
155 int pysize = pymax - pymin + 1;
156 std::vector<unsigned int>
counts (pxsize * pysize);
158 TVirtualPad* pad = gPad;
161 unsigned int maxcount = 0;
162 unsigned int n =
m_vals.size();
163 for (
unsigned int i=0;
i<
n;
i++) {
166 if (
u < umin)
u = umin;
167 if (
u > umax)
u = umax;
171 int px = pad->XtoAbsPixel (
u);
172 int py = pad->YtoAbsPixel (
v);
173 if (px < pxmin || px > pxmax || py < pymin || py > pymax)
continue;
174 unsigned ndx = (
px-pxmin) + (
py-pymin) * pxsize;
175 assert (ndx <
counts.size());
177 if (
counts[ndx] > maxcount)
181 const unsigned int NCOLOR = 255;
188 else if (maxcount > 2)
189 step =
static_cast<float>(NCOLOR-1)/(maxcount-1);
195 unsigned int ccounts[NCOLOR];
196 std::uninitialized_fill (ccounts, ccounts+NCOLOR, 0);
197 size_t ndxmax =
counts.size();
198 for (
unsigned int i=0;
i < ndxmax;
i++) {
207 TPolyMarker* pms[NCOLOR];
208 std::uninitialized_fill (pms, pms+NCOLOR, (TPolyMarker*)0);
211 for (
int py = pymin;
py <= pymax; ++
py) {
212 for (
int px = pxmin;
px <= pxmax; ++
px) {
213 unsigned int ndx = (
px-pxmin) + (
py-pymin) * pxsize;
214 assert (ndx < ndxmax);
217 Double_t
u = pad->AbsPixeltoX (
px);
218 Double_t
v = pad->AbsPixeltoY (
py);
222 TPolyMarker* pm = pms[
color];
224 pm =
new TPolyMarker (ccounts[
color]);
226 pm->SetMarkerStyle (GetMarkerStyle());
227 pm->SetMarkerSize (GetMarkerSize());
229 pm->SetMarkerColor (TColor::GetColor (
color, 0, 0));
232 pm->SetPoint (ccounts[
color]++,
u,
v);
238 for (
unsigned int i = 0;
i < NCOLOR;
i++) {
256 TString
opt = option;
257 if (!
opt.Contains(
"ICE")) {
259 std::vector<Pair>
tmp;
262 TH2F::Reset (option);
279 return TH2F::Fill (
x,
y,
w);
359 int nx = GetXaxis()->GetNbins();
360 double xlo = GetXaxis()->GetXmin();
361 double xhi = GetXaxis()->GetXmax();
363 int ny = GetYaxis()->GetNbins();
364 double ylo = GetYaxis()->GetXmin();
365 double yhi = GetYaxis()->GetXmax();
369 nx, xscale*
xlo, xscale*
xhi,
370 ny, yscale*
ylo, yscale*
yhi);
375 hnew->GetXaxis()->Set (nx, xscale*
xlo, xscale*
xhi);
376 hnew->GetYaxis()->Set (ny, yscale*
ylo, yscale*
yhi);
377 size_t n = hnew->
m_vals.size();
378 for (
size_t i = 0;
i <
n;
i++) {
379 hnew->
m_vals[
i].first *= xscale;
380 hnew->
m_vals[
i].second *= yscale;