181 fFixedAspectRatio =
kFALSE;
184 fNumPaletteColor = 0;
185 fNextPaletteColor = 0;
200 fUxmin = fUymin = fUxmax = fUymax = 0;
249 :
TVirtualPad(
name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
333 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
340 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
341 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
344 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
345 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
356 SetPad(
name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
447 while ((exec = (
TExec*)next())) {
479 const char* title,
Option_t *option)
488 while( (o=next()) ) {
499 if (strlen(option)) {
510 TIter nextgraph(grlist);
513 while ((obj = nextgraph())) {
518 if (strlen(option)) opt = option;
520 leg->AddEntry( obj, mes.
Data(), opt );
525 TIter nexthist(hlist);
528 while ((obj = nexthist())) {
533 if (strlen(option)) opt = option;
535 leg->AddEntry( obj, mes.
Data(), opt );
546 Info(
"BuildLegend(void)",
"No object to build a TLegend.");
589 while ((obj = next())) {
592 if (
n == subpadnumber) {
593 return ((
TPad*)obj)->cd();
662 for (
Int_t i=0;i<2;i++) {
675 while(code1 + code2) {
686 if (ic == 0) ic = code2;
688 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
692 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
696 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
700 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
706 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
710 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
733 for (
Int_t i=0;i<2;i++) {
742 if (
x[0] < xclipl) code1 = code1 | 0x1;
743 if (
x[0] > xclipr) code1 = code1 | 0x2;
744 if (
y[0] < yclipb) code1 = code1 | 0x4;
745 if (
y[0] > yclipt) code1 = code1 | 0x8;
747 if (
x[1] < xclipl) code2 = code2 | 0x1;
748 if (
x[1] > xclipr) code2 = code2 | 0x2;
749 if (
y[1] < yclipb) code2 = code2 | 0x4;
750 if (
y[1] > yclipt) code2 = code2 | 0x8;
754 while(code1 + code2) {
765 if (ic == 0) ic = code2;
767 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
771 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
775 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
779 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
785 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
789 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
802 if (
x < xcl1) code = code | 0x1;
803 if (
x > xcl2) code = code | 0x2;
804 if (
y < ycl1) code = code | 0x4;
805 if (
y > ycl2) code = code | 0x8;
860 for (i=0; i<
n; i++) {
861 x2 =
x[i]; y2 =
y[i];
865 slope = (y2-y1)/(
x2-
x1);
869 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
871 xc2[nc2] =
x2; yc2[nc2++] = y2;
875 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
876 xc2[nc2] =
x2; yc2[nc2++] = y2;
883 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
885 for (i=0; i<nc2; i++) {
886 x2 = xc2[i]; y2 = yc2[i];
890 slope = (
x2-
x1)/(y2-y1);
894 xc[nc] =
x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
896 xc[nc] =
x2; yc[nc++] = y2;
900 xc[nc] =
x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
901 xc[nc] =
x2; yc[nc++] = y2;
908 x1 = xc[nc-1]; y1 = yc[nc-1];
910 for (i=0; i<nc; i++) {
911 x2 = xc[i]; y2 = yc[i];
915 slope = (y2-y1)/(
x2-
x1);
919 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
921 xc2[nc2] =
x2; yc2[nc2++] = y2;
925 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
926 xc2[nc2] =
x2; yc2[nc2++] = y2;
933 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
935 for (i=0; i<nc2; i++) {
936 x2 = xc2[i]; y2 = yc2[i];
940 slope = (
x2-
x1)/(y2-y1);
944 xc[nc] =
x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
946 xc[nc] =
x2; yc[nc++] = y2;
950 xc[nc] =
x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
951 xc[nc] =
x2; yc[nc++] = y2;
991 if (!
gPad->IsBatch())
996 if (!
gROOT->GetListOfCanvases())
return;
998 gROOT->GetListOfCanvases()->Remove(
this);
1019 if (
gROOT->GetSelectedPad() ==
this)
gROOT->SetSelectedPad(0);
1044 while ((obj = next())) {
1046 ((
TPad*)obj)->CopyPixmap();
1047 ((
TPad*)obj)->CopyPixmaps();
1073 Int_t pxl, pyl, pxt, pyt;
1078 if (px1 < px2) {pxl = px1; pxt = px2;}
1079 else {pxl = px2; pxt = px1;}
1080 if (py1 < py2) {pyl = py1; pyt = py2;}
1081 else {pyl = py2; pyt = py1;}
1085 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1092 if (py < pyl) dxl += pyl - py;
1093 if (py > pyt) dxl += py - pyt;
1095 if (py < pyl) dxt += pyl - py;
1096 if (py > pyt) dxt += py - pyt;
1098 if (px < pxl) dyl += pxl - px;
1099 if (px > pxt) dyl += px - pxt;
1101 if (px < pxl) dyt += pxl - px;
1102 if (px > pxt) dyt += px - pxt;
1104 Int_t distance = dxl;
1105 if (dxt < distance) distance = dxt;
1106 if (dyl < distance) distance = dyl;
1107 if (dyt < distance) distance = dyt;
1153 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1154 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1155 if ((*
gThreadXAR)(
"PDCD", 7, arr, 0))
return;
1160 if (nx <= 0) nx = 1;
1161 if (ny <= 0) ny = 1;
1168 char *
name =
new char [nchname];
1169 char *title =
new char [nchtitle];
1172 if (xmargin > 0 && ymargin > 0) {
1176 for (iy=0;iy<ny;iy++) {
1177 y2 = 1 - iy*dy - ymargin;
1178 y1 = y2 - dy + 2*ymargin;
1180 if (y1 > y2)
continue;
1181 for (ix=0;ix<nx;ix++) {
1182 x1 = ix*dx + xmargin;
1183 x2 =
x1 +dx -2*xmargin;
1184 if (
x1 >
x2)
continue;
1209 for (
Int_t i=0;i<nx;i++) {
1213 if (i == nx-1)
x2 = 1-xr;
1214 for (
Int_t j=0;j<ny;j++) {
1215 number = j*nx + i +1;
1218 if (j == 0) y2 = 1-yt;
1219 if (j == ny-1) y1 = 0;
1238 if (padsav) padsav->
cd();
1259 Divide( w,
h, xmargin, ymargin, color);
1269 gROOT->MakeDefCanvas();
1307 Int_t nd,nf,nc,nkd,nkf,i,j;
1320 Range(0,0,xpad,ypad);
1325 clevel[nlevel] = obj;
1334 if (nlevel >= maxlev-1)
break;
1338 Int_t ilevel, nelem;
1339 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1340 cl = clevel[ilevel];
1342 if (nelem > maxelem) maxelem = nelem;
1343 nc = (nelem/50) + 1;
1353 if (dx < 1.3) dx = 1.3;
1354 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1355 if (tsizcm < 0.27) tsizcm = 0.27;
1360 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1361 cl = clevel[ilevel];
1363 if (nelem > maxelem) maxelem = nelem;
1364 nc = (nelem/50) + 1;
1366 if (ilevel < nlevel)
x1 =
x2 + 0.5;
1384 v1 = y1 -
Double_t(nkf+nkd+nc-1)*dy;
1397 if (
box)
box->SetFillColor(17);
1410 if (i >= nkd) { i = 1;
y = y1 - 0.5*dy;
x += 1/
Double_t(nc); }
1411 else { i++;
y -= dy; }
1419 while (indx < dim ){
1420 ldname = strlen(dname);
1431 pt->
AddLine(0,(ysep-v1)/dv,0,(ysep-v1)/dv);
1442 while ((
m = (
TMethod *) nextm())) {
1444 !strcmp(
m->GetName(),
"Dictionary" ) ||
1445 !strcmp(
m->GetName(),
"Class_Version" ) ||
1446 !strcmp(
m->GetName(),
"DeclFileName" ) ||
1447 !strcmp(
m->GetName(),
"DeclFileLine" ) ||
1448 !strcmp(
m->GetName(),
"ImplFileName" ) ||
1449 !strcmp(
m->GetName(),
"ImplFileLine" )
1452 if (fcount > nf)
break;
1453 if (i >= nkf) { i = 1;
y = ysep - 0.5*dy;
x += 1/
Double_t(nc); }
1454 else { i++;
y -= dy; }
1459 for (j=ilevel-1;j>=0;j--) {
1460 if (cl == clevel[ilevel]) {
1461 if (clevel[j]->GetMethodAny((
char*)
m->GetName())) {
1508 Int_t pxmin,pxmax,pymin,pymax,pxold,pyold,px,py;
1520 pxmax = canvas->
GetWw();
1522 pymax = cpad->
GetWh();
1524 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1525 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1552 if (
this != padsav) {
1553 Warning(
"DrawFrame",
"Must be called for the current pad only");
1560 if (hframe)
delete hframe;
1570 for (
Int_t i=1;i<=nbins;i++) {
1573 hframe =
new TH1F(
"hframe",title,nbins,xbins);
1586 if (padsav) padsav->
cd();
1602 gPad->SetFillColor(0);
1616 for (i=0;i<10;i++) {
1623 box->SetFillStyle(1001);
1624 box->SetFillColor(color);
1625 box->DrawBox(xlow, ylow, xup, yup);
1626 box->SetFillStyle(0);
1627 box->SetLineColor(1);
1628 box->DrawBox(xlow, ylow, xup, yup);
1658 const Int_t kMaxDiff = 5;
1659 const Int_t kMinSize = 20;
1660 static Int_t pxorg, pyorg;
1661 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1662 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1663 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1686 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1730 if (newcode)
return;
1797 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1801 pxold = pxl; pyold = pyl; pA =
kTRUE;
1806 pxold = pxt; pyold = pyl; pB =
kTRUE;
1811 pxold = pxt; pyold = pyt; pC =
kTRUE;
1816 pxold = pxl; pyold = pyt; pD =
kTRUE;
1820 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1822 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1826 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1828 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1832 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1834 pxold = pxl; pyold = pyl; pL =
kTRUE;
1838 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1840 pxold = pxt; pyold = pyt; pR =
kTRUE;
1844 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1845 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1846 pxold = px; pyold = py; pINSIDE =
kTRUE;
1854 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1857 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1870 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1871 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1872 if (px < pxlp) { px = pxlp; wx = px; }
1873 if (py < pylp) { py = pylp; wy = py; }
1891 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1892 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1893 if (px > pxtp) { px = pxtp; wx = px; }
1894 if (py < pylp) { py = pylp; wy = py; }
1912 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1913 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1914 if (px > pxtp) { px = pxtp; wx = px; }
1915 if (py > pytp) { py = pytp; wy = py; }
1933 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1934 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1935 if (px < pxlp) { px = pxlp; wx = px; }
1936 if (py > pytp) { py = pytp; wy = py; }
1955 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
1956 if (py2 < py2p) { py2 = py2p; wy = py2; }
1971 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
1972 if (py1 > py1p) { py1 = py1p; wy = py1; }
1987 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
1988 if (px1 < px1p) { px1 = px1p; wx = px1; }
2004 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
2005 if (px2 > px2p) { px2 = px2p; wx = px2; }
2020 Int_t dx = px - pxold;
2021 Int_t dy = py - pyold;
2022 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
2023 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
2024 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
2025 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
2026 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
2040 x1 =
x2 = y1 = y2 = 0;
2067 if (pTop || pBot || pL || pR || pINSIDE) {
2074 if (px != pxorg || py != pyorg) {
2098 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2099 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2100 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2101 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2102 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2103 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2104 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2105 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2106 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2115 if (
gROOT->IsEscaped()) {
2120 if (opaque||ropaque) {
2123 x1 =
x2 = y1 = y2 = 0;
2149 if (pTop || pBot || pL || pR || pINSIDE) {
2156 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2162 if (px != pxorg || py != pyorg) {
2199 event =
gVirtualX->RequestLocator(1, 1, px, py);
2238 static Int_t axisNumber;
2240 static Int_t px1old, py1old, px2old, py2old;
2244 static TBox *zoombox;
2245 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2252 if (strstr(opt,
"cont4")) {
2261 if (!strcmp(axis->
GetName(),
"xaxis")) {
2265 if (!strcmp(axis->
GetName(),
"yaxis")) {
2269 if (!strcmp(axis->
GetName(),
"zaxis")) {
2275 if (axisNumber == 1) {
2281 }
else if (axisNumber == 2) {
2297 if (axisNumber == 1) {
2302 }
else if (axisNumber == 2) {
2316 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2327 if (!opaque)
gVirtualX->SetLineColor(-1);
2335 if (axisNumber == 1) {
2345 if (axisNumber == 1) {
2350 }
else if (axisNumber == 2) {
2365 zoombox->
SetX1(zbx1);
2366 zoombox->
SetY1(zby1);
2367 zoombox->
SetX2(zbx2);
2368 zoombox->
SetY2(zby2);
2401 if (
gROOT->IsEscaped()) {
2403 if (opaque && zoombox) {
2412 if (ratio1 > ratio2) {
2417 if (ratio2 - ratio1 > 0.05) {
2419 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2428 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2429 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2453 if (axisNumber == 1) {
2461 }
else if (axisNumber == 2) {
2489 xmin = ((
xmin-xmi)/(xma-xmi))*(up-low)+low;
2490 xmax = ((
xmax-xmi)/(xma-xmi))*(up-low)+low;
2493 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2494 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2495 if (ratio2 - ratio1 > 0.05) {
2502 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2503 if (axisNumber == 2 && hobj1) {
2520 while ((obj= next())) {
2523 if (hobj == hobj1)
continue;
2526 if (axisNumber == 1) {
2528 }
else if (axisNumber == 2) {
2571 if (found)
return found;
2574 while ((cur = next())) {
2577 if (found)
return found;
2592 if (found)
return found;
2595 while ((cur = next())) {
2598 if (found)
return found;
2673 if (
fCanvas ==
this)
return 0;
2682 if (
fCanvas ==
this)
return 0;
2691 if (
fCanvas ==
this)
return 0;
2834 while ((obj=next())) {
2838 if (found)
return found;
2848 if (!subpadnumber) {
2855 while ((obj = next())) {
2858 if (pad->
GetNumber() == subpadnumber)
return pad;
2905 if (color <= 0)
return;
2923 gROOT->SetSelectedPad(
this);
2940 <<
" Name= "<<
GetName()<<
" Title= "<<
GetTitle()<<
" Option="<<option<<std::endl;
2952 if (opt.
Index(
"pfc")>=0 || opt.
Index(
"plc")>=0 || opt.
Index(
"pmc")>=0) {
2970 if (i>=ncolors) i = ncolors-1;
2982 Int_t const cellSize = 10;
3001 for (
int i = 0; i<
fCGnx; i++) {
3002 for (
int j = 0; j<
fCGny; j++) {
3013 for (
int i=0; i<np; i++) {
3030 for (
int r=i;
r<w+i;
r++) {
3031 for (
int c=j; c<
h+j; c++) {
3051 for (
Int_t i = 0; i<nxmax; i++) {
3052 for (
Int_t j = 0; j<=nymax; j++) {
3065 #define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE; 3092 yt = y1; y1 = y2; y2 = yt;
3094 for (i=
x1+1; i<
x2; i++) {
3101 yt = y1; y1 = y2; y2 = yt;
3104 for (j=y1+1; j<y2; j++) {
3124 for (
int i =
x1; i<=
x2; i++) {
3125 for (
int j = y1; j<=y2; j++)
NotFree(i, j);
3143 for (i =
x1; i<=
x2; i++) {
3148 for (i = y1; i<=y2; i++) {
3166 for (
Int_t i=1; i<
n; i++) {
3167 g->GetPoint(i-1,
x1,y1);
3168 g->GetPoint(i ,
x2,y2);
3182 (
int)((y1-
fY1)/ys), (
int)((y2-
fY1)/ys));
3195 if (
name.Index(
"hframe") >= 0)
return;
3200 bool haserrors =
false;
3205 if (drawOption.
Index(
"hist") < 0) {
3206 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3214 for (i = 1; i<nx; i++) {
3234 for (j=y1; j<=y2; j++) {
3256 x1 = (int)((x1l-
fX1)/xs);
3272 box->SetFillColorAlpha(
kRed,0.5);
3283 for (
int i = 0; i<
fCGnx; i++) {
3286 for (
int j = 0; j<
fCGny; j++) {
3287 if (
gPad->GetLogx()) {
3294 if (
gPad->GetLogy()) {
3303 box->DrawBox(X1L, Y1L, X2L, Y2L);
3305 box->SetFillColorAlpha(
kRed,t);
3306 box->DrawBox(X1L, Y1L, X2L, Y2L);
3310 if (t==0.15) t = 0.1;
3404 began3DScene =
kTRUE;
3411 if (padsav) padsav->cd();
3440 if (color < 0) color = -color;
3447 if (bordersize <= 0) bordersize = 2;
3468 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3469 else {xl =
fX2; xt =
fX1;}
3470 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3471 else {yl =
fY2; yt =
fY1;}
3473 Double_t frameXs[7] = {}, frameYs[7] = {};
3477 frameXs[0] = xl; frameYs[0] = yl;
3478 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3479 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3480 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3481 frameXs[4] = xt; frameYs[4] = yt;
3482 frameXs[5] = xl; frameYs[5] = yt;
3483 frameXs[6] = xl; frameYs[6] = yl;
3490 frameXs[0] = xl; frameYs[0] = yl;
3491 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3492 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3493 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3494 frameXs[4] = xt; frameYs[4] = yt;
3495 frameXs[5] = xt; frameYs[5] = yl;
3496 frameXs[6] = xl; frameYs[6] = yl;
3629 ((
TPad*)obj)->PaintModified();
3641 began3DScene =
kTRUE;
3649 if (padsav) padsav->cd();
3670 if (!
gPad->IsBatch()) {
3673 if (option[0] ==
's') {
3686 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3687 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3736 if (option[0] ==
's') {
3739 if (style0 >= 3100 && style0 < 4000) {
3741 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3742 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3748 if (option[0] ==
'l') {
3767 while ((obj = next())) {
3769 if (obj == stop)
break;
3770 ((
TPad*)obj)->CopyBackgroundPixmap(
x,
y);
3771 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop,
x,
y);
3790 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3823 if (fillstyle >= 3100 && fillstyle < 4000) {
3830 if (!
gPad->IsBatch())
3877 static Double_t ang1[10] = {0., 10., 20., 30., 45.,5., 60., 70., 80., 90.};
3878 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 90.};
3883 Int_t iAng1 = fasi%10;
3891 if (!
gPad->IsBatch()) {
3904 if (!
gPad->IsBatch()) {
3916 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
3917 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
3920 if (!
gPad->IsBatch()) {
3944 const Int_t maxnbi = 100;
3945 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
3946 Double_t ll,
x,
y,
x1,
x2, y1, y2,
a,
b, xi, xip, xin, yi, yip;
3952 ratiox = 1/(rwxmax-rwxmin);
3953 ratioy = 1/(rwymax-rwymin);
3966 gPad->GetPadPar(x1p,y1p,x2p,y2p);
3975 for (i=1; i<=nn; i++) {
3976 x = wndc*ratiox*(xx[i-1]-rwxmin);
3977 y = hndc*ratioy*(yy[i-1]-rwymin);
3978 yrot = sina*
x+cosa*
y;
3984 for (ycur=
ymax; ycur>=
ymin; ycur=ycur-dy) {
3986 for (i=2; i<=nn+1; i++) {
3989 if (i == nn+1) i2=1;
3990 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
3991 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
3992 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
3993 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
3994 xt1 = cosa*
x1-sina*y1;
3995 yt1 = sina*
x1+cosa*y1;
3996 xt2 = cosa*
x2-sina*y2;
3997 yt2 = sina*
x2+cosa*y2;
4008 if ((yi <= ycur) && (ycur < yip)) {
4010 if (nbi >= maxnbi)
return;
4020 if (nbi >= maxnbi)
return;
4023 if (nbi >= maxnbi)
return;
4030 a = (yt1-yt2)/(xt1-xt2);
4031 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4040 if ((xi <= xin) && (xin < xip) &&
4044 if (nbi >= maxnbi)
return;
4053 for (i=1; i<=
m; i++) {
4054 if (xli[i] < xli[i-1]) {
4062 if (
inv == 0)
goto L50;
4068 if (nbi%2 != 0)
continue;
4070 for (i=1; i<=nbi; i=i+2) {
4072 xlh[0] = cosb*xli[i-1]-sinb*ycur;
4073 ylh[0] = sinb*xli[i-1]+cosb*ycur;
4074 xlh[1] = cosb*xli[i] -sinb*ycur;
4075 ylh[1] = sinb*xli[i] +cosb*ycur;
4077 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
4078 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
4079 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
4080 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
4081 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
4092 x[0] =
x1;
x[1] =
x2;
y[0] = y1;
y[1] = y2;
4101 if (!
gPad->IsBatch())
4117 if (!
gPad->IsBatch())
4142 for (i=0;i<3;i++) temp[i] =
p1[i];
4144 for (i=0;i<3;i++) temp[i] =
p2[i];
4146 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4160 for (i=0;i<3;i++) temp[i] =
p1[i];
4162 for (i=0;i<3;i++) temp[i] =
p2[i];
4164 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4180 Int_t i, i1=-1,np=1;
4181 for (i=0; i<
n-1; i++) {
4193 if (iclip == 0 && i <
n-2)
continue;
4194 if (!
gPad->IsBatch())
4227 if (option && (option[0] ==
'C')) mustClip =
kFALSE;
4230 Int_t i, i1=-1, np=1, iclip=0;
4232 for (i=0; i <
n-1; i++) {
4246 if (iclip == 0 && i <
n-2)
continue;
4247 if (!
gPad->IsBatch())
4272 if (!
gPad->IsBatch())
4278 for (
Int_t i=0; i<
n; i++) {
4297 for (
Int_t i = 1; i <
n; i++)
4316 for (i=0; i<
n; i++) {
4320 if (i <
n-1)
continue;
4322 if (np == 0)
continue;
4323 if (!
gPad->IsBatch())
4347 for (i=0; i<
n; i++) {
4351 if (i <
n-1)
continue;
4353 if (np == 0)
continue;
4354 if (!
gPad->IsBatch())
4372 if (!
gPad->IsBatch())
4385 if (!
gPad->IsBatch())
4398 if (!
gPad->IsBatch())
4415 if (!
gPad->IsBatch())
4443 if (
gPad == 0)
return 0;
4450 if (
this !=
gPad->GetCanvas()) {
4459 TPad *picked =
this;
4463 pickobj = &dummyLink;
4492 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4497 }
else if (!
gROOT->GetEditorMode()) {
4504 if (
dist == 0)
break;
4519 if (
fView && !gotPrim) {
4543 if (picked ==
this) {
4565 while ((obj = next()))
4567 char *opt =
StrDup(next.GetOption());
4594 ((
TPad*)
this)->SaveAs(filename);
4606 while ((obj = next())) {
4751 const char *filename;
4769 filename = fs2.
Data();
4772 const char *opt_default=
"ps";
4774 Int_t lenfil = filename ? strlen(filename) : 0;
4775 TString opt = (!option) ? opt_default : option;
4797 if (strstr(opt,
"gif+")) {
4800 }
else if (strstr(opt,
"gif")) {
4803 }
else if (strstr(opt,
"png")) {
4806 }
else if (strstr(opt,
"jpg")) {
4809 }
else if (strstr(opt,
"tiff")) {
4812 }
else if (strstr(opt,
"xpm")) {
4815 }
else if (strstr(opt,
"bmp")) {
4822 if (!
gROOT->IsBatch() && image) {
4825 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4826 gPad->GetCanvas()->SetHighLightColor(-1);
4832 Info(
"Print",
"GIF file %s has been created", psname.
Data());
4834 gPad->GetCanvas()->SetHighLightColor(hc);
4838 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4839 gPad->GetCanvas()->SetHighLightColor(-1);
4854 Info(
"Print",
"file %s has been created", psname.
Data());
4856 gPad->GetCanvas()->SetHighLightColor(hc);
4858 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
4864 if (strstr(opt,
"cxx")) {
4870 if (strstr(opt,
"root")) {
4876 if (strstr(opt,
"xml")) {
4883 if (strstr(opt,
"json")) {
4889 if (strstr(opt,
"svg")) {
4904 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg"))) {
4905 if (
h->LoadPlugin() == -1)
4931 if (strstr(opt,
"tex")) {
4946 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex"))) {
4947 if (
h->LoadPlugin() == -1)
4982 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
4983 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
4984 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
4985 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
4989 if (copen || copenb) mustClose =
kFALSE;
4990 if (cclose || ccloseb) mustClose =
kTRUE;
5001 if (ratio < 1) pstype = 112;
5002 if (strstr(opt,
"Portrait")) pstype = 111;
5003 if (strstr(opt,
"Landscape")) pstype = 112;
5004 if (strstr(opt,
"eps")) pstype = 113;
5005 if (strstr(opt,
"Preview")) pstype = 113;
5013 if (strstr(opt,
"pdf") || strstr(opt,
"Title:")) {
5014 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"pdf"))) {
5015 if (
h->LoadPlugin() == -1)
return;
5020 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"image"))) {
5021 if (
h->LoadPlugin() == -1)
return;
5025 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"ps"))) {
5026 if (
h->LoadPlugin() == -1)
return;
5034 if (titlePos !=
kNPOS) {
5041 if (!strstr(opt,
"pdf") || image) {
5058 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5059 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5068 if (titlePos !=
kNPOS) {
5075 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5076 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5081 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5098 if ((
x1 >=
x2) || (y1 >= y2)) {
5099 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",
x1,y1,
x2,y2);
5137 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5190 while ((obj = next())) {
5200 TH1F *h1f =
mg->GetHistogram();
5201 if (h1f) h1f->
DrawCopy(
"sameaxis");
5207 if (
g)
g->GetHistogram()->DrawCopy(
"sameaxis");
5220 if (padsav) padsav->
cd();
5350 if (
this ==
gPad->GetCanvas()) {
5403 while ((obj = next())) {
5409 if (
gPad->IsBatch())
5427 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5428 if (w <= 0 || w > 10000) {
5429 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),w,10);
5432 if (h <= 0 || h > 10000) {
5433 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),
h,10);
5448 if (padsav ==
this) {
5482 Int_t lenfil = filename ? strlen(filename) : 0;
5485 else psname = filename;
5548 const char *cname =
GetName();
5549 Int_t nch = strlen(cname);
5551 strlcpy(lcname,cname,10);
5552 for (
Int_t k=1;k<=nch;k++) {
if (lcname[nch-k] ==
' ') lcname[nch-k] = 0;}
5553 if (lcname[0] == 0) {
5554 if (
this ==
gPad->GetCanvas()) {strlcpy(lcname,
"c1",10); nch = 2;}
5555 else {strlcpy(lcname,
"pad",10); nch = 3;}
5561 if (
this !=
gPad->GetCanvas()) {
5562 out <<
" "<<std::endl;
5563 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5565 out<<
" TPad *"<<cname<<
" = new TPad("<<quote<<
GetName()<<quote<<
", "<<quote<<
GetTitle()
5572 out<<
" "<<cname<<
"->Draw();"<<std::endl;
5573 out<<
" "<<cname<<
"->cd();"<<std::endl;
5575 out<<
" "<<cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5580 static Int_t viewNumber = 0;
5581 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5582 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
"," 5583 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5588 out<<
" "<<cname<<
"->SetFillColor(ci);" << std::endl;
5590 out<<
" "<<cname<<
"->SetFillColor("<<
GetFillColor()<<
");"<<std::endl;
5593 out<<
" "<<cname<<
"->SetFillStyle("<<
GetFillStyle()<<
");"<<std::endl;
5596 out<<
" "<<cname<<
"->SetBorderMode("<<
GetBorderMode()<<
");"<<std::endl;
5599 out<<
" "<<cname<<
"->SetBorderSize("<<
GetBorderSize()<<
");"<<std::endl;
5602 out<<
" "<<cname<<
"->SetLogx();"<<std::endl;
5605 out<<
" "<<cname<<
"->SetLogy();"<<std::endl;
5608 out<<
" "<<cname<<
"->SetLogz();"<<std::endl;
5611 out<<
" "<<cname<<
"->SetGridx();"<<std::endl;
5614 out<<
" "<<cname<<
"->SetGridy();"<<std::endl;
5617 out<<
" "<<cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5620 out<<
" "<<cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5623 out<<
" "<<cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5626 out<<
" "<<cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5629 out<<
" "<<cname<<
"->SetLeftMargin("<<
GetLeftMargin()<<
");"<<std::endl;
5632 out<<
" "<<cname<<
"->SetRightMargin("<<
GetRightMargin()<<
");"<<std::endl;
5635 out<<
" "<<cname<<
"->SetTopMargin("<<
GetTopMargin()<<
");"<<std::endl;
5638 out<<
" "<<cname<<
"->SetBottomMargin("<<
GetBottomMargin()<<
");"<<std::endl;
5644 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5657 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5677 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5679 out<<
" "<<cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5682 out<<
" "<<cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5685 out<<
" "<<cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5690 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5692 out<<
" "<<cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5695 out<<
" "<<cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5698 out<<
" "<<cname<<
"->SetFrameBorderMode("<<frame->
GetBorderMode()<<
");"<<std::endl;
5701 out<<
" "<<cname<<
"->SetFrameBorderSize("<<frame->
GetBorderSize()<<
");"<<std::endl;
5709 while ((obj = next())) {
5711 if (!strcmp(obj->
GetName(),
"Graph")) ((
TGraph*)obj)->SetName(
Form(
"Graph%d",grnum++));
5714 out<<
" "<<cname<<
"->Modified();"<<std::endl;
5716 if (padsav) padsav->
cd();
5729 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5753 while ((obj = next())) {
5767 if (fstyle == 0) fstyle = 4000;
5860 SetPad(xlow, ylow, xup, yup);
5868 if (!view)
delete fView;
5941 x1 =
x2 = y1 = y2 = 0;
5943 if (aBBox.
fX<bBBox.
fX) {
5959 else if (mode ==
'y') {
5960 if (aBBox.
fY<bBBox.
fY) {
5978 A->SetFillColor(lineColor);
5980 A->SetLineColor(lineColor);
5998 : fa(0), fb(0), fdist(0), fdir(
' ')
6002 : fa(
a), fb(
b), fdist(
dist), fdir(direction)
6028 std::vector<dField> curDist;
6029 std::vector<dField> otherDist;
6039 Int_t dSizeArrow = 12;
6041 movedX = movedY =
false;
6044 if (mode !=
'i') resize =
true;
6046 TPad *is_pad =
dynamic_cast<TPad *
>( object );
6051 static TPad * tmpGuideLinePad;
6054 if (tmpGuideLinePad) {
6055 if (
object == tmpGuideLinePad) {
6056 tmpGuideLinePad->
Delete();
6057 tmpGuideLinePad = 0;
6060 tmpGuideLinePad->
Delete();
6061 tmpGuideLinePad = 0;
6065 prims =
gPad->GetListOfPrimitives();
6072 if (!tmpGuideLinePad){
6073 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6079 tmpGuideLinePad->
Draw();
6080 tmpGuideLinePad->
cd();
6096 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6097 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6098 pMX =
gPad->XtoPixel(MX);
6099 pMY =
gPad->YtoPixel(MY);
6102 if (
cling && (!resize)) {
6110 L->SetLineColor(lineColor);
6114 if (
cling && (!resize)) {
6122 L->SetLineColor(lineColor);
6126 for (
UInt_t i = 0; i<
n; i++) {
6132 if (
cling && (!resize)) {
6139 L->SetLineColor(lineColor);
6144 if (
cling && (!resize)) {
6152 L->SetLineColor(lineColor);
6159 for (
UInt_t i = 0; i<
n; i++) {
6162 aBBox =
a->GetBBox();
6163 for (
UInt_t j = i+1; j<
n; j++) {
6166 bBBox =
b->GetBBox();
6171 dField abDist = dField();
6174 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6175 else curDist.push_back(abDist);
6179 dField abDist = dField();
6182 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6183 else curDist.push_back(abDist);
6191 for (
UInt_t i = 0; i<curDist.size(); i++) {
6192 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6193 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6194 if (
cling && (!movedX) && (!resize)) {
6200 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6201 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6203 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6204 if (
cling && (!movedY) && (!resize)) {
6210 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6211 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6214 for (
UInt_t j = i; j<curDist.size(); j++) {
6216 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6217 if (
cling && (!movedX) && (!resize)) {
6222 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6223 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6226 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6227 if (
cling && (!movedY) && (!resize)) {
6232 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6233 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6240 for (
UInt_t i = 0; i<
n; i++) {
6242 if (
a && (cur !=
a)) {
6243 aBBox =
a->GetBBox();
6255 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6257 A->SetLineColor(lineColor);
6258 A->SetFillColor(lineColor);
6264 A->SetLineColor(lineColor);
6265 A->SetFillColor(lineColor);
6279 A->SetLineColor(lineColor);
6280 A->SetFillColor(lineColor);
6286 A->SetLineColor(lineColor);
6287 A->SetFillColor(lineColor);
6297 if (tmpGuideLinePad) {
6300 tmpGuideLinePad->
Delete();
6301 tmpGuideLinePad = 0;
6387 Int_t nch, nobjects;
6390 if (
b.IsReading()) {
6407 while ((obj = next())) {
6426 TObject::Streamer(
b);
6427 TAttLine::Streamer(
b);
6428 TAttFill::Streamer(
b);
6429 b >> single;
fX1 = single;
6430 b >> single;
fY1 = single;
6431 b >> single;
fX2 = single;
6432 b >> single;
fY2 = single;
6435 TAttPad::Streamer(
b);
6437 TVirtualPad::Streamer(
b);
6438 TAttPad::Streamer(
b);
6439 b >> single;
fX1 = single;
6440 b >> single;
fY1 = single;
6441 b >> single;
fX2 = single;
6442 b >> single;
fY2 = single;
6469 b >> single;
fWNDC = single;
6470 b >> single;
fHNDC = single;
6480 TVirtualPad::Streamer(
b);
6481 TAttPad::Streamer(
b);
6540 char drawoption[64];
6541 for (
Int_t i = 0; i < nobjects; i++) {
6544 b.ReadFastArray(drawoption,nch);
6567 b >> single;
fPhi = single;
6582 b.CheckByteCount(R__s, R__c, TPad::IsA());
6631 while ((obj = next())) {
6715 if (!
gPad)
return 0;
6717 if (strlen(emode))
gROOT->SetEditorMode(emode);
6718 if (
gROOT->GetEditorMode() == 0 && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6722 TObject *oldlast =
gPad->GetListOfPrimitives()->Last();
6725 Bool_t hasname = strlen(pname) > 0;
6726 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6727 if (testlast)
gROOT->SetEditorMode();
6729 if (
gROOT->GetEditorMode() == 0) {
6732 if (obj)
return obj;
6735 obj =
gPad->GetListOfPrimitives()->Last();
6736 if (obj != oldlast)
return obj;
6757 if (
gPad->IsBatch())
return 0;
6758 return (
TObject*)
gROOT->ProcessLineFast(
Form(
"new TGToolTip((TBox*)0x%lx,\"%s\",%d)",
6769 gROOT->ProcessLineFast(
Form(
"delete (TGToolTip*)0x%lx", (
Long_t)tip));
6780 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Reset((TPad*)0x%lx)",
6791 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Hide()",(
Long_t)tip));
6799 ::Info(
"TPad::x3d()",
"This function is deprecated. Use %s->GetViewer3D(\"x3d\") instead",this->
GetName());
6802 if (!type || !type[0]) {
6819 if ( (!type || !type[0] || (strstr(type,
"gl") && !strstr(type,
"ogl"))) && !
fCanvas->
UseGL())
6822 if (type && type[0]) {
6847 if (!strstr(type,
"pad")) {
6851 Warning(
"TPad::CreateViewer3D",
"Cannot create 3D viewer of type: %s", type);
6857 if (strstr(type,
"gl") && !strstr(type,
"ogl"))
6860 createdExternal =
kTRUE;
6876 if (createdExternal) {
6913 Emit(
"RecordPave(const TObject*)", (
Long_t)obj);
6921 Emit(
"RecordLatex(const TObject*)", (
Long_t)obj);
Style_t GetFrameFillStyle() const
Bool_t Collide(Int_t i, Int_t j, Int_t w, Int_t h)
Check if a box of size w and h collide some primitives in the pad at position i,j.
Bool_t fAbsCoord
Use absolute coordinates.
void FillCollideGridTGraph(TObject *o)
virtual const char * GetName() const
Returns name of object.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Int_t GetNdata()
Return the number of data members of this class Note that in case the list of data members is not yet...
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
TVirtualPad * GetPadSave() const
Get save pad.
Int_t VtoPixel(Double_t v) const
Double_t fPixeltoX
xworld = fPixeltoXk + fPixeltoX*xpixel
virtual void SetOpacity(Int_t percent)=0
Double_t fUymin
Minimum value on the Y axis.
void FeedbackMode(Bool_t set)
Turn rubberband feedback mode on or off.
double dist(Rotation3D const &r1, Rotation3D const &r2)
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual void SetPad(const char *name, const char *title, Double_t xlow, Double_t ylow, Double_t xup, Double_t yup, Color_t color=35, Short_t bordersize=5, Short_t bordermode=-1)
Set all pad parameters.
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
virtual void SetAlpha(Float_t a)
void DrawCollideGrid()
This method draws the collide grid on top of the canvas.
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
virtual void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
static void PolyLine(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new PolyLine in gPad.
Float_t GetLeftMargin() const
void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)
Paint line in normalized coordinates.
virtual void DrawClassObject(const TObject *obj, Option_t *option="")
Draw class inheritance tree of the class to which obj belongs.
Double_t GetAbsYlowNDC() const
void SetPadGridX(Bool_t gridx)
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
TList * fPrimitives
->List of primitives (subpads)
virtual void ResizePad(Option_t *option="")
Compute pad conversion coefficients.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
Double_t Floor(Double_t x)
virtual void SetCursor(ECursor cursor)
Set cursor.
void SetPadLeftMargin(Float_t margin=0.1)
Float_t GetPadLeftMargin() const
Int_t GetFirst() const
Return first bin on the axis i.e.
Double_t YtoPad(Double_t y) const
Convert y from Y to pad.
ABC describing GUI independent main window (with menubar, scrollbars and a drawing area)...
virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)=0
TVirtualPad * GetSelectedPad() const
virtual void SetMaximum(Double_t maximum=-1111)
This class displays a legend box (TPaveText) containing several legend entries.
Int_t UtoPixel(Double_t u) const
TList * GetListOfPrimitives() const
TH1 * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
The Histogram stack class.
R__EXTERN Int_t gErrorIgnoreLevel
virtual void DrawCrosshair()
Function called to draw a crosshair in the canvas.
virtual Short_t GetBorderSize() const
virtual void SetLimits(Double_t xmin, Double_t xmax)
virtual TVirtualPad * GetPad(Int_t subpadnumber) const
Get a pointer to subpadnumber of this pad.
virtual TBox * AddBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Add a new graphics box to this pavetext.
Color_t GetTitleTextColor() const
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
virtual void SetBatch(Bool_t batch=kTRUE)
Set pad in batch mode.
virtual Color_t GetTextColor() const
Return the text color.
Bool_t fGridx
Set to true if grid along X.
Double_t fPhi
phi angle to view as lego/surface
Int_t GetNmethods()
Return the number of methods of this class Note that in case the list of methods is not yet created...
TVirtualPadPainter * GetCanvasPainter()
Access and (probably) creation of pad painter.
void CallRecursiveRemoveIfNeeded(TObject &obj)
call RecursiveRemove for obj if gROOT is valid and obj.TestBit(kMustCleanup) is true.
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
virtual Bool_t CanLoopOnPrimitives() const
virtual void Paint(Option_t *option="")
Paint all primitives in pad.
virtual void SetBorderMode(Short_t bordermode)
virtual Short_t GetTextAlign() const
Return the text alignment.
virtual TLine * AddLine(Double_t x1=0, Double_t y1=0, Double_t x2=0, Double_t y2=0)
Add a new graphics line to this pavetext.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Int_t YtoPixel(Double_t y) const
virtual void UseCurrentStyle()
Replace current frame attributes by current style.
Int_t GetCanvasID() const
Get canvas identifier.
All ROOT classes may have RTTI (run time type identification) support added.
void CopyBackgroundPixmaps(TPad *start, TPad *stop, Int_t x, Int_t y)
Copy pixmaps of pads laying below pad "stop" into pad "stop".
virtual Bool_t IsRetained() const
Is pad retained ?
Int_t GetPixmapID() const
virtual Double_t GetNormFactor() const
TString & ReplaceAll(const TString &s1, const TString &s2)
void PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax)
Paint histogram/graph frame.
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
Float_t GetBottomMargin() const
virtual void SetVertical(Bool_t vert=kTRUE)
Set pad vertical (default) or horizontal.
TClass * GetClassPointer(Bool_t load=kTRUE)
Get pointer to the base class TClass.
R__EXTERN TStyle * gStyle
Float_t fBottomMargin
BottomMargin.
Int_t fNumPaletteColor
Number of objects with an automatic color.
void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual void RangeChanged()
virtual void SetSelected(TObject *obj)
Set selected.
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
static void SaveColor(std::ostream &out, Int_t ci)
Save a color with index > 228 as a C++ statement(s) on output stream out.
void PaintPolyLineNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="")
Paint polyline in CurrentPad NDC coordinates.
Short_t fBorderSize
pad bordersize in pixels
Int_t fCGnx
! Size of the collide grid along x
TH1F * DrawFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, const char *title="")
Draw an empty pad frame with X and Y axis.
virtual void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y)=0
TObject * GetSelected() const
Get selected.
virtual void SetBBoxCenter(const TPoint &p)
Set center of the Pad.
Bool_t GetPadGridY() const
virtual void SetFixedAspectRatio(Bool_t fixed=kTRUE)
Fix pad aspect ratio to current value if fixed is true.
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual void SetBorderMode(Short_t bordermode)
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Float_t GetTextAngle() const
Return the text angle.
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual ~TPad()
Pad destructor.
virtual Color_t GetHighLightColor() const
Get highlight color.
Double_t fAbsXlowNDC
Absolute X top left corner of pad in NDC [0,1].
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
virtual Bool_t IsVertical() const
void FillCollideGridTFrame(TObject *o)
Buffer base class used for serializing objects.
TList * fExecs
List of commands to be executed when a pad event occurs.
virtual void CopyPixmap()
Copy the pixmap of the pad to the canvas.
virtual TObject * FindObject(const char *name) const
Search if object named name is inside this pad or in pads inside this pad.
TPluginHandler * FindHandler(const char *base, const char *uri=0)
Returns the handler if there exists a handler for the specified URI.
TVirtualPad * GetPadSave() const
Int_t XtoPixel(Double_t x) const
Double_t GetAbsXlowNDC() const
if object in a pad cannot be picked
virtual void SetMinimum(Double_t minimum=-1111)
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual void DivideSquare(Int_t n, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
"n" is the total number of sub-pads.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax)
Return pad axis coordinates range.
Int_t GetPadTickY() const
Double_t fUxmax
Maximum value on the X axis.
Option_t * GetOption() const
void PaintBorder(Color_t color, Bool_t tops)
Paint the pad border.
void SetTitleFont(Style_t font=62, Option_t *axis="X")
static constexpr double ps
1-D histogram with a float per channel (see TH1 documentation)}
Int_t fCGny
! Size of the collide grid along y
Bool_t PlaceBox(TObject *o, Double_t w, Double_t h, Double_t &xl, Double_t &yb)
Place a box in NDC space.
Double_t fUymax
Maximum value on the Y axis.
Short_t Min(Short_t a, Short_t b)
virtual void Update()
Update pad.
void ToLower()
Change string to lower-case.
virtual void SetBBoxY2(const Int_t y)=0
virtual Int_t CreateDrawable(UInt_t w, UInt_t h)=0
TVirtualPad * GetSelectedPad() const
Get selected pad.
virtual void PaintModified()
Traverse pad hierarchy and (re)paint only modified pads.
R__EXTERN TVirtualMutex * gROOTMutex
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
virtual void SetX1(Double_t x1)
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Double_t fVtoPixel
ypixel = fVtoPixelk + fVtoPixel*vndc
virtual void SetBBoxCenterX(const Int_t x)
Set X coordinate of the center of the Pad.
TObject * GetClickSelected() const
Double_t GetUxmin() const
Returns the minimum x-coordinate value visible on the pad. If log axis the returned value is in decad...
The histogram statistics painter class.
Double_t GetUxmax() const
Returns the maximum x-coordinate value visible on the pad. If log axis the returned value is in decad...
Option_t * GetOption() const
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
virtual void SetLineWidth(Width_t lwidth)=0
virtual TObject * GetParent() const
virtual Int_t Clip(Float_t *x, Float_t *y, Float_t xclipl, Float_t yclipb, Float_t xclipr, Float_t yclipt)
Clipping routine: Cohen Sutherland algorithm.
Int_t fPadPaint
Set to 1 while painting the pad.
Double_t fPixeltoXk
Conversion coefficient for pixel to X World.
Float_t fTopMargin
TopMargin.
TString & Prepend(const char *cs)
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual void Modify()
Change current line attributes if necessary.
virtual void SetX2(Double_t x2)
Bool_t IsModified() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Double_t fAbsWNDC
Absolute Width of pad along X in NDC.
virtual Int_t GetEvent() const
Get Event.
void SetPadBottomMargin(Float_t margin=0.1)
Double_t fAbsPixeltoYk
Conversion coefficient for absolute pixel to Y World.
Double_t GetXlowNDC() const
virtual void ShowGuidelines(TObject *object, const Int_t event, const char mode='i', const bool cling=true)
Shows lines to indicate if a TAttBBox2D object is aligned to the center or to another object...
bit set when zooming on Y axis
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Width_t GetLineWidth() const
Return the line width.
virtual void RecursiveRemove(TObject *obj)
Recursively remove object from a pad and its sub-pads.
void SetPadBorderSize(Width_t size=1)
virtual void SetTopMargin(Float_t topmargin)
Set Pad top margin in fraction of the pad height.
virtual Bool_t IsEditable() const =0
virtual void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, EBoxMode mode)=0
virtual Double_t GetX1() const =0
Int_t fNumber
pad number identifier
virtual void AddLast(TObject *obj)
Add object at the end of the list.
Int_t GetHatchesLineWidth() const
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
static constexpr double mg
void PaintHatches(Double_t dy, Double_t angle, Int_t nn, Double_t *xx, Double_t *yy)
This routine draw hatches inclined with the angle "angle" and spaced of "dy" in normalized device coo...
Double_t fAbsYlowNDC
Absolute Y top left corner of pad in NDC [0,1].
virtual TObject * FindObject(const char *name) const
Delete a TObjLink object.
static void Text(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new TLatex at the cursor position in gPad.
if object in a list can be deleted
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
Double_t GetHatchesSpacing() const
virtual void SetToolTipText(const char *text, Long_t delayms=1000)
Set tool tip text associated with this pad.
void SetOptLogz(Int_t logz=1)
virtual Style_t GetFillStyle() const =0
virtual void SaveImage(TVirtualPad *pad, const char *fileName, Int_t type) const =0
virtual Int_t ClippingCode(Double_t x, Double_t y, Double_t xcl1, Double_t ycl1, Double_t xcl2, Double_t ycl2)
Compute the endpoint codes for TPad::Clip.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
void SetClickSelected(TObject *obj)
virtual Style_t GetLineStyle() const
Return the line style.
virtual Int_t GetDimension() const
void SetTitleBorderSize(Width_t size=2)
virtual TVirtualViewer3D * GetViewer3D(Option_t *type="")
Create/obtain handle to 3D viewer.
Provides 3D viewer interface (TVirtualViewer3D) support on a pad.
virtual void DrawTextNDC(Double_t u, Double_t v, const char *text, ETextMode mode)=0
TVirtualPad * cd(Int_t subpadnumber=0)
Set Current pad.
static const double x2[5]
Double_t fYtoAbsPixelk
Conversion coefficient for Y World to absolute pixel.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Int_t fNextPaletteColor
Next automatic color.
void PaintDate()
Paint the current date and time if the option date is on.
virtual void Cleared(TVirtualPad *pad)
Emit pad Cleared signal.
virtual TVirtualPad * GetVirtCanvas() const
Get virtual canvas.
virtual void Close(Option_t *option="")
Delete all primitives in pad and pad itself.
R__EXTERN Int_t(* gThreadXAR)(const char *xact, Int_t nb, void **ar, Int_t *iret)
Bool_t GetPadGridX() const
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
virtual Bool_t IsBatch() const
Is pad in batch mode ?
virtual const char * GetName() const =0
Returns name of object.
TFrame * GetFrame()
Get frame.
virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)=0
Int_t GetPadTickX() const
The TNamed class is the base class for all named ROOT classes.
virtual Float_t GetTextSize() const
Return the text size.
void HighLight(Color_t col=kRed, Bool_t set=kTRUE)
Highlight pad.
Int_t fLogx
(=0 if X linear scale, =1 if log scale)
virtual Width_t GetLineWidth() const =0
TFrame * fFrame
! Pointer to 2-D frame (if one exists)
UInt_t GetWindowHeight() const
static Int_t GetMaxPickDistance()
Static function (see also TPad::SetMaxPickDistance)
Short_t GetBorderSize() const
void PaintTextNDC(Double_t u, Double_t v, const char *text)
Paint text in CurrentPad NDC coordinates.
virtual void Modify()
Change current fill area attributes if necessary.
Bool_t fEditable
True if canvas is editable.
virtual void ExecuteEventAxis(Int_t event, Int_t px, Int_t py, TAxis *axis)
Execute action corresponding to one event for a TAxis object (called by TAxis::ExecuteEvent.) This member function is called when an axis is clicked with the locator.
TCanvas * fCanvas
! Pointer to mother canvas
virtual void SetCrosshair(Int_t crhair=1)
Set crosshair active/inactive.
const char * GetTitle() const
Returns title of object.
Double_t Log10(Double_t x)
UInt_t GetWw() const
Get Ww.
virtual void DrawText(Double_t x, Double_t y, const char *text, ETextMode mode)=0
static double p2(double t, double a, double b, double c)
TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
void SetPadTickX(Int_t tickx)
virtual void SetBBoxX1(const Int_t x)
Set lefthandside of BoundingBox to a value (resize in x direction on left)
static const double x4[22]
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a box.
virtual void SetLineStyle(Style_t lstyle)=0
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
TString & Append(const char *cs)
void SetSelectedPad(TPad *pad)
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
static constexpr double L
virtual void ls(Option_t *option="") const
List all primitives in pad.
static void DrawColorTable()
Static function to Display Color Table in a pad.
Base class for several text objects.
Int_t fCrosshairPos
Position of crosshair.
Abstract 3D shapes viewer.
void SetTitleTextColor(Color_t color=1)
Double_t fAbsHNDC
Absolute Height of pad along Y in NDC.
Int_t fLogz
(=0 if Z linear scale, =1 if log scale)
virtual void SetLogx(Int_t value=1)
Set Lin/Log scale for X.
virtual Rectangle_t GetBBox()=0
virtual void SetFillColor(Color_t fcolor)=0
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
virtual TObject * GetSelected() const
Get selected.
virtual void RedrawAxis(Option_t *option="")
Redraw the frame axis Redrawing axis may be necessary in case of superimposed histograms when one or ...
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void SaveSource(const char *filename="", Option_t *option="")
Save primitives in this canvas as a C++ macro file.
virtual void SetBorderSize(Short_t bordersize)
virtual TPad * Pick(Int_t px, Int_t py, TObjLink *&pickobj)
Search for an object at pixel position px,py.
virtual void DestroyDrawable(Int_t device)=0
virtual void Draw(Option_t *option="")
Draw Pad in Current pad (re-parent pad if necessary).
virtual void Text(Double_t x, Double_t y, const char *string)=0
R__EXTERN TPluginManager * gPluginMgr
Double_t fYlowNDC
Y bottom left corner of pad in NDC [0,1].
object has not been deleted
virtual void SetEditable(Bool_t mode=kTRUE)
Set pad editable yes/no If a pad is not editable:
Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual Short_t GetBorderSize() const =0
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
Double_t fX2
X of upper X coordinate.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Int_t GetEventX() const
Get X event.
Int_t GetMaxIndex(Int_t dim) const
Return maximum index for array dimension "dim".
virtual void CopyPixmaps()
Copy the sub-pixmaps of the pad to the canvas.
void SetOptLogx(Int_t logx=1)
Double_t GetYlowNDC() const
Double_t fXtoPixel
xpixel = fXtoPixelk + fXtoPixel*xworld
Bool_t * fCollideGrid
! Grid used to find empty space when adding a box (Legend) in a pad
Double_t fPixeltoY
yworld = fPixeltoYk + fPixeltoY*ypixel
void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polyline in CurrentPad World coordinates.
Int_t GetEvent() const
Get Event.
virtual void AddExec(const char *name, const char *command)
Add a new TExec object to the list of Execs.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Int_t UtoPixel(Double_t u) const =0
virtual void Delete(Option_t *option="")
Delete this object.
Using a TBrowser one can browse all ROOT objects.
TObject * fPadView3D
! 3D View of this TPad
virtual Double_t GetY2() const =0
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
Double_t fVtoPixelk
Conversion coefficient for V NDC to pixel.
Double_t fXtoAbsPixelk
Conversion coefficient for X World to absolute pixel.
virtual TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
TPad * fMother
! pointer to mother of the list
Double_t XtoPad(Double_t x) const
Convert x from X to pad.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual TVirtualPad * GetMother() const
Short_t GetBorderMode() const
virtual void SetDoubleBuffer(Int_t mode=1)
Set double buffer mode ON or OFF.
virtual Int_t GetEventX() const
Get X event.
virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth)
Set postscript line attributes.
Int_t IncrementPaletteColor(Int_t i, TString opt)
Increment (i==1) or set (i>1) the number of autocolor in the pad.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
void SetPadBorderMode(Int_t mode=1)
virtual void SetBottomMargin(Float_t bottommargin)
Set Pad bottom margin in fraction of the pad height.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
Int_t fPixmapID
! Off-screen pixmap identifier
virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void SetCursor(ECursor cursor)
Set cursor type.
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void DeleteToolTip(TObject *tip)
Delete tool tip object.
virtual Bool_t HasCrosshair() const
Return kTRUE if the crosshair has been activated (via SetCrosshair).
Class to manage histogram axis.
R__EXTERN TSystem * gSystem
virtual void CloseToolTip(TObject *tip)
Hide tool tip.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
void SetPadColor(Color_t color=19)
Int_t GetPadBorderMode() const
Int_t YtoAbsPixel(Double_t y) const
Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetBBoxX1(const Int_t x)=0
void inv(rsa_NUMBER *, rsa_NUMBER *, rsa_NUMBER *)
virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Set world coordinate system for the pad.
virtual Int_t XtoAbsPixel(Double_t x) const =0
virtual void SetAttFillPS(Color_t color, Style_t style)
Set postscript fill area attributes.
virtual void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual void DeleteExec(const char *name)
Remove TExec name from the list of Execs.
virtual Font_t GetTextFont() const
Return the text font.
virtual TPoint GetBBoxCenter()
Return the center of the Pad as TPoint in pixels.
virtual Bool_t IsEditable() const
Float_t GetPadBottomMargin() const
virtual TObject * Remove(TObject *obj)
Remove object from the list.
UInt_t GetWh() const
Get Wh.
virtual void UseCurrentStyle()
Force a copy of current style for all objects in pad.
Float_t GetPadRightMargin() const
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual TObject * GetPrimitive(const char *name) const
Get primitive.
Double_t GetAbsWNDC() const
virtual void SetBBoxY2(const Int_t y)
Set bottom of BoundingBox to a value (resize in y direction on bottom)
virtual UInt_t GetWh() const
Get Wh.
TView * fView
! Pointer to 3-D view (if one exists)
void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polymarker in CurrentPad World coordinates.
const char * AsSQLString() const
Return the date & time in SQL compatible string format, like: 1997-01-15 20:16:28.
void CopyBackgroundPixmap(Int_t x, Int_t y)
Copy pixmap of this pad as background of the current pad.
virtual void SetView(TView *view=0)
Set the current TView. Delete previous view if view=0.
Width_t fLineWidth
Line width.
static TVirtualViewer3D * Viewer3D(TVirtualPad *pad=0, Option_t *type="")
Create a Viewer 3D of specified type.
The most important graphics class in the ROOT system.
virtual void SetLineColor(Color_t lcolor)=0
virtual Bool_t BuildingScene() const =0
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
char * Form(const char *fmt,...)
virtual void ResetToolTip(TObject *tip)
Reset tool tip, i.e.
virtual void SetAttMarkerPS(Color_t color, Style_t style, Size_t msize)
Set postscript marker attributes.
void AbsCoordinates(Bool_t set)
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb"...
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitives in this pad on the C++ source file out.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
Int_t GetArrayDim() const
Return number of array dimensions.
The ROOT global object gROOT contains a list of all defined classes.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
void PaintLine3D(Float_t *p1, Float_t *p2)
Paint 3-D line in the CurrentPad.
virtual Int_t GetNumber() const =0
virtual TObject * After(const TObject *obj) const
Returns the object after object obj.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
static double p1(double t, double a, double b)
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
Float_t fLeftMargin
LeftMargin.
virtual TCanvas * GetCanvas() const
virtual void Print(const char *filename="") const
Save Pad contents in a file in one of various formats.
virtual void SetCanvasSize(UInt_t ww, UInt_t wh)
Set canvas size.
Double_t fYtoPixel
ypixel = fYtoPixelk + fYtoPixel*yworld
virtual TVirtualPadPainter * GetPainter()
Get pad painter from TCanvas.
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
Bool_t fModified
Set to true when pad is modified.
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
if object destructor must call RecursiveRemove()
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Int_t fCrosshair
Crosshair type (0 if no crosshair requested)
Each class (see TClass) has a linked list of its base class(es).
virtual Double_t GetY1() const =0
virtual TObjLink * FirstLink() const
TPad()
Pad default constructor.
void LineNotFree(Int_t x1, Int_t x2, Int_t y1, Int_t y2)
Mark as "not free" the cells along a line.
Color_t GetTitleFillColor() const
Double_t fUtoAbsPixelk
Conversion coefficient for U NDC to absolute pixel.
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
Color_t GetHighLightColor() const
Get highlight color.
virtual void DrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t yt, Int_t mode, Int_t border, Int_t dark, Int_t light)=0
virtual void SelectDrawable(Int_t device)=0
char * StrDup(const char *str)
Duplicate the string str.
Double_t fY2
Y of upper Y coordinate.
virtual void ResizePad()=0
virtual void BeginScene()=0
Double_t fAspectRatio
ratio of w/h in case of fixed ratio
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetY2(Double_t y2)
virtual Int_t YtoAbsPixel(Double_t y) const =0
virtual void PaintBorderPS(Double_t xl, Double_t yl, Double_t xt, Double_t yt, Int_t bmode, Int_t bsize, Int_t dark, Int_t light)
Paint a frame border with Postscript.
virtual void DrawFillArea(Int_t n, const Double_t *x, const Double_t *y)=0
Width_t GetTitleBorderSize() const
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
virtual void HideToolTip(Int_t event)
Hide tool tip depending on the event type.
void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="")
Paint box in CurrentPad World coordinates.
void FillCollideGridTBox(TObject *o)
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
static const double x1[5]
Double_t fVtoAbsPixelk
Conversion coefficient for V NDC to absolute pixel.
A Pave (see TPave) with text, lines or/and boxes inside.
void SetClickSelectedPad(TPad *pad)
Double_t fXtoPixelk
Conversion coefficient for X World to pixel.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
Int_t GetGLDevice()
Get GL device.
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
virtual Int_t GetEventY() const
Get Y event.
TVirtualPad * GetClickSelectedPad() const
UInt_t GetWindowWidth() const
Wrapper around a TObject so it can be stored in a TList.
Bool_t fGridy
Set to true if grid along Y.
void SetCanvasSize(UInt_t ww, UInt_t wh)
Set Width and Height of canvas to ww and wh respectively.
Print a TSeq at the prompt:
virtual void SetFillStyle(Style_t fstyle)
Override TAttFill::FillStyle for TPad because we want to handle style=0 as style 4000.
Bool_t IsBatch() const
Is pad in batch mode ?
Float_t GetPadTopMargin() const
static void Pad(Int_t event, Int_t px, Int_t py, Int_t)
Create a new pad in gPad.
Double_t fTheta
theta angle to view as lego/surface
virtual void SetTextSize(Float_t tsize=1)=0
Bool_t IsGrayscale()
Check whether this canvas is to be drawn in grayscale mode.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2)
Return pad world coordinates range.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void SetBBoxY1(const Int_t y)=0
const char * AsString() const
Return the date & time as a string (ctime() format).
#define R__LOCKGUARD(mutex)
The color creation and management class.
void Browse(TBrowser *b)
Browse this collection (called by TBrowser).
virtual void SetBBoxY1(const Int_t y)
Set top of BoundingBox to a value (resize in y direction on top)
void FillCollideGridTH1(TObject *o)
Int_t fTickx
Set to 1 if tick marks along X.
virtual TPoint GetBBoxCenter()=0
Int_t GetCrosshair() const
Return the crosshair type (from the mother canvas) crosshair type = 0 means no crosshair.
virtual void Clear(Option_t *option="")
Remove all objects from the list.
virtual TObject * WaitPrimitive(const char *pname="", const char *emode="")
Loop and sleep until a primitive with name=pname is found in the pad.
virtual void GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup)
Return lower and upper bounds of the pad in NDC coordinates.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Width_t GetPadBorderSize() const
void SetPadTopMargin(Float_t margin=0.1)
TVirtualViewer3D * fViewer3D
! Current 3D viewer
Color_t GetFrameLineColor() const
virtual void SetBBoxX2(const Int_t x)
Set right hand side of BoundingBox to a value (resize in x direction on right)
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
Int_t GetEventY() const
Get Y event.
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
virtual Style_t GetLineStyle() const =0
Double_t fXlowNDC
X bottom left corner of pad in NDC [0,1].
Double_t GetAbsHNDC() const
Float_t fRightMargin
RightMargin.
Mother of all ROOT objects.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
Bool_t fFixedAspectRatio
True if fixed aspect ratio.
void Clear(Option_t *option="")
Delete all pad primitives.
virtual Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
virtual Int_t ClipPolygon(Int_t n, Double_t *x, Double_t *y, Int_t nn, Double_t *xc, Double_t *yc, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt)
Clip polygon using the Sutherland-Hodgman algorithm.
TObject * GetObject() const
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
virtual void SetDoubleBuffer(Int_t mode=1)
Set Double Buffer On/Off.
Double_t GetUymax() const
Returns the maximum y-coordinate value visible on the pad. If log axis the returned value is in decad...
virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void Browse(TBrowser *b)
Browse pad.
virtual void RecordPave(const TObject *obj)
Emit RecordPave() signal.
virtual TLegend * BuildLegend(Double_t x1=0.3, Double_t y1=0.21, Double_t x2=0.3, Double_t y2=0.21, const char *title="", Option_t *option="")
Build a legend from the graphical objects in the pad.
const char * GetName() const
Returns name of object.
Int_t XtoAbsPixel(Double_t x) const
Float_t GetTopMargin() const
Abstract base class for elements drawn in the editor.
virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
Automatic pad generation by division.
virtual Int_t VtoPixel(Double_t v) const =0
Double_t GetTheta() const
virtual void Add(TObject *obj)
virtual void PadPaint(TVirtualPad *)
virtual void AutoExec()
Execute the list of Execs when a pad event occurs.
void SetTitleFillColor(Color_t color=1)
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
virtual void SetBBoxX2(const Int_t x)=0
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
virtual void ReleaseViewer3D(Option_t *type="")
Release current (external) viewer.
virtual void SetBBoxCenterX(const Int_t x)=0
virtual UInt_t GetWw() const
Get Ww.
virtual Double_t GetX2() const =0
Short_t Max(Short_t a, Short_t b)
virtual Int_t VtoAbsPixel(Double_t v) const =0
void SetSelected(TObject *obj)
Set selected canvas.
Double_t fYtoPixelk
Conversion coefficient for Y World to pixel.
Width_t GetFrameBorderSize() const
void PaintPolyLine3D(Int_t n, Double_t *p)
Paint 3-D polyline in the CurrentPad.
virtual void Paint(Option_t *option="")
Paint this wbox with its current attributes.
Each ROOT class (see TClass) has a linked list of methods.
virtual void GetRange(Float_t *min, Float_t *max)=0
static void SetGrayscale(Bool_t set=kTRUE)
Set whether all colors should return grayscale values.
virtual Short_t GetBorderMode() const
A Graph is a graphics object made of two arrays X and Y with npoints each.
Int_t NextPaletteColor()
Get the next autocolor in the pad.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
void SetOptLogy(Int_t logy=1)
Double_t Ceil(Double_t x)
Style_t GetFrameLineStyle() const
virtual void DrawPS(Int_t n, Float_t *xw, Float_t *yw)=0
Double_t fHNDC
Height of pad along Y in NDC.
R__EXTERN TVirtualPS * gVirtualPS
virtual void InvalidateCS()
Empty definition.
virtual TText * DrawText(Double_t x, Double_t y, const char *text)
Draw this text with new coordinates.
Double_t AbsPixeltoX(Int_t px)
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual TObject * CreateToolTip(const TBox *b, const char *text, Long_t delayms)
Create a tool tip and return its pointer.
virtual void EndScene()=0
Double_t PadtoY(Double_t y) const
Convert y from pad to Y.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual void Pop()
Pop pad to the top of the stack.
virtual TObjLink * LastLink() const
Bool_t IsRetained() const
Is pad retained ?
virtual void SetAttTextPS(Int_t align, Float_t angle, Color_t color, Style_t font, Float_t tsize)
Set postscript text attributes.
TObject * fPadPointer
! free pointer
virtual Rectangle_t GetBBox()
Return the bounding Box of the Pad.
virtual Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
void SetPadTickY(Int_t ticky)
Color_t GetFrameFillColor() const
Width_t GetFrameLineWidth() const
void SetBatch(Bool_t batch=kTRUE)
Toggle batch mode.
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Double_t fUtoPixelk
Conversion coefficient for U NDC to pixel.
virtual void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax)
Set axis coordinate system for the pad.
static void Line(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new line/arrow in this gPad.
TVirtualPS is an abstract interface to Postscript, PDF, SVG.
virtual void SetNumber(Int_t number)
Double_t fPixeltoYk
Conversion coefficient for pixel to Y World.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
TExec is a utility class that can be used to execute a C++ command when some event happens in a pad...
virtual void HandleInput(EEventType button, Int_t x, Int_t y)
Handle Input Events.
virtual Int_t GetNbinsX() const
Double_t Sqrt(Double_t x)
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save Pad contents in a file in one of various formats.
virtual void Update()
Update canvas pad buffers.
Double_t PadtoX(Double_t x) const
Convert x from pad to X.
Draw all kinds of Arrows.
Double_t fY1
Y of lower Y coordinate.
Int_t fGLDevice
! OpenGL off-screen pixmap identifier
virtual Bool_t IsTransparent() const
virtual const char * GetName() const
Returns name of object.
RooCmdArg FillStyle(Style_t style)
virtual Int_t GetSize() const
void SetPadRightMargin(Float_t margin=0.1)
static void SetMaxPickDistance(Int_t maxPick=5)
static function to set the maximum Pick Distance fgMaxPickDistance This parameter is used in TPad::Pi...
virtual void ClearDrawable()=0
void PaintFillAreaHatches(Int_t n, Double_t *x, Double_t *y, Int_t FillStyle)
This function paints hatched fill area according to the FillStyle value The convention for the Hatch ...
virtual void SetLogz(Int_t value=1)
Set Lin/Log scale for Z.
Double_t fX1
X of lower X coordinate.
static void Pave(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new pavetext in gPad.
void SetPadGridY(Bool_t gridy)
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
TList * GetListOfFunctions() const
TObject * fTip
! tool tip associated with box
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
virtual void SetFillStyle(Style_t fstyle)=0
virtual void SetY1(Double_t y1)
virtual void x3d(Option_t *type="")
Deprecated: use TPad::GetViewer3D() instead.
static Bool_t ContainsTImage(TList *li)
Auxiliary function.
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Paint line in CurrentPad World coordinates.
Double_t AbsPixeltoY(Int_t py)
Double_t fUxmin
Minimum value on the X axis.
virtual void CopyDrawable(Int_t device, Int_t px, Int_t py)=0
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
Double_t GetUymin() const
Returns the minimum y-coordinate value visible on the pad. If log axis the returned value is in decad...
Int_t fTicky
Set to 1 if tick marks along Y.
virtual void SetBBoxCenterY(const Int_t y)
Set Y coordinate of the center of the Pad.
virtual void Open(const char *filename, Int_t type=-111)=0
clip to the frame boundary
virtual void RangeAxisChanged()
virtual Color_t GetLineColor() const =0
Float_t GetRightMargin() const
void Modified(Bool_t flag=1)
Int_t GetFrameBorderMode() const
Bool_t HasFixedAspectRatio() const
To make it possible to use GL for 2D graphic in a TPad/TCanvas.
static Int_t fgMaxPickDistance
Maximum Pick Distance.
static void Ellipse(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new arc/ellipse in this gPad.
virtual void Exec(const char *command="")
Execute the command referenced by this object.
Double_t fUtoPixel
xpixel = fUtoPixelk + fUtoPixel*undc
void FillCollideGrid(TObject *o)
Initialise the grid used to find empty space when adding a box (Legend) in a pad. ...
virtual void SetBorderSize(Int_t bordersize=4)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Short_t fBorderMode
Bordermode (-1=down, 0 = no border, 1=up)
Double_t fAbsPixeltoXk
Conversion coefficient for absolute pixel to X World.
void SetObject(TObject *obj)
Int_t fLogy
(=0 if Y linear scale, =1 if log scale)
void PaintText(Double_t x, Double_t y, const char *text)
Paint text in CurrentPad World coordinates.
virtual const char * GetTitle() const
Returns title of object.
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Double_t fWNDC
Width of pad along X in NDC.
virtual void SetBBoxCenterY(const Int_t y)=0
Style_t fFillStyle
Fill area style.
virtual Int_t GetCanvasID() const
Get canvas identifier.
virtual void RecordLatex(const TObject *obj)
Emit RecordLatex() signal.
Int_t GetOptTitle() const
virtual void SetLeftMargin(Float_t leftmargin)
Set Pad left margin in fraction of the pad width.
void DrawDist(Rectangle_t aBBox, Rectangle_t bBBox, char mode)
Draw Arrows to indicated equal distances of Objects with given BBoxes.
Int_t GetBorderSize() const
Color_t GetPadColor() const
const char * Data() const
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
virtual void SetLogy(Int_t value=1)
Set Lin/Log scale for Y.
static constexpr double g