3196 const Int_t big = 9999;
3197 const Int_t kMaxDiff = 7;
3208 Int_t curdist = big;
3209 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
3212 if (!PadPointer)
return 0;
3226 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
3228 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
3230 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
3231 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
3242 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
3251 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
3263 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
3272 if (yxaxis < puymin) yxaxis = puymin;
3273 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
3283 if ((px > puxmin) && (py < puymin) && (px < puxmax) && (py > puymax))
3299 Int_t bin =
th2->FindBin(pxu, pyu);
3300 if (bin>0) curdist = 1;
3306 if ( px > puxmin + delta2
3307 && px < puxmax - delta2
3308 && py > puymax + delta2
3309 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
3313 if (
gPad->IsVertical()) {
3318 if (binval == 0 && pybin < puymin) pybin = 10000;
3324 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3326 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3327 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3329 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
3330 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
3331 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
3333 if (bin != binsup) {
3335 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
3336 if (py <=
TMath::Max(pybinsub,pybin) && py >=
TMath::Min(pybinsub,pybin) && pybin != 10000)
return 0;
3346 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
3352 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3354 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3355 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3357 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
3358 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
3359 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
3369 if (
f->InheritsFrom(TF1::Class())) dist =
f->DistancetoPrimitive(-px,py);
3370 else dist =
f->DistancetoPrimitive(px,py);
3371 if (dist < kMaxDiff) {
gPad->SetSelected(
f);
return dist;}
3384 Error(
"DrawPanel",
"need to draw histogram first");
3389 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
3404 static Int_t bin, px1, py1, px2, py2, pyold;
3405 static TBox *zoombox;
3409 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3412 if (!
gPad->IsEditable())
return;
3433 if (IsSame.
Index(
"same")>=0) {
3435 TIter next(
gPad->GetListOfPrimitives());
3436 while ((
h1 = (
TH1 *)next())) {
3453 if (!opaque)
gVirtualX->SetLineColor(-1);
3454 fH->TAttLine::Modify();
3456 if (opaque && dimension ==2) {
3457 zbx1 =
gPad->AbsPixeltoX(px);
3458 zbx2 =
gPad->AbsPixeltoX(px);
3459 zby1 =
gPad->AbsPixeltoY(py);
3460 zby2 =
gPad->AbsPixeltoY(py);
3463 if (
gPad->GetLogx()) {
3467 if (
gPad->GetLogy()) {
3471 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3488 if (dimension ==1) {
3496 x =
gPad->AbsPixeltoX(px);
3500 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3501 ylow =
gPad->GetUymin();
3502 px1 =
gPad->XtoAbsPixel(xlow);
3503 px2 =
gPad->XtoAbsPixel(xup);
3504 py1 =
gPad->YtoAbsPixel(ylow);
3514 if (dimension ==1) {
3515 if (
gROOT->GetEditHistograms()) {
3524 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3531 if (opaque && dimension ==2) {
3533 zbx2 =
gPad->AbsPixeltoX(px);
3534 zby2 =
gPad->AbsPixeltoY(py);
3537 zoombox->
SetX2(zbx2);
3538 zoombox->
SetY2(zby2);
3548 if (dimension ==2) {
3553 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3558 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3567 if (dimension == 2) {
3572 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3577 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3585 if (dimension ==1) {
3586 if (
gROOT->GetEditHistograms()) {
3587 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3595 if (opaque && dimension ==2) {
3605 if (
x1<
x2 && y1<y2) {
3624 event =
gVirtualX->RequestLocator(1, 1, px, py);
3651 if (!dt && !dtOld)
return nullptr;
3670 if (!
gPad)
return (
char*)
"";
3680 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3681 uxmin=
gPad->GetUxmin();
3682 uxmax=
gPad->GetUxmax();
3686 uymin=
gPad->GetUymin();
3687 uymax=
gPad->GetUymax();
3693 Int_t binx,biny,binmin=0,binx1;
3694 if (
gPad->IsVertical()) {
3696 if (drawOption.
Index(
"same") >= 0) {
3698 TIter next(
gPad->GetListOfPrimitives());
3699 while ((
h1 = (
TH1 *)next())) {
3712 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3724 if (drawOption.
Index(
"same") >= 0) {
3726 TIter next(
gPad->GetListOfPrimitives());
3727 while ((
h1 = (
TH1 *)next())) {
3740 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3766 biny =
th2->FindBin(
x,
y);
3768 th2->GetBinTitle(biny),
x,
y,biny,
th2->GetBinContent(biny));
3774 fObjectInfo.
Form(
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3830 if (!changedBin)
return;
3856 if (
gPad->GetLogx()) {
3860 if (
gPad->GetLogy()) {
3867 if (
gPad->IsVertical()) {
3869 if ((hcenter < uxmin) || (hcenter > uxmax))
return;
3872 if ((hcenter < uymin) || (hcenter > uymax))
return;
3876 if ((hcenter < uymin) || (hcenter > uymax))
return;
3881 if (
gPad->IsVertical()) {
3971 Int_t nch = strlen(choptin);
3972 strlcpy(chopt,choptin,128);
3998 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
4004 char *l1 = strstr(chopt,
"PFC");
4005 char *l2 = strstr(chopt,
"PLC");
4006 char *l3 = strstr(chopt,
"PMC");
4007 if (l1 || l2 || l3) {
4015 l = strstr(chopt,
"MIN0");
4021 l = strstr(chopt,
"SPEC");
4026 l = strstr(chopt,
"BF(");
4028 if (sscanf(&
l[3],
"%d",&bs) > 0) {
4041 l = strstr(chopt,
"GL");
4045 l = strstr(chopt,
"X+");
4050 l = strstr(chopt,
"Y+");
4058 l = strstr(chopt,
"SAMES");
4065 l = strstr(chopt,
"SAME");
4073 l = strstr(chopt,
"PIE");
4080 l = strstr(chopt,
"CANDLE");
4087 l = strstr(chopt,
"VIOLIN");
4094 l = strstr(chopt,
"LEGO");
4105 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4108 l = strstr(chopt,
"SURF");
4123 l = strstr(chopt,
"TF3");
4130 l = strstr(chopt,
"ISO");
4137 l = strstr(chopt,
"LIST");
if (
l) {
Hoption.
List = 1; memcpy(
l,
" ",4);}
4139 l = strstr(chopt,
"CONT");
4154 l = strstr(chopt,
"HBAR");
4163 l = strstr(chopt,
"BAR");
4173 l = strstr(chopt,
"ARR" );
4179 l = strstr(chopt,
"COL");
if (
l) {
Hoption.
Arrow = 2; memcpy(
l,
" ",3); }
4185 l = strstr(chopt,
"BOX" );
4198 l = strstr(chopt,
"COLZ");
4206 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4212 l = strstr(chopt,
"COL" );
4219 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4228 l = strstr(chopt,
"AXIS");
if (
l) {
Hoption.
Axis = 1; memcpy(
l,
" ",4); }
4229 l = strstr(chopt,
"AXIG");
if (
l) {
Hoption.
Axis = 2; memcpy(
l,
" ",4); }
4230 l = strstr(chopt,
"SCAT");
if (
l) {
Hoption.
Scat = 1; memcpy(
l,
" ",4); }
4231 l = strstr(chopt,
"TEXT");
4234 if (sscanf(&
l[4],
"%d",&angle) > 0) {
4235 if (angle < 0) angle=0;
4236 if (angle > 90) angle=90;
4242 l = strstr(chopt,
"N");
4251 l = strstr(chopt,
"TRI");
4258 l = strstr(chopt,
"ERR");
if (
l) memcpy(
l,
" ",3);
4261 l = strstr(chopt,
"AITOFF");
4265 l = strstr(chopt,
"MERCATOR");
4269 l = strstr(chopt,
"SINUSOIDAL");
4273 l = strstr(chopt,
"PARABOLIC");
4299 if (strstr(chopt,
"E")) {
4309 if (strstr(chopt,
"X0")) {
4332 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
4353 char *left = (
char*)strchr(choptin,
'[');
4354 if (!left)
return 0;
4355 char *right = (
char*)strchr(choptin,
']');
4356 if (!right)
return 0;
4357 Int_t nch = right-left;
4358 if (nch < 2)
return 0;
4359 char *cuts = left+1;
4361 char *comma, *minus;
4364 comma = strchr(cuts,
',');
4365 if (comma) *comma = 0;
4366 minus = strchr(cuts,
'-');
4367 if (minus) cuts = minus+1;
4368 while (*cuts ==
' ') cuts++;
4369 Int_t nc = strlen(cuts);
4370 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
4374 while ((obj = next())) {
4376 if (strcmp(obj->
GetName(),cuts))
continue;
4389 for (i=0;i<=nch;i++) left[i] =
' ';
4417 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
4427 Error(
"Paint",
"Option PIE is for 1D histograms only");
4461 Int_t logysav=0, logzsav=0;
4512 if (gridx)
gPad->SetGridx(0);
4513 if (gridy)
gPad->SetGridy(0);
4515 if (gridx)
gPad->SetGridx(1);
4516 if (gridy)
gPad->SetGridy(1);
4551 if (gridx)
gPad->SetGridx(0);
4552 if (gridy)
gPad->SetGridy(0);
4554 if (gridx)
gPad->SetGridx(1);
4555 if (gridy)
gPad->SetGridy(1);
4564 while ((obj = next())) {
4572 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4600 arrow->SetAngle(30);
4601 arrow->SetFillStyle(1001);
4607 Int_t ncolors=0, ndivz=0;
4621 for (
Int_t id=1;
id<=2;
id++) {
4628 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4646 }
else if (
id == 2) {
4658 if (theColor > ncolors-1) theColor = ncolors-1;
4663 arrow->PaintArrow(
x1, y1,
x2, y2, 0.015,
"|>");
4665 arrow->PaintArrow(
x1, y1,
x2, y2, 0.005,
"|>");
4688 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4700 TIter next(
gPad->GetListOfPrimitives());
4703 while ((obj = next())) {
4709 if (strstr(opt,
"hbar")) {
4713 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4723 static char chopt[10] =
"";
4725 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4726 Int_t useHparam = 0;
4727 Double_t umin, umax, uminsave, umaxsave;
4743 TIter next(
gPad->GetListOfPrimitives());
4744 while ((obj=next())) {
4755 if (
gPad->PadInSelectionMode())
4759 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4770 strlcat(chopt,
"SDH",10);
4771 if (ndivx < 0) strlcat(chopt,
"N",10);
4772 if (
gPad->GetGridx()) {
4773 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4774 strlcat(chopt,
"W",10);
4779 strlcat(chopt,
"G",10);
4801 strlcat(chopt,
"t",10);
4809 if (xAxisPos == 1) {
4825 strlcat(chopt,
"-",10);
4834 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4839 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4841 cw=strstr(chopt,
"-");
4844 strlcat(chopt,
"-",10);
4846 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4847 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4851 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4857 if (
gPad->PadInSelectionMode())
4861 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4866 strlcat(chopt,
"SDH",10);
4867 if (ndivy < 0) strlcat(chopt,
"N",10);
4868 if (
gPad->GetGridy()) {
4869 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4870 strlcat(chopt,
"W",10);
4875 strlcat(chopt,
"G",10);
4897 strlcat(chopt,
"t",10);
4905 if (yAxisPos == 1) {
4921 strlcat(chopt,
"+L",10);
4930 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4935 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4936 if (
gPad->GetTicky() < 2) {
4937 strlcat(chopt,
"U",10);
4940 strlcat(chopt,
"+L",10);
4942 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4946 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4969 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4971 box.SetFillColor(hcolor);
4972 box.SetFillStyle(hstyle);
4982 if (ymax < gPad->GetUymin())
continue;
4984 if (ymin < gPad->GetUymin())
ymin =
gPad->GetUymin();
4998 box.SetFillColor(hcolor);
5018 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
5032 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
5034 box.SetFillColor(hcolor);
5035 box.SetFillStyle(hstyle);
5044 if (xmax < gPad->GetUxmin())
continue;
5046 if (xmin < gPad->GetUxmin())
xmin =
gPad->GetUxmin();
5059 box.SetFillColor(hcolor);
5072 while ((obj = next())) {
5093 fH->TAttLine::Modify();
5094 fH->TAttFill::Modify();
5096 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
5107 Double_t zminlin = zmin, zmaxlin = zmax;
5113 TIter next(
gPad->GetListOfPrimitives());
5114 while ((h2 = (
TH2 *)next())) {
5164 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5171 if (kZminNeg && z==0)
continue;
5183 if (dz == 0)
continue;
5185 if (zratio == 0)
continue;
5187 xup = xcent*zratio + xk + xcent;
5188 xlow = 2*(xk + xcent) - xup;
5189 if (xup-xlow < dxmin) xup = xlow+dxmin;
5197 yup = ycent*zratio + yk + ycent;
5198 ylow = 2*(yk + ycent) - yup;
5199 if (yup-ylow < dymin) yup = ylow+dymin;
5212 if (xlow >= xup)
continue;
5213 if (ylow >= yup)
continue;
5217 fH->TAttFill::Modify();
5218 gPad->PaintBox(xlow, ylow, xup, yup);
5220 gPad->PaintLine(xlow, ylow, xup, yup);
5221 gPad->PaintLine(xlow, yup, xup, ylow);
5226 fH->TAttFill::Modify();
5227 gPad->PaintBox(xlow, ylow, xup, yup);
5232 x[0] = xlow;
y[0] = ylow;
5233 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5234 x[2] =
x[1];
y[2] = yup - bwidth*(yup-ylow);
5235 x[3] = xup - bwidth*(xup-xlow);
y[3] =
y[2];
5236 x[4] = xup;
y[4] = yup;
5237 x[5] = xlow;
y[5] = yup;
5238 x[6] = xlow;
y[6] = ylow;
5241 fH->TAttFill::Modify();
5242 gPad->PaintFillArea(7,
x,
y);
5245 x[0] = xlow;
y[0] = ylow;
5246 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5247 x[2] = xup - bwidth*(xup-xlow);
y[2] =
y[1];
5248 x[3] =
x[2];
y[3] = yup - bwidth*(yup-ylow);
5249 x[4] = xup;
y[4] = yup;
5250 x[5] = xup;
y[5] = ylow;
5251 x[6] = xlow;
y[6] = ylow;
5254 fH->TAttFill::Modify();
5255 gPad->PaintFillArea(7,
x,
y);
5263 fH->TAttFill::Modify();
5288 const Double_t standardCandleWidth = 0.66;
5289 const Double_t standardHistoWidth = 0.8;
5292 double allMaxIntegral = 0;
5298 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5308 double myIntegral = hproj->
Integral();
5310 if (candleWidth > 0.999 && candleWidth < 1.001) {
5311 candleWidth = standardCandleWidth;
5312 histoWidth = standardHistoWidth;
5317 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5318 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5331 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5341 double myIntegral = hproj->
Integral();
5343 if (candleWidth > 0.999 && candleWidth < 1.001) {
5344 candleWidth = standardCandleWidth;
5345 histoWidth = standardHistoWidth;
5350 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5351 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5379std::vector<THistRenderingRegion>
5382 std::vector<THistRenderingRegion> regions;
5384 enum STRATEGY { Bins, Pixels } strategy;
5388 if (nBins >= nPixels) {
5400 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
5410 if (strategy == Bins) {
5428 std::make_pair(bin, bin+1)};
5429 regions.push_back(region);
5438 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
5443 std::make_pair(binLow, binHigh)};
5444 regions.push_back(region);
5450 if (strategy == Bins) {
5457 Int_t xPx1 = xPx0 + nPixels/nBins;
5460 if (xPx1>= nPixels) xPx1 = nPixels-1;
5463 std::make_pair(bin, bin+1)};
5464 regions.push_back(region);
5468 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
5470 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
5471 Int_t binHigh = binLow + nBins/nPixels;
5473 std::make_pair(binLow, binHigh)};
5474 regions.push_back(region);
5489 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5490 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
5503 if ((zmin == -1111) && (zmax == -1111)) {
5507 }
else if (zmin == -1111) {
5510 }
else if (zmax == -1111) {
5528 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5529 "Cannot plot logz because bin content is less than 0.");
5540 std::vector<Double_t> colorBounds(ndiv);
5541 std::vector<Double_t> contours(ndiv, 0);
5549 for (
Int_t i=0; i<ndiv; ++i) {
5550 colorBounds[i] = step*i;
5553 auto pFrame =
gPad->GetFrame();
5554 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5555 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5556 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5557 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5558 Int_t nXPixels = px1-px0;
5559 Int_t nYPixels = py0-py1;
5561 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5565 if (xRegions.size() == 0 || yRegions.size() == 0) {
5566 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5567 "Encountered error while computing rendering regions.");
5575 for (
auto& yRegion : yRegions) {
5576 for (
auto& xRegion : xRegions ) {
5578 const auto& xBinRange = xRegion.fBinRange;
5579 const auto& yBinRange = yRegion.fBinRange;
5590 if (z > zmax) z = zmax;
5591 if (z < zmin) z = zmin;
5596 z = colorBounds[index];
5600 index = 0.001 + ((z - zmin)/dz)*ndiv;
5603 if (index ==
static_cast<Int_t>(colorBounds.size())) {
5611 }
else if (index ==
static_cast<Int_t>(colorBounds.size()-1)) {
5615 z = colorBounds[index];
5626 const auto& xPixelRange = xRegion.fPixelRange;
5627 const auto& yPixelRange = yRegion.fPixelRange;
5628 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5629 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5630 Int_t pixel = yPx*nXPixels + xPx;
5641 if (minValue != maxValue) {
5647 buffer[buffer.size()-nXPixels] = 0.95;
5655 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5659 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5676 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5692 TIter next(
gPad->GetListOfPrimitives());
5693 while ((h2 = (
TH2 *)next())) {
5725 fH->TAttFill::Modify();
5736 Double_t scale = (dz ? ndivz / dz : 1.0);
5748 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5753 if (binEntries == 0)
5786 if (xup < gPad->GetUxmin())
continue;
5787 if (yup < gPad->GetUymin())
continue;
5788 if (xlow >
gPad->GetUxmax())
continue;
5789 if (ylow >
gPad->GetUymax())
continue;
5790 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5791 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5792 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5793 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5798 if (z < zc)
continue;
5800 for (
Int_t k=0; k<ndiv; k++) {
5809 color =
Int_t(0.01+(z-zmin)*scale);
5813 if (theColor > ncolors-1) theColor = ncolors-1;
5815 fH->TAttFill::Modify();
5817 gPad->PaintBox(xlow, ylow, xup, yup);
5830 fH->TAttFill::Modify();
5840 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5841 Int_t itars, mode, ir[4];
5842 Double_t xsave, ysave, thesave,phisave,
x[4],
y[4], zc[4];
5847 thesave =
gPad->GetTheta();
5848 phisave =
gPad->GetPhi();
5850 gPad->SetTheta(90.);
5852 gPad->SetPhi(phisave);
5853 gPad->SetTheta(thesave);
5864 TIter next(
gPad->GetListOfPrimitives());
5865 while ((obj=next())) {
5882 if (!dt && !dtOld)
return;
5902 if (ncontour == 0) {
5907 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
5918 fH->TAttLine::Modify();
5928 np =
new Int_t[ncontour];
5929 for (i=0;i<ncontour;i++) np[i] = 0;
5931 for (i=0;i<ncontour;i++) {
5937 gROOT->GetListOfSpecials()->Remove(contours);
5939 for (i=0;i<count;i++) {
5940 list = (
TList*)contours->
At(i);
5941 if (list) list->
Delete();
5945 contours->
SetName(
"contours");
5946 gROOT->GetListOfSpecials()->Add(contours);
5947 for (i=0;i<ncontour;i++) {
5949 contours->
Add(list);
5982 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
5987 if (zc[0] <= zc[1])
n = 0;
else n = 1;
5988 if (zc[2] <= zc[3])
m = 2;
else m = 3;
5989 if (zc[
n] > zc[
m])
n =
m;
5992 for (ix=1;ix<=4;ix++) {
5995 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
6000 if (zc[0] <= zc[1])
n = 0;
else n = 1;
6001 if (zc[2] <= zc[3])
m = 2;
else m = 3;
6002 if (zc[
n] > zc[
m])
n =
m;
6005 for (ix=1;ix<=4;ix++) {
6009 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
6017 for (ix=1; ix<=lj-5; ix +=2) {
6019 while (itarr[ix-1] != itarr[ix]) {
6023 for (jx=ix; jx<=lj-5; jx +=2) {
6024 xarr[jx] = xarr[jx+2];
6025 yarr[jx] = yarr[jx+2];
6026 itarr[jx] = itarr[jx+2];
6030 itarr[lj-3] = itars;
6031 if (count > 100)
break;
6036 if (count > 100)
continue;
6037 for (ix=1; ix<=lj-2; ix +=2) {
6045 if (mode == 0) mode = 5;
6049 fH->TAttLine::Modify();
6050 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
6054 ipoly = itarr[ix-1];
6055 if (ipoly >=0 && ipoly <ncontour) {
6056 poly =
polys[ipoly];
6057 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
6058 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
6060 if (npmax < np[ipoly]) npmax = np[ipoly];
6069 Int_t nadd,iminus,iplus;
6073 Int_t *polysort = 0;
6085 polysort =
new Int_t[ncontour];
6087 for (ipoly=0;ipoly<ncontour;ipoly++) {
6088 if (levels[ipoly] >= 0) {
first = ipoly;
break;}
6092 for (ipoly=
first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
6093 for (ipoly=
first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
6097 for (k=0;k<ncontour;k++) {
6098 ipoly = polysort[k];
6099 if (np[ipoly] == 0)
continue;
6102 poly =
polys[ipoly];
6109 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
6110 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
6111 xx[istart] =
xmin; yy[istart] =
ymin;
6112 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
6115 for (i=2;i<np[ipoly];i+=2) {
6116 if ((iplus < 2*npmax-1) && (xx[i] == xp[iplus]) && (yy[i] == yp[iplus])) {
6118 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
6123 if ((iminus > 0) && (xx[i+1] == xp[iminus]) && (yy[i+1] == yp[iminus])) {
6125 xp[iminus] = xx[i]; yp[iminus] = yy[i];
6131 if (nadd == 0)
break;
6136 fH->TAttFill::Modify();
6137 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6139 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6140 graph->SetFillColor(icol);
6146 for (i=2;i<np[ipoly];i+=2) {
6147 if (xx[i] !=
xmin && yy[i] !=
ymin) {
6152 if (istart == 0)
break;
6156 for (i=0;i<ncontour;i++)
delete polys[i];
6168 if (np)
delete [] np;
6184 Double_t tlen, tdif, elev, diff, pdif, xlen;
6196 tdif = elev2 - elev1;
6202 diff = elev - elev1;
6213 yarr[i] = y1 + xlen;
6218 xarr[i] =
x1 + xlen;
6241 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
6243 const Int_t kBASEMARKER=8;
6244 Double_t xp, yp, ex1, ex2, ey1, ey2;
6246 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
6247 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
6256 Int_t drawmarker, errormarker;
6257 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
6261 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
6270 if (
Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
6271 if (option2+option3 == 0) optionE = 1;
6286 if (errormarker == 1) symbolsize = 0.01;
6287 sbase = symbolsize*kBASEMARKER;
6290 fH->TAttLine::Modify();
6291 fH->TAttFill::Modify();
6292 fH->TAttMarker::Modify();
6299 npoints = last -
first +1;
6309 if (!xline || !yline) {
6310 Error(
"PaintErrors",
"too many points, out of memory");
6323 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
6324 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
6340 for (k=
first; k<=last; k++) {
6359 xminTmp += offset*(xmaxTmp-xminTmp);
6360 xmaxTmp = xminTmp + w;
6361 xp = (xminTmp+xmaxTmp)/2.;
6364 if (xp <= 0)
goto L30;
6365 if (xp < logxmin)
goto L30;
6368 if (xp <
xmin)
goto L30;
6369 if (xp >
xmax)
break;
6372 if (optionI0 && yp==0)
goto L30;
6424 if (!option0 && !option3) {
6426 if (yi1 < ymin || yi1 >
ymax)
goto L30;
6429 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
6433 if (yi3 >=
ymax)
goto L30;
6434 if (yi4 <=
ymin)
goto L30;
6435 gPad->PaintBox(xi1,yi3,xi2,yi4);
6450 if (optionE && drawmarker) {
6455 if (yi1<ymax && yi1>
ymin) {
6456 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
6457 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
6461 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
6466 if (yi1<ymax && yi1>
ymin) {
6467 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
6468 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
6475 if (option1 && drawmarker) {
6477 if (yi3 < yi1-s2y && yi3 < ymax && yi3 >
ymin)
gPad->PaintLine(xi3 - bxsize, yi3 , xi3 + bxsize, yi3);
6478 if (yi4 > yi1+s2y && yi4 < ymax && yi4 >
ymin)
gPad->PaintLine(xi3 - bxsize, yi4 , xi3 + bxsize, yi4);
6479 if (yi1 <= ymax && yi1 >=
ymin) {
6480 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1 , yi1 - bysize, xi1 , yi1 + bysize);
6481 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2 , yi1 - bysize, xi2 , yi1 + bysize);
6487 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
6516 if (if2 > npoints) {
6517 for (i=1; i<if1; i++) {
6518 xline[if1-2+i] = xline[if2-1+i];
6519 yline[if1-2+i] = yline[if2-1+i];
6523 if (option4)
graph.PaintGraph(2*npoints,xline,yline,
"FC");
6524 else graph.PaintGraph(2*npoints,xline,yline,
"F");
6525 gPad->SetLogx(logx);
6526 gPad->SetLogy(logy);
6538 fH->TAttMarker::Modify();
6539 fH->TAttLine::Modify();
6551 Error(
"Paint2DErrors",
"no TView in current pad");
6558 view->
SetView(phideg, thedeg, psideg, irep);
6563 fLego->TAttFill::Modify();
6564 Int_t backcolor =
gPad->GetFrameFillColor();
6569 fLego->TAttFill::Modify();
6610 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6653 gPad->PaintLine3D(temp1, temp2);
6660 gPad->PaintLine3D(temp1, temp2);
6667 gPad->PaintLine3D(temp1, temp2);
6671 view->
WCtoNDC(temp1, &temp2[0]);
6672 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6706 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6712 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6735 f2->
Paint(
"surf same");
6737 obj->
Paint(
"cont3 same");
6744 gPad->PushSelectableObject(obj);
6748 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6764 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6767 static char chopth[17];
6769 Int_t htype, oldhtype;
6774 strlcpy(chopth,
" ",17);
6789 nbins = last -
first + 1;
6795 if (fixbin) keepx =
new Double_t[2];
6796 else keepx =
new Double_t[nbins+1];
6803 for (j=
first; j<=last;j++) {
6813 keepy[j-
first] = yb;
6829 if (htype == 0 || htype == 1000) htype = 1001;
6853 if (!fixbin && strlen(chopth)) {
6878 graph.SetLineWidth(lw);
6881 graph.SetFillStyle(htype);
6888 graph.PaintGrapHist(nbins, keepx, keepy ,chopth);
6923 }
else if (strstr(opt,
"iso")) {
6926 }
else if (strstr(opt,
"tf3")) {
6930 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6941 view->
SetView(phideg, thedeg, psideg, irep);
6944 gROOT->ProcessLine(cmd);
6975 while ((obj = next())) {
6998 static const char *where =
"PaintInit";
7019 Error(where,
"cannot set X axis to log scale");
7026 for (i=
first; i<=last; i++) {
7038 Error(where,
"cannot set X axis to log scale");
7062 Int_t nonNullErrors = 0;
7064 for (i=
first; i<=last;i++) {
7077 if (e1 > 0) nonNullErrors++;
7091 if (
f->IsA() == TF1::Class()) {
7094 fval =
f1->
Eval(xv[0],0,0);
7106 if (!nonNullErrors) {
7125 Error(where,
"log scale requested with a negative argument (%f)", xm);
7138 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
ymax);
7146 }
else if (
ymin < 0) {
7166 if (allchan) factor /= allchan;
7167 if (factor == 0) factor = 1;
7185 Error(where,
"Cannot set Y axis to log scale");
7231 static const char *where =
"PaintInitH";
7256 Error(where,
"cannot set Y axis to log scale");
7278 for (i=
first; i<=last;i++) {
7290 if (
f->IsA() == TF1::Class()) {
7293 fval =
f1->
Eval(xv[0],0,0);
7315 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
7323 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
xmax);
7331 }
else if (
xmin < 0) {
7345 if (allchan) factor /= allchan;
7346 if (factor == 0) factor = 1;
7357 Error(where,
"Cannot set Y axis to log scale");
7396 Double_t wxyz[8][3] = { {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7397 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1} };
7398 Int_t iface[6][4] = { {0,3,2,1}, {4,5,6,7},
7399 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7} };
7419 Error(
"PaintH3",
"no TView in current pad");
7426 view->
SetView(phideg, thedeg, psideg, irep);
7428 Int_t backcolor =
gPad->GetFrameFillColor();
7444 Int_t incrx = (tnorm[ 8] < 0.) ? -1 : +1;
7445 Int_t incry = (tnorm[ 9] < 0.) ? -1 : +1;
7446 Int_t incrz = (tnorm[10] < 0.) ? -1 : +1;
7461 fH->TAttFill::Modify();
7462 fH->TAttLine::Modify();
7471 Double_t pmin[3], pmax[3], sxyz[8][3];
7472 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7475 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7478 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7488 if (w < wmin)
continue;
7489 if (w > wmax) w = wmax;
7491 if (scale == 0)
continue;
7492 for (
Int_t i=0; i<3; ++i) {
7495 for (
Int_t k=0; k<8; ++k) {
7496 sxyz[k][i] = wxyz[k][i]*
d +
c;
7499 for (
Int_t k=0; k<8; ++k) {
7500 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7503 for (
Int_t k=0; k<6; ++k) {
7504 for (
Int_t i=0; i<4; ++i) {
7505 Int_t iv = iface[k][i];
7509 x[4] =
x[0] ;
y[4] =
y[0];
7511 x[5] =
x[2] ;
y[5] =
y[2];
7512 x[6] =
x[3] ;
y[6] =
y[3];
7513 x[7] =
x[1] ;
y[7] =
y[1];
7519 if (z <= 0.)
continue;
7521 theColor = ncolors*((w-wmin)/(wmax-wmin)) -1;
7524 if (k == 3 || k == 5) {
7526 }
else if (k == 0 || k == 1) {
7532 fH->TAttFill::Modify();
7533 gPad->PaintFillArea(4,
x,
y);
7534 if (iopt != 3)
gPad->PaintPolyLine(
n,
x,
y);
7562 fH->TAttFill::Modify();
7572 {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7573 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1}
7575 Int_t iface[6][4] = {
7576 {0,3,2,1}, {4,5,6,7},
7577 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}
7581 {0,-1,0}, {1,0,0}, {0,1,0}, {-1,0,0}
7602 Error(
"PaintH3",
"no TView in current pad");
7609 view->
SetView(phideg, thedeg, psideg, irep);
7611 Int_t backcolor =
gPad->GetFrameFillColor();
7626 Int_t incrx = (tnorm[ 8] < 0.) ? +1 : -1;
7627 Int_t incry = (tnorm[ 9] < 0.) ? +1 : -1;
7628 Int_t incrz = (tnorm[10] < 0.) ? +1 : -1;
7637 fH->TAttLine::Modify();
7640 const Int_t NTMAX = 100;
7645 Double_t pmin[3], pmax[3], sxyz[8][3], pp[4][2];
7646 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7649 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7652 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7661 if (w < wmin)
continue;
7662 if (w > wmax) w = wmax;
7664 if (scale == 0)
continue;
7665 for (
Int_t i=0; i<3; ++i) {
7668 for (
Int_t k=0; k<8; ++k) {
7669 sxyz[k][i] = wxyz[k][i]*
d +
c;
7672 for (
Int_t k=0; k<8; ++k) {
7673 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7675 for (
Int_t k=0; k<6; ++k) {
7677 view->
FindNormal(normal[k][0], normal[k][1], normal[k][2], zn);
7678 if (zn <= 0)
continue;
7679 for (
Int_t i=0; i<4; ++i) {
7680 Int_t ip = iface[k][i];
7681 pp[i][0] = sxyz[ip][0];
7682 pp[i][1] = sxyz[ip][1];
7684 for (
Int_t i=0; i<4; ++i) {
7686 Int_t i2 = (i == 3) ? 0 : i + 1;
7689 Double_t xdel = pp[i2][0] - pp[i1][0];
7690 Double_t ydel = pp[i2][1] - pp[i1][1];
7692 for (
Int_t it = 0; it < nt; ++it) {
7693 x[0] = pp[i1][0] + xdel*
tt[it][0];
7694 y[0] = pp[i1][1] + ydel*
tt[it][0];
7695 x[1] = pp[i1][0] + xdel*
tt[it][1];
7696 y[1] = pp[i1][1] + ydel*
tt[it][1];
7697 gPad->PaintPolyLine(2,
x,
y);
7705 Double_t xdel = pp[i2][0] - pp[i1][0];
7706 Double_t ydel = pp[i2][1] - pp[i1][1];
7708 for (
Int_t it = 0; it < nt; ++it) {
7709 x[0] = pp[i1][0] + xdel*
tt[it][0];
7710 y[0] = pp[i1][1] + ydel*
tt[it][0];
7711 x[1] = pp[i1][0] + xdel*
tt[it][1];
7712 y[1] = pp[i1][1] + ydel*
tt[it][1];
7713 gPad->PaintPolyLine(2,
x,
y);
7718 xdel = pp[i2][0] - pp[i1][0];
7719 ydel = pp[i2][1] - pp[i1][1];
7720 for (
Int_t it = 0; it < nt; ++it) {
7721 x[0] = pp[i1][0] + xdel*
tt[it][0];
7722 y[0] = pp[i1][1] + ydel*
tt[it][0];
7723 x[1] = pp[i1][0] + xdel*
tt[it][1];
7724 y[1] = pp[i1][1] + ydel*
tt[it][1];
7725 gPad->PaintPolyLine(2,
x,
y);
7767 Int_t ic2 = ic1+nbcol;
7768 Int_t ic3 = ic2+nbcol;
7803 Error(
"PaintH3Iso",
"no TView in current pad");
7812 view->
SetView(phideg, thedeg, psideg, irep);
7814 Int_t backcolor =
gPad->GetFrameFillColor();
7830 for (
Int_t col=0;col<nbcol;col++) {
7848 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
7887 if (deltaz == 0) deltaz = 1;
7935 Color_t colormain = -1, colordark = -1;
7946 drawShadowsInLego1 =
kFALSE;
7976 for (
Int_t id=0;
id<=nids;
id++) {
7979 if (colormain == 1) colormain = 17;
7981 else colordark = colormain;
7994 Error(
"PaintLego",
"no TView in current pad");
8001 view->
SetView(phideg, thedeg, psideg, irep);
8009 fLego->TAttFill::Modify();
8011 Int_t backcolor =
gPad->GetFrameFillColor();
8017 fLego->TAttFill::Modify();
8097 Int_t ndivx, ndivy, ndivz, i;
8098 Double_t x1[3],
x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
8099 static char chopax[8], chopay[8], chopaz[8];
8100 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
8105 Error(
"PaintLegoAxis",
"no TView in current pad");
8130 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
8131 for (i = 1; i <= 8; ++i) {
8132 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
8133 r[i*3 - 2] = av[i*3 - 2]*sina;
8134 r[i*3 - 1] = av[i*3 - 1];
8148 if (!rmin || !rmax)
return;
8151 if (
x1[0] >
x2[0]) strlcpy(chopax,
"SDH=+",8);
8152 else strlcpy(chopax,
"SDH=-",8);
8153 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
8154 else strlcpy(chopay,
"SDH=-",8);
8155 if (z2[1] > z1[1]) strlcpy(chopaz,
"SDH=+",8);
8156 else strlcpy(chopaz,
"SDH=-",8);
8170 strlcat(chopax,
"N",8);
8174 strlcat(chopay,
"N",8);
8178 strlcat(chopaz,
"N",8);
8200 strlcat(chopax,
"t",8);
8218 strlcpy(chopay,
"V=+UN",8);
8233 strlcat(chopay,
"t",8);
8241 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
8256 strlcat(chopaz,
"t",8);
8264 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
8282 delete palette; palette = 0;
8287 delete palette; palette = 0;
8315 fH->TAttMarker::Modify();
8318 Double_t dz, z, xk,xstep, yk, ystep;
8323 if (zmin == 0 && zmax == 0)
return;
8334 if (zmin == 0 && zmax == 0)
return;
8337 if (ncells > 10000) scale /= 5;
8341 if (dz >=
kNMAX || zmax < 1) {
8342 scale = (
kNMAX-1)/dz;
8343 if (ncells > 10000) scale /= 5;
8350 if (zmin >= 0) zmin = 0;
8351 else zmin -= yMARGIN*(zmax-zmin);
8353 Double_t dzmin = yMARGIN*(zmax-zmin);
8354 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
8363 strlcpy(optscat,opt.
Data(),100);
8364 char *oscat = strstr(optscat,
"scat=");
8365 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
8366 sscanf(oscat+5,
"%lg",&scale);
8380 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
8382 if (z < zmin) z = zmin;
8383 if (z > zmax) z = zmax;
8389 if (z <= 0)
continue;
8393 for (
Int_t loop=0; loop<k; loop++) {
8394 if (k+marker >=
kNMAX) {
8398 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
8399 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
8408 if (
fXbuf[marker] <
gPad->GetUxmin())
break;
8409 if (
fYbuf[marker] <
gPad->GetUymin())
break;
8410 if (
fXbuf[marker] >
gPad->GetUxmax())
break;
8411 if (
fYbuf[marker] >
gPad->GetUymax())
break;
8439 R__TMatrixFBase->
Draw(option);
8445 R__TMatrixDBase->
Draw(option);
8451 R__TVectorF->
Draw(option);
8457 R__TVectorD->
Draw(option);
8474 while ((obj = next())) {
8481 if (stats && dostat) {
8487 if (!dofit) fit = 0;
8488 if (dofit == 1) dofit = 111;
8489 if (dostat == 1) dostat = 1111;
8490 Int_t print_name = dostat%10;
8491 Int_t print_entries = (dostat/10)%10;
8492 Int_t print_mean = (dostat/100)%10;
8493 Int_t print_stddev = (dostat/1000)%10;
8494 Int_t print_under = (dostat/10000)%10;
8495 Int_t print_over = (dostat/100000)%10;
8496 Int_t print_integral= (dostat/1000000)%10;
8497 Int_t print_skew = (dostat/10000000)%10;
8498 Int_t print_kurt = (dostat/100000000)%10;
8499 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8500 print_under + print_over + print_integral +
8501 print_skew + print_kurt;
8502 Int_t print_fval = dofit%10;
8503 Int_t print_ferrors = (dofit/10)%10;
8504 Int_t print_fchi2 = (dofit/100)%10;
8505 Int_t print_fprob = (dofit/1000)%10;
8506 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8508 if (print_fval < 2) nlinesf += fit->GetNumberFreeParameters();
8509 else nlinesf += fit->GetNpar();
8511 if (
fH->
InheritsFrom(TProfile::Class())) nlinesf += print_mean + print_stddev;
8515 if (!dostat && !fit) {
8554 if (print_entries) {
8560 if (print_mean == 1) {
8570 if (print_mean == 1) {
8582 if (print_stddev == 1) {
8592 if (print_stddev == 1) {
8613 if (print_integral) {
8614 if (print_integral == 1) {
8624 if (print_skew == 1) {
8635 if (print_kurt == 1) {
8648 Int_t ndf = fit->GetNDF();
8651 if (print_fchi2) stats->
AddText(
tt.Data());
8657 if (print_fval || print_ferrors) {
8659 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
8660 fit->GetParLimits(ipar,parmin,parmax);
8661 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8662 if (print_ferrors) {
8663 tf.
Form(
"%-8s = %s%s #pm %s ", fit->GetParName(ipar),
"%",stats->
GetFitFormat(),
8666 ,(
Float_t)fit->GetParError(ipar));
8694 while ((obj = next())) {
8700 if (stats && dostat) {
8706 if (dostat == 1) dostat = 1111;
8707 Int_t print_name = dostat%10;
8708 Int_t print_entries = (dostat/10)%10;
8709 Int_t print_mean = (dostat/100)%10;
8710 Int_t print_stddev = (dostat/1000)%10;
8711 Int_t print_under = (dostat/10000)%10;
8712 Int_t print_over = (dostat/100000)%10;
8713 Int_t print_integral= (dostat/1000000)%10;
8714 Int_t print_skew = (dostat/10000000)%10;
8715 Int_t print_kurt = (dostat/100000000)%10;
8716 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8717 if (print_under || print_over) nlines += 3;
8722 if (!dostat && !fit) {
8762 if (print_entries) {
8768 if (print_mean == 1) {
8787 if (print_stddev == 1) {
8805 if (print_integral) {
8811 if (print_skew == 1) {
8830 if (print_kurt == 1) {
8848 if (print_under || print_over) {
8859 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8860 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8861 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8862 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8863 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8864 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8865 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8866 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8867 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8882 Int_t ndf = fit->GetNDF();
8883 tt.Form(
"#chi^{2} / ndf = %6.4g / %d",(
Float_t)fit->GetChisquare(),ndf);
8885 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
8886 tt.Form(
"%-8s = %5.4g #pm %5.4g ",fit->GetParName(ipar)
8887 ,(
Float_t)fit->GetParameter(ipar)
8888 ,(
Float_t)fit->GetParError(ipar));
8911 while ((obj = next())) {
8917 if (stats && dostat) {
8923 if (dostat == 1) dostat = 1111;
8924 Int_t print_name = dostat%10;
8925 Int_t print_entries = (dostat/10)%10;
8926 Int_t print_mean = (dostat/100)%10;
8927 Int_t print_stddev = (dostat/1000)%10;
8928 Int_t print_under = (dostat/10000)%10;
8929 Int_t print_over = (dostat/100000)%10;
8930 Int_t print_integral= (dostat/1000000)%10;
8931 Int_t print_skew = (dostat/10000000)%10;
8932 Int_t print_kurt = (dostat/100000000)%10;
8933 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
8934 if (print_under || print_over) nlines += 3;
8939 if (!dostat && !fit) {
8977 if (print_entries) {
8983 if (print_mean == 1) {
9009 if (print_stddev == 1) {
9034 if (print_integral) {
9039 if (print_skew == 1) {
9065 if (print_kurt == 1) {
9090 if (print_under || print_over) {
9097 Int_t ndf = fit->GetNDF();
9098 tt.Form(
"#chi^{2} / ndf = %6.4g / %d",(
Float_t)fit->GetChisquare(),ndf);
9100 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
9101 tt.Form(
"%-8s = %5.4g #pm %5.4g ",fit->GetParName(ipar)
9102 ,(
Float_t)fit->GetParameter(ipar)
9103 ,(
Float_t)fit->GetParError(ipar));
9138 if (deltaz == 0) deltaz = 1;
9209 Error(
"PaintSurface",
"no TView in current pad");
9216 view->
SetView(phideg, thedeg, psideg, irep);
9226 fLego->TAttFill::Modify();
9228 Int_t backcolor =
gPad->GetFrameFillColor();
9234 fLego->TAttFill::Modify();
9272 fmax = fmin + (yligh1+0.1)*(qd+qs);
9277 if (!colref)
return;
9282 for (
Int_t col=0;col<nbcol;col++) {
9374 if (!dt && !dtOld)
return;
9387 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
9392 if (!rmin || !rmax)
return;
9411 Error(
"PaintTriangles",
"no TView in current pad");
9418 view->
SetView(phideg, thedeg, psideg, irep);
9423 fLego->TAttFill::Modify();
9424 Int_t backcolor =
gPad->GetFrameFillColor();
9429 fLego->TAttFill::Modify();
9471 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
9478 for (i = 0; i < ndivz; ++i) {
9485 delete [] colorlevel;
9555 while ((obj = next())) {
9563 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9583 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9600 while ((obj=next())) {
9602 z =
b->GetContent();
9604 poly =
b->GetPolygon();
9607 if (poly->IsA() == TGraph::Class()) {
9609 g->TAttLine::Modify();
9610 g->TAttMarker::Modify();
9611 g->TAttFill::Modify();
9613 Int_t fs =
g->GetFillStyle();
9616 g->SetFillColor(
g->GetLineColor());
9618 g->SetFillStyle(fs);
9619 g->SetFillColor(
fc);
9621 if (fill)
g->Paint(
"F");
9622 if (
mark)
g->Paint(
"P");
9626 if (poly->IsA() == TMultiGraph::Class()) {
9632 while ((
g = (
TGraph*) nextg())) {
9633 g->TAttLine::Modify();
9634 g->TAttMarker::Modify();
9635 g->TAttFill::Modify();
9637 Int_t fs =
g->GetFillStyle();
9640 g->SetFillColor(
g->GetLineColor());
9642 g->SetFillStyle(fs);
9643 g->SetFillColor(
fc);
9645 if (fill)
g->Paint(
"F");
9646 if (
mark)
g->Paint(
"P");
9659 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9662 Int_t ncolors, color, theColor;
9693 while ((obj=next())) {
9695 poly =
b->GetPolygon();
9697 z =
b->GetContent();
9703 if (z < zmin)
continue;
9708 if (z < zc)
continue;
9710 for (
Int_t k=0; k<ndiv; k++) {
9719 color =
Int_t(0.01+(z-zmin)*scale);
9722 if (theColor > ncolors-1) theColor = ncolors-1;
9725 if (poly->IsA() == TGraph::Class()) {
9728 g->TAttFill::Modify();
9733 if (poly->IsA() == TMultiGraph::Class()) {
9739 while ((
g = (
TGraph*) nextg())) {
9741 g->TAttFill::Modify();
9756 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9759 Int_t k, loop, marker=0;
9760 Double_t z, xk,xstep, yk, ystep, xp, yp;
9774 scale = (
kNMAX-1)/dz;
9788 while ((obj=next())) {
9791 if (
a>maxarea) maxarea =
a;
9796 while ((obj=next())) {
9798 poly =
b->GetPolygon();
9799 z =
b->GetContent();
9800 if (z < zmin) z = zmin;
9801 if (z > zmax) z = zmax;
9807 k =
Int_t((z*scale)*(
b->GetArea()/maxarea));
9810 xstep =
b->GetXMax()-xk;
9811 ystep =
b->GetYMax()-yk;
9814 if (poly->IsA() == TGraph::Class()) {
9816 if (k <= 0 || z <= 0)
continue;
9819 if (k+marker >=
kNMAX) {
9823 xp = (random.
Rndm()*xstep) + xk;
9824 yp = (random.
Rndm()*ystep) + yk;
9825 if (
g->IsInside(xp,yp)) {
9836 if (poly->IsA() == TMultiGraph::Class()) {
9840 if (k <= 0 || z <= 0)
continue;
9843 if (k+marker >=
kNMAX) {
9847 xp = (random.
Rndm()*xstep) + xk;
9848 yp = (random.
Rndm()*ystep) + yk;
9882 text.TAttText::Modify();
9889 while ((obj=next())) {
9891 p =
b->GetPolygon();
9892 x = (
b->GetXMin()+
b->GetXMax())/2;
9897 y = (
b->GetYMin()+
b->GetYMax())/2;
9902 z =
b->GetContent();
9906 tf.
Form(
"#splitline{%s%s}{#pm %s%s}",
9949 text.TAttText::Modify();
9963 if (yt == 0.)
continue;
9973 if (
y >=
gPad->GetY2())
continue;
9974 if (y <= gPad->GetY1())
continue;
9983 text.TAttText::Modify();
10002 tf.
Form(
"#splitline{%s%s}{#pm %s%s}",
10040 Error(
"PaintTF3",
"no TView in current pad");
10046 view->
SetView(phideg, thedeg, psideg, irep);
10100 TIter next(
gPad->GetListOfPrimitives());
10101 while ((obj = next())) {
10104 if (strcmp(title->
GetName(),
"title")) {title = 0;
continue;}
10108 if (title)
delete title;
10123 if (ht <= 0) ht = 0.05;
10144 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
10146 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
10150 if (talh == 2) xpos = xpos-wt/2.;
10151 if (talh == 3) xpos = xpos-wt;
10152 if (talv == 2) ypos = ypos+ht/2.;
10153 if (talv == 1) ypos = ypos+ht;
10171 if(!
gPad->IsEditable())
delete ptitle;
10179 if (!strcmp(mess,
"SetF3")) {
10277 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
10285 if (
xmin > xmin_aid)
xmin = xmin_aid;
10286 if (
ymin > ymin_aid)
ymin = ymin_aid;
10287 if (
xmax < xmax_aid)
xmax = xmax_aid;
10288 if (
ymax < ymax_aid)
ymax = ymax_aid;
10293 if (
xmin >xmin_aid)
xmin = xmin_aid;
10294 if (
xmax <xmax_aid)
xmax = xmax_aid;
10299 if (
ymin >ymin_aid)
ymin = ymin_aid;
10300 if (
ymax <ymax_aid)
ymax = ymax_aid;
10316 if (
xmin > xmin_aid)
xmin = xmin_aid;
10317 if (
ymin > ymin_aid)
ymin = ymin_aid;
10318 if (
xmax < xmax_aid)
xmax = xmax_aid;
10319 if (
ymax < ymax_aid)
ymax = ymax_aid;
10323 if (
xmin >xmin_aid)
xmin = xmin_aid;
10324 if (
xmax <xmax_aid)
xmax = xmax_aid;
10329 if (
ymin >ymin_aid)
ymin = ymin_aid;
10330 if (
ymax <ymax_aid)
ymax = ymax_aid;
10338 if (
xmin > xmin_aid)
xmin = xmin_aid;
10339 if (
ymin > ymin_aid)
ymin = ymin_aid;
10340 if (
xmax < xmax_aid)
xmax = xmax_aid;
10341 if (
ymax < ymax_aid)
ymax = ymax_aid;
10345 if (
xmin >xmin_aid)
xmin = xmin_aid;
10346 if (
xmax <xmax_aid)
xmax = xmax_aid;
10351 if (
ymin >ymin_aid)
ymin = ymin_aid;
10352 if (
ymax <ymax_aid)
ymax = ymax_aid;
10368 ymin - dyr*
gPad->GetBottomMargin(),
10369 xmax + dxr*
gPad->GetRightMargin(),
10380 if (
h == 0)
return;
10394 static const char *where =
"TableInit";
10422 Error(where,
"cannot set X axis to log scale");
10451 Error(where,
"cannot set Y axis to log scale");
10487 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10493 if (zmin >= zmax) {
10495 if (zmax > 0) zmin = 0.001*zmax;
10497 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10507 if (allchan) factor /= allchan;
10508 if (factor == 0) factor = 1;
10510 zmax = factor*zmax;
10511 zmin = factor*zmin;
10537 zmax += yMARGIN*(zmax-zmin);
10545 if (zmin >= 0) zmin = 0;
10546 else zmin -= yMARGIN*(zmax-zmin);
10548 Double_t dzmin = yMARGIN*(zmax-zmin);
10549 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10550 else zmin -= dzmin;
10576 tf.
Form(
"%s%s",
"%",
f);
10580 int ie = tv.
Index(
"e");
10581 int iE = tv.
Index(
"E");
10582 int id = tv.
Index(
".");
10586 if (ie >= 0 || iE >= 0) {
10587 if (tv.
Index(
"+") >= 0) {
10589 ef.
Form(
"%s.1f",
"%");
10592 ef.
Form(
"%s.%de",
"%",ie-
id-1);
10594 ef.
Form(
"%s.%dE",
"%",iE-
id-1);
10599 ef.
Form(
"%s.%de",
"%",ie-
id-1);
10601 ef.
Form(
"%s.%dE",
"%",iE-
id-1);
10606 }
else if (
id < 0) {
10607 ef.
Form(
"%s.1f",
"%");
10627 Int_t projection = 0;
10628 if (opt.
Contains(
"x")) projection = 1;
10629 if (opt.
Contains(
"y")) projection = 2;
10630 if (opt.
Contains(
"z")) projection = 3;
10631 if (opt.
Contains(
"xy")) projection = 4;
10632 if (opt.
Contains(
"yx")) projection = 5;
10633 if (opt.
Contains(
"xz")) projection = 6;
10634 if (opt.
Contains(
"zx")) projection = 7;
10635 if (opt.
Contains(
"yz")) projection = 8;
10636 if (opt.
Contains(
"zy")) projection = 9;
10640 gROOT->MakeDefCanvas();
10652 gPad->SetDoubleBuffer(0);
10656 static int pyold1 = 0;
10657 static int pyold2 = 0;
10658 float uxmin =
gPad->GetUxmin();
10659 float uxmax =
gPad->GetUxmax();
10660 int pxmin =
gPad->XtoAbsPixel(uxmin);
10661 int pxmax =
gPad->XtoAbsPixel(uxmax);
10692 TH1D *hp = ((
TH2*)
fH)->ProjectionX(prjName, biny1, biny2);
10697 if (biny1 == biny2) {
10705 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10717 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10735 gPad->SetDoubleBuffer(0);
10739 static int pxold1 = 0;
10740 static int pxold2 = 0;
10741 float uymin =
gPad->GetUymin();
10742 float uymax =
gPad->GetUymax();
10743 int pymin =
gPad->YtoAbsPixel(uymin);
10744 int pymax =
gPad->YtoAbsPixel(uymax);
10775 TH1D *hp = ((
TH2*)
fH)->ProjectionY(prjName, binx1, binx2);
10780 if (binx1 == binx2) {
10788 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10800 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10828 gPad->SetDoubleBuffer(0);
10844 static TPoint endface1[5];
10845 static TPoint endface2[5];
10854 int pxmin =
gPad->XtoAbsPixel(uxmin);
10855 int pxmax =
gPad->XtoAbsPixel(uxmax);
10856 if (pxmin==pxmax)
return;
10857 int pymin =
gPad->YtoAbsPixel(uymin);
10858 int pymax =
gPad->YtoAbsPixel(uymax);
10859 if (pymin==pymax)
return;
10860 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10861 Double_t cy = (pymax-pymin)/(uymax-uymin);
10876 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10881 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10884 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10885 if (nbins>1 && line1[0].GetX()) {
10896 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10897 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10900 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10901 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10908 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10909 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10912 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10913 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10919 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10920 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10923 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10924 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10930 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10931 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10934 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10935 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10937 endface1[0].
SetX(line1[0].GetX());
10938 endface1[0].
SetY(line1[0].GetY());
10939 endface1[1].
SetX(line2[0].GetX());
10940 endface1[1].
SetY(line2[0].GetY());
10941 endface1[2].
SetX(line3[0].GetX());
10942 endface1[2].
SetY(line3[0].GetY());
10943 endface1[3].
SetX(line4[0].GetX());
10944 endface1[3].
SetY(line4[0].GetY());
10945 endface1[4].
SetX(line1[0].GetX());
10946 endface1[4].
SetY(line1[0].GetY());
10948 endface2[0].
SetX(line1[1].GetX());
10949 endface2[0].
SetY(line1[1].GetY());
10950 endface2[1].
SetX(line2[1].GetX());
10951 endface2[1].
SetY(line2[1].GetY());
10952 endface2[2].
SetX(line3[1].GetX());
10953 endface2[2].
SetY(line3[1].GetY());
10954 endface2[3].
SetX(line4[1].GetX());
10955 endface2[3].
SetY(line4[1].GetY());
10956 endface2[4].
SetX(line1[1].GetX());
10957 endface2[4].
SetY(line1[1].GetY());
10991 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10996 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10999 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
11000 if (nbins>1 && line1[0].GetX()) {
11011 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11012 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11015 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11016 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11023 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11024 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11027 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11028 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11034 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11035 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11038 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11039 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11045 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11046 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11049 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11050 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11052 endface1[0].
SetX(line1[0].GetX());
11053 endface1[0].
SetY(line1[0].GetY());
11054 endface1[1].
SetX(line2[0].GetX());
11055 endface1[1].
SetY(line2[0].GetY());
11056 endface1[2].
SetX(line3[0].GetX());
11057 endface1[2].
SetY(line3[0].GetY());
11058 endface1[3].
SetX(line4[0].GetX());
11059 endface1[3].
SetY(line4[0].GetY());
11060 endface1[4].
SetX(line1[0].GetX());
11061 endface1[4].
SetY(line1[0].GetY());
11063 endface2[0].
SetX(line1[1].GetX());
11064 endface2[0].
SetY(line1[1].GetY());
11065 endface2[1].
SetX(line2[1].GetX());
11066 endface2[1].
SetY(line2[1].GetY());
11067 endface2[2].
SetX(line3[1].GetX());
11068 endface2[2].
SetY(line3[1].GetY());
11069 endface2[3].
SetX(line4[1].GetX());
11070 endface2[3].
SetY(line4[1].GetY());
11071 endface2[4].
SetX(line1[1].GetX());
11072 endface2[4].
SetY(line1[1].GetY());
11105 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
11110 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
11113 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
11114 if (nbins>1 && line1[0].GetX()) {
11125 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11126 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11129 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11130 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11137 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11138 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11141 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11142 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11148 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11149 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11152 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11153 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11159 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11160 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11163 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11164 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11166 endface1[0].
SetX(line1[0].GetX());
11167 endface1[0].
SetY(line1[0].GetY());
11168 endface1[1].
SetX(line2[0].GetX());
11169 endface1[1].
SetY(line2[0].GetY());
11170 endface1[2].
SetX(line3[0].GetX());
11171 endface1[2].
SetY(line3[0].GetY());
11172 endface1[3].
SetX(line4[0].GetX());
11173 endface1[3].
SetY(line4[0].GetY());
11174 endface1[4].
SetX(line1[0].GetX());
11175 endface1[4].
SetY(line1[0].GetY());
11177 endface2[0].
SetX(line1[1].GetX());
11178 endface2[0].
SetY(line1[1].GetY());
11179 endface2[1].
SetX(line2[1].GetX());
11180 endface2[1].
SetY(line2[1].GetY());
11181 endface2[2].
SetX(line3[1].GetX());
11182 endface2[2].
SetY(line3[1].GetY());
11183 endface2[3].
SetX(line4[1].GetX());
11184 endface2[3].
SetY(line4[1].GetY());
11185 endface2[4].
SetX(line1[1].GetX());
11186 endface2[4].
SetY(line1[1].GetY());
11222 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11223 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11228 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11229 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11230 rect1[4].
SetX(rect1[0].GetX());
11231 rect1[4].
SetY(rect1[0].GetY());
11234 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11235 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11238 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11239 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11242 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11243 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11250 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11251 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11252 rect2[4].
SetX(rect2[0].GetX());
11253 rect2[4].
SetY(rect2[0].GetY());
11256 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11257 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11260 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11261 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11264 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11265 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11293 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11294 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11299 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11300 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11301 rect1[4].
SetX(rect1[0].GetX());
11302 rect1[4].
SetY(rect1[0].GetY());
11305 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11306 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11309 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11310 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11313 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11314 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11321 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11322 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11323 rect2[4].
SetX(rect2[0].GetX());
11324 rect2[4].
SetY(rect2[0].GetY());
11327 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11328 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11331 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11332 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11335 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11336 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11363 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11364 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11369 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11370 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11371 rect1[4].
SetX(rect1[0].GetX());
11372 rect1[4].
SetY(rect1[0].GetY());
11375 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11376 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11379 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11380 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11383 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11384 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11391 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11392 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11393 rect2[4].
SetX(rect2[0].GetX());
11394 rect2[4].
SetY(rect2[0].GetY());
11397 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11398 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11401 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11402 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11405 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11406 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11433 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11434 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11439 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11440 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11441 rect1[4].
SetX(rect1[0].GetX());
11442 rect1[4].
SetY(rect1[0].GetY());
11445 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11446 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11449 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11450 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11453 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11454 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11461 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11462 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11463 rect2[4].
SetX(rect2[0].GetX());
11464 rect2[4].
SetY(rect2[0].GetY());
11467 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11468 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11471 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11472 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11475 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11476 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11503 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11504 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11509 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11510 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11511 rect1[4].
SetX(rect1[0].GetX());
11512 rect1[4].
SetY(rect1[0].GetY());
11515 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11516 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11519 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11520 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11523 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11524 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11531 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11532 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11533 rect2[4].
SetX(rect2[0].GetX());
11534 rect2[4].
SetY(rect2[0].GetY());
11537 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11538 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11541 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11542 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11545 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11546 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11573 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11574 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11579 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11580 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11581 rect1[4].
SetX(rect1[0].GetX());
11582 rect1[4].
SetY(rect1[0].GetY());
11585 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11586 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11589 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11590 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11593 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11594 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11601 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11602 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11603 rect2[4].
SetX(rect2[0].GetX());
11604 rect2[4].
SetY(rect2[0].GetY());
11607 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11608 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11611 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11612 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11615 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11616 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.
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
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 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-Dim 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.
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.
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.
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.
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.
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.
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
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.
TGraph2DPainter * fGraph2DPainter
THistPainter()
Default constructor.
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.
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.
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).
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)
Histogram option structure.
int Curve
"C" A smooth Curve is drawn.
int Proj
1: Aitoff, 2: Mercator, 3: Sinusoidal, 4: Parabolic
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
Axis position.
int List
= 1 to generate the TObjArray "contours"
int Logx
log scale in X. Also set by histogram option
int Zscale
"Z" to display the Z scale (color palette)
int MinimumZero
"MIN0" or gStyle->GetHistMinimumZero()
int Contour
"CONT" Draw 2D plot as a Contour plot.
int Off
"][" With H option, 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" Draw a 2D histogram as candle/box plot or violin plot (also with "VIOLIN").
int Spec
TSpectrum graphics.
int FrontBox
= 0 to suppress the front box
int Pie
"PIE" Draw 1D plot as a pie chart.
int Char
"CHAR" Draw 2D plot with a character set.
int Star
"*" A * is plotted at each point
int Zero
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 2D plot with Delaunay triangles.
int BackBox
= 0 to suppress the back box
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 beetwen every point is drawn.
int Same
"S" Histogram is plotted in the current PAD.
int Lego
"LEGO" Draw as a Lego plot(LEGO,Lego=1, LEGO1,Lego1=11, LEGO2,Lego=12).
int Bar
"B" 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" Draw as a Surface (SURF,Surf=1, SURF1,Surf=11, SURF2,Surf=12)
int Logy
log scale in Y. Also set by histogram option
int System
type of coordinate system(1=car,2=pol,3=cyl,4=sph,5=psr)
int Error
"E" Draw Errors with current marker type and size.
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