3169 const Int_t big = 9999;
3170 const Int_t kMaxDiff = 7;
3181 Int_t curdist = big;
3182 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
3185 if (!PadPointer)
return 0;
3199 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
3201 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
3203 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
3204 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
3215 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
3224 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
3236 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
3245 if (yxaxis < puymin) yxaxis = puymin;
3246 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
3256 if ((px > puxmin) && (py < puymin) && (px < puxmax) && (py > puymax))
3272 Int_t bin =
th2->FindBin(pxu, pyu);
3273 if (bin>0) curdist = 1;
3279 if ( px > puxmin + delta2
3280 && px < puxmax - delta2
3281 && py > puymax + delta2
3282 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
3286 if (
gPad->IsVertical()) {
3291 if (binval == 0 && pybin < puymin) pybin = 10000;
3297 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3299 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3300 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3302 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
3303 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
3304 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
3306 if (bin != binsup) {
3308 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
3309 if (py <=
TMath::Max(pybinsub,pybin) && py >=
TMath::Min(pybinsub,pybin) && pybin != 10000)
return 0;
3319 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
3325 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3327 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3328 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3330 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
3331 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
3332 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
3343 else dist =
f->DistancetoPrimitive(px,py);
3357 Error(
"DrawPanel",
"need to draw histogram first");
3362 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
3377 static Int_t bin, px1, py1, px2, py2, pyold;
3378 static TBox *zoombox;
3382 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3385 if (!
gPad->IsEditable())
return;
3412 if (!opaque)
gVirtualX->SetLineColor(-1);
3413 fH->TAttLine::Modify();
3415 if (opaque && dimension ==2) {
3416 zbx1 =
gPad->AbsPixeltoX(px);
3417 zbx2 =
gPad->AbsPixeltoX(px);
3418 zby1 =
gPad->AbsPixeltoY(py);
3419 zby2 =
gPad->AbsPixeltoY(py);
3422 if (
gPad->GetLogx()) {
3426 if (
gPad->GetLogy()) {
3430 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3447 if (dimension ==1) {
3455 x =
gPad->AbsPixeltoX(px);
3459 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3460 ylow =
gPad->GetUymin();
3461 px1 =
gPad->XtoAbsPixel(xlow);
3462 px2 =
gPad->XtoAbsPixel(xup);
3463 py1 =
gPad->YtoAbsPixel(ylow);
3473 if (dimension ==1) {
3474 if (
gROOT->GetEditHistograms()) {
3483 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3490 if (opaque && dimension ==2) {
3492 zbx2 =
gPad->AbsPixeltoX(px);
3493 zby2 =
gPad->AbsPixeltoY(py);
3496 zoombox->
SetX2(zbx2);
3497 zoombox->
SetY2(zby2);
3507 if (dimension ==2) {
3512 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3517 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3526 if (dimension == 2) {
3531 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3536 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3544 if (dimension ==1) {
3545 if (
gROOT->GetEditHistograms()) {
3546 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3554 if (opaque && dimension ==2) {
3564 if (
x1<
x2 && y1<y2) {
3573 if (opaque)
gVirtualX->SetLineColor(-1);
3583 event =
gVirtualX->RequestLocator(1, 1, px, py);
3610 if (!dt && !dtOld)
return nullptr;
3629 if (!
gPad)
return (
char*)
"";
3630 static char info[200];
3639 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3640 uxmin=
gPad->GetUxmin();
3641 uxmax=
gPad->GetUxmax();
3645 uymin=
gPad->GetUymin();
3646 uymax=
gPad->GetUymax();
3652 Int_t binx,biny,binmin=0,binx1;
3653 if (
gPad->IsVertical()) {
3655 if (drawOption.
Index(
"same") >= 0) {
3657 TIter next(
gPad->GetListOfPrimitives());
3658 while ((
h1 = (
TH1 *)next())) {
3671 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3683 if (drawOption.
Index(
"same") >= 0) {
3685 TIter next(
gPad->GetListOfPrimitives());
3686 while ((
h1 = (
TH1 *)next())) {
3699 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3712 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, bine=%g, binn=%d)",
3719 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, Sum=%g)",
3725 biny =
th2->FindBin(
x,
y);
3726 snprintf(info,200,
"%s (x=%g, y=%g, bin=%d, binc=%g)",
3727 th2->GetBinTitle(biny),
x,
y,biny,
th2->GetBinContent(biny));
3733 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3738 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g bine=%g)",
3788 if (!changedBin)
return;
3814 if (
gPad->GetLogx()) {
3818 if (
gPad->GetLogy()) {
3825 if (
gPad->IsVertical()) {
3827 if ((hcenter < uxmin) || (hcenter > uxmax))
return;
3830 if ((hcenter < uymin) || (hcenter > uymax))
return;
3834 if ((hcenter < uymin) || (hcenter > uymax))
return;
3839 if (
gPad->IsVertical()) {
3929 Int_t nch = strlen(choptin);
3930 strlcpy(chopt,choptin,128);
3954 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
3960 char *l1 = strstr(chopt,
"PFC");
3961 char *l2 = strstr(chopt,
"PLC");
3962 char *l3 = strstr(chopt,
"PMC");
3963 if (l1 || l2 || l3) {
3971 l = strstr(chopt,
"SPEC");
3976 l = strstr(chopt,
"BF(");
3978 if (sscanf(&
l[3],
"%d",&bs) > 0) {
3991 l = strstr(chopt,
"GL");
3995 l = strstr(chopt,
"X+");
4000 l = strstr(chopt,
"Y+");
4008 l = strstr(chopt,
"SAMES");
4014 l = strstr(chopt,
"SAME");
4021 l = strstr(chopt,
"PIE");
4028 l = strstr(chopt,
"CANDLE");
4035 l = strstr(chopt,
"VIOLIN");
4042 l = strstr(chopt,
"LEGO");
4053 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4056 l = strstr(chopt,
"SURF");
4071 l = strstr(chopt,
"TF3");
4077 l = strstr(chopt,
"ISO");
4083 l = strstr(chopt,
"LIST");
if (
l) {
Hoption.
List = 1; memcpy(
l,
" ",4);}
4085 l = strstr(chopt,
"CONT");
4100 l = strstr(chopt,
"HBAR");
4109 l = strstr(chopt,
"BAR");
4119 l = strstr(chopt,
"ARR" );
4129 l = strstr(chopt,
"BOX" );
4142 l = strstr(chopt,
"COLZ");
4150 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4156 l = strstr(chopt,
"COL" );
4163 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4172 l = strstr(chopt,
"AXIS");
if (
l) {
Hoption.
Axis = 1; memcpy(
l,
" ",4); }
4173 l = strstr(chopt,
"AXIG");
if (
l) {
Hoption.
Axis = 2; memcpy(
l,
" ",4); }
4174 l = strstr(chopt,
"SCAT");
if (
l) {
Hoption.
Scat = 1; memcpy(
l,
" ",4); }
4175 l = strstr(chopt,
"TEXT");
4178 if (sscanf(&
l[4],
"%d",&angle) > 0) {
4179 if (angle < 0) angle=0;
4180 if (angle > 90) angle=90;
4186 l = strstr(chopt,
"N");
4195 l = strstr(chopt,
"TRI");
4202 l = strstr(chopt,
"ERR");
if (
l) memcpy(
l,
" ",3);
4205 l = strstr(chopt,
"AITOFF");
4209 l = strstr(chopt,
"MERCATOR");
4213 l = strstr(chopt,
"SINUSOIDAL");
4217 l = strstr(chopt,
"PARABOLIC");
4243 if (strstr(chopt,
"E")) {
4253 if (strstr(chopt,
"X0")) {
4276 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
4297 char *left = (
char*)strchr(choptin,
'[');
4298 if (!left)
return 0;
4299 char *right = (
char*)strchr(choptin,
']');
4300 if (!right)
return 0;
4301 Int_t nch = right-left;
4302 if (nch < 2)
return 0;
4303 char *cuts = left+1;
4305 char *comma, *minus;
4308 comma = strchr(cuts,
',');
4309 if (comma) *comma = 0;
4310 minus = strchr(cuts,
'-');
4311 if (minus) cuts = minus+1;
4312 while (*cuts ==
' ') cuts++;
4313 Int_t nc = strlen(cuts);
4314 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
4318 while ((obj = next())) {
4320 if (strcmp(obj->
GetName(),cuts))
continue;
4333 for (i=0;i<=nch;i++) left[i] =
' ';
4361 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
4371 Error(
"Paint",
"Option PIE is for 1D histograms only");
4405 Int_t logysav=0, logzsav=0;
4456 if (gridx)
gPad->SetGridx(0);
4457 if (gridy)
gPad->SetGridy(0);
4459 if (gridx)
gPad->SetGridx(1);
4460 if (gridy)
gPad->SetGridy(1);
4495 if (gridx)
gPad->SetGridx(0);
4496 if (gridy)
gPad->SetGridy(0);
4498 if (gridx)
gPad->SetGridx(1);
4499 if (gridy)
gPad->SetGridy(1);
4508 while ((obj = next())) {
4516 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4531 fH->TAttLine::Modify();
4534 Double_t dx, dy, si, co, anr,
x1,
x2, y1, y2, xc, yc, dxn, dyn;
4545 for (
Int_t id=1;
id<=2;
id++) {
4552 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4570 }
else if (
id == 2) {
4584 anr = 0.005*.5*
TMath::Sqrt(2/(dxn*dxn + dyn*dyn));
4585 si = anr*(dxn + dyn);
4586 co = anr*(dxn - dyn);
4620 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4632 TIter next(
gPad->GetListOfPrimitives());
4635 while ((obj = next())) {
4641 if (strstr(opt,
"hbar")) {
4645 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4655 static char chopt[10] =
"";
4657 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4658 Int_t useHparam = 0;
4659 Double_t umin, umax, uminsave, umaxsave;
4675 TIter next(
gPad->GetListOfPrimitives());
4676 while ((obj=next())) {
4687 if (
gPad->PadInSelectionMode())
4691 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4702 strlcat(chopt,
"SDH",10);
4703 if (ndivx < 0) strlcat(chopt,
"N",10);
4704 if (
gPad->GetGridx()) {
4705 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4706 strlcat(chopt,
"W",10);
4711 strlcat(chopt,
"G",10);
4733 strlcat(chopt,
"t",10);
4741 if (xAxisPos == 1) {
4757 strlcat(chopt,
"-",10);
4766 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4771 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4773 cw=strstr(chopt,
"-");
4776 strlcat(chopt,
"-",10);
4778 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4779 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4783 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4789 if (
gPad->PadInSelectionMode())
4793 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4798 strlcat(chopt,
"SDH",10);
4799 if (ndivy < 0) strlcat(chopt,
"N",10);
4800 if (
gPad->GetGridy()) {
4801 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4802 strlcat(chopt,
"W",10);
4807 strlcat(chopt,
"G",10);
4829 strlcat(chopt,
"t",10);
4837 if (yAxisPos == 1) {
4853 strlcat(chopt,
"+L",10);
4862 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4867 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4868 if (
gPad->GetTicky() < 2) {
4869 strlcat(chopt,
"U",10);
4872 strlcat(chopt,
"+L",10);
4874 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4878 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4901 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4903 box.SetFillColor(hcolor);
4904 box.SetFillStyle(hstyle);
4911 if (ymax < gPad->GetUymin())
continue;
4913 if (ymin < gPad->GetUymin())
ymin =
gPad->GetUymin();
4927 box.SetFillColor(hcolor);
4947 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4961 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4963 box.SetFillColor(hcolor);
4964 box.SetFillStyle(hstyle);
4970 if (xmax < gPad->GetUxmin())
continue;
4972 if (xmin < gPad->GetUxmin())
xmin =
gPad->GetUxmin();
4985 box.SetFillColor(hcolor);
4998 while ((obj = next())) {
5019 fH->TAttLine::Modify();
5020 fH->TAttFill::Modify();
5022 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
5033 Double_t zminlin = zmin, zmaxlin = zmax;
5039 TIter next(
gPad->GetListOfPrimitives());
5040 while ((h2 = (
TH2 *)next())) {
5090 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5097 if (kZminNeg && z==0)
continue;
5109 if (dz == 0)
continue;
5111 if (zratio == 0)
continue;
5113 xup = xcent*zratio + xk + xcent;
5114 xlow = 2*(xk + xcent) - xup;
5115 if (xup-xlow < dxmin) xup = xlow+dxmin;
5123 yup = ycent*zratio + yk + ycent;
5124 ylow = 2*(yk + ycent) - yup;
5125 if (yup-ylow < dymin) yup = ylow+dymin;
5138 if (xlow >= xup)
continue;
5139 if (ylow >= yup)
continue;
5143 fH->TAttFill::Modify();
5144 gPad->PaintBox(xlow, ylow, xup, yup);
5146 gPad->PaintLine(xlow, ylow, xup, yup);
5147 gPad->PaintLine(xlow, yup, xup, ylow);
5152 fH->TAttFill::Modify();
5153 gPad->PaintBox(xlow, ylow, xup, yup);
5158 x[0] = xlow;
y[0] = ylow;
5159 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5160 x[2] =
x[1];
y[2] = yup - bwidth*(yup-ylow);
5161 x[3] = xup - bwidth*(xup-xlow);
y[3] =
y[2];
5162 x[4] = xup;
y[4] = yup;
5163 x[5] = xlow;
y[5] = yup;
5164 x[6] = xlow;
y[6] = ylow;
5167 fH->TAttFill::Modify();
5168 gPad->PaintFillArea(7,
x,
y);
5171 x[0] = xlow;
y[0] = ylow;
5172 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5173 x[2] = xup - bwidth*(xup-xlow);
y[2] =
y[1];
5174 x[3] =
x[2];
y[3] = yup - bwidth*(yup-ylow);
5175 x[4] = xup;
y[4] = yup;
5176 x[5] = xup;
y[5] = ylow;
5177 x[6] = xlow;
y[6] = ylow;
5180 fH->TAttFill::Modify();
5181 gPad->PaintFillArea(7,
x,
y);
5189 fH->TAttFill::Modify();
5214 const Double_t standardCandleWidth = 0.66;
5215 const Double_t standardHistoWidth = 0.8;
5218 double allMaxIntegral = 0;
5224 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5234 double myIntegral = hproj->
Integral();
5236 if (candleWidth > 0.999 && candleWidth < 1.001) {
5237 candleWidth = standardCandleWidth;
5238 histoWidth = standardHistoWidth;
5243 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5244 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5257 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5267 double myIntegral = hproj->
Integral();
5269 if (candleWidth > 0.999 && candleWidth < 1.001) {
5270 candleWidth = standardCandleWidth;
5271 histoWidth = standardHistoWidth;
5276 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5277 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5305std::vector<THistRenderingRegion>
5308 std::vector<THistRenderingRegion> regions;
5310 enum STRATEGY {
Bins, Pixels } strategy;
5314 if (nBins >= nPixels) {
5326 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
5336 if (strategy ==
Bins) {
5345 for (
Int_t bin=pAxis->
GetFirst()+binOffset; bin<=pAxis->GetLast(); bin++) {
5354 std::make_pair(bin, bin+1)};
5355 regions.push_back(region);
5364 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
5369 std::make_pair(binLow, binHigh)};
5370 regions.push_back(region);
5376 if (strategy ==
Bins) {
5378 for (
Int_t bin=pAxis->
GetFirst(); bin<=pAxis->GetLast(); bin++) {
5383 Int_t xPx1 = xPx0 + nPixels/nBins;
5386 if (xPx1>= nPixels) xPx1 = nPixels-1;
5389 std::make_pair(bin, bin+1)};
5390 regions.push_back(region);
5394 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
5396 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
5397 Int_t binHigh = binLow + nBins/nPixels;
5399 std::make_pair(binLow, binHigh)};
5400 regions.push_back(region);
5415 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5416 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
5429 if ((zmin == -1111) && (zmax == -1111)) {
5433 }
else if (zmin == -1111) {
5436 }
else if (zmax == -1111) {
5454 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5455 "Cannot plot logz because bin content is less than 0.");
5466 std::vector<Double_t> colorBounds(ndiv);
5467 std::vector<Double_t> contours(ndiv, 0);
5475 for (
Int_t i=0; i<ndiv; ++i) {
5476 colorBounds[i] = step*i;
5479 auto pFrame =
gPad->GetFrame();
5480 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5481 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5482 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5483 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5484 Int_t nXPixels = px1-px0;
5485 Int_t nYPixels = py0-py1;
5487 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5491 if (xRegions.size() == 0 || yRegions.size() == 0) {
5492 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5493 "Encountered error while computing rendering regions.");
5501 for (
auto& yRegion : yRegions) {
5502 for (
auto& xRegion : xRegions ) {
5504 const auto& xBinRange = xRegion.fBinRange;
5505 const auto& yBinRange = yRegion.fBinRange;
5516 if (z > zmax) z = zmax;
5517 if (z < zmin) z = zmin;
5522 z = colorBounds[index];
5526 index = 0.001 + ((z - zmin)/dz)*ndiv;
5529 if (index ==
static_cast<Int_t>(colorBounds.size())) {
5537 }
else if (index ==
static_cast<Int_t>(colorBounds.size()-1)) {
5541 z = colorBounds[index];
5552 const auto& xPixelRange = xRegion.fPixelRange;
5553 const auto& yPixelRange = yRegion.fPixelRange;
5554 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5555 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5556 Int_t pixel = yPx*nXPixels + xPx;
5567 if (minValue != maxValue) {
5573 buffer[buffer.size()-nXPixels] = 0.95;
5581 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5585 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5602 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5618 TIter next(
gPad->GetListOfPrimitives());
5619 while ((h2 = (
TH2 *)next())) {
5649 fH->TAttFill::Modify();
5672 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5677 if (binEntries == 0)
5710 if (xup < gPad->GetUxmin())
continue;
5711 if (yup < gPad->GetUymin())
continue;
5712 if (xlow >
gPad->GetUxmax())
continue;
5713 if (ylow >
gPad->GetUymax())
continue;
5714 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5715 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5716 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5717 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5722 if (z < zc)
continue;
5724 for (
Int_t k=0; k<ndiv; k++) {
5733 color =
Int_t(0.01+(z-zmin)*scale);
5737 if (theColor > ncolors-1) theColor = ncolors-1;
5739 fH->TAttFill::Modify();
5741 gPad->PaintBox(xlow, ylow, xup, yup);
5754 fH->TAttFill::Modify();
5764 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5765 Int_t itars, mode, ir[4];
5766 Double_t xsave, ysave, thesave,phisave,
x[4],
y[4], zc[4];
5771 thesave =
gPad->GetTheta();
5772 phisave =
gPad->GetPhi();
5774 gPad->SetTheta(90.);
5776 gPad->SetPhi(phisave);
5777 gPad->SetTheta(thesave);
5788 TIter next(
gPad->GetListOfPrimitives());
5789 while ((obj=next())) {
5806 if (!dt && !dtOld)
return;
5826 if (ncontour == 0) {
5831 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
5842 fH->TAttLine::Modify();
5852 np =
new Int_t[ncontour];
5853 for (i=0;i<ncontour;i++) np[i] = 0;
5855 for (i=0;i<ncontour;i++) {
5859 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
5861 gROOT->GetListOfSpecials()->Remove(contours);
5863 for (i=0;i<count;i++) {
5864 list = (
TList*)contours->
At(i);
5865 if (list) list->
Delete();
5869 contours->
SetName(
"contours");
5870 gROOT->GetListOfSpecials()->Add(contours);
5871 for (i=0;i<ncontour;i++) {
5873 contours->
Add(list);
5906 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
5911 if (zc[0] <= zc[1])
n = 0;
else n = 1;
5912 if (zc[2] <= zc[3])
m = 2;
else m = 3;
5913 if (zc[
n] > zc[
m])
n =
m;
5916 for (ix=1;ix<=4;ix++) {
5919 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5924 if (zc[0] <= zc[1])
n = 0;
else n = 1;
5925 if (zc[2] <= zc[3])
m = 2;
else m = 3;
5926 if (zc[
n] > zc[
m])
n =
m;
5929 for (ix=1;ix<=4;ix++) {
5933 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5941 for (ix=1; ix<=lj-5; ix +=2) {
5943 while (itarr[ix-1] != itarr[ix]) {
5947 for (jx=ix; jx<=lj-5; jx +=2) {
5948 xarr[jx] = xarr[jx+2];
5949 yarr[jx] = yarr[jx+2];
5950 itarr[jx] = itarr[jx+2];
5954 itarr[lj-3] = itars;
5955 if (count > 100)
break;
5960 if (count > 100)
continue;
5961 for (ix=1; ix<=lj-2; ix +=2) {
5969 if (mode == 0) mode = 5;
5973 fH->TAttLine::Modify();
5974 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
5978 ipoly = itarr[ix-1];
5979 if (ipoly >=0 && ipoly <ncontour) {
5980 poly =
polys[ipoly];
5981 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
5982 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
5984 if (npmax < np[ipoly]) npmax = np[ipoly];
5993 Int_t nadd,iminus,iplus;
5997 Int_t *polysort = 0;
6009 polysort =
new Int_t[ncontour];
6011 for (ipoly=0;ipoly<ncontour;ipoly++) {
6012 if (levels[ipoly] >= 0) {
first = ipoly;
break;}
6016 for (ipoly=
first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
6017 for (ipoly=
first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
6021 for (k=0;k<ncontour;k++) {
6022 ipoly = polysort[k];
6023 if (np[ipoly] == 0)
continue;
6026 poly =
polys[ipoly];
6033 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
6034 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
6035 xx[istart] =
xmin; yy[istart] =
ymin;
6036 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
6039 for (i=2;i<np[ipoly];i+=2) {
6040 if ((iplus < 2*npmax-1) && (xx[i] == xp[iplus]) && (yy[i] == yp[iplus])) {
6042 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
6047 if ((iminus > 0) && (xx[i+1] == xp[iminus]) && (yy[i+1] == yp[iminus])) {
6049 xp[iminus] = xx[i]; yp[iminus] = yy[i];
6055 if (nadd == 0)
break;
6060 fH->TAttFill::Modify();
6061 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6063 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6064 graph->SetFillColor(icol);
6070 for (i=2;i<np[ipoly];i+=2) {
6071 if (xx[i] !=
xmin && yy[i] !=
ymin) {
6076 if (istart == 0)
break;
6080 for (i=0;i<ncontour;i++)
delete polys[i];
6092 if (np)
delete [] np;
6108 Double_t tlen, tdif, elev, diff, pdif, xlen;
6120 tdif = elev2 - elev1;
6126 diff = elev - elev1;
6137 yarr[i] = y1 + xlen;
6142 xarr[i] =
x1 + xlen;
6165 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
6167 const Int_t kBASEMARKER=8;
6168 Double_t xp, yp, ex1, ex2, ey1, ey2;
6170 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
6171 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
6178 Int_t drawmarker, errormarker;
6179 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
6183 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
6192 if (
Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
6193 if (option2+option3 == 0) optionE = 1;
6205 if (errormarker == 1) symbolsize = 0.01;
6206 sbase = symbolsize*kBASEMARKER;
6209 fH->TAttLine::Modify();
6210 fH->TAttFill::Modify();
6211 fH->TAttMarker::Modify();
6218 npoints = last -
first +1;
6228 if (!xline || !yline) {
6229 Error(
"PaintErrors",
"too many points, out of memory");
6242 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
6243 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
6259 for (k=
first; k<=last; k++) {
6271 if (xp <= 0)
goto L30;
6272 if (xp < logxmin)
goto L30;
6275 if (xp <
xmin)
goto L30;
6276 if (xp >
xmax)
break;
6279 if (optionI0 && yp==0)
goto L30;
6331 if (!option0 && !option3) {
6333 if (yi1 < ymin || yi1 >
ymax)
goto L30;
6336 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
6339 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
6353 if (optionE && drawmarker) {
6358 if (yi1<ymax && yi1>
ymin) {
6359 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
6360 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
6364 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
6369 if (yi1<ymax && yi1>
ymin) {
6370 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
6371 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
6378 if (option1 && drawmarker) {
6379 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
6380 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
6381 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
6382 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
6387 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
6416 if (if2 > npoints) {
6417 for (i=1; i<if1; i++) {
6418 xline[if1-2+i] = xline[if2-1+i];
6419 yline[if1-2+i] = yline[if2-1+i];
6423 if (option4)
graph.PaintGraph(2*npoints,xline,yline,
"FC");
6424 else graph.PaintGraph(2*npoints,xline,yline,
"F");
6425 gPad->SetLogx(logx);
6426 gPad->SetLogy(logy);
6438 fH->TAttMarker::Modify();
6439 fH->TAttLine::Modify();
6451 Error(
"Paint2DErrors",
"no TView in current pad");
6458 view->
SetView(phideg, thedeg, psideg, irep);
6463 fLego->TAttFill::Modify();
6464 Int_t backcolor =
gPad->GetFrameFillColor();
6469 fLego->TAttFill::Modify();
6510 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6553 gPad->PaintLine3D(temp1, temp2);
6560 gPad->PaintLine3D(temp1, temp2);
6567 gPad->PaintLine3D(temp1, temp2);
6571 view->
WCtoNDC(temp1, &temp2[0]);
6572 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6606 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6612 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6635 f2->
Paint(
"surf same");
6637 obj->
Paint(
"cont3 same");
6644 gPad->PushSelectableObject(obj);
6648 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6664 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6667 static char chopth[17];
6669 Int_t htype, oldhtype;
6674 strlcpy(chopth,
" ",17);
6689 nbins = last -
first + 1;
6695 if (fixbin) keepx =
new Double_t[2];
6696 else keepx =
new Double_t[nbins+1];
6703 for (j=
first; j<=last;j++) {
6713 keepy[j-
first] = yb;
6729 if (htype == 0 || htype == 1000) htype = 1001;
6753 if (!fixbin && strlen(chopth)) {
6778 graph.SetLineWidth(lw);
6781 graph.SetFillStyle(htype);
6788 graph.PaintGrapHist(nbins, keepx, keepy ,chopth);
6820 }
else if (strstr(opt,
"iso")) {
6823 }
else if (strstr(opt,
"tf3")) {
6827 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6838 view->
SetView(phideg, thedeg, psideg, irep);
6841 gROOT->ProcessLine(cmd);
6872 while ((obj = next())) {
6895 static const char *where =
"PaintInit";
6916 Error(where,
"cannot set X axis to log scale");
6923 for (i=
first; i<=last; i++) {
6935 Error(where,
"cannot set X axis to log scale");
6959 Int_t nonNullErrors = 0;
6961 for (i=
first; i<=last;i++) {
6974 if (e1 > 0) nonNullErrors++;
6991 fval =
f1->
Eval(xv[0],0,0);
7003 if (!nonNullErrors) {
7022 Error(where,
"log scale requested with a negative argument (%f)", xm);
7035 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
ymax);
7043 }
else if (
ymin < 0) {
7063 if (allchan) factor /= allchan;
7064 if (factor == 0) factor = 1;
7082 Error(where,
"Cannot set Y axis to log scale");
7128 static const char *where =
"PaintInitH";
7153 Error(where,
"cannot set Y axis to log scale");
7175 for (i=
first; i<=last;i++) {
7190 fval =
f1->
Eval(xv[0],0,0);
7212 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
7220 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
xmax);
7228 }
else if (
xmin < 0) {
7242 if (allchan) factor /= allchan;
7243 if (factor == 0) factor = 1;
7254 Error(where,
"Cannot set Y axis to log scale");
7293 Double_t wxyz[8][3] = { {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7294 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1} };
7295 Int_t iface[6][4] = { {0,3,2,1}, {4,5,6,7},
7296 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7} };
7316 Error(
"PaintH3",
"no TView in current pad");
7323 view->
SetView(phideg, thedeg, psideg, irep);
7325 Int_t backcolor =
gPad->GetFrameFillColor();
7341 Int_t incrx = (tnorm[ 8] < 0.) ? -1 : +1;
7342 Int_t incry = (tnorm[ 9] < 0.) ? -1 : +1;
7343 Int_t incrz = (tnorm[10] < 0.) ? -1 : +1;
7358 fH->TAttFill::Modify();
7359 fH->TAttLine::Modify();
7368 Double_t pmin[3], pmax[3], sxyz[8][3];
7369 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7372 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7375 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7385 if (w < wmin)
continue;
7386 if (w > wmax) w = wmax;
7388 if (scale == 0)
continue;
7389 for (
Int_t i=0; i<3; ++i) {
7392 for (
Int_t k=0; k<8; ++k) {
7393 sxyz[k][i] = wxyz[k][i]*
d +
c;
7396 for (
Int_t k=0; k<8; ++k) {
7397 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7400 for (
Int_t k=0; k<6; ++k) {
7401 for (
Int_t i=0; i<4; ++i) {
7402 Int_t iv = iface[k][i];
7406 x[4] =
x[0] ;
y[4] =
y[0];
7408 x[5] =
x[2] ;
y[5] =
y[2];
7409 x[6] =
x[3] ;
y[6] =
y[3];
7410 x[7] =
x[1] ;
y[7] =
y[1];
7416 if (z <= 0.)
continue;
7418 theColor = ncolors*((w-wmin)/(wmax-wmin)) -1;
7421 if (k == 3 || k == 5) {
7423 }
else if (k == 0 || k == 1) {
7429 fH->TAttFill::Modify();
7430 gPad->PaintFillArea(4,
x,
y);
7431 if (iopt != 3)
gPad->PaintPolyLine(
n,
x,
y);
7459 fH->TAttFill::Modify();
7469 {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7470 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1}
7472 Int_t iface[6][4] = {
7473 {0,3,2,1}, {4,5,6,7},
7474 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}
7478 {0,-1,0}, {1,0,0}, {0,1,0}, {-1,0,0}
7499 Error(
"PaintH3",
"no TView in current pad");
7506 view->
SetView(phideg, thedeg, psideg, irep);
7508 Int_t backcolor =
gPad->GetFrameFillColor();
7523 Int_t incrx = (tnorm[ 8] < 0.) ? +1 : -1;
7524 Int_t incry = (tnorm[ 9] < 0.) ? +1 : -1;
7525 Int_t incrz = (tnorm[10] < 0.) ? +1 : -1;
7534 fH->TAttLine::Modify();
7537 const Int_t NTMAX = 100;
7542 Double_t pmin[3], pmax[3], sxyz[8][3], pp[4][2];
7543 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7546 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7549 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7558 if (w < wmin)
continue;
7559 if (w > wmax) w = wmax;
7561 if (scale == 0)
continue;
7562 for (
Int_t i=0; i<3; ++i) {
7565 for (
Int_t k=0; k<8; ++k) {
7566 sxyz[k][i] = wxyz[k][i]*
d +
c;
7569 for (
Int_t k=0; k<8; ++k) {
7570 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7572 for (
Int_t k=0; k<6; ++k) {
7574 view->
FindNormal(normal[k][0], normal[k][1], normal[k][2], zn);
7575 if (zn <= 0)
continue;
7576 for (
Int_t i=0; i<4; ++i) {
7577 Int_t ip = iface[k][i];
7578 pp[i][0] = sxyz[ip][0];
7579 pp[i][1] = sxyz[ip][1];
7581 for (
Int_t i=0; i<4; ++i) {
7583 Int_t i2 = (i == 3) ? 0 : i + 1;
7586 Double_t xdel = pp[i2][0] - pp[i1][0];
7587 Double_t ydel = pp[i2][1] - pp[i1][1];
7589 for (
Int_t it = 0; it < nt; ++it) {
7590 x[0] = pp[i1][0] + xdel*
tt[it][0];
7591 y[0] = pp[i1][1] + ydel*
tt[it][0];
7592 x[1] = pp[i1][0] + xdel*
tt[it][1];
7593 y[1] = pp[i1][1] + ydel*
tt[it][1];
7594 gPad->PaintPolyLine(2,
x,
y);
7602 Double_t xdel = pp[i2][0] - pp[i1][0];
7603 Double_t ydel = pp[i2][1] - pp[i1][1];
7605 for (
Int_t it = 0; it < nt; ++it) {
7606 x[0] = pp[i1][0] + xdel*
tt[it][0];
7607 y[0] = pp[i1][1] + ydel*
tt[it][0];
7608 x[1] = pp[i1][0] + xdel*
tt[it][1];
7609 y[1] = pp[i1][1] + ydel*
tt[it][1];
7610 gPad->PaintPolyLine(2,
x,
y);
7615 xdel = pp[i2][0] - pp[i1][0];
7616 ydel = pp[i2][1] - pp[i1][1];
7617 for (
Int_t it = 0; it < nt; ++it) {
7618 x[0] = pp[i1][0] + xdel*
tt[it][0];
7619 y[0] = pp[i1][1] + ydel*
tt[it][0];
7620 x[1] = pp[i1][0] + xdel*
tt[it][1];
7621 y[1] = pp[i1][1] + ydel*
tt[it][1];
7622 gPad->PaintPolyLine(2,
x,
y);
7664 Int_t ic2 = ic1+nbcol;
7665 Int_t ic3 = ic2+nbcol;
7700 Error(
"PaintH3Iso",
"no TView in current pad");
7709 view->
SetView(phideg, thedeg, psideg, irep);
7711 Int_t backcolor =
gPad->GetFrameFillColor();
7727 for (
Int_t col=0;col<nbcol;col++) {
7728 acol =
gROOT->GetColor(col+icol1);
7745 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
7784 if (deltaz == 0) deltaz = 1;
7832 Color_t colormain = -1, colordark = -1;
7843 drawShadowsInLego1 =
kFALSE;
7873 for (
Int_t id=0;
id<=nids;
id++) {
7876 if (colormain == 1) colormain = 17;
7878 else colordark = colormain;
7891 Error(
"PaintLego",
"no TView in current pad");
7898 view->
SetView(phideg, thedeg, psideg, irep);
7906 fLego->TAttFill::Modify();
7908 Int_t backcolor =
gPad->GetFrameFillColor();
7914 fLego->TAttFill::Modify();
7994 Int_t ndivx, ndivy, ndivz, i;
7995 Double_t x1[3],
x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
7996 static char chopax[8], chopay[8], chopaz[8];
7997 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
8002 Error(
"PaintLegoAxis",
"no TView in current pad");
8027 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
8028 for (i = 1; i <= 8; ++i) {
8029 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
8030 r[i*3 - 2] = av[i*3 - 2]*sina;
8031 r[i*3 - 1] = av[i*3 - 1];
8045 if (!rmin || !rmax)
return;
8048 if (
x1[0] >
x2[0]) strlcpy(chopax,
"SDH=+",8);
8049 else strlcpy(chopax,
"SDH=-",8);
8050 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
8051 else strlcpy(chopay,
"SDH=-",8);
8052 if (z2[1] > z1[1]) strlcpy(chopaz,
"SDH=+",8);
8053 else strlcpy(chopaz,
"SDH=-",8);
8067 strlcat(chopax,
"N",8);
8071 strlcat(chopay,
"N",8);
8075 strlcat(chopaz,
"N",8);
8097 strlcat(chopax,
"t",8);
8115 strlcpy(chopay,
"V=+UN",8);
8130 strlcat(chopay,
"t",8);
8138 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
8153 strlcat(chopaz,
"t",8);
8161 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
8179 delete palette; palette = 0;
8184 delete palette; palette = 0;
8212 fH->TAttMarker::Modify();
8215 Double_t dz, z, xk,xstep, yk, ystep;
8220 if (zmin == 0 && zmax == 0)
return;
8231 if (zmin == 0 && zmax == 0)
return;
8234 if (ncells > 10000) scale /= 5;
8238 if (dz >=
kNMAX || zmax < 1) {
8239 scale = (
kNMAX-1)/dz;
8240 if (ncells > 10000) scale /= 5;
8247 if (zmin >= 0) zmin = 0;
8248 else zmin -= yMARGIN*(zmax-zmin);
8250 Double_t dzmin = yMARGIN*(zmax-zmin);
8251 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
8260 strlcpy(optscat,opt.
Data(),100);
8261 char *oscat = strstr(optscat,
"scat=");
8262 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
8263 sscanf(oscat+5,
"%lg",&scale);
8277 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
8279 if (z < zmin) z = zmin;
8280 if (z > zmax) z = zmax;
8286 if (z <= 0)
continue;
8290 for (
Int_t loop=0; loop<k; loop++) {
8291 if (k+marker >=
kNMAX) {
8295 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
8296 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
8305 if (
fXbuf[marker] <
gPad->GetUxmin())
break;
8306 if (
fYbuf[marker] <
gPad->GetUymin())
break;
8307 if (
fXbuf[marker] >
gPad->GetUxmax())
break;
8308 if (
fYbuf[marker] >
gPad->GetUymax())
break;
8336 R__TMatrixFBase->
Draw(option);
8342 R__TMatrixDBase->
Draw(option);
8348 R__TVectorF->
Draw(option);
8354 R__TVectorD->
Draw(option);
8371 while ((obj = next())) {
8378 if (stats && dostat) {
8384 if (!dofit) fit = 0;
8385 if (dofit == 1) dofit = 111;
8386 if (dostat == 1) dostat = 1111;
8387 Int_t print_name = dostat%10;
8388 Int_t print_entries = (dostat/10)%10;
8389 Int_t print_mean = (dostat/100)%10;
8390 Int_t print_stddev = (dostat/1000)%10;
8391 Int_t print_under = (dostat/10000)%10;
8392 Int_t print_over = (dostat/100000)%10;
8393 Int_t print_integral= (dostat/1000000)%10;
8394 Int_t print_skew = (dostat/10000000)%10;
8395 Int_t print_kurt = (dostat/100000000)%10;
8396 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8397 print_under + print_over + print_integral +
8398 print_skew + print_kurt;
8399 Int_t print_fval = dofit%10;
8400 Int_t print_ferrors = (dofit/10)%10;
8401 Int_t print_fchi2 = (dofit/100)%10;
8402 Int_t print_fprob = (dofit/1000)%10;
8403 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8406 else nlinesf += fit->
GetNpar();
8412 if (!dostat && !fit) {
8451 if (print_entries) {
8458 if (print_mean == 1) {
8468 if (print_mean == 1) {
8480 if (print_stddev == 1) {
8490 if (print_stddev == 1) {
8511 if (print_integral) {
8512 if (print_integral == 1) {
8522 if (print_skew == 1) {
8533 if (print_kurt == 1) {
8549 if (print_fchi2) stats->
AddText(t);
8555 if (print_fval || print_ferrors) {
8560 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8564 if (print_ferrors) {
8597 while ((obj = next())) {
8603 if (stats && dostat) {
8609 if (dostat == 1) dostat = 1111;
8610 Int_t print_name = dostat%10;
8611 Int_t print_entries = (dostat/10)%10;
8612 Int_t print_mean = (dostat/100)%10;
8613 Int_t print_stddev = (dostat/1000)%10;
8614 Int_t print_under = (dostat/10000)%10;
8615 Int_t print_over = (dostat/100000)%10;
8616 Int_t print_integral= (dostat/1000000)%10;
8617 Int_t print_skew = (dostat/10000000)%10;
8618 Int_t print_kurt = (dostat/100000000)%10;
8619 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8620 if (print_under || print_over) nlines += 3;
8625 if (!dostat && !fit) {
8665 if (print_entries) {
8672 if (print_mean == 1) {
8691 if (print_stddev == 1) {
8709 if (print_integral) {
8715 if (print_skew == 1) {
8734 if (print_kurt == 1) {
8752 if (print_under || print_over) {
8763 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8764 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8765 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8766 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8767 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8768 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8769 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8770 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8771 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8816 while ((obj = next())) {
8822 if (stats && dostat) {
8828 if (dostat == 1) dostat = 1111;
8829 Int_t print_name = dostat%10;
8830 Int_t print_entries = (dostat/10)%10;
8831 Int_t print_mean = (dostat/100)%10;
8832 Int_t print_stddev = (dostat/1000)%10;
8833 Int_t print_under = (dostat/10000)%10;
8834 Int_t print_over = (dostat/100000)%10;
8835 Int_t print_integral= (dostat/1000000)%10;
8836 Int_t print_skew = (dostat/10000000)%10;
8837 Int_t print_kurt = (dostat/100000000)%10;
8838 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
8839 if (print_under || print_over) nlines += 3;
8844 if (!dostat && !fit) {
8882 if (print_entries) {
8889 if (print_mean == 1) {
8915 if (print_stddev == 1) {
8940 if (print_integral) {
8945 if (print_skew == 1) {
8971 if (print_kurt == 1) {
8996 if (print_under || print_over) {
9045 if (deltaz == 0) deltaz = 1;
9116 Error(
"PaintSurface",
"no TView in current pad");
9123 view->
SetView(phideg, thedeg, psideg, irep);
9133 fLego->TAttFill::Modify();
9135 Int_t backcolor =
gPad->GetFrameFillColor();
9141 fLego->TAttFill::Modify();
9179 fmax = fmin + (yligh1+0.1)*(qd+qs);
9184 if (!colref)
return;
9189 for (
Int_t col=0;col<nbcol;col++) {
9190 acol =
gROOT->GetColor(col+icol1);
9281 if (!dt && !dtOld)
return;
9294 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
9299 if (!rmin || !rmax)
return;
9318 Error(
"PaintTriangles",
"no TView in current pad");
9325 view->
SetView(phideg, thedeg, psideg, irep);
9330 fLego->TAttFill::Modify();
9331 Int_t backcolor =
gPad->GetFrameFillColor();
9336 fLego->TAttFill::Modify();
9378 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
9385 for (i = 0; i < ndivz; ++i) {
9392 delete [] colorlevel;
9462 while ((obj = next())) {
9470 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9490 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9507 while ((obj=next())) {
9509 z =
b->GetContent();
9511 poly =
b->GetPolygon();
9516 g->TAttLine::Modify();
9517 g->TAttMarker::Modify();
9518 g->TAttFill::Modify();
9520 Int_t fs =
g->GetFillStyle();
9523 g->SetFillColor(
g->GetLineColor());
9525 g->SetFillStyle(fs);
9526 g->SetFillColor(
fc);
9528 if (
fill)
g->Paint(
"F");
9529 if (
mark)
g->Paint(
"P");
9535 TList *gl =
mg->GetListOfGraphs();
9539 while ((
g = (
TGraph*) nextg())) {
9540 g->TAttLine::Modify();
9541 g->TAttMarker::Modify();
9542 g->TAttFill::Modify();
9544 Int_t fs =
g->GetFillStyle();
9547 g->SetFillColor(
g->GetLineColor());
9549 g->SetFillStyle(fs);
9550 g->SetFillColor(
fc);
9552 if (
fill)
g->Paint(
"F");
9553 if (
mark)
g->Paint(
"P");
9566 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9569 Int_t ncolors, color, theColor;
9600 while ((obj=next())) {
9602 poly =
b->GetPolygon();
9604 z =
b->GetContent();
9610 if (z < zmin)
continue;
9615 if (z < zc)
continue;
9617 for (
Int_t k=0; k<ndiv; k++) {
9626 color =
Int_t(0.01+(z-zmin)*scale);
9629 if (theColor > ncolors-1) theColor = ncolors-1;
9635 g->TAttFill::Modify();
9642 TList *gl =
mg->GetListOfGraphs();
9646 while ((
g = (
TGraph*) nextg())) {
9648 g->TAttFill::Modify();
9663 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9666 Int_t k, loop, marker=0;
9667 Double_t z, xk,xstep, yk, ystep, xp, yp;
9681 scale = (
kNMAX-1)/dz;
9695 while ((obj=next())) {
9698 if (
a>maxarea) maxarea =
a;
9703 while ((obj=next())) {
9705 poly =
b->GetPolygon();
9706 z =
b->GetContent();
9707 if (z < zmin) z = zmin;
9708 if (z > zmax) z = zmax;
9714 k =
Int_t((z*scale)*(
b->GetArea()/maxarea));
9717 xstep =
b->GetXMax()-xk;
9718 ystep =
b->GetYMax()-yk;
9723 if (k <= 0 || z <= 0)
continue;
9726 if (k+marker >=
kNMAX) {
9730 xp = (random.
Rndm()*xstep) + xk;
9731 yp = (random.
Rndm()*ystep) + yk;
9732 if (
g->IsInside(xp,yp)) {
9745 TList *gl =
mg->GetListOfGraphs();
9747 if (k <= 0 || z <= 0)
continue;
9750 if (k+marker >=
kNMAX) {
9754 xp = (random.
Rndm()*xstep) + xk;
9755 yp = (random.
Rndm()*ystep) + yk;
9756 if (
mg->IsInside(xp,yp)) {
9790 text.TAttText::Modify();
9797 while ((obj=next())) {
9799 p =
b->GetPolygon();
9800 x = (
b->GetXMin()+
b->GetXMax())/2;
9805 y = (
b->GetYMin()+
b->GetYMax())/2;
9810 z =
b->GetContent();
9814 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9858 text.TAttText::Modify();
9872 if (yt == 0.)
continue;
9882 if (
y >=
gPad->GetY2())
continue;
9883 if (y <= gPad->GetY1())
continue;
9892 text.TAttText::Modify();
9911 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9949 Error(
"PaintTF3",
"no TView in current pad");
9955 view->
SetView(phideg, thedeg, psideg, irep);
10009 TIter next(
gPad->GetListOfPrimitives());
10010 while ((obj = next())) {
10013 if (strcmp(title->
GetName(),
"title")) {title = 0;
continue;}
10017 if (title)
delete title;
10032 if (ht <= 0) ht = 0.05;
10053 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
10055 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
10059 if (talh == 2) xpos = xpos-wt/2.;
10060 if (talh == 3) xpos = xpos-wt;
10061 if (talv == 2) ypos = ypos+ht/2.;
10062 if (talv == 1) ypos = ypos+ht;
10080 if(!
gPad->IsEditable())
delete ptitle;
10089 if (!strcmp(mess,
"SetF3")) {
10091 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
10093 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
10195 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
10203 if (
xmin > xmin_aid)
xmin = xmin_aid;
10204 if (
ymin > ymin_aid)
ymin = ymin_aid;
10205 if (
xmax < xmax_aid)
xmax = xmax_aid;
10206 if (
ymax < ymax_aid)
ymax = ymax_aid;
10211 if (
xmin >xmin_aid)
xmin = xmin_aid;
10212 if (
xmax <xmax_aid)
xmax = xmax_aid;
10217 if (
ymin >ymin_aid)
ymin = ymin_aid;
10218 if (
ymax <ymax_aid)
ymax = ymax_aid;
10234 if (
xmin > xmin_aid)
xmin = xmin_aid;
10235 if (
ymin > ymin_aid)
ymin = ymin_aid;
10236 if (
xmax < xmax_aid)
xmax = xmax_aid;
10237 if (
ymax < ymax_aid)
ymax = ymax_aid;
10241 if (
xmin >xmin_aid)
xmin = xmin_aid;
10242 if (
xmax <xmax_aid)
xmax = xmax_aid;
10247 if (
ymin >ymin_aid)
ymin = ymin_aid;
10248 if (
ymax <ymax_aid)
ymax = ymax_aid;
10256 if (
xmin > xmin_aid)
xmin = xmin_aid;
10257 if (
ymin > ymin_aid)
ymin = ymin_aid;
10258 if (
xmax < xmax_aid)
xmax = xmax_aid;
10259 if (
ymax < ymax_aid)
ymax = ymax_aid;
10263 if (
xmin >xmin_aid)
xmin = xmin_aid;
10264 if (
xmax <xmax_aid)
xmax = xmax_aid;
10269 if (
ymin >ymin_aid)
ymin = ymin_aid;
10270 if (
ymax <ymax_aid)
ymax = ymax_aid;
10286 ymin - dyr*
gPad->GetBottomMargin(),
10287 xmax + dxr*
gPad->GetRightMargin(),
10298 if (
h == 0)
return;
10312 static const char *where =
"TableInit";
10340 Error(where,
"cannot set X axis to log scale");
10369 Error(where,
"cannot set Y axis to log scale");
10405 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10411 if (zmin >= zmax) {
10413 if (zmax > 0) zmin = 0.001*zmax;
10415 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10425 if (allchan) factor /= allchan;
10426 if (factor == 0) factor = 1;
10428 zmax = factor*zmax;
10429 zmin = factor*zmin;
10455 zmax += yMARGIN*(zmax-zmin);
10463 if (zmin >= 0) zmin = 0;
10464 else zmin -= yMARGIN*(zmax-zmin);
10466 Double_t dzmin = yMARGIN*(zmax-zmin);
10467 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10468 else zmin -= dzmin;
10490 static char ef[20];
10491 char tf[20], tv[64];
10499 int ie = sv.
Index(
"e");
10500 int iE = sv.
Index(
"E");
10501 int id = sv.
Index(
".");
10505 if (ie >= 0 || iE >= 0) {
10506 if (sv.
Index(
"+") >= 0) {
10511 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10513 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10518 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10520 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10525 }
else if (
id < 0) {
10546 Int_t projection = 0;
10547 if (opt.
Contains(
"x")) projection = 1;
10548 if (opt.
Contains(
"y")) projection = 2;
10549 if (opt.
Contains(
"z")) projection = 3;
10550 if (opt.
Contains(
"xy")) projection = 4;
10551 if (opt.
Contains(
"yx")) projection = 5;
10552 if (opt.
Contains(
"xz")) projection = 6;
10553 if (opt.
Contains(
"zx")) projection = 7;
10554 if (opt.
Contains(
"yz")) projection = 8;
10555 if (opt.
Contains(
"zy")) projection = 9;
10559 gROOT->MakeDefCanvas();
10571 gPad->SetDoubleBuffer(0);
10575 static int pyold1 = 0;
10576 static int pyold2 = 0;
10577 float uxmin =
gPad->GetUxmin();
10578 float uxmax =
gPad->GetUxmax();
10579 int pxmin =
gPad->XtoAbsPixel(uxmin);
10580 int pxmax =
gPad->XtoAbsPixel(uxmax);
10611 TH1D *hp = ((
TH2*)
fH)->ProjectionX(prjName, biny1, biny2);
10616 if (biny1 == biny2) {
10624 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10636 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10654 gPad->SetDoubleBuffer(0);
10658 static int pxold1 = 0;
10659 static int pxold2 = 0;
10660 float uymin =
gPad->GetUymin();
10661 float uymax =
gPad->GetUymax();
10662 int pymin =
gPad->YtoAbsPixel(uymin);
10663 int pymax =
gPad->YtoAbsPixel(uymax);
10694 TH1D *hp = ((
TH2*)
fH)->ProjectionY(prjName, binx1, binx2);
10699 if (binx1 == binx2) {
10707 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10719 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10747 gPad->SetDoubleBuffer(0);
10763 static TPoint endface1[5];
10764 static TPoint endface2[5];
10773 int pxmin =
gPad->XtoAbsPixel(uxmin);
10774 int pxmax =
gPad->XtoAbsPixel(uxmax);
10775 if (pxmin==pxmax)
return;
10776 int pymin =
gPad->YtoAbsPixel(uymin);
10777 int pymax =
gPad->YtoAbsPixel(uymax);
10778 if (pymin==pymax)
return;
10779 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10780 Double_t cy = (pymax-pymin)/(uymax-uymin);
10795 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10800 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10803 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10804 if (nbins>1 && line1[0].GetX()) {
10815 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10816 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10819 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10820 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10827 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10828 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10831 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10832 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10838 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10839 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10842 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10843 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10849 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10850 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10853 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10854 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10856 endface1[0].
SetX(line1[0].GetX());
10857 endface1[0].
SetY(line1[0].GetY());
10858 endface1[1].
SetX(line2[0].GetX());
10859 endface1[1].
SetY(line2[0].GetY());
10860 endface1[2].
SetX(line3[0].GetX());
10861 endface1[2].
SetY(line3[0].GetY());
10862 endface1[3].
SetX(line4[0].GetX());
10863 endface1[3].
SetY(line4[0].GetY());
10864 endface1[4].
SetX(line1[0].GetX());
10865 endface1[4].
SetY(line1[0].GetY());
10867 endface2[0].
SetX(line1[1].GetX());
10868 endface2[0].
SetY(line1[1].GetY());
10869 endface2[1].
SetX(line2[1].GetX());
10870 endface2[1].
SetY(line2[1].GetY());
10871 endface2[2].
SetX(line3[1].GetX());
10872 endface2[2].
SetY(line3[1].GetY());
10873 endface2[3].
SetX(line4[1].GetX());
10874 endface2[3].
SetY(line4[1].GetY());
10875 endface2[4].
SetX(line1[1].GetX());
10876 endface2[4].
SetY(line1[1].GetY());
10910 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10915 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10918 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10919 if (nbins>1 && line1[0].GetX()) {
10930 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10931 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10934 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10935 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10942 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10943 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10946 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10947 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10953 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10954 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10957 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10958 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10964 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10965 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10968 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10969 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10971 endface1[0].
SetX(line1[0].GetX());
10972 endface1[0].
SetY(line1[0].GetY());
10973 endface1[1].
SetX(line2[0].GetX());
10974 endface1[1].
SetY(line2[0].GetY());
10975 endface1[2].
SetX(line3[0].GetX());
10976 endface1[2].
SetY(line3[0].GetY());
10977 endface1[3].
SetX(line4[0].GetX());
10978 endface1[3].
SetY(line4[0].GetY());
10979 endface1[4].
SetX(line1[0].GetX());
10980 endface1[4].
SetY(line1[0].GetY());
10982 endface2[0].
SetX(line1[1].GetX());
10983 endface2[0].
SetY(line1[1].GetY());
10984 endface2[1].
SetX(line2[1].GetX());
10985 endface2[1].
SetY(line2[1].GetY());
10986 endface2[2].
SetX(line3[1].GetX());
10987 endface2[2].
SetY(line3[1].GetY());
10988 endface2[3].
SetX(line4[1].GetX());
10989 endface2[3].
SetY(line4[1].GetY());
10990 endface2[4].
SetX(line1[1].GetX());
10991 endface2[4].
SetY(line1[1].GetY());
11024 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
11029 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
11032 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
11033 if (nbins>1 && line1[0].GetX()) {
11044 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11045 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11048 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11049 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11056 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11057 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11060 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11061 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11067 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11068 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11071 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11072 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11078 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11079 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11082 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11083 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11085 endface1[0].
SetX(line1[0].GetX());
11086 endface1[0].
SetY(line1[0].GetY());
11087 endface1[1].
SetX(line2[0].GetX());
11088 endface1[1].
SetY(line2[0].GetY());
11089 endface1[2].
SetX(line3[0].GetX());
11090 endface1[2].
SetY(line3[0].GetY());
11091 endface1[3].
SetX(line4[0].GetX());
11092 endface1[3].
SetY(line4[0].GetY());
11093 endface1[4].
SetX(line1[0].GetX());
11094 endface1[4].
SetY(line1[0].GetY());
11096 endface2[0].
SetX(line1[1].GetX());
11097 endface2[0].
SetY(line1[1].GetY());
11098 endface2[1].
SetX(line2[1].GetX());
11099 endface2[1].
SetY(line2[1].GetY());
11100 endface2[2].
SetX(line3[1].GetX());
11101 endface2[2].
SetY(line3[1].GetY());
11102 endface2[3].
SetX(line4[1].GetX());
11103 endface2[3].
SetY(line4[1].GetY());
11104 endface2[4].
SetX(line1[1].GetX());
11105 endface2[4].
SetY(line1[1].GetY());
11141 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11142 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11147 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11148 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11149 rect1[4].
SetX(rect1[0].GetX());
11150 rect1[4].
SetY(rect1[0].GetY());
11153 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11154 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11157 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11158 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11161 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11162 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11169 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11170 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11171 rect2[4].
SetX(rect2[0].GetX());
11172 rect2[4].
SetY(rect2[0].GetY());
11175 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11176 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11179 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11180 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11183 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11184 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11212 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11213 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11218 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11219 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11220 rect1[4].
SetX(rect1[0].GetX());
11221 rect1[4].
SetY(rect1[0].GetY());
11224 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11225 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11228 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11229 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11232 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11233 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11240 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11241 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11242 rect2[4].
SetX(rect2[0].GetX());
11243 rect2[4].
SetY(rect2[0].GetY());
11246 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11247 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11250 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11251 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11254 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11255 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11282 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11283 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11288 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11289 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11290 rect1[4].
SetX(rect1[0].GetX());
11291 rect1[4].
SetY(rect1[0].GetY());
11294 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11295 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11298 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11299 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11302 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11303 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11310 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11311 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11312 rect2[4].
SetX(rect2[0].GetX());
11313 rect2[4].
SetY(rect2[0].GetY());
11316 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11317 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11320 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11321 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11324 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11325 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11352 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11353 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11358 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11359 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11360 rect1[4].
SetX(rect1[0].GetX());
11361 rect1[4].
SetY(rect1[0].GetY());
11364 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11365 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11368 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11369 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11372 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11373 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11380 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11381 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11382 rect2[4].
SetX(rect2[0].GetX());
11383 rect2[4].
SetY(rect2[0].GetY());
11386 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11387 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11390 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11391 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11394 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11395 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11422 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11423 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11428 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11429 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11430 rect1[4].
SetX(rect1[0].GetX());
11431 rect1[4].
SetY(rect1[0].GetY());
11434 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11435 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11438 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11439 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11442 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11443 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11450 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11451 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11452 rect2[4].
SetX(rect2[0].GetX());
11453 rect2[4].
SetY(rect2[0].GetY());
11456 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11457 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11460 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11461 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11464 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11465 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11492 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11493 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11498 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11499 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11500 rect1[4].
SetX(rect1[0].GetX());
11501 rect1[4].
SetY(rect1[0].GetY());
11504 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11505 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11508 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11509 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11512 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11513 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11520 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11521 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11522 rect2[4].
SetX(rect2[0].GetX());
11523 rect2[4].
SetY(rect2[0].GetY());
11526 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11527 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11530 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11531 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11534 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11535 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
static const double x2[5]
static const double x1[5]
include TDocParser_001 C image html pict1_TDocParser_001 png width
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)
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).
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 from bin first to last.
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 Int_t GetNDF() const
Return the number of degrees of freedom in the fit the fNDF parameter has been previously computed du...
virtual void GetParLimits(Int_t ipar, Double_t &parmin, Double_t &parmax) const
Return limits for parameter ipar.
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
Double_t GetChisquare() 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 Int_t GetNpar() const
virtual Int_t GetNumberFreeParameters() const
Return the number of free parameters.
virtual void SetMinimum(Double_t minimum=-1111)
Set the minimum value along Y for this function In case the function is already drawn,...
virtual const char * GetParName(Int_t ipar) const
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
virtual Double_t GetParameter(Int_t ipar) 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 Graph is a graphics 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)}
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
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.
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
Delete a TObjLink object.
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.
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.
TObject * At(Int_t idx) const
TObject * GetObject() const
Option_t * GetOption() const
Mother of all ROOT objects.
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 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 ImplicitFunction(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...
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.
static void SetF3ClippingBoxOff()
Static function Set the implicit function clipping box "off".
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.
static void SetF3ClippingBoxOn(Double_t xclip, Double_t yclip, Double_t zclip)
Static function Set the implicit function clipping box "on" and define the clipping box.
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 correspondance 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)
static void SetF3(TF3 *f3)
Static function Store pointer to current implicit function.
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 correspondance with function levels)
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 const char * GetFitFormat() const
void SetParent(TObject *obj)
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 RMS 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.
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)
double beta(double x, double y)
Calculates the beta function.
double dist(Rotation3D const &r1, Rotation3D const &r2)
RooCmdArg Bins(Int_t nbin)
static constexpr double mg
static constexpr double s
static constexpr double rad
static constexpr double bar
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 E()
Base of natural log:
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 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