3265 const Int_t big = 9999;
3266 const Int_t kMaxDiff = 7;
3277 Int_t curdist = big;
3278 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
3281 if (!PadPointer)
return 0;
3295 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
3297 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
3299 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
3300 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
3311 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
3320 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
3332 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
3341 if (yxaxis < puymin) yxaxis = puymin;
3342 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
3352 if ((px > puxmin) && (py < puymin) && (px < puxmax) && (py > puymax))
3368 Int_t bin =
th2->FindBin(pxu, pyu);
3369 if (bin>0) curdist = 1;
3375 if ( px > puxmin + delta2
3376 && px < puxmax - delta2
3377 && py > puymax + delta2
3378 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
3382 if (
gPad->IsVertical()) {
3387 if (binval == 0 && pybin < puymin) pybin = 10000;
3393 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3395 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3396 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3398 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
3399 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
3400 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
3402 if (bin != binsup) {
3404 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
3405 if (py <=
TMath::Max(pybinsub,pybin) && py >=
TMath::Min(pybinsub,pybin) && pybin != 10000)
return 0;
3415 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
3421 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3423 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3424 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3426 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
3427 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
3428 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
3438 if (
f->InheritsFrom(TF1::Class())) dist =
f->DistancetoPrimitive(-px,py);
3439 else dist =
f->DistancetoPrimitive(px,py);
3440 if (dist < kMaxDiff) {
gPad->SetSelected(
f);
return dist;}
3453 Error(
"DrawPanel",
"need to draw histogram first");
3458 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%zx)->Selected((TVirtualPad*)0x%zx,(TObject*)0x%zx,1)",
3459 (
size_t)
gPad->GetCanvas(), (
size_t)
gPad, (
size_t)
fH));
3473 static Int_t bin, px1, py1, px2, py2, pyold;
3474 static TBox *zoombox =
nullptr;
3478 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3481 if (!
gPad->IsEditable())
return;
3502 if (IsSame.
Index(
"same")>=0) {
3504 TIter next(
gPad->GetListOfPrimitives());
3505 while ((
h1 = (
TH1 *)next())) {
3522 if (!opaque)
gVirtualX->SetLineColor(-1);
3523 fH->TAttLine::Modify();
3525 if (opaque && dimension ==2) {
3526 zbx1 =
gPad->AbsPixeltoX(px);
3527 zbx2 =
gPad->AbsPixeltoX(px);
3528 zby1 =
gPad->AbsPixeltoY(py);
3529 zby2 =
gPad->AbsPixeltoY(py);
3532 if (
gPad->GetLogx()) {
3536 if (
gPad->GetLogy()) {
3540 if (zoombox)
Error(
"ExecuteEvent",
"Last zoom box was not deleted");
3541 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3558 if (dimension ==1) {
3566 x =
gPad->AbsPixeltoX(px);
3570 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3571 ylow =
gPad->GetUymin();
3572 px1 =
gPad->XtoAbsPixel(xlow);
3573 px2 =
gPad->XtoAbsPixel(xup);
3574 py1 =
gPad->YtoAbsPixel(ylow);
3584 if (dimension ==1) {
3585 if (
gROOT->GetEditHistograms()) {
3594 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3601 if (opaque && dimension ==2) {
3603 zbx2 =
gPad->AbsPixeltoX(px);
3604 zby2 =
gPad->AbsPixeltoY(py);
3608 zoombox->
SetX2(zbx2);
3609 zoombox->
SetY2(zby2);
3620 if (dimension ==2) {
3625 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3630 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3639 if (dimension == 2) {
3644 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3649 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3657 if (dimension ==1) {
3658 if (
gROOT->GetEditHistograms()) {
3659 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3667 if (opaque && dimension ==2) {
3677 if (
x1<
x2 && y1<y2) {
3696 event =
gVirtualX->RequestLocator(1, 1, px, py);
3723 if (!dt && !dtOld)
return nullptr;
3742 if (!
gPad)
return (
char*)
"";
3752 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3753 uxmin=
gPad->GetUxmin();
3754 uxmax=
gPad->GetUxmax();
3758 uymin=
gPad->GetUymin();
3759 uymax=
gPad->GetUymax();
3765 Int_t binx,biny,binmin=0,binx1;
3766 if (
gPad->IsVertical()) {
3768 if (drawOption.
Index(
"same") >= 0) {
3770 TIter next(
gPad->GetListOfPrimitives());
3771 while ((
h1 = (
TH1 *)next())) {
3784 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3796 if (drawOption.
Index(
"same") >= 0) {
3798 TIter next(
gPad->GetListOfPrimitives());
3799 while ((
h1 = (
TH1 *)next())) {
3812 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3838 biny =
th2->FindBin(
x,
y);
3840 th2->GetBinTitle(biny),
x,
y,biny,
th2->GetBinContent(biny));
3846 fObjectInfo.
Form(
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3902 if (!changedBin)
return;
3928 if (
gPad->GetLogx()) {
3932 if (
gPad->GetLogy()) {
3939 if (
gPad->IsVertical()) {
3941 if ((hcenter < uxmin) || (hcenter > uxmax))
return;
3944 if ((hcenter < uymin) || (hcenter > uymax))
return;
3948 if ((hcenter < uymin) || (hcenter > uymax))
return;
3953 if (
gPad->IsVertical()) {
4043 Int_t nch = strlen(choptin);
4044 strlcpy(chopt,choptin,128);
4070 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
4076 char *l1 = strstr(chopt,
"PFC");
4077 char *l2 = strstr(chopt,
"PLC");
4078 char *l3 = strstr(chopt,
"PMC");
4079 if (l1 || l2 || l3) {
4087 l = strstr(chopt,
"MIN0");
4093 l = strstr(chopt,
"SPEC");
4098 l = strstr(chopt,
"BF(");
4100 if (sscanf(&
l[3],
"%d",&bs) > 0) {
4113 l = strstr(chopt,
"GL");
4117 l = strstr(chopt,
"X+");
4122 l = strstr(chopt,
"Y+");
4130 l = strstr(chopt,
"SAMES");
4137 l = strstr(chopt,
"SAME");
4145 l = strstr(chopt,
"PIE");
4152 l = strstr(chopt,
"CANDLE");
4159 l = strstr(chopt,
"VIOLIN");
4166 l = strstr(chopt,
"LEGO");
4177 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4180 l = strstr(chopt,
"SURF");
4195 l = strstr(chopt,
"TF3");
4202 l = strstr(chopt,
"ISO");
4209 l = strstr(chopt,
"LIST");
if (
l) {
Hoption.
List = 1; memcpy(
l,
" ",4);}
4211 l = strstr(chopt,
"CONT");
4226 l = strstr(chopt,
"HBAR");
4235 l = strstr(chopt,
"BAR");
4245 l = strstr(chopt,
"ARR" );
4251 l = strstr(chopt,
"COL");
if (
l) {
Hoption.
Arrow = 2; memcpy(
l,
" ",3); }
4257 l = strstr(chopt,
"BOX" );
4270 l = strstr(chopt,
"COLZ");
4278 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4284 l = strstr(chopt,
"COL" );
4291 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4299 l = strstr(chopt,
"AXIS");
if (
l) {
Hoption.
Axis = 1; memcpy(
l,
" ",4); }
4300 l = strstr(chopt,
"AXIG");
if (
l) {
Hoption.
Axis = 2; memcpy(
l,
" ",4); }
4301 l = strstr(chopt,
"SCAT");
if (
l) {
Hoption.
Scat = 1; memcpy(
l,
" ",4); }
4302 l = strstr(chopt,
"TEXT");
4305 if (sscanf(&
l[4],
"%d",&angle) > 0) {
4306 if (angle < 0) angle=0;
4307 if (angle > 90) angle=90;
4313 l = strstr(chopt,
"N");
4322 l = strstr(chopt,
"TRI");
4329 l = strstr(chopt,
"ERR");
if (
l) memcpy(
l,
" ",3);
4332 l = strstr(chopt,
"AITOFF");
4336 l = strstr(chopt,
"MERCATOR");
4340 l = strstr(chopt,
"SINUSOIDAL");
4344 l = strstr(chopt,
"PARABOLIC");
4370 if (strstr(chopt,
"E")) {
4380 if (strstr(chopt,
"X0")) {
4403 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
4424 char *left = (
char*)strchr(choptin,
'[');
4425 if (!left)
return 0;
4426 char *right = (
char*)strchr(choptin,
']');
4427 if (!right)
return 0;
4428 Int_t nch = right-left;
4429 if (nch < 2)
return 0;
4430 char *cuts = left+1;
4432 char *comma, *minus;
4435 comma = strchr(cuts,
',');
4436 if (comma) *comma = 0;
4437 minus = strchr(cuts,
'-');
4438 if (minus) cuts = minus+1;
4439 while (*cuts ==
' ') cuts++;
4440 Int_t nc = strlen(cuts);
4441 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
4445 while ((obj = next())) {
4447 if (strcmp(obj->
GetName(),cuts))
continue;
4460 for (i=0;i<=nch;i++) left[i] =
' ';
4488 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%zx,\"%s\",%d)",
4503 Error(
"Paint",
"Option PIE is for 1D histograms only");
4537 Int_t logysav=0, logzsav=0;
4572 gPad->RangeAxisChanged();
4589 if (gridx)
gPad->SetGridx(0);
4590 if (gridy)
gPad->SetGridy(0);
4592 if (gridx)
gPad->SetGridx(1);
4593 if (gridy)
gPad->SetGridy(1);
4628 if (gridx)
gPad->SetGridx(0);
4629 if (gridy)
gPad->SetGridy(0);
4631 if (gridx)
gPad->SetGridx(1);
4632 if (gridy)
gPad->SetGridy(1);
4641 while ((obj = next())) {
4649 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4677 arrow->SetAngle(30);
4678 arrow->SetFillStyle(1001);
4684 Int_t ncolors=0, ndivz=0;
4698 for (
Int_t id=1;
id<=2;
id++) {
4705 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4723 }
else if (
id == 2) {
4735 if (theColor > ncolors-1) theColor = ncolors-1;
4740 arrow->PaintArrow(
x1, y1,
x2, y2, 0.015,
"|>");
4742 arrow->PaintArrow(
x1, y1,
x2, y2, 0.005,
"|>");
4765 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4777 TIter next(
gPad->GetListOfPrimitives());
4780 while ((obj = next())) {
4786 if (strstr(opt,
"hbar")) {
4790 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4800 static char chopt[10] =
"";
4802 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4803 Int_t useHparam = 0;
4804 Double_t umin, umax, uminsave, umaxsave;
4820 TIter next(
gPad->GetListOfPrimitives());
4821 while ((obj=next())) {
4832 if (
gPad->PadInSelectionMode())
4836 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4847 strlcat(chopt,
"SDH",10);
4848 if (ndivx < 0) strlcat(chopt,
"N",10);
4849 if (
gPad->GetGridx()) {
4850 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4851 strlcat(chopt,
"W",10);
4856 strlcat(chopt,
"G",10);
4878 strlcat(chopt,
"t",10);
4886 if (xAxisPos == 1) {
4902 strlcat(chopt,
"-",10);
4911 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4916 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4918 cw=strstr(chopt,
"-");
4921 strlcat(chopt,
"-",10);
4923 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4924 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4928 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4934 if (
gPad->PadInSelectionMode())
4938 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4943 strlcat(chopt,
"SDH",10);
4944 if (ndivy < 0) strlcat(chopt,
"N",10);
4945 if (
gPad->GetGridy()) {
4946 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4947 strlcat(chopt,
"W",10);
4952 strlcat(chopt,
"G",10);
4974 strlcat(chopt,
"t",10);
4982 if (yAxisPos == 1) {
4998 strlcat(chopt,
"+L",10);
5007 umin, umax, ndiv, chopt, gridl, drawGridOnly);
5012 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
5013 if (
gPad->GetTicky() < 2) {
5014 strlcat(chopt,
"U",10);
5017 strlcat(chopt,
"+L",10);
5019 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
5023 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
5046 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
5048 box.SetFillColor(hcolor);
5049 box.SetFillStyle(hstyle);
5059 if (ymax < gPad->GetUymin())
continue;
5061 if (ymin < gPad->GetUymin())
ymin =
gPad->GetUymin();
5075 box.SetFillColor(hcolor);
5095 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
5109 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
5111 box.SetFillColor(hcolor);
5112 box.SetFillStyle(hstyle);
5121 if (xmax < gPad->GetUxmin())
continue;
5123 if (xmin < gPad->GetUxmin())
xmin =
gPad->GetUxmin();
5136 box.SetFillColor(hcolor);
5149 while ((obj = next())) {
5170 fH->TAttLine::Modify();
5171 fH->TAttFill::Modify();
5173 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
5184 Double_t zminlin = zmin, zmaxlin = zmax;
5190 TIter next(
gPad->GetListOfPrimitives());
5191 while ((h2 = (
TH2 *)next())) {
5241 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5248 if (kZminNeg && z==0)
continue;
5260 if (dz == 0)
continue;
5262 if (zratio == 0)
continue;
5264 xup = xcent*zratio + xk + xcent;
5265 xlow = 2*(xk + xcent) - xup;
5266 if (xup-xlow < dxmin) xup = xlow+dxmin;
5274 yup = ycent*zratio + yk + ycent;
5275 ylow = 2*(yk + ycent) - yup;
5276 if (yup-ylow < dymin) yup = ylow+dymin;
5289 if (xlow >= xup)
continue;
5290 if (ylow >= yup)
continue;
5294 fH->TAttFill::Modify();
5295 gPad->PaintBox(xlow, ylow, xup, yup);
5297 gPad->PaintLine(xlow, ylow, xup, yup);
5298 gPad->PaintLine(xlow, yup, xup, ylow);
5303 fH->TAttFill::Modify();
5304 gPad->PaintBox(xlow, ylow, xup, yup);
5309 x[0] = xlow;
y[0] = ylow;
5310 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5311 x[2] =
x[1];
y[2] = yup - bwidth*(yup-ylow);
5312 x[3] = xup - bwidth*(xup-xlow);
y[3] =
y[2];
5313 x[4] = xup;
y[4] = yup;
5314 x[5] = xlow;
y[5] = yup;
5315 x[6] = xlow;
y[6] = ylow;
5318 fH->TAttFill::Modify();
5319 gPad->PaintFillArea(7,
x,
y);
5322 x[0] = xlow;
y[0] = ylow;
5323 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5324 x[2] = xup - bwidth*(xup-xlow);
y[2] =
y[1];
5325 x[3] =
x[2];
y[3] = yup - bwidth*(yup-ylow);
5326 x[4] = xup;
y[4] = yup;
5327 x[5] = xup;
y[5] = ylow;
5328 x[6] = xlow;
y[6] = ylow;
5331 fH->TAttFill::Modify();
5332 gPad->PaintFillArea(7,
x,
y);
5340 fH->TAttFill::Modify();
5350 TH1D *hproj =
nullptr;
5365 const Double_t standardCandleWidth = 0.66;
5366 const Double_t standardHistoWidth = 0.8;
5368 double allMaxContent = 0, allMaxIntegral = 0;
5377 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5387 double myIntegral = hproj->
Integral();
5389 if (candleWidth > 0.999 && candleWidth < 1.001) {
5390 candleWidth = standardCandleWidth;
5391 histoWidth = standardHistoWidth;
5395 if (myCandle.
IsViolinScaled() && myMaxContent > 0 && allMaxContent > 0)
5398 histoWidth *= myMaxContent/allMaxContent;
5400 candleWidth *= myIntegral/allMaxIntegral;
5414 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5424 double myIntegral = hproj->
Integral();
5426 if (candleWidth > 0.999 && candleWidth < 1.001) {
5427 candleWidth = standardCandleWidth;
5428 histoWidth = standardHistoWidth;
5432 if (myCandle.
IsViolinScaled() && myMaxContent > 0 && allMaxContent > 0)
5435 histoWidth *= myMaxContent/allMaxContent;
5437 candleWidth *= myIntegral/allMaxIntegral;
5466std::vector<THistRenderingRegion>
5469 std::vector<THistRenderingRegion> regions;
5471 enum STRATEGY { Bins, Pixels } strategy;
5475 if (nBins >= nPixels) {
5487 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
5497 if (strategy == Bins) {
5515 std::make_pair(bin, bin+1)};
5516 regions.push_back(region);
5525 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
5530 std::make_pair(binLow, binHigh)};
5531 regions.push_back(region);
5537 if (strategy == Bins) {
5544 Int_t xPx1 = xPx0 + nPixels/nBins;
5547 if (xPx1>= nPixels) xPx1 = nPixels-1;
5550 std::make_pair(bin, bin+1)};
5551 regions.push_back(region);
5555 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
5557 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
5558 Int_t binHigh = binLow + nBins/nPixels;
5560 std::make_pair(binLow, binHigh)};
5561 regions.push_back(region);
5576 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5577 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
5590 if ((zmin == -1111) && (zmax == -1111)) {
5594 }
else if (zmin == -1111) {
5597 }
else if (zmax == -1111) {
5615 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5616 "Cannot plot logz because bin content is less than 0.");
5627 std::vector<Double_t> colorBounds(ndiv);
5628 std::vector<Double_t> contours(ndiv, 0);
5636 for (
Int_t i=0; i<ndiv; ++i) {
5637 colorBounds[i] = step*i;
5640 auto pFrame =
gPad->GetFrame();
5641 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5642 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5643 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5644 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5645 Int_t nXPixels = px1-px0;
5646 Int_t nYPixels = py0-py1;
5648 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5652 if (xRegions.size() == 0 || yRegions.size() == 0) {
5653 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5654 "Encountered error while computing rendering regions.");
5662 for (
auto& yRegion : yRegions) {
5663 for (
auto& xRegion : xRegions ) {
5665 const auto& xBinRange = xRegion.fBinRange;
5666 const auto& yBinRange = yRegion.fBinRange;
5677 if (z > zmax) z = zmax;
5678 if (z < zmin) z = zmin;
5683 z = colorBounds[index];
5687 index = 0.001 + ((z - zmin)/dz)*ndiv;
5690 if (index ==
static_cast<Int_t>(colorBounds.size())) {
5698 }
else if (index ==
static_cast<Int_t>(colorBounds.size()-1)) {
5702 z = colorBounds[index];
5713 const auto& xPixelRange = xRegion.fPixelRange;
5714 const auto& yPixelRange = yRegion.fPixelRange;
5715 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5716 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5717 Int_t pixel = yPx*nXPixels + xPx;
5728 if (minValue != maxValue) {
5734 buffer[buffer.size()-nXPixels] = 0.95;
5742 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5746 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5763 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5779 TIter next(
gPad->GetListOfPrimitives());
5780 while ((h2 = (
TH2 *)next())) {
5812 fH->TAttFill::Modify();
5823 Double_t scale = (dz ? ndivz / dz : 1.0);
5835 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5840 if (binEntries == 0)
5873 if (xup < gPad->GetUxmin())
continue;
5874 if (yup < gPad->GetUymin())
continue;
5875 if (xlow >
gPad->GetUxmax())
continue;
5876 if (ylow >
gPad->GetUymax())
continue;
5877 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5878 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5879 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5880 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5885 if (z < zc)
continue;
5887 for (
Int_t k=0; k<ndiv; k++) {
5896 color =
Int_t(0.01+(z-zmin)*scale);
5900 if (theColor > ncolors-1) theColor = ncolors-1;
5902 fH->TAttFill::Modify();
5904 gPad->PaintBox(xlow, ylow, xup, yup);
5917 fH->TAttFill::Modify();
5927 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5928 Int_t itars, mode, ir[4];
5929 Double_t xsave, ysave, thesave,phisave,
x[4],
y[4], zc[4];
5934 thesave =
gPad->GetTheta();
5935 phisave =
gPad->GetPhi();
5937 gPad->SetTheta(90.);
5939 gPad->SetPhi(phisave);
5940 gPad->SetTheta(thesave);
5951 TIter next(
gPad->GetListOfPrimitives());
5952 while ((obj=next())) {
5969 if (!dt && !dtOld)
return;
5989 if (ncontour == 0) {
5994 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
6005 fH->TAttLine::Modify();
6015 np =
new Int_t[ncontour];
6016 for (i=0;i<ncontour;i++) np[i] = 0;
6018 for (i=0;i<ncontour;i++) {
6024 gROOT->GetListOfSpecials()->Remove(contours);
6026 for (i=0;i<count;i++) {
6027 list = (
TList*)contours->
At(i);
6028 if (list) list->
Delete();
6032 contours->
SetName(
"contours");
6033 gROOT->GetListOfSpecials()->Add(contours);
6034 for (i=0;i<ncontour;i++) {
6036 contours->
Add(list);
6069 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
6074 if (zc[0] <= zc[1])
n = 0;
else n = 1;
6075 if (zc[2] <= zc[3])
m = 2;
else m = 3;
6076 if (zc[
n] > zc[
m])
n =
m;
6079 for (ix=1;ix<=4;ix++) {
6082 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
6087 if (zc[0] <= zc[1])
n = 0;
else n = 1;
6088 if (zc[2] <= zc[3])
m = 2;
else m = 3;
6089 if (zc[
n] > zc[
m])
n =
m;
6092 for (ix=1;ix<=4;ix++) {
6096 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
6104 for (ix=1; ix<=lj-5; ix +=2) {
6106 while (itarr[ix-1] != itarr[ix]) {
6110 for (jx=ix; jx<=lj-5; jx +=2) {
6111 xarr[jx] = xarr[jx+2];
6112 yarr[jx] = yarr[jx+2];
6113 itarr[jx] = itarr[jx+2];
6117 itarr[lj-3] = itars;
6118 if (count > 100)
break;
6123 if (count > 100)
continue;
6124 for (ix=1; ix<=lj-2; ix +=2) {
6132 if (mode == 0) mode = 5;
6136 fH->TAttLine::Modify();
6137 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
6141 ipoly = itarr[ix-1];
6142 if (ipoly >=0 && ipoly <ncontour) {
6143 poly =
polys[ipoly];
6144 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
6145 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
6147 if (npmax < np[ipoly]) npmax = np[ipoly];
6156 Int_t nadd,iminus,iplus;
6160 Int_t *polysort = 0;
6172 polysort =
new Int_t[ncontour];
6174 for (ipoly=0;ipoly<ncontour;ipoly++) {
6175 if (levels[ipoly] >= 0) {
first = ipoly;
break;}
6179 for (ipoly=
first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
6180 for (ipoly=
first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
6184 for (k=0;k<ncontour;k++) {
6185 ipoly = polysort[k];
6186 if (np[ipoly] == 0)
continue;
6189 poly =
polys[ipoly];
6196 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
6197 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
6198 xx[istart] =
xmin; yy[istart] =
ymin;
6199 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
6202 for (i=2;i<np[ipoly];i+=2) {
6203 if ((iplus < 2*npmax-1) && (xx[i] == xp[iplus]) && (yy[i] == yp[iplus])) {
6205 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
6210 if ((iminus > 0) && (xx[i+1] == xp[iminus]) && (yy[i+1] == yp[iminus])) {
6212 xp[iminus] = xx[i]; yp[iminus] = yy[i];
6218 if (nadd == 0)
break;
6223 fH->TAttFill::Modify();
6224 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6226 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6227 graph->SetFillColor(icol);
6233 for (i=2;i<np[ipoly];i+=2) {
6234 if (xx[i] !=
xmin && yy[i] !=
ymin) {
6239 if (istart == 0)
break;
6243 for (i=0;i<ncontour;i++)
delete polys[i];
6255 if (np)
delete [] np;
6271 Double_t tlen, tdif, elev, diff, pdif, xlen;
6283 tdif = elev2 - elev1;
6289 diff = elev - elev1;
6300 yarr[i] = y1 + xlen;
6305 xarr[i] =
x1 + xlen;
6328 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
6330 const Int_t kBASEMARKER=8;
6331 Double_t xp, yp, ex1, ex2, ey1, ey2;
6333 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbasex, sbasey;
6334 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
6343 Int_t drawmarker, errormarker;
6344 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
6345 static Float_t cxx[30] = {1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.6,1.0,0.5,0.5,1.0,0.5,0.6,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0};
6346 static Float_t cyy[30] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.5,0.5,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0};
6350 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
6359 if (
Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
6360 if (option2+option3 == 0) optionE = 1;
6375 if (errormarker == 1) symbolsize = 0.01;
6376 sbasex = sbasey = symbolsize*kBASEMARKER;
6377 if (errormarker >= 20 && errormarker <= 49) {
6378 sbasex *= cxx[errormarker-20];
6379 sbasey *= cyy[errormarker-20];
6383 fH->TAttLine::Modify();
6384 fH->TAttFill::Modify();
6385 fH->TAttMarker::Modify();
6392 npoints = last -
first +1;
6402 if (!xline || !yline) {
6403 Error(
"PaintErrors",
"too many points, out of memory");
6411 s2x =
gPad->PixeltoX(
Int_t(0.5*sbasex)) -
gPad->PixeltoX(0);
6412 s2y =-
gPad->PixeltoY(
Int_t(0.5*sbasey)) +
gPad->PixeltoY(0);
6416 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
6417 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
6433 for (k=
first; k<=last; k++) {
6452 xminTmp += offset*(xmaxTmp-xminTmp);
6453 xmaxTmp = xminTmp + w;
6454 xp = (xminTmp+xmaxTmp)/2.;
6457 if (xp <= 0)
goto L30;
6458 if (xp < logxmin)
goto L30;
6461 if (xp <
xmin)
goto L30;
6462 if (xp >
xmax)
break;
6465 if (optionI0 && yp==0)
goto L30;
6517 if (!option0 && !option3) {
6519 if (yi1 < ymin || yi1 >
ymax)
goto L30;
6522 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
6526 if (yi3 >=
ymax)
goto L30;
6527 if (yi4 <=
ymin)
goto L30;
6528 gPad->PaintBox(xi1,yi3,xi2,yi4);
6543 if (optionE && drawmarker) {
6548 if (yi1<ymax && yi1>
ymin) {
6549 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
6550 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
6554 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
6559 if (yi1<ymax && yi1>
ymin) {
6560 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
6561 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
6568 if (option1 && drawmarker) {
6570 if (yi3 < yi1-s2y && yi3 < ymax && yi3 >
ymin)
gPad->PaintLine(xi3 - bxsize, yi3 , xi3 + bxsize, yi3);
6571 if (yi4 > yi1+s2y && yi4 < ymax && yi4 >
ymin)
gPad->PaintLine(xi3 - bxsize, yi4 , xi3 + bxsize, yi4);
6572 if (yi1 <= ymax && yi1 >=
ymin) {
6573 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1 , yi1 - bysize, xi1 , yi1 + bysize);
6574 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2 , yi1 - bysize, xi2 , yi1 + bysize);
6580 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
6609 if (if2 > npoints) {
6610 for (i=1; i<if1; i++) {
6611 xline[if1-2+i] = xline[if2-1+i];
6612 yline[if1-2+i] = yline[if2-1+i];
6616 if (option4)
graph.PaintGraph(2*npoints,xline,yline,
"FC");
6617 else graph.PaintGraph(2*npoints,xline,yline,
"F");
6618 gPad->SetLogx(logx);
6619 gPad->SetLogy(logy);
6631 fH->TAttMarker::Modify();
6632 fH->TAttLine::Modify();
6644 Error(
"Paint2DErrors",
"no TView in current pad");
6651 view->
SetView(phideg, thedeg, psideg, irep);
6656 fLego->TAttFill::Modify();
6657 Int_t backcolor =
gPad->GetFrameFillColor();
6662 fLego->TAttFill::Modify();
6703 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6746 gPad->PaintLine3D(temp1, temp2);
6753 gPad->PaintLine3D(temp1, temp2);
6760 gPad->PaintLine3D(temp1, temp2);
6764 view->
WCtoNDC(temp1, &temp2[0]);
6765 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6799 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6805 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6828 f2->
Paint(
"surf same");
6830 obj->
Paint(
"cont3 same");
6837 gPad->PushSelectableObject(obj);
6841 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6857 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6860 static char chopth[17];
6862 Int_t htype, oldhtype;
6867 strlcpy(chopth,
" ",17);
6882 nbins = last -
first + 1;
6888 if (fixbin) keepx =
new Double_t[2];
6889 else keepx =
new Double_t[nbins+1];
6896 for (j=
first; j<=last;j++) {
6906 keepy[j-
first] = yb;
6922 if (htype == 0 || htype == 1000) htype = 1001;
6946 if (!fixbin && strlen(chopth)) {
6971 graph.SetLineWidth(lw);
6974 graph.SetFillStyle(htype);
6981 graph.PaintGrapHist(nbins, keepx, keepy ,chopth);
7016 }
else if (strstr(opt,
"iso")) {
7019 }
else if (strstr(opt,
"tf3")) {
7023 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%zx,\"%s\");",(
size_t)
fH,option);
7034 view->
SetView(phideg, thedeg, psideg, irep);
7037 gROOT->ProcessLine(cmd);
7068 while ((obj = next())) {
7091 static const char *where =
"PaintInit";
7112 Error(where,
"cannot set X axis to log scale");
7119 for (i=
first; i<=last; i++) {
7131 Error(where,
"cannot set X axis to log scale");
7155 Int_t nonNullErrors = 0;
7157 for (i=
first; i<=last;i++) {
7170 if (e1 > 0) nonNullErrors++;
7184 if (
f->IsA() == TF1::Class()) {
7187 fval =
f1->
Eval(xv[0],0,0);
7199 if (!nonNullErrors) {
7218 Error(where,
"log scale requested with a negative argument (%f)", xm);
7231 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
ymax);
7239 }
else if (
ymin < 0) {
7259 if (allchan) factor /= allchan;
7260 if (factor == 0) factor = 1;
7278 Error(where,
"Cannot set Y axis to log scale");
7324 static const char *where =
"PaintInitH";
7349 Error(where,
"cannot set Y axis to log scale");
7371 for (i=
first; i<=last;i++) {
7383 if (
f->IsA() == TF1::Class()) {
7386 fval =
f1->
Eval(xv[0],0,0);
7408 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
7416 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
xmax);
7424 }
else if (
xmin < 0) {
7438 if (allchan) factor /= allchan;
7439 if (factor == 0) factor = 1;
7450 Error(where,
"Cannot set Y axis to log scale");
7489 Double_t wxyz[8][3] = { {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7490 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1} };
7491 Int_t iface[6][4] = { {0,3,2,1}, {4,5,6,7},
7492 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7} };
7512 Error(
"PaintH3",
"no TView in current pad");
7519 view->
SetView(phideg, thedeg, psideg, irep);
7521 Int_t backcolor =
gPad->GetFrameFillColor();
7537 Int_t incrx = (tnorm[ 8] < 0.) ? -1 : +1;
7538 Int_t incry = (tnorm[ 9] < 0.) ? -1 : +1;
7539 Int_t incrz = (tnorm[10] < 0.) ? -1 : +1;
7554 fH->TAttFill::Modify();
7555 fH->TAttLine::Modify();
7564 Double_t pmin[3], pmax[3], sxyz[8][3];
7565 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7568 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7571 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7581 if (w < wmin)
continue;
7582 if (w > wmax) w = wmax;
7584 if (scale == 0)
continue;
7585 for (
Int_t i=0; i<3; ++i) {
7588 for (
Int_t k=0; k<8; ++k) {
7589 sxyz[k][i] = wxyz[k][i]*
d +
c;
7592 for (
Int_t k=0; k<8; ++k) {
7593 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7596 for (
Int_t k=0; k<6; ++k) {
7597 for (
Int_t i=0; i<4; ++i) {
7598 Int_t iv = iface[k][i];
7602 x[4] =
x[0] ;
y[4] =
y[0];
7604 x[5] =
x[2] ;
y[5] =
y[2];
7605 x[6] =
x[3] ;
y[6] =
y[3];
7606 x[7] =
x[1] ;
y[7] =
y[1];
7612 if (z <= 0.)
continue;
7614 theColor = ncolors*((w-wmin)/(wmax-wmin)) -1;
7617 if (k == 3 || k == 5) {
7619 }
else if (k == 0 || k == 1) {
7625 fH->TAttFill::Modify();
7626 gPad->PaintFillArea(4,
x,
y);
7627 if (iopt != 3)
gPad->PaintPolyLine(
n,
x,
y);
7655 fH->TAttFill::Modify();
7665 {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7666 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1}
7668 Int_t iface[6][4] = {
7669 {0,3,2,1}, {4,5,6,7},
7670 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}
7674 {0,-1,0}, {1,0,0}, {0,1,0}, {-1,0,0}
7695 Error(
"PaintH3",
"no TView in current pad");
7702 view->
SetView(phideg, thedeg, psideg, irep);
7704 Int_t backcolor =
gPad->GetFrameFillColor();
7719 Int_t incrx = (tnorm[ 8] < 0.) ? +1 : -1;
7720 Int_t incry = (tnorm[ 9] < 0.) ? +1 : -1;
7721 Int_t incrz = (tnorm[10] < 0.) ? +1 : -1;
7730 fH->TAttLine::Modify();
7733 const Int_t NTMAX = 100;
7738 Double_t pmin[3], pmax[3], sxyz[8][3], pp[4][2];
7739 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7742 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7745 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7754 if (w < wmin)
continue;
7755 if (w > wmax) w = wmax;
7757 if (scale == 0)
continue;
7758 for (
Int_t i=0; i<3; ++i) {
7761 for (
Int_t k=0; k<8; ++k) {
7762 sxyz[k][i] = wxyz[k][i]*
d +
c;
7765 for (
Int_t k=0; k<8; ++k) {
7766 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7768 for (
Int_t k=0; k<6; ++k) {
7770 view->
FindNormal(normal[k][0], normal[k][1], normal[k][2], zn);
7771 if (zn <= 0)
continue;
7772 for (
Int_t i=0; i<4; ++i) {
7773 Int_t ip = iface[k][i];
7774 pp[i][0] = sxyz[ip][0];
7775 pp[i][1] = sxyz[ip][1];
7777 for (
Int_t i=0; i<4; ++i) {
7779 Int_t i2 = (i == 3) ? 0 : i + 1;
7782 Double_t xdel = pp[i2][0] - pp[i1][0];
7783 Double_t ydel = pp[i2][1] - pp[i1][1];
7785 for (
Int_t it = 0; it < nt; ++it) {
7786 x[0] = pp[i1][0] + xdel*
tt[it][0];
7787 y[0] = pp[i1][1] + ydel*
tt[it][0];
7788 x[1] = pp[i1][0] + xdel*
tt[it][1];
7789 y[1] = pp[i1][1] + ydel*
tt[it][1];
7790 gPad->PaintPolyLine(2,
x,
y);
7798 Double_t xdel = pp[i2][0] - pp[i1][0];
7799 Double_t ydel = pp[i2][1] - pp[i1][1];
7801 for (
Int_t it = 0; it < nt; ++it) {
7802 x[0] = pp[i1][0] + xdel*
tt[it][0];
7803 y[0] = pp[i1][1] + ydel*
tt[it][0];
7804 x[1] = pp[i1][0] + xdel*
tt[it][1];
7805 y[1] = pp[i1][1] + ydel*
tt[it][1];
7806 gPad->PaintPolyLine(2,
x,
y);
7811 xdel = pp[i2][0] - pp[i1][0];
7812 ydel = pp[i2][1] - pp[i1][1];
7813 for (
Int_t it = 0; it < nt; ++it) {
7814 x[0] = pp[i1][0] + xdel*
tt[it][0];
7815 y[0] = pp[i1][1] + ydel*
tt[it][0];
7816 x[1] = pp[i1][0] + xdel*
tt[it][1];
7817 y[1] = pp[i1][1] + ydel*
tt[it][1];
7818 gPad->PaintPolyLine(2,
x,
y);
7860 Int_t ic2 = ic1+nbcol;
7861 Int_t ic3 = ic2+nbcol;
7896 Error(
"PaintH3Iso",
"no TView in current pad");
7905 view->
SetView(phideg, thedeg, psideg, irep);
7907 Int_t backcolor =
gPad->GetFrameFillColor();
7923 for (
Int_t col=0;col<nbcol;col++) {
7941 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
7980 if (deltaz == 0) deltaz = 1;
8028 Color_t colormain = -1, colordark = -1;
8039 drawShadowsInLego1 =
kFALSE;
8069 for (
Int_t id=0;
id<=nids;
id++) {
8072 if (colormain == 1) colormain = 17;
8074 else colordark = colormain;
8087 Error(
"PaintLego",
"no TView in current pad");
8094 view->
SetView(phideg, thedeg, psideg, irep);
8102 fLego->TAttFill::Modify();
8104 Int_t backcolor =
gPad->GetFrameFillColor();
8110 fLego->TAttFill::Modify();
8190 Int_t ndivx, ndivy, ndivz, i;
8191 Double_t x1[3],
x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
8192 static char chopax[8], chopay[8], chopaz[8];
8193 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
8198 Error(
"PaintLegoAxis",
"no TView in current pad");
8223 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
8224 for (i = 1; i <= 8; ++i) {
8225 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
8226 r[i*3 - 2] = av[i*3 - 2]*sina;
8227 r[i*3 - 1] = av[i*3 - 1];
8241 if (!rmin || !rmax)
return;
8244 if (
x1[0] >
x2[0]) strlcpy(chopax,
"SDH=+",8);
8245 else strlcpy(chopax,
"SDH=-",8);
8246 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
8247 else strlcpy(chopay,
"SDH=-",8);
8248 if (z2[1] > z1[1]) strlcpy(chopaz,
"SDH=+",8);
8249 else strlcpy(chopaz,
"SDH=-",8);
8263 strlcat(chopax,
"N",8);
8267 strlcat(chopay,
"N",8);
8271 strlcat(chopaz,
"N",8);
8293 strlcat(chopax,
"t",8);
8311 strlcpy(chopay,
"V=+UN",8);
8326 strlcat(chopay,
"t",8);
8334 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
8349 strlcat(chopaz,
"t",8);
8357 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
8375 delete palette; palette = 0;
8380 delete palette; palette = 0;
8408 fH->TAttMarker::Modify();
8411 Double_t dz, z, xk,xstep, yk, ystep;
8416 if (zmin == 0 && zmax == 0)
return;
8427 if (zmin == 0 && zmax == 0)
return;
8430 if (ncells > 10000) scale /= 5;
8434 if (dz >=
kNMAX || zmax < 1) {
8435 scale = (
kNMAX-1)/dz;
8436 if (ncells > 10000) scale /= 5;
8443 if (zmin >= 0) zmin = 0;
8444 else zmin -= yMARGIN*(zmax-zmin);
8446 Double_t dzmin = yMARGIN*(zmax-zmin);
8447 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
8456 strlcpy(optscat,opt.
Data(),100);
8457 char *oscat = strstr(optscat,
"scat=");
8458 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
8459 sscanf(oscat+5,
"%lg",&scale);
8473 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
8475 if (z < zmin) z = zmin;
8476 if (z > zmax) z = zmax;
8482 if (z <= 0)
continue;
8486 for (
Int_t loop=0; loop<k; loop++) {
8487 if (k+marker >=
kNMAX) {
8491 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
8492 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
8501 if (
fXbuf[marker] <
gPad->GetUxmin())
break;
8502 if (
fYbuf[marker] <
gPad->GetUymin())
break;
8503 if (
fXbuf[marker] >
gPad->GetUxmax())
break;
8504 if (
fYbuf[marker] >
gPad->GetUymax())
break;
8532 R__TMatrixFBase->
Draw(option);
8538 R__TMatrixDBase->
Draw(option);
8544 R__TVectorF->
Draw(option);
8550 R__TVectorD->
Draw(option);
8567 while ((obj = next())) {
8574 if (stats && dostat) {
8580 if (!dofit) fit = 0;
8581 if (dofit == 1) dofit = 111;
8582 if (dostat == 1) dostat = 1111;
8583 Int_t print_name = dostat%10;
8584 Int_t print_entries = (dostat/10)%10;
8585 Int_t print_mean = (dostat/100)%10;
8586 Int_t print_stddev = (dostat/1000)%10;
8587 Int_t print_under = (dostat/10000)%10;
8588 Int_t print_over = (dostat/100000)%10;
8589 Int_t print_integral= (dostat/1000000)%10;
8590 Int_t print_skew = (dostat/10000000)%10;
8591 Int_t print_kurt = (dostat/100000000)%10;
8592 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8593 print_under + print_over + print_integral +
8594 print_skew + print_kurt;
8595 Int_t print_fval = dofit%10;
8596 Int_t print_ferrors = (dofit/10)%10;
8597 Int_t print_fchi2 = (dofit/100)%10;
8598 Int_t print_fprob = (dofit/1000)%10;
8599 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8601 if (print_fval < 2) nlinesf += fit->GetNumberFreeParameters();
8602 else nlinesf += fit->GetNpar();
8604 if (
fH->
InheritsFrom(TProfile::Class())) nlinesf += print_mean + print_stddev;
8608 if (!dostat && !fit) {
8647 if (print_entries) {
8653 if (print_mean == 1) {
8663 if (print_mean == 1) {
8675 if (print_stddev == 1) {
8685 if (print_stddev == 1) {
8706 if (print_integral) {
8707 if (print_integral == 1) {
8717 if (print_skew == 1) {
8728 if (print_kurt == 1) {
8741 Int_t ndf = fit->GetNDF();
8744 if (print_fchi2) stats->
AddText(
tt.Data());
8750 if (print_fval || print_ferrors) {
8752 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
8753 fit->GetParLimits(ipar,parmin,parmax);
8754 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8755 if (print_ferrors) {
8756 tf.
Form(
"%-8s = %s%s #pm %s ", fit->GetParName(ipar),
"%",stats->
GetFitFormat(),
8759 ,(
Float_t)fit->GetParError(ipar));
8787 while ((obj = next())) {
8793 if (stats && dostat) {
8799 if (dostat == 1) dostat = 1111;
8800 Int_t print_name = dostat%10;
8801 Int_t print_entries = (dostat/10)%10;
8802 Int_t print_mean = (dostat/100)%10;
8803 Int_t print_stddev = (dostat/1000)%10;
8804 Int_t print_under = (dostat/10000)%10;
8805 Int_t print_over = (dostat/100000)%10;
8806 Int_t print_integral= (dostat/1000000)%10;
8807 Int_t print_skew = (dostat/10000000)%10;
8808 Int_t print_kurt = (dostat/100000000)%10;
8809 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8810 if (print_under || print_over) nlines += 3;
8815 if (!dostat && !fit) {
8855 if (print_entries) {
8861 if (print_mean == 1) {
8880 if (print_stddev == 1) {
8898 if (print_integral) {
8904 if (print_skew == 1) {
8923 if (print_kurt == 1) {
8941 if (print_under || print_over) {
8952 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8953 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8954 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8955 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8956 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8957 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8958 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8959 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8960 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8975 Int_t ndf = fit->GetNDF();
8976 tt.Form(
"#chi^{2} / ndf = %6.4g / %d",(
Float_t)fit->GetChisquare(),ndf);
8978 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
8979 tt.Form(
"%-8s = %5.4g #pm %5.4g ",fit->GetParName(ipar)
8980 ,(
Float_t)fit->GetParameter(ipar)
8981 ,(
Float_t)fit->GetParError(ipar));
9004 while ((obj = next())) {
9010 if (stats && dostat) {
9016 if (dostat == 1) dostat = 1111;
9017 Int_t print_name = dostat%10;
9018 Int_t print_entries = (dostat/10)%10;
9019 Int_t print_mean = (dostat/100)%10;
9020 Int_t print_stddev = (dostat/1000)%10;
9021 Int_t print_under = (dostat/10000)%10;
9022 Int_t print_over = (dostat/100000)%10;
9023 Int_t print_integral= (dostat/1000000)%10;
9024 Int_t print_skew = (dostat/10000000)%10;
9025 Int_t print_kurt = (dostat/100000000)%10;
9026 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
9027 if (print_under || print_over) nlines += 3;
9032 if (!dostat && !fit) {
9070 if (print_entries) {
9076 if (print_mean == 1) {
9102 if (print_stddev == 1) {
9127 if (print_integral) {
9132 if (print_skew == 1) {
9158 if (print_kurt == 1) {
9183 if (print_under || print_over) {
9190 Int_t ndf = fit->GetNDF();
9191 tt.Form(
"#chi^{2} / ndf = %6.4g / %d",(
Float_t)fit->GetChisquare(),ndf);
9193 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
9194 tt.Form(
"%-8s = %5.4g #pm %5.4g ",fit->GetParName(ipar)
9195 ,(
Float_t)fit->GetParameter(ipar)
9196 ,(
Float_t)fit->GetParError(ipar));
9231 if (deltaz == 0) deltaz = 1;
9302 Error(
"PaintSurface",
"no TView in current pad");
9309 view->
SetView(phideg, thedeg, psideg, irep);
9319 fLego->TAttFill::Modify();
9321 Int_t backcolor =
gPad->GetFrameFillColor();
9327 fLego->TAttFill::Modify();
9365 fmax = fmin + (yligh1+0.1)*(qd+qs);
9370 if (!colref)
return;
9375 for (
Int_t col=0;col<nbcol;col++) {
9467 if (!dt && !dtOld)
return;
9480 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
9485 if (!rmin || !rmax)
return;
9504 Error(
"PaintTriangles",
"no TView in current pad");
9511 view->
SetView(phideg, thedeg, psideg, irep);
9516 fLego->TAttFill::Modify();
9517 Int_t backcolor =
gPad->GetFrameFillColor();
9522 fLego->TAttFill::Modify();
9564 Warning(
"PaintSurface",
"too many color levels, %d >= 100, reset to 99", ndivz);
9571 for (i = 0; i < ndivz; ++i) {
9578 delete [] colorlevel;
9648 while ((obj = next())) {
9656 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9676 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9693 while ((obj=next())) {
9695 z =
b->GetContent();
9697 poly =
b->GetPolygon();
9700 if (poly->IsA() == TGraph::Class()) {
9702 g->TAttLine::Modify();
9703 g->TAttMarker::Modify();
9704 g->TAttFill::Modify();
9706 Int_t fs =
g->GetFillStyle();
9709 g->SetFillColor(
g->GetLineColor());
9711 g->SetFillStyle(fs);
9712 g->SetFillColor(
fc);
9714 if (fill)
g->Paint(
"F");
9715 if (
mark)
g->Paint(
"P");
9719 if (poly->IsA() == TMultiGraph::Class()) {
9725 while ((
g = (
TGraph*) nextg())) {
9726 g->TAttLine::Modify();
9727 g->TAttMarker::Modify();
9728 g->TAttFill::Modify();
9730 Int_t fs =
g->GetFillStyle();
9733 g->SetFillColor(
g->GetLineColor());
9735 g->SetFillStyle(fs);
9736 g->SetFillColor(
fc);
9738 if (fill)
g->Paint(
"F");
9739 if (
mark)
g->Paint(
"P");
9752 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9755 Int_t ncolors, color, theColor;
9786 while ((obj=next())) {
9788 poly =
b->GetPolygon();
9790 z =
b->GetContent();
9796 if (z < zmin)
continue;
9801 if (z < zc)
continue;
9803 for (
Int_t k=0; k<ndiv; k++) {
9812 color =
Int_t(0.01+(z-zmin)*scale);
9815 if (theColor > ncolors-1) theColor = ncolors-1;
9818 if (poly->IsA() == TGraph::Class()) {
9821 g->TAttFill::Modify();
9826 if (poly->IsA() == TMultiGraph::Class()) {
9832 while ((
g = (
TGraph*) nextg())) {
9834 g->TAttFill::Modify();
9849 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9852 Int_t k, loop, marker=0;
9853 Double_t z, xk,xstep, yk, ystep, xp, yp;
9867 scale = (
kNMAX-1)/dz;
9881 while ((obj=next())) {
9884 if (
a>maxarea) maxarea =
a;
9889 while ((obj=next())) {
9891 poly =
b->GetPolygon();
9892 z =
b->GetContent();
9893 if (z < zmin) z = zmin;
9894 if (z > zmax) z = zmax;
9900 k =
Int_t((z*scale)*(
b->GetArea()/maxarea));
9903 xstep =
b->GetXMax()-xk;
9904 ystep =
b->GetYMax()-yk;
9907 if (poly->IsA() == TGraph::Class()) {
9909 if (k <= 0 || z <= 0)
continue;
9912 if (k+marker >=
kNMAX) {
9916 xp = (random.
Rndm()*xstep) + xk;
9917 yp = (random.
Rndm()*ystep) + yk;
9918 if (
g->IsInside(xp,yp)) {
9929 if (poly->IsA() == TMultiGraph::Class()) {
9933 if (k <= 0 || z <= 0)
continue;
9936 if (k+marker >=
kNMAX) {
9940 xp = (random.
Rndm()*xstep) + xk;
9941 yp = (random.
Rndm()*ystep) + yk;
9975 text.TAttText::Modify();
9982 while ((obj=next())) {
9984 p =
b->GetPolygon();
9985 x = (
b->GetXMin()+
b->GetXMax())/2;
9990 y = (
b->GetYMin()+
b->GetYMax())/2;
9995 z =
b->GetContent();
9999 tf.
Form(
"#splitline{%s%s}{#pm %s%s}",
10036 getentries =
kTRUE;
10042 text.TAttText::Modify();
10056 if (yt == 0.)
continue;
10066 if (
y >=
gPad->GetY2())
continue;
10067 if (y <= gPad->GetY1())
continue;
10076 text.TAttText::Modify();
10095 tf.
Form(
"#splitline{%s%s}{#pm %s%s}",
10133 Error(
"PaintTF3",
"no TView in current pad");
10139 view->
SetView(phideg, thedeg, psideg, irep);
10193 TIter next(
gPad->GetListOfPrimitives());
10194 while ((obj = next())) {
10197 if (strcmp(title->
GetName(),
"title")) {title = 0;
continue;}
10201 if (title)
delete title;
10216 if (ht <= 0) ht = 0.05;
10237 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
10239 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
10243 if (talh == 2) xpos = xpos-wt/2.;
10244 if (talh == 3) xpos = xpos-wt;
10245 if (talv == 2) ypos = ypos+ht/2.;
10246 if (talv == 1) ypos = ypos+ht;
10264 if(!
gPad->IsEditable())
delete ptitle;
10272 if (!strcmp(mess,
"SetF3")) {
10370 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
10378 if (
xmin > xmin_aid)
xmin = xmin_aid;
10379 if (
ymin > ymin_aid)
ymin = ymin_aid;
10380 if (
xmax < xmax_aid)
xmax = xmax_aid;
10381 if (
ymax < ymax_aid)
ymax = ymax_aid;
10386 if (
xmin >xmin_aid)
xmin = xmin_aid;
10387 if (
xmax <xmax_aid)
xmax = xmax_aid;
10392 if (
ymin >ymin_aid)
ymin = ymin_aid;
10393 if (
ymax <ymax_aid)
ymax = ymax_aid;
10409 if (
xmin > xmin_aid)
xmin = xmin_aid;
10410 if (
ymin > ymin_aid)
ymin = ymin_aid;
10411 if (
xmax < xmax_aid)
xmax = xmax_aid;
10412 if (
ymax < ymax_aid)
ymax = ymax_aid;
10416 if (
xmin >xmin_aid)
xmin = xmin_aid;
10417 if (
xmax <xmax_aid)
xmax = xmax_aid;
10422 if (
ymin >ymin_aid)
ymin = ymin_aid;
10423 if (
ymax <ymax_aid)
ymax = ymax_aid;
10431 if (
xmin > xmin_aid)
xmin = xmin_aid;
10432 if (
ymin > ymin_aid)
ymin = ymin_aid;
10433 if (
xmax < xmax_aid)
xmax = xmax_aid;
10434 if (
ymax < ymax_aid)
ymax = ymax_aid;
10438 if (
xmin >xmin_aid)
xmin = xmin_aid;
10439 if (
xmax <xmax_aid)
xmax = xmax_aid;
10444 if (
ymin >ymin_aid)
ymin = ymin_aid;
10445 if (
ymax <ymax_aid)
ymax = ymax_aid;
10461 ymin - dyr*
gPad->GetBottomMargin(),
10462 xmax + dxr*
gPad->GetRightMargin(),
10473 if (
h == 0)
return;
10487 static const char *where =
"TableInit";
10515 Error(where,
"cannot set X axis to log scale");
10544 Error(where,
"cannot set Y axis to log scale");
10580 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10586 if (zmin >= zmax) {
10588 if (zmax > 0) zmin = 0.001*zmax;
10590 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10600 if (allchan) factor /= allchan;
10601 if (factor == 0) factor = 1;
10603 zmax = factor*zmax;
10604 zmin = factor*zmin;
10630 zmax += yMARGIN*(zmax-zmin);
10638 if (zmin >= 0) zmin = 0;
10639 else zmin -= yMARGIN*(zmax-zmin);
10641 Double_t dzmin = yMARGIN*(zmax-zmin);
10642 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10643 else zmin -= dzmin;
10669 tf.
Form(
"%s%s",
"%",
f);
10673 int ie = tv.
Index(
"e");
10674 int iE = tv.
Index(
"E");
10675 int id = tv.
Index(
".");
10679 if (ie >= 0 || iE >= 0) {
10680 if (tv.
Index(
"+") >= 0) {
10682 ef.
Form(
"%s.1f",
"%");
10685 ef.
Form(
"%s.%de",
"%",ie-
id-1);
10687 ef.
Form(
"%s.%dE",
"%",iE-
id-1);
10692 ef.
Form(
"%s.%de",
"%",ie-
id-1);
10694 ef.
Form(
"%s.%dE",
"%",iE-
id-1);
10699 }
else if (
id < 0) {
10700 ef.
Form(
"%s.1f",
"%");
10720 Int_t projection = 0;
10721 if (opt.
Contains(
"x")) projection = 1;
10722 if (opt.
Contains(
"y")) projection = 2;
10723 if (opt.
Contains(
"z")) projection = 3;
10724 if (opt.
Contains(
"xy")) projection = 4;
10725 if (opt.
Contains(
"yx")) projection = 5;
10726 if (opt.
Contains(
"xz")) projection = 6;
10727 if (opt.
Contains(
"zx")) projection = 7;
10728 if (opt.
Contains(
"yz")) projection = 8;
10729 if (opt.
Contains(
"zy")) projection = 9;
10733 gROOT->MakeDefCanvas();
10745 gPad->SetDoubleBuffer(0);
10749 static int pyold1 = 0;
10750 static int pyold2 = 0;
10751 float uxmin =
gPad->GetUxmin();
10752 float uxmax =
gPad->GetUxmax();
10753 int pxmin =
gPad->XtoAbsPixel(uxmin);
10754 int pxmax =
gPad->XtoAbsPixel(uxmax);
10785 TH1D *hp = ((
TH2*)
fH)->ProjectionX(prjName, biny1, biny2);
10790 if (biny1 == biny2) {
10798 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10810 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10828 gPad->SetDoubleBuffer(0);
10832 static int pxold1 = 0;
10833 static int pxold2 = 0;
10834 float uymin =
gPad->GetUymin();
10835 float uymax =
gPad->GetUymax();
10836 int pymin =
gPad->YtoAbsPixel(uymin);
10837 int pymax =
gPad->YtoAbsPixel(uymax);
10868 TH1D *hp = ((
TH2*)
fH)->ProjectionY(prjName, binx1, binx2);
10873 if (binx1 == binx2) {
10881 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10893 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10921 gPad->SetDoubleBuffer(0);
10937 static TPoint endface1[5];
10938 static TPoint endface2[5];
10947 int pxmin =
gPad->XtoAbsPixel(uxmin);
10948 int pxmax =
gPad->XtoAbsPixel(uxmax);
10949 if (pxmin==pxmax)
return;
10950 int pymin =
gPad->YtoAbsPixel(uymin);
10951 int pymax =
gPad->YtoAbsPixel(uymax);
10952 if (pymin==pymax)
return;
10953 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10954 Double_t cy = (pymax-pymin)/(uymax-uymin);
10969 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10974 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10977 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10978 if (nbins>1 && line1[0].GetX()) {
10989 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10990 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10993 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10994 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11001 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11002 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11005 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11006 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11012 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11013 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11016 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11017 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11023 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11024 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11027 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11028 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11030 endface1[0].
SetX(line1[0].GetX());
11031 endface1[0].
SetY(line1[0].GetY());
11032 endface1[1].
SetX(line2[0].GetX());
11033 endface1[1].
SetY(line2[0].GetY());
11034 endface1[2].
SetX(line3[0].GetX());
11035 endface1[2].
SetY(line3[0].GetY());
11036 endface1[3].
SetX(line4[0].GetX());
11037 endface1[3].
SetY(line4[0].GetY());
11038 endface1[4].
SetX(line1[0].GetX());
11039 endface1[4].
SetY(line1[0].GetY());
11041 endface2[0].
SetX(line1[1].GetX());
11042 endface2[0].
SetY(line1[1].GetY());
11043 endface2[1].
SetX(line2[1].GetX());
11044 endface2[1].
SetY(line2[1].GetY());
11045 endface2[2].
SetX(line3[1].GetX());
11046 endface2[2].
SetY(line3[1].GetY());
11047 endface2[3].
SetX(line4[1].GetX());
11048 endface2[3].
SetY(line4[1].GetY());
11049 endface2[4].
SetX(line1[1].GetX());
11050 endface2[4].
SetY(line1[1].GetY());
11084 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
11089 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
11092 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
11093 if (nbins>1 && line1[0].GetX()) {
11104 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11105 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11108 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11109 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11116 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11117 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11120 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11121 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11127 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11128 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11131 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11132 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11138 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11139 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11142 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11143 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11145 endface1[0].
SetX(line1[0].GetX());
11146 endface1[0].
SetY(line1[0].GetY());
11147 endface1[1].
SetX(line2[0].GetX());
11148 endface1[1].
SetY(line2[0].GetY());
11149 endface1[2].
SetX(line3[0].GetX());
11150 endface1[2].
SetY(line3[0].GetY());
11151 endface1[3].
SetX(line4[0].GetX());
11152 endface1[3].
SetY(line4[0].GetY());
11153 endface1[4].
SetX(line1[0].GetX());
11154 endface1[4].
SetY(line1[0].GetY());
11156 endface2[0].
SetX(line1[1].GetX());
11157 endface2[0].
SetY(line1[1].GetY());
11158 endface2[1].
SetX(line2[1].GetX());
11159 endface2[1].
SetY(line2[1].GetY());
11160 endface2[2].
SetX(line3[1].GetX());
11161 endface2[2].
SetY(line3[1].GetY());
11162 endface2[3].
SetX(line4[1].GetX());
11163 endface2[3].
SetY(line4[1].GetY());
11164 endface2[4].
SetX(line1[1].GetX());
11165 endface2[4].
SetY(line1[1].GetY());
11198 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
11203 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
11206 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
11207 if (nbins>1 && line1[0].GetX()) {
11218 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11219 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11222 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11223 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11230 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11231 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11234 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11235 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11241 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11242 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11245 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11246 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11252 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11253 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11256 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11257 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11259 endface1[0].
SetX(line1[0].GetX());
11260 endface1[0].
SetY(line1[0].GetY());
11261 endface1[1].
SetX(line2[0].GetX());
11262 endface1[1].
SetY(line2[0].GetY());
11263 endface1[2].
SetX(line3[0].GetX());
11264 endface1[2].
SetY(line3[0].GetY());
11265 endface1[3].
SetX(line4[0].GetX());
11266 endface1[3].
SetY(line4[0].GetY());
11267 endface1[4].
SetX(line1[0].GetX());
11268 endface1[4].
SetY(line1[0].GetY());
11270 endface2[0].
SetX(line1[1].GetX());
11271 endface2[0].
SetY(line1[1].GetY());
11272 endface2[1].
SetX(line2[1].GetX());
11273 endface2[1].
SetY(line2[1].GetY());
11274 endface2[2].
SetX(line3[1].GetX());
11275 endface2[2].
SetY(line3[1].GetY());
11276 endface2[3].
SetX(line4[1].GetX());
11277 endface2[3].
SetY(line4[1].GetY());
11278 endface2[4].
SetX(line1[1].GetX());
11279 endface2[4].
SetY(line1[1].GetY());
11315 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11316 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11321 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11322 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11323 rect1[4].
SetX(rect1[0].GetX());
11324 rect1[4].
SetY(rect1[0].GetY());
11327 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11328 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11331 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11332 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11335 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11336 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11343 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11344 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11345 rect2[4].
SetX(rect2[0].GetX());
11346 rect2[4].
SetY(rect2[0].GetY());
11349 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11350 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11353 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11354 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11357 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11358 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11386 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11387 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11392 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11393 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11394 rect1[4].
SetX(rect1[0].GetX());
11395 rect1[4].
SetY(rect1[0].GetY());
11398 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11399 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11402 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11403 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11406 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11407 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11414 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11415 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11416 rect2[4].
SetX(rect2[0].GetX());
11417 rect2[4].
SetY(rect2[0].GetY());
11420 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11421 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11424 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11425 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11428 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11429 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11456 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11457 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11462 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11463 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11464 rect1[4].
SetX(rect1[0].GetX());
11465 rect1[4].
SetY(rect1[0].GetY());
11468 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11469 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11472 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11473 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11476 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11477 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11484 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11485 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11486 rect2[4].
SetX(rect2[0].GetX());
11487 rect2[4].
SetY(rect2[0].GetY());
11490 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11491 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11494 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11495 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11498 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11499 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11526 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11527 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11532 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11533 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11534 rect1[4].
SetX(rect1[0].GetX());
11535 rect1[4].
SetY(rect1[0].GetY());
11538 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11539 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11542 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11543 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11546 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11547 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11554 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11555 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11556 rect2[4].
SetX(rect2[0].GetX());
11557 rect2[4].
SetY(rect2[0].GetY());
11560 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11561 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11564 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11565 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11568 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11569 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11596 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11597 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11602 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11603 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11604 rect1[4].
SetX(rect1[0].GetX());
11605 rect1[4].
SetY(rect1[0].GetY());
11608 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11609 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11612 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11613 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11616 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11617 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11624 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11625 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11626 rect2[4].
SetX(rect2[0].GetX());
11627 rect2[4].
SetY(rect2[0].GetY());
11630 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11631 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11634 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11635 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11638 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11639 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11666 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11667 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11672 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11673 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11674 rect1[4].
SetX(rect1[0].GetX());
11675 rect1[4].
SetY(rect1[0].GetY());
11678 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11679 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11682 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11683 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11686 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11687 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11694 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11695 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11696 rect2[4].
SetX(rect2[0].GetX());
11697 rect2[4].
SetY(rect2[0].GetY());
11700 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11701 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11704 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11705 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11708 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11709 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
Handle_t Window_t
Window handle.
static const double x2[5]
static const double x1[5]
include TDocParser_001 C image html pict1_TDocParser_001 png width
R__EXTERN TH1 * gCurrentHist
R__EXTERN Hoption_t Hoption
static TBox * gYHighlightBox
static TString gStringStdDevZ
static TString gStringStdDevX
static TString gStringIntegralBinWidth
const UInt_t kCannotRotate
static TString gStringStdDev
static TBox * gXHighlightBox
static TString gStringOverflow
static TString gStringUnderflow
static TString gStringSkewnessY
static TString gStringMean
static TString gStringKurtosis
static TString gStringMeanX
static TString gStringEntries
static TString gStringIntegral
static TString gStringKurtosisY
static TString gStringStdDevY
static TString gStringMeanY
static TString gStringSkewnessX
static TString gStringKurtosisX
static TString gStringSkewnessZ
static TString gStringMeanZ
static TString gStringSkewness
static TString gStringKurtosisZ
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
R__EXTERN TSystem * gSystem
static struct mg_connection * fc(struct mg_context *ctx)
Draw all kinds of Arrows.
virtual Int_t GetNdivisions() const
virtual Float_t GetLabelOffset() const
virtual Float_t GetLabelSize() const
virtual Float_t GetTickLength() const
virtual Float_t GetTitleOffset() const
virtual Color_t GetFillColor() const
Return the fill area color.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void SetImageQuality(EImageQuality lquality)
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Size_t GetMarkerSize() const
Return the marker size.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
static Style_t GetMarkerStyleBase(Style_t style)
Internal helper function that returns the corresponding marker style with line width 1 for the given ...
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual Font_t GetTextFont() const
Return the text font.
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Class to manage histogram axis.
virtual Bool_t GetTimeDisplay() const
Bool_t IsAlphanumeric() const
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
const TArrayD * GetXbins() const
const char * GetBinLabel(Int_t bin) const
Return label for bin.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
const char * ChooseTimeFormat(Double_t axislength=0)
Choose a reasonable time format from the coordinates in the active pad and the number of divisions in...
Int_t GetLast() const
Return last bin on the axis i.e.
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates, that is,...
virtual const char * GetTimeFormat() const
const char * GetTitle() const
Returns title of object.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
Int_t GetFirst() const
Return first bin on the axis i.e.
THashList * GetLabels() const
virtual void SetY2(Double_t y2)
virtual void SetX1(Double_t x1)
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
virtual void SetX2(Double_t x2)
virtual void SetY1(Double_t y1)
virtual void Paint(Option_t *option="")
Paint this box with its current attributes.
The candle plot painter class.
void SetLog(int x, int y, int z)
void SetHistoWidth(const Double_t width)
virtual void Paint(Option_t *option="")
Paint one candle with its current attributes.
int ParseOption(char *optin)
Parsing of the option-string.
void SetOption(CandleOption opt)
void SetHistogram(TH1D *proj)
void SetCandleWidth(const Double_t width)
void SetAxisPosition(const Double_t candlePos)
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
void SetName(const char *name)
virtual void Paint(Option_t *option="")
Paint all objects in this collection.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
The color creation and management class.
virtual void SetRGB(Float_t r, Float_t g, Float_t b)
Initialize this color and its associated colors.
static void RGBtoHLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
static void HLStoRGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
virtual void SetAlpha(Float_t a)
virtual void Paint(Option_t *option="")
Paint this crown with its current attributes.
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
virtual Double_t GetXmax() const
virtual void SetMaximum(Double_t maximum=-1111)
Set the maximum value along Y for this function In case the function is already drawn,...
virtual Double_t GetMaximumStored() const
virtual void SetMinimum(Double_t minimum=-1111)
Set the minimum value along Y for this function In case the function is already drawn,...
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
virtual Double_t GetXmin() const
A 2-Dim function with parameters.
virtual void Paint(Option_t *option="")
Paint this 2-D function with its current attributes.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
A 3-Dim function with parameters.
void SetTimeFormat(const char *tformat)
Change the format used for time plotting.
virtual void PaintAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Double_t &wmin, Double_t &wmax, Int_t &ndiv, Option_t *chopt="", Double_t gridlength=0, Bool_t drawGridOnly=kFALSE)
Control function to draw an axis.
void SetTitleOffset(Float_t titleoffset=1)
virtual void SetTitle(const char *title="")
Change the title of the axis.
void SetLabelOffset(Float_t labeloffset)
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
void SetTickSize(Float_t ticksize)
void SetLabelSize(Float_t labelsize)
void SetOption(Option_t *option="")
To set axis options.
The TGraphDelaunay painting class.
void Paint(Option_t *option)
Paint a TGraphDelaunay according to the value of "option":
TList * GetContourList(Double_t contour)
Returns the X and Y graphs building a contour.
TGraphDelaunay2D generates a Delaunay triangulation of a TGraph2D.
TGraphDelaunay generates a Delaunay triangulation of a TGraph2D.
A TGraph is an object made of two arrays X and Y with npoints each.
@ kClipFrame
Clip to the frame boundary.
1-D histogram with a double per channel (see TH1 documentation)}
1-D histogram with a float per channel (see TH1 documentation)}
TH1 is the base class of all histogram classes in ROOT.
virtual void SetTitle(const char *title)
See GetStatOverflows for more information.
virtual EBinErrorOpt GetBinErrorOption() const
virtual Float_t GetBarWidth() const
virtual Double_t GetMinimumStored() const
virtual Float_t GetBarOffset() const
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
virtual Int_t GetNbinsY() const
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Int_t GetNbinsZ() const
virtual Double_t GetNormFactor() const
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
virtual Double_t GetSkewness(Int_t axis=1) const
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
virtual void SetXTitle(const char *title)
virtual Int_t GetDimension() const
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
@ kNoTitle
Don't draw the histogram title.
@ kUserContour
User specified contour levels.
@ kNoStats
Don't draw stats box.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
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 Int_t GetNbinsX() const
virtual void SetMaximum(Double_t maximum=-1111)
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
virtual void SetMinimum(Double_t minimum=-1111)
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual Double_t GetEntries() const
Return the current number of entries.
virtual void SetZTitle(const char *title)
TList * GetListOfFunctions() const
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
virtual Double_t GetMaximumStored() const
virtual void GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
@ kNormal
Errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
const Double_t * GetBuffer() const
virtual Bool_t IsHighlight() const
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual void SetYTitle(const char *title)
virtual Int_t GetSumw2N() const
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
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...
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
virtual void LabelsDeflate(Option_t *axis="X")
Reduce the number of bins for the axis passed in the option to the number of bins having a label.
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual Double_t GetKurtosis(Int_t axis=1) const
2-D histogram with a double per channel (see TH1 documentation)}
2-D histogram with a float per channel (see TH1 documentation)}
Helper class to represent a bin in the TH2Poly histogram.
2D Histogram with Polygonal Bins
Service class for 2-D histogram classes.
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along Y.
TH1D * ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along X.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
The 3-D histogram classes derived from the 1-D histogram classes.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual TH1 * Project3D(Option_t *option="x") const
Project a 3-d histogram into 1 or 2-d histograms depending on the option parameter,...
The histogram painter class.
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Bool_t IsInside(Int_t x, Int_t y)
Return kTRUE if the cell ix, iy is inside one of the graphical cuts.
TAxis * fYaxis
Pointer to Y axis.
Double_t * fXbuf
X buffer coordinates.
Int_t fXHighlightBin
X highlight bin.
TF3 * fCurrentF3
Current TF3 function.
virtual void DrawPanel()
Display a panel with all histogram drawing options.
virtual void PaintErrors(Option_t *option)
Draw 1D histograms error bars.
virtual void SetHistogram(TH1 *h)
Set current histogram to h
virtual void PaintTF3()
Control function to draw a 3D implicit functions.
virtual void PaintStat(Int_t dostat, TF1 *fit)
Draw the statistics box for 1D and profile histograms.
virtual Int_t TableInit()
Initialize various options to draw 2D histograms.
virtual void PaintTH2PolyScatterPlot(Option_t *option)
Control function to draw a TH2Poly as a scatter plot.
static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual void PaintText(Option_t *option)
Control function to draw a 1D/2D histograms with the bin values.
virtual void PaintAxis(Bool_t drawGridOnly=kFALSE)
Draw axis (2D case) of an histogram.
virtual void PaintColorLevelsFast(Option_t *option)
[Rendering scheme for the COL2 and COLZ2 options] (HP14)
virtual Int_t PaintInit()
Compute histogram parameters used by the drawing routines.
virtual void Paint2DErrors(Option_t *option)
Draw 2D histograms errors.
Int_t fYHighlightBin
Y highlight bin.
virtual void PaintCandlePlot(Option_t *option)
Control function to draw a 2D histogram as a candle (box) plot or violin plot
virtual void PaintScatterPlot(Option_t *option)
Control function to draw a 2D histogram as a scatter plot.
virtual ~THistPainter()
Default destructor.
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Display the histogram info (bin number, contents, integral up to bin corresponding to cursor position...
virtual void PaintLego(Option_t *option)
Control function to draw a 2D histogram as a lego plot.
virtual void PaintH3(Option_t *option="")
Control function to draw a 3D histograms.
Int_t fNcuts
Number of graphical cuts.
TString fShowOption
Option to draw the projection.
virtual void PaintHighlightBin(Option_t *option="")
Paint highlight bin as TBox object.
virtual void PaintTH2PolyBins(Option_t *option)
Control function to draw a TH2Poly bins' contours.
virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1, Double_t elev2, Int_t icont2, Double_t x2, Double_t y2, Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels)
Fill the matrix xarr and yarr for Contour Plot.
Int_t fShowProjection
True if a projection must be drawn.
virtual void PaintLegoAxis(TGaxis *axis, Double_t ang)
Draw the axis for legos and surface plots.
virtual void PaintTriangles(Option_t *option)
Control function to draw a table using Delaunay triangles.
virtual void HighlightBin(Int_t px, Int_t py)
Check on highlight bin.
virtual void PaintH3Box(Int_t iopt)
Control function to draw a 3D histogram with boxes.
TList * fFunctions
Pointer to histogram list of functions.
static void PaintSpecialObjects(const TObject *obj, Option_t *option)
Static function to paint special objects like vectors and matrices.
virtual void PaintTitle()
Draw the histogram title.
virtual void PaintTH2PolyColorLevels(Option_t *option)
Control function to draw a TH2Poly as a color plot.
virtual std::vector< THistRenderingRegion > ComputeRenderingRegions(TAxis *pAxis, Int_t nPixels, bool isLog)
Returns the rendering regions for an axis to use in the COL2 option.
virtual void ShowProjectionX(Int_t px, Int_t py)
Show projection onto X.
virtual void PaintPalette()
Paint the color palette on the right side of the pad.
virtual void ProcessMessage(const char *mess, const TObject *obj)
Process message mess.
Double_t * fYbuf
Y buffer coordinates.
TAxis * fXaxis
Pointer to X axis.
virtual void PaintStat2(Int_t dostat, TF1 *fit)
Draw the statistics box for 2D histograms.
virtual void PaintArrows(Option_t *option)
Control function to draw a table as an arrow plot
virtual void RecalculateRange()
Recompute the histogram range following graphics operations.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute the distance from the point px,py to a line.
static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
TPainter3dAlgorithms * fLego
Pointer to a TPainter3dAlgorithms object.
virtual void PaintBarH(Option_t *option)
Draw a bar char in a rotated pad (X vertical, Y horizontal)
virtual void PaintStat3(Int_t dostat, TF1 *fit)
Draw the statistics box for 3D histograms.
virtual void PaintSurface(Option_t *option)
Control function to draw a 2D histogram as a surface plot.
TList * fStack
Pointer to stack of histograms (if any)
TGraph2DPainter * fGraph2DPainter
Pointer to a TGraph2DPainter object.
TPie * fPie
Pointer to a TPie in case of option PIE.
THistPainter()
Default constructor.
TH1 * fH
Pointer to histogram to paint.
virtual void PaintTH2PolyText(Option_t *option)
Control function to draw a TH2Poly as a text plot.
virtual void ShowProjection3(Int_t px, Int_t py)
Show projection (specified by fShowProjection) of a TH3.
TAxis * fZaxis
Pointer to Z axis.
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms
virtual void PaintFunction(Option_t *option)
[Paint functions associated to an histogram.](HP28")
virtual void PaintBar(Option_t *option)
Draw a bar-chart in a normal pad.
static Int_t ProjectMercator2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual void PaintBoxes(Option_t *option)
Control function to draw a 2D histogram as a box plot
virtual Int_t MakeChopt(Option_t *option)
Decode string choptin and fill Hoption structure.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute the actions corresponding to event.
virtual void SetShowProjection(const char *option, Int_t nbins)
Set projection.
virtual void ShowProjectionY(Int_t px, Int_t py)
Show projection onto Y.
virtual void SetHighlight()
Set highlight (enable/disable) mode for fH.
static const char * GetBestFormat(Double_t v, Double_t e, const char *f)
This function returns the best format to print the error value (e) knowing the parameter value (v) an...
virtual void PaintContour(Option_t *option)
Control function to draw a 2D histogram as a contour plot.
TCutG * fCuts[kMaxCuts]
Pointers to graphical cuts.
virtual void PaintTable(Option_t *option)
Control function to draw 2D/3D histograms (tables).
virtual TList * GetContourList(Double_t contour) const
Get a contour (as a list of TGraphs) using the Delaunay triangulation.
virtual Int_t PaintInitH()
Compute histogram parameters used by the drawing routines for a rotated pad.
virtual void PaintFrame()
Calculate range and clear pad (canvas).
Int_t fCutsOpt[kMaxCuts]
Sign of each cut.
virtual void PaintH3Iso()
Control function to draw a 3D histogram with Iso Surfaces.
virtual void PaintH3BoxRaster()
Control function to draw a 3D histogram with boxes.
virtual void PaintHist(Option_t *option)
Control routine to draw 1D histograms
virtual Int_t MakeCuts(char *cutsopt)
Decode string choptin and fill Graphical cuts structure.
virtual void DefineColorLevels(Int_t ndivz)
Define the color levels used to paint legos, surfaces etc..
virtual void PaintColorLevels(Option_t *option)
Control function to draw a 2D histogram as a color plot.
A class to define a conversion from pixel values to pixel color.
static TImagePalette * CreateCOLPalette(Int_t nContours)
Factory method to creates an image palette for histogram plotting.
An abstract interface to image processing library.
virtual void SetImage(const Double_t *, UInt_t, UInt_t, TImagePalette *=0)
static TImage * Create()
Create an image.
virtual void PaintImage(Drawable_t, Int_t, Int_t, Int_t=0, Int_t=0, UInt_t=0, UInt_t=0, Option_t *="")
To draw Mathematical Formula.
virtual void Add(TObject *obj)
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual TObjLink * FirstLink() const
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
A TMultiGraph is a collection of TGraph (or derived) objects.
TList * GetListOfGraphs() const
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside one of the graphs 0 otherwise.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
TObject * At(Int_t idx) const
TObject * GetObject() const
Option_t * GetOption() const
Mother of all ROOT objects.
virtual void Clear(Option_t *="")
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
virtual void Delete(Option_t *option="")
Delete this object.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
@ kCannotPick
if object in a pad cannot be picked
@ kCanDelete
if object in a list can be deleted
@ kMustCleanup
if object destructor must call RecursiveRemove()
The Legos and Surfaces painter class.
void DrawFaceMove3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 3rd variant for "MOVING SCREEN" algorithm (draw level lines only)
void SetDrawFace(DrawFaceFunc_t pointer)
Store pointer to current algorithm to draw faces.
void SetIsoSurfaceParameters(Double_t fmin, Double_t fmax, Int_t ncolor, Int_t ic1, Int_t ic2, Int_t ic3)
void IsoSurface(Int_t ns, Double_t *s, Int_t nx, Int_t ny, Int_t nz, Double_t *x, Double_t *y, Double_t *z, const char *chopt)
Draw set of iso-surfaces for a scalar function defined on a grid.
void DrawLevelLines(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw level lines without hidden line removal.
void SetLegoFunction(LegoFunc_t pointer)
Store pointer to current lego function.
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in cylindrical coordinates.
void SurfaceFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Service function for Surfaces.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
void FillPolygonBorder(Int_t nn, Double_t *xy)
Fill a polygon including border ("RASTER SCREEN")
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots spheric coordinates.
void SurfaceCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw surface in cartesian coordinate system.
void SurfaceProperty(Double_t qqa, Double_t qqd, Double_t qqs, Int_t nnqs, Int_t &irep)
Set surface property coefficients.
void InitMoveScreen(Double_t xmin, Double_t xmax)
Initialize "MOVING SCREEN" method.
void FindVisibleLine(Double_t *p1, Double_t *p2, Int_t ntmax, Int_t &nt, Double_t *t)
Find visible part of a line ("RASTER SCREEN")
void LegoCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw stack of lego-plots in cartesian coordinates.
void DrawFaceMode1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 1st variant (2 colors: 1st for external surface, 2nd for internal)
void LightSource(Int_t nl, Double_t yl, Double_t xscr, Double_t yscr, Double_t zscr, Int_t &irep)
Set light source.
void GouraudFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Find part of surface with luminosity in the corners.
void DrawFaceMove1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "MOVING SCREEN" algorithm (draw face with level lines)
void SetSurfaceFunction(SurfaceFunc_t pointer)
Store pointer to current surface function.
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in polar coordinates.
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in spheric coordinates.
void BackBox(Double_t ang)
Draw back surfaces of surrounding box.
void ColorFunction(Int_t nl, Double_t *fl, Int_t *icl, Int_t &irep)
Set correspondence between function and color levels.
void DrawFaceRaster2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "RASTER SCREEN" algorithm (draw face for stacked lego plot)
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in polar coordinates.
void SetEdgeAtt(Color_t color=1, Style_t style=1, Width_t width=1, Int_t n=0)
void SetMesh(Int_t mesh=1)
void InitRaster(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Int_t nx, Int_t ny)
Initialize hidden lines removal algorithm (RASTER SCREEN)
void DefineGridLevels(Int_t ndivz)
Define the grid levels drawn in the background of surface and lego plots.
void LegoFunction(Int_t ia, Int_t ib, Int_t &nv, Double_t *ab, Double_t *vv, Double_t *t)
Service function for Legos.
void DrawFaceMove2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "MOVING SCREEN" algorithm (draw face for stacked lego plot)
void SetColorMain(Color_t color, Int_t n=0)
Store color for stack number n.
void Spectrum(Int_t nl, Double_t fmin, Double_t fmax, Int_t ic, Int_t idc, Int_t &irep)
Set Spectrum.
void DrawFaceRaster1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "RASTER SCREEN" algorithm (draw face with level lines)
void DrawFaceMode3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 3rd option (draw face for stacked lego plot)
void FrontBox(Double_t ang)
Draw front surfaces of surrounding box & axes.
void SetColorDark(Color_t color, Int_t n=0)
Store dark color for stack number n.
void DrawFaceMode2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 2nd option (fill in correspondence with function levels)
void ImplicitFunction(TF3 *f3, Double_t *rmin, Double_t *rmax, Int_t nx, Int_t ny, Int_t nz, const char *chopt)
Draw implicit function FUN(X,Y,Z) = 0 in cartesian coordinates using hidden surface removal algorithm...
The palette painting class.
void SetHistogram(TH1 *h)
virtual void Paint(Option_t *option="")
Paint the palette.
The histogram statistics painter class.
Int_t GetOptStat() const
Return the stat option.
virtual void SetStatFormat(const char *format="6.4g")
Change (i.e. set) the format for printing statistics.
void SetOptStat(Int_t stat=1)
Set the stat option.
virtual void SetParent(TObject *obj)
virtual const char * GetFitFormat() const
virtual void SetFitFormat(const char *format="5.4g")
Change (i.e. set) the format for printing fit parameters in statistics box.
Int_t GetOptFit() const
Return the fit option.
virtual void Paint(Option_t *option="")
Paint the pave stat.
void SetOptFit(Int_t fit=1)
Set the fit option.
virtual const char * GetStatFormat() const
A Pave (see TPave) with text, lines or/and boxes inside.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
virtual TText * GetLine(Int_t number) const
Get Pointer to line number in this pavetext.
virtual void Clear(Option_t *option="")
Clear all lines in this pavetext.
virtual void SetName(const char *name="")
Option_t * GetName() const
Returns name of object.
virtual void SetBorderSize(Int_t bordersize=4)
Double_t GetX1NDC() const
virtual void SetX2NDC(Double_t x2)
virtual void Paint(Option_t *)
Paint a Pie chart in a canvas.
virtual void ExecuteEvent(Int_t, Int_t, Int_t)
Execute the mouse events.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Evaluate the distance to the chart in gPad.
Defined by an array on N points in a 2-D space.
virtual void SetPoint(Int_t point, Double_t x, Double_t y)
Set point number n to (x, y) If n is greater than the current size, the arrays are automatically exte...
Profile2D histograms are used to display the mean value of Z and its error for each cell in X,...
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile2D histogram.
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile histogram.
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
virtual Double_t Rndm()
TausWorth generator from L'Ecuyer, uses as seed 3x32bits integers Use a mask of 0xffffffffUL to make ...
Sequenceable collection abstract base class.
void ToLower()
Change string to lower-case.
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Color_t GetStatTextColor() const
Float_t GetTitleX() const
Int_t GetOptTitle() const
Float_t GetStatFontSize() const
Float_t GetBarOffset() const
Float_t GetTitleSize(Option_t *axis="X") const
Return title size.
Float_t GetTitleY() const
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
Bool_t GetHistMinimumZero() const
Color_t GetTitleFillColor() const
Style_t GetTitleStyle() const
Color_t GetStatColor() const
Float_t GetBarWidth() const
Width_t GetTitleBorderSize() const
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
Float_t GetErrorX() const
Double_t GetHistTopMargin() const
void SetBarOffset(Float_t baroff=0.5)
Float_t GetEndErrorSize() const
Width_t GetStatBorderSize() const
Color_t GetTitleTextColor() const
void SetBarWidth(Float_t barwidth=0.5)
Float_t GetTitleH() const
Style_t GetStatStyle() const
const char * GetFitFormat() const
const char * GetStatFormat() const
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
Int_t GetNumberContours() const
const char * GetPaintTextFormat() const
Style_t GetStatFont() const
Float_t GetTitleFontSize() const
Float_t GetTitleW() const
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
Base class for several text objects.
virtual Double_t GetPsi()=0
virtual Double_t * GetRmax()=0
virtual void SetAxisNDC(const Double_t *x1, const Double_t *x2, const Double_t *y1, const Double_t *y2, const Double_t *z1, const Double_t *z2)=0
virtual Double_t * GetRmin()=0
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual void SetOutlineToCube()=0
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
virtual Double_t * GetTnorm()=0
virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py)=0
virtual TSeqCollection * GetOutline()=0
virtual void PadRange(Int_t rback)=0
virtual void FindNormal(Double_t x, Double_t y, Double_t z, Double_t &zn)=0
virtual void AxisVertex(Double_t ang, Double_t *av, Int_t &ix1, Int_t &ix2, Int_t &iy1, Int_t &iy2, Int_t &iz1, Int_t &iz2)=0
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
Abstract base class used by ROOT graphics editor.
static TVirtualPadEditor * GetPadEditor(Bool_t load=kTRUE)
Returns the pad editor dialog. Static method.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual Int_t GetLogz() const =0
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Int_t GetLogy() const =0
virtual Int_t GetLogx() const =0
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
Short_t Max(Short_t a, Short_t b)
Double_t Prob(Double_t chi2, Int_t ndf)
Computation of the probability for a certain Chi-squared (chi2) and number of degrees of freedom (ndf...
constexpr Double_t PiOver2()
constexpr Double_t DegToRad()
Conversion from degree to radian:
Double_t Sqrt(Double_t x)
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Short_t Min(Short_t a, Short_t b)
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
Long64_t BinarySearch(Long64_t n, const T *array, T value)
constexpr Double_t RadToDeg()
Conversion from radian to degree:
Double_t Log10(Double_t x)
Histograms' drawing options structure.
int Curve
"C" A smooth Curve is drawn.
int Proj
"AITOFF", "MERCATOR", "SINUSOIDAL" and "PARABOLIC" projections for 2d plots.
int Axis
"A" Axis are not drawn around the graph.
int Box
"BOX" Draw 2D plot with proportional Boxes.
int Scat
"SCAT" Draw 2D plot a Scatter plot.
int Text
"TEXT" Draw 2D plot with the content of each cell.
int Color
"COL" Draw 2D plot with Colored boxes.
int AxisPos
"X+" and "Y+" Axis position
int List
"LIST" Generate the TObjArray "contours". To be used with option "CONT"
int Logx
log scale in X. Also set by histogram option
int Zscale
"Z" Display the color palette.
int MinimumZero
"MIN0" or gStyle->GetHistMinimumZero()
int Contour
"CONTn" Draw 2D plot as a Contour plot (0 <= n <= 5).
int Off
"][" The first and last vertical lines are not drawn.
int Func
"FUNC" Draw only the function (for example in case of fit).
long Candle
"CANDLE" and "VIOLIN" Draw a 2D histogram as candle/box plot or violin plot.
int Spec
"SPEC" TSpectrum graphics
int FrontBox
"FB" Suppress the front box for the 3D plots.
int Pie
"PIE" Draw 1D plot as a pie chart.
int Star
"*" With option "P", a * is plotted at each point.
int Zero
"0" if selected with any LEGO option the empty bins are not drawn.
int Logz
log scale in Z. Also set by histogram option
int Tri
"TRI" Draw TGraph2D with Delaunay triangles.
int BackBox
"BB" Suppress the back box for the 3D plots.
int Mark
"P" The current Marker is drawn at each point.
int Arrow
"ARR" Draw 2D plot with Arrows.
int Line
"L" A simple polyline through every point is drawn.
int Same
"SAME" Histogram is plotted in the current pad.
int Lego
"LEGO" and "LEGOn" Draw as a Lego plot(1 <= n <= 4).
int Bar
"B", "BAR" and "HBAR" A Bar chart is drawn at each point.
int Fill
"F" A fill area is drawn ("CF" draw a smooth fill area).
int Hist
"HIST" Draw only the histogram.
int Surf
"SURF" and "SURFn" Draw as a Surface ((1 <= n <= 4).
int Logy
log scale in Y. Also set by histogram option
int System
"POL", "CYL", "SPH" and "PSR" Type of coordinate system for 3D plots.
int Error
"En" Draw Errors with current marker type and size (0 <= n <=6).
Histogram parameters structure.
Double_t baroffset
Offset of bin for bars or legos [0,1].
Double_t ylowedge
Low edge of axis.
Double_t xmin
Minimum value along X.
Int_t ylast
Last bin number along Y.
Int_t xfirst
First bin number along X.
Double_t zmin
Minimum value along Z.
Double_t xbinsize
Bin size in case of equidistant bins.
Double_t ymin
Minimum value along y.
Double_t allchan
Integrated sum of contents.
Double_t xlowedge
Low edge of axis.
Double_t ymax
Maximum value along y.
Double_t factor
Multiplication factor (normalization)
Int_t xlast
Last bin number along X.
Double_t ybinsize
Bin size in case of equidistant bins.
Double_t barwidth
Width of bin for bars and legos [0,1].
Double_t zmax
Maximum value along Z.
Double_t xmax
Maximum value along X.
Int_t yfirst
First bin number along Y.