3192 const Int_t big = 9999;
3193 const Int_t kMaxDiff = 7;
3204 Int_t curdist = big;
3205 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
3208 if (!PadPointer)
return 0;
3222 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
3224 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
3226 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
3227 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
3238 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
3247 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
3259 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
3268 if (yxaxis < puymin) yxaxis = puymin;
3269 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
3279 if ((px > puxmin) && (py < puymin) && (px < puxmax) && (py > puymax))
3295 Int_t bin =
th2->FindBin(pxu, pyu);
3296 if (bin>0) curdist = 1;
3302 if ( px > puxmin + delta2
3303 && px < puxmax - delta2
3304 && py > puymax + delta2
3305 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
3309 if (
gPad->IsVertical()) {
3314 if (binval == 0 && pybin < puymin) pybin = 10000;
3320 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3322 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3323 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3325 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
3326 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
3327 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
3329 if (bin != binsup) {
3331 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
3332 if (py <=
TMath::Max(pybinsub,pybin) && py >=
TMath::Min(pybinsub,pybin) && pybin != 10000)
return 0;
3342 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
3348 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3350 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3351 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3353 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
3354 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
3355 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
3366 else dist =
f->DistancetoPrimitive(px,py);
3380 Error(
"DrawPanel",
"need to draw histogram first");
3385 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
3400 static Int_t bin, px1, py1, px2, py2, pyold;
3401 static TBox *zoombox;
3405 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3408 if (!
gPad->IsEditable())
return;
3429 if (IsSame.
Index(
"same")>=0) {
3431 TIter next(
gPad->GetListOfPrimitives());
3432 while ((
h1 = (
TH1 *)next())) {
3449 if (!opaque)
gVirtualX->SetLineColor(-1);
3450 fH->TAttLine::Modify();
3452 if (opaque && dimension ==2) {
3453 zbx1 =
gPad->AbsPixeltoX(px);
3454 zbx2 =
gPad->AbsPixeltoX(px);
3455 zby1 =
gPad->AbsPixeltoY(py);
3456 zby2 =
gPad->AbsPixeltoY(py);
3459 if (
gPad->GetLogx()) {
3463 if (
gPad->GetLogy()) {
3467 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3484 if (dimension ==1) {
3492 x =
gPad->AbsPixeltoX(px);
3496 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3497 ylow =
gPad->GetUymin();
3498 px1 =
gPad->XtoAbsPixel(xlow);
3499 px2 =
gPad->XtoAbsPixel(xup);
3500 py1 =
gPad->YtoAbsPixel(ylow);
3510 if (dimension ==1) {
3511 if (
gROOT->GetEditHistograms()) {
3520 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3527 if (opaque && dimension ==2) {
3529 zbx2 =
gPad->AbsPixeltoX(px);
3530 zby2 =
gPad->AbsPixeltoY(py);
3533 zoombox->
SetX2(zbx2);
3534 zoombox->
SetY2(zby2);
3544 if (dimension ==2) {
3549 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3554 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3563 if (dimension == 2) {
3568 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3573 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3581 if (dimension ==1) {
3582 if (
gROOT->GetEditHistograms()) {
3583 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3591 if (opaque && dimension ==2) {
3601 if (
x1<
x2 && y1<y2) {
3610 if (opaque)
gVirtualX->SetLineColor(-1);
3620 event =
gVirtualX->RequestLocator(1, 1, px, py);
3647 if (!dt && !dtOld)
return nullptr;
3666 if (!
gPad)
return (
char*)
"";
3676 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3677 uxmin=
gPad->GetUxmin();
3678 uxmax=
gPad->GetUxmax();
3682 uymin=
gPad->GetUymin();
3683 uymax=
gPad->GetUymax();
3689 Int_t binx,biny,binmin=0,binx1;
3690 if (
gPad->IsVertical()) {
3692 if (drawOption.
Index(
"same") >= 0) {
3694 TIter next(
gPad->GetListOfPrimitives());
3695 while ((
h1 = (
TH1 *)next())) {
3708 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3720 if (drawOption.
Index(
"same") >= 0) {
3722 TIter next(
gPad->GetListOfPrimitives());
3723 while ((
h1 = (
TH1 *)next())) {
3736 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3762 biny =
th2->FindBin(
x,
y);
3764 th2->GetBinTitle(biny),
x,
y,biny,
th2->GetBinContent(biny));
3770 fObjectInfo.
Form(
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3826 if (!changedBin)
return;
3852 if (
gPad->GetLogx()) {
3856 if (
gPad->GetLogy()) {
3863 if (
gPad->IsVertical()) {
3865 if ((hcenter < uxmin) || (hcenter > uxmax))
return;
3868 if ((hcenter < uymin) || (hcenter > uymax))
return;
3872 if ((hcenter < uymin) || (hcenter > uymax))
return;
3877 if (
gPad->IsVertical()) {
3967 Int_t nch = strlen(choptin);
3968 strlcpy(chopt,choptin,128);
3994 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
4000 char *l1 = strstr(chopt,
"PFC");
4001 char *l2 = strstr(chopt,
"PLC");
4002 char *l3 = strstr(chopt,
"PMC");
4003 if (l1 || l2 || l3) {
4011 l = strstr(chopt,
"MIN0");
4017 l = strstr(chopt,
"SPEC");
4022 l = strstr(chopt,
"BF(");
4024 if (sscanf(&
l[3],
"%d",&bs) > 0) {
4037 l = strstr(chopt,
"GL");
4041 l = strstr(chopt,
"X+");
4046 l = strstr(chopt,
"Y+");
4054 l = strstr(chopt,
"SAMES");
4061 l = strstr(chopt,
"SAME");
4069 l = strstr(chopt,
"PIE");
4076 l = strstr(chopt,
"CANDLE");
4083 l = strstr(chopt,
"VIOLIN");
4090 l = strstr(chopt,
"LEGO");
4101 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4104 l = strstr(chopt,
"SURF");
4119 l = strstr(chopt,
"TF3");
4126 l = strstr(chopt,
"ISO");
4133 l = strstr(chopt,
"LIST");
if (
l) {
Hoption.
List = 1; memcpy(
l,
" ",4);}
4135 l = strstr(chopt,
"CONT");
4150 l = strstr(chopt,
"HBAR");
4159 l = strstr(chopt,
"BAR");
4169 l = strstr(chopt,
"ARR" );
4175 l = strstr(chopt,
"COL");
if (
l) {
Hoption.
Arrow = 2; memcpy(
l,
" ",3); }
4181 l = strstr(chopt,
"BOX" );
4194 l = strstr(chopt,
"COLZ");
4202 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4208 l = strstr(chopt,
"COL" );
4215 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4224 l = strstr(chopt,
"AXIS");
if (
l) {
Hoption.
Axis = 1; memcpy(
l,
" ",4); }
4225 l = strstr(chopt,
"AXIG");
if (
l) {
Hoption.
Axis = 2; memcpy(
l,
" ",4); }
4226 l = strstr(chopt,
"SCAT");
if (
l) {
Hoption.
Scat = 1; memcpy(
l,
" ",4); }
4227 l = strstr(chopt,
"TEXT");
4230 if (sscanf(&
l[4],
"%d",&angle) > 0) {
4231 if (angle < 0) angle=0;
4232 if (angle > 90) angle=90;
4238 l = strstr(chopt,
"N");
4247 l = strstr(chopt,
"TRI");
4254 l = strstr(chopt,
"ERR");
if (
l) memcpy(
l,
" ",3);
4257 l = strstr(chopt,
"AITOFF");
4261 l = strstr(chopt,
"MERCATOR");
4265 l = strstr(chopt,
"SINUSOIDAL");
4269 l = strstr(chopt,
"PARABOLIC");
4295 if (strstr(chopt,
"E")) {
4305 if (strstr(chopt,
"X0")) {
4328 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
4349 char *left = (
char*)strchr(choptin,
'[');
4350 if (!left)
return 0;
4351 char *right = (
char*)strchr(choptin,
']');
4352 if (!right)
return 0;
4353 Int_t nch = right-left;
4354 if (nch < 2)
return 0;
4355 char *cuts = left+1;
4357 char *comma, *minus;
4360 comma = strchr(cuts,
',');
4361 if (comma) *comma = 0;
4362 minus = strchr(cuts,
'-');
4363 if (minus) cuts = minus+1;
4364 while (*cuts ==
' ') cuts++;
4365 Int_t nc = strlen(cuts);
4366 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
4370 while ((obj = next())) {
4372 if (strcmp(obj->
GetName(),cuts))
continue;
4385 for (i=0;i<=nch;i++) left[i] =
' ';
4413 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
4423 Error(
"Paint",
"Option PIE is for 1D histograms only");
4457 Int_t logysav=0, logzsav=0;
4508 if (gridx)
gPad->SetGridx(0);
4509 if (gridy)
gPad->SetGridy(0);
4511 if (gridx)
gPad->SetGridx(1);
4512 if (gridy)
gPad->SetGridy(1);
4547 if (gridx)
gPad->SetGridx(0);
4548 if (gridy)
gPad->SetGridy(0);
4550 if (gridx)
gPad->SetGridx(1);
4551 if (gridy)
gPad->SetGridy(1);
4560 while ((obj = next())) {
4568 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4596 arrow->SetAngle(30);
4597 arrow->SetFillStyle(1001);
4603 Int_t ncolors=0, ndivz=0;
4617 for (
Int_t id=1;
id<=2;
id++) {
4624 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4642 }
else if (
id == 2) {
4654 if (theColor > ncolors-1) theColor = ncolors-1;
4659 arrow->PaintArrow(
x1, y1,
x2, y2, 0.015,
"|>");
4661 arrow->PaintArrow(
x1, y1,
x2, y2, 0.005,
"|>");
4684 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4696 TIter next(
gPad->GetListOfPrimitives());
4699 while ((obj = next())) {
4705 if (strstr(opt,
"hbar")) {
4709 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4719 static char chopt[10] =
"";
4721 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4722 Int_t useHparam = 0;
4723 Double_t umin, umax, uminsave, umaxsave;
4739 TIter next(
gPad->GetListOfPrimitives());
4740 while ((obj=next())) {
4751 if (
gPad->PadInSelectionMode())
4755 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4766 strlcat(chopt,
"SDH",10);
4767 if (ndivx < 0) strlcat(chopt,
"N",10);
4768 if (
gPad->GetGridx()) {
4769 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4770 strlcat(chopt,
"W",10);
4775 strlcat(chopt,
"G",10);
4797 strlcat(chopt,
"t",10);
4805 if (xAxisPos == 1) {
4821 strlcat(chopt,
"-",10);
4830 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4835 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4837 cw=strstr(chopt,
"-");
4840 strlcat(chopt,
"-",10);
4842 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4843 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4847 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4853 if (
gPad->PadInSelectionMode())
4857 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4862 strlcat(chopt,
"SDH",10);
4863 if (ndivy < 0) strlcat(chopt,
"N",10);
4864 if (
gPad->GetGridy()) {
4865 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4866 strlcat(chopt,
"W",10);
4871 strlcat(chopt,
"G",10);
4893 strlcat(chopt,
"t",10);
4901 if (yAxisPos == 1) {
4917 strlcat(chopt,
"+L",10);
4926 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4931 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4932 if (
gPad->GetTicky() < 2) {
4933 strlcat(chopt,
"U",10);
4936 strlcat(chopt,
"+L",10);
4938 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4942 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4965 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4967 box.SetFillColor(hcolor);
4968 box.SetFillStyle(hstyle);
4978 if (ymax < gPad->GetUymin())
continue;
4980 if (ymin < gPad->GetUymin())
ymin =
gPad->GetUymin();
4994 box.SetFillColor(hcolor);
5014 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
5028 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
5030 box.SetFillColor(hcolor);
5031 box.SetFillStyle(hstyle);
5040 if (xmax < gPad->GetUxmin())
continue;
5042 if (xmin < gPad->GetUxmin())
xmin =
gPad->GetUxmin();
5055 box.SetFillColor(hcolor);
5068 while ((obj = next())) {
5089 fH->TAttLine::Modify();
5090 fH->TAttFill::Modify();
5092 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
5103 Double_t zminlin = zmin, zmaxlin = zmax;
5109 TIter next(
gPad->GetListOfPrimitives());
5110 while ((h2 = (
TH2 *)next())) {
5160 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5167 if (kZminNeg && z==0)
continue;
5179 if (dz == 0)
continue;
5181 if (zratio == 0)
continue;
5183 xup = xcent*zratio + xk + xcent;
5184 xlow = 2*(xk + xcent) - xup;
5185 if (xup-xlow < dxmin) xup = xlow+dxmin;
5193 yup = ycent*zratio + yk + ycent;
5194 ylow = 2*(yk + ycent) - yup;
5195 if (yup-ylow < dymin) yup = ylow+dymin;
5208 if (xlow >= xup)
continue;
5209 if (ylow >= yup)
continue;
5213 fH->TAttFill::Modify();
5214 gPad->PaintBox(xlow, ylow, xup, yup);
5216 gPad->PaintLine(xlow, ylow, xup, yup);
5217 gPad->PaintLine(xlow, yup, xup, ylow);
5222 fH->TAttFill::Modify();
5223 gPad->PaintBox(xlow, ylow, xup, yup);
5228 x[0] = xlow;
y[0] = ylow;
5229 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5230 x[2] =
x[1];
y[2] = yup - bwidth*(yup-ylow);
5231 x[3] = xup - bwidth*(xup-xlow);
y[3] =
y[2];
5232 x[4] = xup;
y[4] = yup;
5233 x[5] = xlow;
y[5] = yup;
5234 x[6] = xlow;
y[6] = ylow;
5237 fH->TAttFill::Modify();
5238 gPad->PaintFillArea(7,
x,
y);
5241 x[0] = xlow;
y[0] = ylow;
5242 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5243 x[2] = xup - bwidth*(xup-xlow);
y[2] =
y[1];
5244 x[3] =
x[2];
y[3] = yup - bwidth*(yup-ylow);
5245 x[4] = xup;
y[4] = yup;
5246 x[5] = xup;
y[5] = ylow;
5247 x[6] = xlow;
y[6] = ylow;
5250 fH->TAttFill::Modify();
5251 gPad->PaintFillArea(7,
x,
y);
5259 fH->TAttFill::Modify();
5284 const Double_t standardCandleWidth = 0.66;
5285 const Double_t standardHistoWidth = 0.8;
5288 double allMaxIntegral = 0;
5294 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5304 double myIntegral = hproj->
Integral();
5306 if (candleWidth > 0.999 && candleWidth < 1.001) {
5307 candleWidth = standardCandleWidth;
5308 histoWidth = standardHistoWidth;
5313 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5314 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5327 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5337 double myIntegral = hproj->
Integral();
5339 if (candleWidth > 0.999 && candleWidth < 1.001) {
5340 candleWidth = standardCandleWidth;
5341 histoWidth = standardHistoWidth;
5346 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5347 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5375std::vector<THistRenderingRegion>
5378 std::vector<THistRenderingRegion> regions;
5380 enum STRATEGY {
Bins, Pixels } strategy;
5384 if (nBins >= nPixels) {
5396 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
5406 if (strategy ==
Bins) {
5415 for (
Int_t bin=pAxis->
GetFirst()+binOffset; bin<=pAxis->GetLast(); bin++) {
5424 std::make_pair(bin, bin+1)};
5425 regions.push_back(region);
5434 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
5439 std::make_pair(binLow, binHigh)};
5440 regions.push_back(region);
5446 if (strategy ==
Bins) {
5448 for (
Int_t bin=pAxis->
GetFirst(); bin<=pAxis->GetLast(); bin++) {
5453 Int_t xPx1 = xPx0 + nPixels/nBins;
5456 if (xPx1>= nPixels) xPx1 = nPixels-1;
5459 std::make_pair(bin, bin+1)};
5460 regions.push_back(region);
5464 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
5466 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
5467 Int_t binHigh = binLow + nBins/nPixels;
5469 std::make_pair(binLow, binHigh)};
5470 regions.push_back(region);
5485 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5486 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
5499 if ((zmin == -1111) && (zmax == -1111)) {
5503 }
else if (zmin == -1111) {
5506 }
else if (zmax == -1111) {
5524 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5525 "Cannot plot logz because bin content is less than 0.");
5536 std::vector<Double_t> colorBounds(ndiv);
5537 std::vector<Double_t> contours(ndiv, 0);
5545 for (
Int_t i=0; i<ndiv; ++i) {
5546 colorBounds[i] = step*i;
5549 auto pFrame =
gPad->GetFrame();
5550 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5551 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5552 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5553 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5554 Int_t nXPixels = px1-px0;
5555 Int_t nYPixels = py0-py1;
5557 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5561 if (xRegions.size() == 0 || yRegions.size() == 0) {
5562 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5563 "Encountered error while computing rendering regions.");
5571 for (
auto& yRegion : yRegions) {
5572 for (
auto& xRegion : xRegions ) {
5574 const auto& xBinRange = xRegion.fBinRange;
5575 const auto& yBinRange = yRegion.fBinRange;
5586 if (z > zmax) z = zmax;
5587 if (z < zmin) z = zmin;
5592 z = colorBounds[index];
5596 index = 0.001 + ((z - zmin)/dz)*ndiv;
5599 if (index ==
static_cast<Int_t>(colorBounds.size())) {
5607 }
else if (index ==
static_cast<Int_t>(colorBounds.size()-1)) {
5611 z = colorBounds[index];
5622 const auto& xPixelRange = xRegion.fPixelRange;
5623 const auto& yPixelRange = yRegion.fPixelRange;
5624 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5625 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5626 Int_t pixel = yPx*nXPixels + xPx;
5637 if (minValue != maxValue) {
5643 buffer[buffer.size()-nXPixels] = 0.95;
5651 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5655 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5672 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5688 TIter next(
gPad->GetListOfPrimitives());
5689 while ((h2 = (
TH2 *)next())) {
5721 fH->TAttFill::Modify();
5732 Double_t scale = (dz ? ndivz / dz : 1.0);
5744 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5749 if (binEntries == 0)
5782 if (xup < gPad->GetUxmin())
continue;
5783 if (yup < gPad->GetUymin())
continue;
5784 if (xlow >
gPad->GetUxmax())
continue;
5785 if (ylow >
gPad->GetUymax())
continue;
5786 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5787 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5788 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5789 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5794 if (z < zc)
continue;
5796 for (
Int_t k=0; k<ndiv; k++) {
5805 color =
Int_t(0.01+(z-zmin)*scale);
5809 if (theColor > ncolors-1) theColor = ncolors-1;
5811 fH->TAttFill::Modify();
5813 gPad->PaintBox(xlow, ylow, xup, yup);
5826 fH->TAttFill::Modify();
5836 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5837 Int_t itars, mode, ir[4];
5838 Double_t xsave, ysave, thesave,phisave,
x[4],
y[4], zc[4];
5843 thesave =
gPad->GetTheta();
5844 phisave =
gPad->GetPhi();
5846 gPad->SetTheta(90.);
5848 gPad->SetPhi(phisave);
5849 gPad->SetTheta(thesave);
5860 TIter next(
gPad->GetListOfPrimitives());
5861 while ((obj=next())) {
5878 if (!dt && !dtOld)
return;
5898 if (ncontour == 0) {
5903 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
5914 fH->TAttLine::Modify();
5924 np =
new Int_t[ncontour];
5925 for (i=0;i<ncontour;i++) np[i] = 0;
5927 for (i=0;i<ncontour;i++) {
5931 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
5933 gROOT->GetListOfSpecials()->Remove(contours);
5935 for (i=0;i<count;i++) {
5936 list = (
TList*)contours->
At(i);
5937 if (list) list->
Delete();
5941 contours->
SetName(
"contours");
5942 gROOT->GetListOfSpecials()->Add(contours);
5943 for (i=0;i<ncontour;i++) {
5945 contours->
Add(list);
5978 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
5983 if (zc[0] <= zc[1])
n = 0;
else n = 1;
5984 if (zc[2] <= zc[3])
m = 2;
else m = 3;
5985 if (zc[
n] > zc[
m])
n =
m;
5988 for (ix=1;ix<=4;ix++) {
5991 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5996 if (zc[0] <= zc[1])
n = 0;
else n = 1;
5997 if (zc[2] <= zc[3])
m = 2;
else m = 3;
5998 if (zc[
n] > zc[
m])
n =
m;
6001 for (ix=1;ix<=4;ix++) {
6005 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
6013 for (ix=1; ix<=lj-5; ix +=2) {
6015 while (itarr[ix-1] != itarr[ix]) {
6019 for (jx=ix; jx<=lj-5; jx +=2) {
6020 xarr[jx] = xarr[jx+2];
6021 yarr[jx] = yarr[jx+2];
6022 itarr[jx] = itarr[jx+2];
6026 itarr[lj-3] = itars;
6027 if (count > 100)
break;
6032 if (count > 100)
continue;
6033 for (ix=1; ix<=lj-2; ix +=2) {
6041 if (mode == 0) mode = 5;
6045 fH->TAttLine::Modify();
6046 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
6050 ipoly = itarr[ix-1];
6051 if (ipoly >=0 && ipoly <ncontour) {
6052 poly =
polys[ipoly];
6053 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
6054 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
6056 if (npmax < np[ipoly]) npmax = np[ipoly];
6065 Int_t nadd,iminus,iplus;
6069 Int_t *polysort = 0;
6081 polysort =
new Int_t[ncontour];
6083 for (ipoly=0;ipoly<ncontour;ipoly++) {
6084 if (levels[ipoly] >= 0) {
first = ipoly;
break;}
6088 for (ipoly=
first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
6089 for (ipoly=
first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
6093 for (k=0;k<ncontour;k++) {
6094 ipoly = polysort[k];
6095 if (np[ipoly] == 0)
continue;
6098 poly =
polys[ipoly];
6105 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
6106 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
6107 xx[istart] =
xmin; yy[istart] =
ymin;
6108 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
6111 for (i=2;i<np[ipoly];i+=2) {
6112 if ((iplus < 2*npmax-1) && (xx[i] == xp[iplus]) && (yy[i] == yp[iplus])) {
6114 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
6119 if ((iminus > 0) && (xx[i+1] == xp[iminus]) && (yy[i+1] == yp[iminus])) {
6121 xp[iminus] = xx[i]; yp[iminus] = yy[i];
6127 if (nadd == 0)
break;
6132 fH->TAttFill::Modify();
6133 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6135 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6136 graph->SetFillColor(icol);
6142 for (i=2;i<np[ipoly];i+=2) {
6143 if (xx[i] !=
xmin && yy[i] !=
ymin) {
6148 if (istart == 0)
break;
6152 for (i=0;i<ncontour;i++)
delete polys[i];
6164 if (np)
delete [] np;
6180 Double_t tlen, tdif, elev, diff, pdif, xlen;
6192 tdif = elev2 - elev1;
6198 diff = elev - elev1;
6209 yarr[i] = y1 + xlen;
6214 xarr[i] =
x1 + xlen;
6237 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
6239 const Int_t kBASEMARKER=8;
6240 Double_t xp, yp, ex1, ex2, ey1, ey2;
6242 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
6243 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
6252 Int_t drawmarker, errormarker;
6253 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
6257 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
6266 if (
Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
6267 if (option2+option3 == 0) optionE = 1;
6282 if (errormarker == 1) symbolsize = 0.01;
6283 sbase = symbolsize*kBASEMARKER;
6286 fH->TAttLine::Modify();
6287 fH->TAttFill::Modify();
6288 fH->TAttMarker::Modify();
6295 npoints = last -
first +1;
6305 if (!xline || !yline) {
6306 Error(
"PaintErrors",
"too many points, out of memory");
6319 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
6320 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
6336 for (k=
first; k<=last; k++) {
6355 xminTmp += offset*(xmaxTmp-xminTmp);
6356 xmaxTmp = xminTmp + w;
6357 xp = (xminTmp+xmaxTmp)/2.;
6360 if (xp <= 0)
goto L30;
6361 if (xp < logxmin)
goto L30;
6364 if (xp <
xmin)
goto L30;
6365 if (xp >
xmax)
break;
6368 if (optionI0 && yp==0)
goto L30;
6420 if (!option0 && !option3) {
6422 if (yi1 < ymin || yi1 >
ymax)
goto L30;
6425 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
6428 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
6442 if (optionE && drawmarker) {
6447 if (yi1<ymax && yi1>
ymin) {
6448 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
6449 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
6453 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
6458 if (yi1<ymax && yi1>
ymin) {
6459 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
6460 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
6467 if (option1 && drawmarker) {
6468 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
6469 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
6470 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
6471 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
6476 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
6505 if (if2 > npoints) {
6506 for (i=1; i<if1; i++) {
6507 xline[if1-2+i] = xline[if2-1+i];
6508 yline[if1-2+i] = yline[if2-1+i];
6512 if (option4)
graph.PaintGraph(2*npoints,xline,yline,
"FC");
6513 else graph.PaintGraph(2*npoints,xline,yline,
"F");
6514 gPad->SetLogx(logx);
6515 gPad->SetLogy(logy);
6527 fH->TAttMarker::Modify();
6528 fH->TAttLine::Modify();
6540 Error(
"Paint2DErrors",
"no TView in current pad");
6547 view->
SetView(phideg, thedeg, psideg, irep);
6552 fLego->TAttFill::Modify();
6553 Int_t backcolor =
gPad->GetFrameFillColor();
6558 fLego->TAttFill::Modify();
6599 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6642 gPad->PaintLine3D(temp1, temp2);
6649 gPad->PaintLine3D(temp1, temp2);
6656 gPad->PaintLine3D(temp1, temp2);
6660 view->
WCtoNDC(temp1, &temp2[0]);
6661 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6695 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6701 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6724 f2->
Paint(
"surf same");
6726 obj->
Paint(
"cont3 same");
6733 gPad->PushSelectableObject(obj);
6737 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6753 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6756 static char chopth[17];
6758 Int_t htype, oldhtype;
6763 strlcpy(chopth,
" ",17);
6778 nbins = last -
first + 1;
6784 if (fixbin) keepx =
new Double_t[2];
6785 else keepx =
new Double_t[nbins+1];
6792 for (j=
first; j<=last;j++) {
6802 keepy[j-
first] = yb;
6818 if (htype == 0 || htype == 1000) htype = 1001;
6842 if (!fixbin && strlen(chopth)) {
6867 graph.SetLineWidth(lw);
6870 graph.SetFillStyle(htype);
6877 graph.PaintGrapHist(nbins, keepx, keepy ,chopth);
6912 }
else if (strstr(opt,
"iso")) {
6915 }
else if (strstr(opt,
"tf3")) {
6919 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6930 view->
SetView(phideg, thedeg, psideg, irep);
6933 gROOT->ProcessLine(cmd);
6964 while ((obj = next())) {
6987 static const char *where =
"PaintInit";
7008 Error(where,
"cannot set X axis to log scale");
7015 for (i=
first; i<=last; i++) {
7027 Error(where,
"cannot set X axis to log scale");
7051 Int_t nonNullErrors = 0;
7053 for (i=
first; i<=last;i++) {
7066 if (e1 > 0) nonNullErrors++;
7083 fval =
f1->
Eval(xv[0],0,0);
7095 if (!nonNullErrors) {
7114 Error(where,
"log scale requested with a negative argument (%f)", xm);
7127 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
ymax);
7135 }
else if (
ymin < 0) {
7155 if (allchan) factor /= allchan;
7156 if (factor == 0) factor = 1;
7174 Error(where,
"Cannot set Y axis to log scale");
7220 static const char *where =
"PaintInitH";
7245 Error(where,
"cannot set Y axis to log scale");
7267 for (i=
first; i<=last;i++) {
7282 fval =
f1->
Eval(xv[0],0,0);
7304 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
7312 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
xmax);
7320 }
else if (
xmin < 0) {
7334 if (allchan) factor /= allchan;
7335 if (factor == 0) factor = 1;
7346 Error(where,
"Cannot set Y axis to log scale");
7385 Double_t wxyz[8][3] = { {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7386 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1} };
7387 Int_t iface[6][4] = { {0,3,2,1}, {4,5,6,7},
7388 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7} };
7408 Error(
"PaintH3",
"no TView in current pad");
7415 view->
SetView(phideg, thedeg, psideg, irep);
7417 Int_t backcolor =
gPad->GetFrameFillColor();
7433 Int_t incrx = (tnorm[ 8] < 0.) ? -1 : +1;
7434 Int_t incry = (tnorm[ 9] < 0.) ? -1 : +1;
7435 Int_t incrz = (tnorm[10] < 0.) ? -1 : +1;
7450 fH->TAttFill::Modify();
7451 fH->TAttLine::Modify();
7460 Double_t pmin[3], pmax[3], sxyz[8][3];
7461 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7464 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7467 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7477 if (w < wmin)
continue;
7478 if (w > wmax) w = wmax;
7480 if (scale == 0)
continue;
7481 for (
Int_t i=0; i<3; ++i) {
7484 for (
Int_t k=0; k<8; ++k) {
7485 sxyz[k][i] = wxyz[k][i]*
d +
c;
7488 for (
Int_t k=0; k<8; ++k) {
7489 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7492 for (
Int_t k=0; k<6; ++k) {
7493 for (
Int_t i=0; i<4; ++i) {
7494 Int_t iv = iface[k][i];
7498 x[4] =
x[0] ;
y[4] =
y[0];
7500 x[5] =
x[2] ;
y[5] =
y[2];
7501 x[6] =
x[3] ;
y[6] =
y[3];
7502 x[7] =
x[1] ;
y[7] =
y[1];
7508 if (z <= 0.)
continue;
7510 theColor = ncolors*((w-wmin)/(wmax-wmin)) -1;
7513 if (k == 3 || k == 5) {
7515 }
else if (k == 0 || k == 1) {
7521 fH->TAttFill::Modify();
7522 gPad->PaintFillArea(4,
x,
y);
7523 if (iopt != 3)
gPad->PaintPolyLine(
n,
x,
y);
7551 fH->TAttFill::Modify();
7561 {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7562 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1}
7564 Int_t iface[6][4] = {
7565 {0,3,2,1}, {4,5,6,7},
7566 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}
7570 {0,-1,0}, {1,0,0}, {0,1,0}, {-1,0,0}
7591 Error(
"PaintH3",
"no TView in current pad");
7598 view->
SetView(phideg, thedeg, psideg, irep);
7600 Int_t backcolor =
gPad->GetFrameFillColor();
7615 Int_t incrx = (tnorm[ 8] < 0.) ? +1 : -1;
7616 Int_t incry = (tnorm[ 9] < 0.) ? +1 : -1;
7617 Int_t incrz = (tnorm[10] < 0.) ? +1 : -1;
7626 fH->TAttLine::Modify();
7629 const Int_t NTMAX = 100;
7634 Double_t pmin[3], pmax[3], sxyz[8][3], pp[4][2];
7635 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7638 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7641 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7650 if (w < wmin)
continue;
7651 if (w > wmax) w = wmax;
7653 if (scale == 0)
continue;
7654 for (
Int_t i=0; i<3; ++i) {
7657 for (
Int_t k=0; k<8; ++k) {
7658 sxyz[k][i] = wxyz[k][i]*
d +
c;
7661 for (
Int_t k=0; k<8; ++k) {
7662 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7664 for (
Int_t k=0; k<6; ++k) {
7666 view->
FindNormal(normal[k][0], normal[k][1], normal[k][2], zn);
7667 if (zn <= 0)
continue;
7668 for (
Int_t i=0; i<4; ++i) {
7669 Int_t ip = iface[k][i];
7670 pp[i][0] = sxyz[ip][0];
7671 pp[i][1] = sxyz[ip][1];
7673 for (
Int_t i=0; i<4; ++i) {
7675 Int_t i2 = (i == 3) ? 0 : i + 1;
7678 Double_t xdel = pp[i2][0] - pp[i1][0];
7679 Double_t ydel = pp[i2][1] - pp[i1][1];
7681 for (
Int_t it = 0; it < nt; ++it) {
7682 x[0] = pp[i1][0] + xdel*
tt[it][0];
7683 y[0] = pp[i1][1] + ydel*
tt[it][0];
7684 x[1] = pp[i1][0] + xdel*
tt[it][1];
7685 y[1] = pp[i1][1] + ydel*
tt[it][1];
7686 gPad->PaintPolyLine(2,
x,
y);
7694 Double_t xdel = pp[i2][0] - pp[i1][0];
7695 Double_t ydel = pp[i2][1] - pp[i1][1];
7697 for (
Int_t it = 0; it < nt; ++it) {
7698 x[0] = pp[i1][0] + xdel*
tt[it][0];
7699 y[0] = pp[i1][1] + ydel*
tt[it][0];
7700 x[1] = pp[i1][0] + xdel*
tt[it][1];
7701 y[1] = pp[i1][1] + ydel*
tt[it][1];
7702 gPad->PaintPolyLine(2,
x,
y);
7707 xdel = pp[i2][0] - pp[i1][0];
7708 ydel = pp[i2][1] - pp[i1][1];
7709 for (
Int_t it = 0; it < nt; ++it) {
7710 x[0] = pp[i1][0] + xdel*
tt[it][0];
7711 y[0] = pp[i1][1] + ydel*
tt[it][0];
7712 x[1] = pp[i1][0] + xdel*
tt[it][1];
7713 y[1] = pp[i1][1] + ydel*
tt[it][1];
7714 gPad->PaintPolyLine(2,
x,
y);
7756 Int_t ic2 = ic1+nbcol;
7757 Int_t ic3 = ic2+nbcol;
7792 Error(
"PaintH3Iso",
"no TView in current pad");
7801 view->
SetView(phideg, thedeg, psideg, irep);
7803 Int_t backcolor =
gPad->GetFrameFillColor();
7819 for (
Int_t col=0;col<nbcol;col++) {
7820 acol =
gROOT->GetColor(col+icol1);
7837 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
7876 if (deltaz == 0) deltaz = 1;
7924 Color_t colormain = -1, colordark = -1;
7935 drawShadowsInLego1 =
kFALSE;
7965 for (
Int_t id=0;
id<=nids;
id++) {
7968 if (colormain == 1) colormain = 17;
7970 else colordark = colormain;
7983 Error(
"PaintLego",
"no TView in current pad");
7990 view->
SetView(phideg, thedeg, psideg, irep);
7998 fLego->TAttFill::Modify();
8000 Int_t backcolor =
gPad->GetFrameFillColor();
8006 fLego->TAttFill::Modify();
8086 Int_t ndivx, ndivy, ndivz, i;
8087 Double_t x1[3],
x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
8088 static char chopax[8], chopay[8], chopaz[8];
8089 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
8094 Error(
"PaintLegoAxis",
"no TView in current pad");
8119 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
8120 for (i = 1; i <= 8; ++i) {
8121 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
8122 r[i*3 - 2] = av[i*3 - 2]*sina;
8123 r[i*3 - 1] = av[i*3 - 1];
8137 if (!rmin || !rmax)
return;
8140 if (
x1[0] >
x2[0]) strlcpy(chopax,
"SDH=+",8);
8141 else strlcpy(chopax,
"SDH=-",8);
8142 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
8143 else strlcpy(chopay,
"SDH=-",8);
8144 if (z2[1] > z1[1]) strlcpy(chopaz,
"SDH=+",8);
8145 else strlcpy(chopaz,
"SDH=-",8);
8159 strlcat(chopax,
"N",8);
8163 strlcat(chopay,
"N",8);
8167 strlcat(chopaz,
"N",8);
8189 strlcat(chopax,
"t",8);
8207 strlcpy(chopay,
"V=+UN",8);
8222 strlcat(chopay,
"t",8);
8230 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
8245 strlcat(chopaz,
"t",8);
8253 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
8271 delete palette; palette = 0;
8276 delete palette; palette = 0;
8304 fH->TAttMarker::Modify();
8307 Double_t dz, z, xk,xstep, yk, ystep;
8312 if (zmin == 0 && zmax == 0)
return;
8323 if (zmin == 0 && zmax == 0)
return;
8326 if (ncells > 10000) scale /= 5;
8330 if (dz >=
kNMAX || zmax < 1) {
8331 scale = (
kNMAX-1)/dz;
8332 if (ncells > 10000) scale /= 5;
8339 if (zmin >= 0) zmin = 0;
8340 else zmin -= yMARGIN*(zmax-zmin);
8342 Double_t dzmin = yMARGIN*(zmax-zmin);
8343 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
8352 strlcpy(optscat,opt.
Data(),100);
8353 char *oscat = strstr(optscat,
"scat=");
8354 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
8355 sscanf(oscat+5,
"%lg",&scale);
8369 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
8371 if (z < zmin) z = zmin;
8372 if (z > zmax) z = zmax;
8378 if (z <= 0)
continue;
8382 for (
Int_t loop=0; loop<k; loop++) {
8383 if (k+marker >=
kNMAX) {
8387 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
8388 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
8397 if (
fXbuf[marker] <
gPad->GetUxmin())
break;
8398 if (
fYbuf[marker] <
gPad->GetUymin())
break;
8399 if (
fXbuf[marker] >
gPad->GetUxmax())
break;
8400 if (
fYbuf[marker] >
gPad->GetUymax())
break;
8428 R__TMatrixFBase->
Draw(option);
8434 R__TMatrixDBase->
Draw(option);
8440 R__TVectorF->
Draw(option);
8446 R__TVectorD->
Draw(option);
8463 while ((obj = next())) {
8470 if (stats && dostat) {
8476 if (!dofit) fit = 0;
8477 if (dofit == 1) dofit = 111;
8478 if (dostat == 1) dostat = 1111;
8479 Int_t print_name = dostat%10;
8480 Int_t print_entries = (dostat/10)%10;
8481 Int_t print_mean = (dostat/100)%10;
8482 Int_t print_stddev = (dostat/1000)%10;
8483 Int_t print_under = (dostat/10000)%10;
8484 Int_t print_over = (dostat/100000)%10;
8485 Int_t print_integral= (dostat/1000000)%10;
8486 Int_t print_skew = (dostat/10000000)%10;
8487 Int_t print_kurt = (dostat/100000000)%10;
8488 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8489 print_under + print_over + print_integral +
8490 print_skew + print_kurt;
8491 Int_t print_fval = dofit%10;
8492 Int_t print_ferrors = (dofit/10)%10;
8493 Int_t print_fchi2 = (dofit/100)%10;
8494 Int_t print_fprob = (dofit/1000)%10;
8495 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8498 else nlinesf += fit->
GetNpar();
8504 if (!dostat && !fit) {
8543 if (print_entries) {
8549 if (print_mean == 1) {
8559 if (print_mean == 1) {
8571 if (print_stddev == 1) {
8581 if (print_stddev == 1) {
8602 if (print_integral) {
8603 if (print_integral == 1) {
8613 if (print_skew == 1) {
8624 if (print_kurt == 1) {
8640 if (print_fchi2) stats->
AddText(
tt.Data());
8646 if (print_fval || print_ferrors) {
8650 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8651 if (print_ferrors) {
8683 while ((obj = next())) {
8689 if (stats && dostat) {
8695 if (dostat == 1) dostat = 1111;
8696 Int_t print_name = dostat%10;
8697 Int_t print_entries = (dostat/10)%10;
8698 Int_t print_mean = (dostat/100)%10;
8699 Int_t print_stddev = (dostat/1000)%10;
8700 Int_t print_under = (dostat/10000)%10;
8701 Int_t print_over = (dostat/100000)%10;
8702 Int_t print_integral= (dostat/1000000)%10;
8703 Int_t print_skew = (dostat/10000000)%10;
8704 Int_t print_kurt = (dostat/100000000)%10;
8705 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8706 if (print_under || print_over) nlines += 3;
8711 if (!dostat && !fit) {
8751 if (print_entries) {
8757 if (print_mean == 1) {
8776 if (print_stddev == 1) {
8794 if (print_integral) {
8800 if (print_skew == 1) {
8819 if (print_kurt == 1) {
8837 if (print_under || print_over) {
8848 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8849 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8850 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8851 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8852 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8853 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8854 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8855 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8856 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8875 tt.Form(
"%-8s = %5.4g #pm %5.4g ",fit->
GetParName(ipar)
8900 while ((obj = next())) {
8906 if (stats && dostat) {
8912 if (dostat == 1) dostat = 1111;
8913 Int_t print_name = dostat%10;
8914 Int_t print_entries = (dostat/10)%10;
8915 Int_t print_mean = (dostat/100)%10;
8916 Int_t print_stddev = (dostat/1000)%10;
8917 Int_t print_under = (dostat/10000)%10;
8918 Int_t print_over = (dostat/100000)%10;
8919 Int_t print_integral= (dostat/1000000)%10;
8920 Int_t print_skew = (dostat/10000000)%10;
8921 Int_t print_kurt = (dostat/100000000)%10;
8922 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
8923 if (print_under || print_over) nlines += 3;
8928 if (!dostat && !fit) {
8966 if (print_entries) {
8972 if (print_mean == 1) {
8998 if (print_stddev == 1) {
9023 if (print_integral) {
9028 if (print_skew == 1) {
9054 if (print_kurt == 1) {
9079 if (print_under || print_over) {
9090 tt.Form(
"%-8s = %5.4g #pm %5.4g ",fit->
GetParName(ipar)
9127 if (deltaz == 0) deltaz = 1;
9198 Error(
"PaintSurface",
"no TView in current pad");
9205 view->
SetView(phideg, thedeg, psideg, irep);
9215 fLego->TAttFill::Modify();
9217 Int_t backcolor =
gPad->GetFrameFillColor();
9223 fLego->TAttFill::Modify();
9261 fmax = fmin + (yligh1+0.1)*(qd+qs);
9266 if (!colref)
return;
9271 for (
Int_t col=0;col<nbcol;col++) {
9272 acol =
gROOT->GetColor(col+icol1);
9363 if (!dt && !dtOld)
return;
9376 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
9381 if (!rmin || !rmax)
return;
9400 Error(
"PaintTriangles",
"no TView in current pad");
9407 view->
SetView(phideg, thedeg, psideg, irep);
9412 fLego->TAttFill::Modify();
9413 Int_t backcolor =
gPad->GetFrameFillColor();
9418 fLego->TAttFill::Modify();
9460 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
9467 for (i = 0; i < ndivz; ++i) {
9474 delete [] colorlevel;
9544 while ((obj = next())) {
9552 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9572 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9589 while ((obj=next())) {
9591 z =
b->GetContent();
9593 poly =
b->GetPolygon();
9598 g->TAttLine::Modify();
9599 g->TAttMarker::Modify();
9600 g->TAttFill::Modify();
9602 Int_t fs =
g->GetFillStyle();
9605 g->SetFillColor(
g->GetLineColor());
9607 g->SetFillStyle(fs);
9608 g->SetFillColor(
fc);
9610 if (
fill)
g->Paint(
"F");
9611 if (
mark)
g->Paint(
"P");
9617 TList *gl =
mg->GetListOfGraphs();
9621 while ((
g = (
TGraph*) nextg())) {
9622 g->TAttLine::Modify();
9623 g->TAttMarker::Modify();
9624 g->TAttFill::Modify();
9626 Int_t fs =
g->GetFillStyle();
9629 g->SetFillColor(
g->GetLineColor());
9631 g->SetFillStyle(fs);
9632 g->SetFillColor(
fc);
9634 if (
fill)
g->Paint(
"F");
9635 if (
mark)
g->Paint(
"P");
9648 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9651 Int_t ncolors, color, theColor;
9682 while ((obj=next())) {
9684 poly =
b->GetPolygon();
9686 z =
b->GetContent();
9692 if (z < zmin)
continue;
9697 if (z < zc)
continue;
9699 for (
Int_t k=0; k<ndiv; k++) {
9708 color =
Int_t(0.01+(z-zmin)*scale);
9711 if (theColor > ncolors-1) theColor = ncolors-1;
9717 g->TAttFill::Modify();
9724 TList *gl =
mg->GetListOfGraphs();
9728 while ((
g = (
TGraph*) nextg())) {
9730 g->TAttFill::Modify();
9745 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9748 Int_t k, loop, marker=0;
9749 Double_t z, xk,xstep, yk, ystep, xp, yp;
9763 scale = (
kNMAX-1)/dz;
9777 while ((obj=next())) {
9780 if (
a>maxarea) maxarea =
a;
9785 while ((obj=next())) {
9787 poly =
b->GetPolygon();
9788 z =
b->GetContent();
9789 if (z < zmin) z = zmin;
9790 if (z > zmax) z = zmax;
9796 k =
Int_t((z*scale)*(
b->GetArea()/maxarea));
9799 xstep =
b->GetXMax()-xk;
9800 ystep =
b->GetYMax()-yk;
9805 if (k <= 0 || z <= 0)
continue;
9808 if (k+marker >=
kNMAX) {
9812 xp = (random.
Rndm()*xstep) + xk;
9813 yp = (random.
Rndm()*ystep) + yk;
9814 if (
g->IsInside(xp,yp)) {
9827 TList *gl =
mg->GetListOfGraphs();
9829 if (k <= 0 || z <= 0)
continue;
9832 if (k+marker >=
kNMAX) {
9836 xp = (random.
Rndm()*xstep) + xk;
9837 yp = (random.
Rndm()*ystep) + yk;
9838 if (
mg->IsInside(xp,yp)) {
9871 text.TAttText::Modify();
9878 while ((obj=next())) {
9880 p =
b->GetPolygon();
9881 x = (
b->GetXMin()+
b->GetXMax())/2;
9886 y = (
b->GetYMin()+
b->GetYMax())/2;
9891 z =
b->GetContent();
9895 tf.
Form(
"#splitline{%s%s}{#pm %s%s}",
9938 text.TAttText::Modify();
9952 if (yt == 0.)
continue;
9962 if (
y >=
gPad->GetY2())
continue;
9963 if (y <= gPad->GetY1())
continue;
9972 text.TAttText::Modify();
9991 tf.
Form(
"#splitline{%s%s}{#pm %s%s}",
10029 Error(
"PaintTF3",
"no TView in current pad");
10035 view->
SetView(phideg, thedeg, psideg, irep);
10089 TIter next(
gPad->GetListOfPrimitives());
10090 while ((obj = next())) {
10093 if (strcmp(title->
GetName(),
"title")) {title = 0;
continue;}
10097 if (title)
delete title;
10112 if (ht <= 0) ht = 0.05;
10133 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
10135 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
10139 if (talh == 2) xpos = xpos-wt/2.;
10140 if (talh == 3) xpos = xpos-wt;
10141 if (talv == 2) ypos = ypos+ht/2.;
10142 if (talv == 1) ypos = ypos+ht;
10160 if(!
gPad->IsEditable())
delete ptitle;
10168 if (!strcmp(mess,
"SetF3")) {
10266 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
10274 if (
xmin > xmin_aid)
xmin = xmin_aid;
10275 if (
ymin > ymin_aid)
ymin = ymin_aid;
10276 if (
xmax < xmax_aid)
xmax = xmax_aid;
10277 if (
ymax < ymax_aid)
ymax = ymax_aid;
10282 if (
xmin >xmin_aid)
xmin = xmin_aid;
10283 if (
xmax <xmax_aid)
xmax = xmax_aid;
10288 if (
ymin >ymin_aid)
ymin = ymin_aid;
10289 if (
ymax <ymax_aid)
ymax = ymax_aid;
10305 if (
xmin > xmin_aid)
xmin = xmin_aid;
10306 if (
ymin > ymin_aid)
ymin = ymin_aid;
10307 if (
xmax < xmax_aid)
xmax = xmax_aid;
10308 if (
ymax < ymax_aid)
ymax = ymax_aid;
10312 if (
xmin >xmin_aid)
xmin = xmin_aid;
10313 if (
xmax <xmax_aid)
xmax = xmax_aid;
10318 if (
ymin >ymin_aid)
ymin = ymin_aid;
10319 if (
ymax <ymax_aid)
ymax = ymax_aid;
10327 if (
xmin > xmin_aid)
xmin = xmin_aid;
10328 if (
ymin > ymin_aid)
ymin = ymin_aid;
10329 if (
xmax < xmax_aid)
xmax = xmax_aid;
10330 if (
ymax < ymax_aid)
ymax = ymax_aid;
10334 if (
xmin >xmin_aid)
xmin = xmin_aid;
10335 if (
xmax <xmax_aid)
xmax = xmax_aid;
10340 if (
ymin >ymin_aid)
ymin = ymin_aid;
10341 if (
ymax <ymax_aid)
ymax = ymax_aid;
10357 ymin - dyr*
gPad->GetBottomMargin(),
10358 xmax + dxr*
gPad->GetRightMargin(),
10369 if (
h == 0)
return;
10383 static const char *where =
"TableInit";
10411 Error(where,
"cannot set X axis to log scale");
10440 Error(where,
"cannot set Y axis to log scale");
10476 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10482 if (zmin >= zmax) {
10484 if (zmax > 0) zmin = 0.001*zmax;
10486 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10496 if (allchan) factor /= allchan;
10497 if (factor == 0) factor = 1;
10499 zmax = factor*zmax;
10500 zmin = factor*zmin;
10526 zmax += yMARGIN*(zmax-zmin);
10534 if (zmin >= 0) zmin = 0;
10535 else zmin -= yMARGIN*(zmax-zmin);
10537 Double_t dzmin = yMARGIN*(zmax-zmin);
10538 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10539 else zmin -= dzmin;
10565 tf.
Form(
"%s%s",
"%",
f);
10569 int ie = tv.
Index(
"e");
10570 int iE = tv.
Index(
"E");
10571 int id = tv.
Index(
".");
10575 if (ie >= 0 || iE >= 0) {
10576 if (tv.
Index(
"+") >= 0) {
10578 ef.
Form(
"%s.1f",
"%");
10581 ef.
Form(
"%s.%de",
"%",ie-
id-1);
10583 ef.
Form(
"%s.%dE",
"%",iE-
id-1);
10588 ef.
Form(
"%s.%de",
"%",ie-
id-1);
10590 ef.
Form(
"%s.%dE",
"%",iE-
id-1);
10595 }
else if (
id < 0) {
10596 ef.
Form(
"%s.1f",
"%");
10616 Int_t projection = 0;
10617 if (opt.
Contains(
"x")) projection = 1;
10618 if (opt.
Contains(
"y")) projection = 2;
10619 if (opt.
Contains(
"z")) projection = 3;
10620 if (opt.
Contains(
"xy")) projection = 4;
10621 if (opt.
Contains(
"yx")) projection = 5;
10622 if (opt.
Contains(
"xz")) projection = 6;
10623 if (opt.
Contains(
"zx")) projection = 7;
10624 if (opt.
Contains(
"yz")) projection = 8;
10625 if (opt.
Contains(
"zy")) projection = 9;
10629 gROOT->MakeDefCanvas();
10641 gPad->SetDoubleBuffer(0);
10645 static int pyold1 = 0;
10646 static int pyold2 = 0;
10647 float uxmin =
gPad->GetUxmin();
10648 float uxmax =
gPad->GetUxmax();
10649 int pxmin =
gPad->XtoAbsPixel(uxmin);
10650 int pxmax =
gPad->XtoAbsPixel(uxmax);
10681 TH1D *hp = ((
TH2*)
fH)->ProjectionX(prjName, biny1, biny2);
10686 if (biny1 == biny2) {
10694 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10706 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10724 gPad->SetDoubleBuffer(0);
10728 static int pxold1 = 0;
10729 static int pxold2 = 0;
10730 float uymin =
gPad->GetUymin();
10731 float uymax =
gPad->GetUymax();
10732 int pymin =
gPad->YtoAbsPixel(uymin);
10733 int pymax =
gPad->YtoAbsPixel(uymax);
10764 TH1D *hp = ((
TH2*)
fH)->ProjectionY(prjName, binx1, binx2);
10769 if (binx1 == binx2) {
10777 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10789 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10817 gPad->SetDoubleBuffer(0);
10833 static TPoint endface1[5];
10834 static TPoint endface2[5];
10843 int pxmin =
gPad->XtoAbsPixel(uxmin);
10844 int pxmax =
gPad->XtoAbsPixel(uxmax);
10845 if (pxmin==pxmax)
return;
10846 int pymin =
gPad->YtoAbsPixel(uymin);
10847 int pymax =
gPad->YtoAbsPixel(uymax);
10848 if (pymin==pymax)
return;
10849 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10850 Double_t cy = (pymax-pymin)/(uymax-uymin);
10865 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10870 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10873 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10874 if (nbins>1 && line1[0].GetX()) {
10885 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10886 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10889 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10890 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10897 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10898 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10901 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10902 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10908 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10909 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10912 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10913 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10919 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10920 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10923 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10924 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10926 endface1[0].
SetX(line1[0].GetX());
10927 endface1[0].
SetY(line1[0].GetY());
10928 endface1[1].
SetX(line2[0].GetX());
10929 endface1[1].
SetY(line2[0].GetY());
10930 endface1[2].
SetX(line3[0].GetX());
10931 endface1[2].
SetY(line3[0].GetY());
10932 endface1[3].
SetX(line4[0].GetX());
10933 endface1[3].
SetY(line4[0].GetY());
10934 endface1[4].
SetX(line1[0].GetX());
10935 endface1[4].
SetY(line1[0].GetY());
10937 endface2[0].
SetX(line1[1].GetX());
10938 endface2[0].
SetY(line1[1].GetY());
10939 endface2[1].
SetX(line2[1].GetX());
10940 endface2[1].
SetY(line2[1].GetY());
10941 endface2[2].
SetX(line3[1].GetX());
10942 endface2[2].
SetY(line3[1].GetY());
10943 endface2[3].
SetX(line4[1].GetX());
10944 endface2[3].
SetY(line4[1].GetY());
10945 endface2[4].
SetX(line1[1].GetX());
10946 endface2[4].
SetY(line1[1].GetY());
10980 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10985 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10988 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10989 if (nbins>1 && line1[0].GetX()) {
11000 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11001 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11004 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11005 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11012 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11013 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11016 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11017 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11023 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11024 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11027 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11028 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11034 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11035 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11038 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11039 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11041 endface1[0].
SetX(line1[0].GetX());
11042 endface1[0].
SetY(line1[0].GetY());
11043 endface1[1].
SetX(line2[0].GetX());
11044 endface1[1].
SetY(line2[0].GetY());
11045 endface1[2].
SetX(line3[0].GetX());
11046 endface1[2].
SetY(line3[0].GetY());
11047 endface1[3].
SetX(line4[0].GetX());
11048 endface1[3].
SetY(line4[0].GetY());
11049 endface1[4].
SetX(line1[0].GetX());
11050 endface1[4].
SetY(line1[0].GetY());
11052 endface2[0].
SetX(line1[1].GetX());
11053 endface2[0].
SetY(line1[1].GetY());
11054 endface2[1].
SetX(line2[1].GetX());
11055 endface2[1].
SetY(line2[1].GetY());
11056 endface2[2].
SetX(line3[1].GetX());
11057 endface2[2].
SetY(line3[1].GetY());
11058 endface2[3].
SetX(line4[1].GetX());
11059 endface2[3].
SetY(line4[1].GetY());
11060 endface2[4].
SetX(line1[1].GetX());
11061 endface2[4].
SetY(line1[1].GetY());
11094 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
11099 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
11102 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
11103 if (nbins>1 && line1[0].GetX()) {
11114 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11115 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11118 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11119 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11126 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11127 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11130 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11131 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11137 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11138 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11141 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11142 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11148 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11149 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11152 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11153 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11155 endface1[0].
SetX(line1[0].GetX());
11156 endface1[0].
SetY(line1[0].GetY());
11157 endface1[1].
SetX(line2[0].GetX());
11158 endface1[1].
SetY(line2[0].GetY());
11159 endface1[2].
SetX(line3[0].GetX());
11160 endface1[2].
SetY(line3[0].GetY());
11161 endface1[3].
SetX(line4[0].GetX());
11162 endface1[3].
SetY(line4[0].GetY());
11163 endface1[4].
SetX(line1[0].GetX());
11164 endface1[4].
SetY(line1[0].GetY());
11166 endface2[0].
SetX(line1[1].GetX());
11167 endface2[0].
SetY(line1[1].GetY());
11168 endface2[1].
SetX(line2[1].GetX());
11169 endface2[1].
SetY(line2[1].GetY());
11170 endface2[2].
SetX(line3[1].GetX());
11171 endface2[2].
SetY(line3[1].GetY());
11172 endface2[3].
SetX(line4[1].GetX());
11173 endface2[3].
SetY(line4[1].GetY());
11174 endface2[4].
SetX(line1[1].GetX());
11175 endface2[4].
SetY(line1[1].GetY());
11211 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11212 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11217 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11218 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11219 rect1[4].
SetX(rect1[0].GetX());
11220 rect1[4].
SetY(rect1[0].GetY());
11223 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11224 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11227 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11228 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11231 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11232 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11239 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11240 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11241 rect2[4].
SetX(rect2[0].GetX());
11242 rect2[4].
SetY(rect2[0].GetY());
11245 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11246 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11249 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11250 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11253 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11254 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11282 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11283 if (nbins>1 && rect2[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));
11562 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11563 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11568 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11569 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11570 rect1[4].
SetX(rect1[0].GetX());
11571 rect1[4].
SetY(rect1[0].GetY());
11574 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11575 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11578 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11579 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11582 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11583 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11590 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11591 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11592 rect2[4].
SetX(rect2[0].GetX());
11593 rect2[4].
SetY(rect2[0].GetY());
11596 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11597 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11600 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11601 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11604 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11605 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)
Draw all kinds of Arrows.
virtual Int_t GetNdivisions() const
virtual Float_t GetLabelOffset() const
virtual Float_t GetLabelSize() const
virtual Float_t GetTickLength() const
virtual Float_t GetTitleOffset() const
virtual Color_t GetFillColor() const
Return the fill area color.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void SetImageQuality(EImageQuality lquality)
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Size_t GetMarkerSize() const
Return the marker size.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual Font_t GetTextFont() const
Return the text font.
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Class to manage histogram axis.
virtual Bool_t GetTimeDisplay() const
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
const TArrayD * GetXbins() const
const char * GetBinLabel(Int_t bin) const
Return label for bin.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
const char * ChooseTimeFormat(Double_t axislength=0)
Choose a reasonable time format from the coordinates in the active pad and the number of divisions in...
Int_t GetLast() const
Return last bin on the axis i.e.
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates).
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 TGraph is an object made of two arrays X and Y with npoints each.
@ kClipFrame
clip to the frame boundary
1-D histogram with a double per channel (see TH1 documentation)}
1-D histogram with a float per channel (see TH1 documentation)}
virtual void SetTitle(const char *title)
See GetStatOverflows for more information.
virtual EBinErrorOpt GetBinErrorOption() const
virtual Float_t GetBarWidth() const
virtual Double_t GetMinimumStored() const
virtual Float_t GetBarOffset() const
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
virtual Int_t GetNbinsY() const
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Int_t GetNbinsZ() const
virtual Double_t GetNormFactor() const
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
virtual Double_t GetSkewness(Int_t axis=1) const
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
virtual void SetXTitle(const char *title)
virtual Int_t GetDimension() const
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
@ kNoTitle
don't draw the histogram title
@ kUserContour
user specified contour levels
@ kNoStats
don't draw stats box
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual Int_t GetNbinsX() const
virtual void SetMaximum(Double_t maximum=-1111)
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
virtual void SetMinimum(Double_t minimum=-1111)
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual Double_t GetEntries() const
Return the current number of entries.
virtual void SetZTitle(const char *title)
TList * GetListOfFunctions() const
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
virtual Double_t GetMaximumStored() const
virtual void GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
@ kNormal
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
const Double_t * GetBuffer() const
virtual Bool_t IsHighlight() const
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual void SetYTitle(const char *title)
virtual Int_t GetSumw2N() const
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual Double_t GetKurtosis(Int_t axis=1) const
2-D histogram with a double per channel (see TH1 documentation)}
2-D histogram with a float per channel (see TH1 documentation)}
Helper class to represent a bin in the TH2Poly histogram.
2D Histogram with Polygonal Bins
Service class for 2-Dim histogram classes.
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along Y.
TH1D * ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along X.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
The 3-D histogram classes derived from the 1-D histogram classes.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual TH1 * Project3D(Option_t *option="x") const
Project a 3-d histogram into 1 or 2-d histograms depending on the option parameter,...
The histogram painter class.
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Bool_t IsInside(Int_t x, Int_t y)
Return kTRUE if the cell ix, iy is inside one of the graphical cuts.
virtual void DrawPanel()
Display a panel with all histogram drawing options.
virtual void PaintErrors(Option_t *option)
Draw 1D histograms error bars.
virtual void SetHistogram(TH1 *h)
Set current histogram to h
virtual void PaintTF3()
Control function to draw a 3D implicit functions.
virtual void PaintStat(Int_t dostat, TF1 *fit)
Draw the statistics box for 1D and profile histograms.
virtual Int_t TableInit()
Initialize various options to draw 2D histograms.
virtual void PaintTH2PolyScatterPlot(Option_t *option)
Control function to draw a TH2Poly as a scatter plot.
static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual void PaintText(Option_t *option)
Control function to draw a 1D/2D histograms with the bin values.
virtual void PaintAxis(Bool_t drawGridOnly=kFALSE)
Draw axis (2D case) of an histogram.
virtual void PaintColorLevelsFast(Option_t *option)
[Rendering scheme for the COL2 and COLZ2 options] (#HP14)
virtual Int_t PaintInit()
Compute histogram parameters used by the drawing routines.
virtual void Paint2DErrors(Option_t *option)
Draw 2D histograms errors.
virtual void PaintCandlePlot(Option_t *option)
Control function to draw a 2D histogram as a candle (box) plot or violin plot
virtual void PaintScatterPlot(Option_t *option)
Control function to draw a 2D histogram as a scatter plot.
virtual ~THistPainter()
Default destructor.
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Display the histogram info (bin number, contents, integral up to bin corresponding to cursor position...
virtual void PaintLego(Option_t *option)
Control function to draw a 2D histogram as a lego plot.
virtual void PaintH3(Option_t *option="")
Control function to draw a 3D histograms.
virtual void PaintHighlightBin(Option_t *option="")
Paint highlight bin as TBox object.
virtual void PaintTH2PolyBins(Option_t *option)
Control function to draw a TH2Poly bins' contours.
virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1, Double_t elev2, Int_t icont2, Double_t x2, Double_t y2, Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels)
Fill the matrix xarr and yarr for Contour Plot.
virtual void PaintLegoAxis(TGaxis *axis, Double_t ang)
Draw the axis for legos and surface plots.
virtual void PaintTriangles(Option_t *option)
Control function to draw a table using Delaunay triangles.
virtual void HighlightBin(Int_t px, Int_t py)
Check on highlight bin.
virtual void PaintH3Box(Int_t iopt)
Control function to draw a 3D histogram with boxes.
static void PaintSpecialObjects(const TObject *obj, Option_t *option)
Static function to paint special objects like vectors and matrices.
virtual void PaintTitle()
Draw the histogram title.
virtual void PaintTH2PolyColorLevels(Option_t *option)
Control function to draw a TH2Poly as a color plot.
virtual std::vector< THistRenderingRegion > ComputeRenderingRegions(TAxis *pAxis, Int_t nPixels, bool isLog)
Returns the rendering regions for an axis to use in the COL2 option.
virtual void ShowProjectionX(Int_t px, Int_t py)
Show projection onto X.
virtual void PaintPalette()
Paint the color palette on the right side of the pad.
virtual void ProcessMessage(const char *mess, const TObject *obj)
Process message mess.
virtual void PaintStat2(Int_t dostat, TF1 *fit)
Draw the statistics box for 2D histograms.
virtual void PaintArrows(Option_t *option)
Control function to draw a table as an arrow plot
virtual void RecalculateRange()
Recompute the histogram range following graphics operations.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute the distance from the point px,py to a line.
static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
TPainter3dAlgorithms * fLego
virtual void PaintBarH(Option_t *option)
Draw a bar char in a rotated pad (X vertical, Y horizontal)
virtual void PaintStat3(Int_t dostat, TF1 *fit)
Draw the statistics box for 3D histograms.
virtual void PaintSurface(Option_t *option)
Control function to draw a 2D histogram as a surface plot.
TGraph2DPainter * fGraph2DPainter
THistPainter()
Default constructor.
virtual void PaintTH2PolyText(Option_t *option)
Control function to draw a TH2Poly as a text plot.
virtual void ShowProjection3(Int_t px, Int_t py)
Show projection (specified by fShowProjection) of a TH3.
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms
virtual void PaintFunction(Option_t *option)
[Paint functions associated to an histogram.](#HP28")
virtual void PaintBar(Option_t *option)
Draw a bar-chart in a normal pad.
static Int_t ProjectMercator2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual void PaintBoxes(Option_t *option)
Control function to draw a 2D histogram as a box plot
virtual Int_t MakeChopt(Option_t *option)
Decode string choptin and fill Hoption structure.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute the actions corresponding to event.
virtual void SetShowProjection(const char *option, Int_t nbins)
Set projection.
virtual void ShowProjectionY(Int_t px, Int_t py)
Show projection onto Y.
virtual void SetHighlight()
Set highlight (enable/disable) mode for fH.
static const char * GetBestFormat(Double_t v, Double_t e, const char *f)
This function returns the best format to print the error value (e) knowing the parameter value (v) an...
virtual void PaintContour(Option_t *option)
Control function to draw a 2D histogram as a contour plot.
virtual void PaintTable(Option_t *option)
Control function to draw 2D/3D histograms (tables).
virtual TList * GetContourList(Double_t contour) const
Get a contour (as a list of TGraphs) using the Delaunay triangulation.
virtual Int_t PaintInitH()
Compute histogram parameters used by the drawing routines for a rotated pad.
virtual void PaintFrame()
Calculate range and clear pad (canvas).
virtual void PaintH3Iso()
Control function to draw a 3D histogram with Iso Surfaces.
virtual void PaintH3BoxRaster()
Control function to draw a 3D histogram with boxes.
virtual void PaintHist(Option_t *option)
Control routine to draw 1D histograms
virtual Int_t MakeCuts(char *cutsopt)
Decode string choptin and fill Graphical cuts structure.
virtual void DefineColorLevels(Int_t ndivz)
Define the color levels used to paint legos, surfaces etc..
virtual void PaintColorLevels(Option_t *option)
Control function to draw a 2D histogram as a color plot.
A class to define a conversion from pixel values to pixel color.
static TImagePalette * CreateCOLPalette(Int_t nContours)
Factory method to creates an image palette for histogram plotting.
An abstract interface to image processing library.
virtual void SetImage(const Double_t *, UInt_t, UInt_t, TImagePalette *=0)
static TImage * Create()
Create an image.
virtual void PaintImage(Drawable_t, Int_t, Int_t, Int_t=0, Int_t=0, UInt_t=0, UInt_t=0, Option_t *="")
To draw Mathematical Formula.
virtual void Add(TObject *obj)
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual TObjLink * FirstLink() const
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
A TMultiGraph is a collection of TGraph (or derived) objects.
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 SetLegoFunction(LegoFunc_t pointer)
Store pointer to current lego function.
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in cylindrical coordinates.
void SurfaceFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Service function for Surfaces.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
void FillPolygonBorder(Int_t nn, Double_t *xy)
Fill a polygon including border ("RASTER SCREEN")
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots spheric coordinates.
void SurfaceCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw surface in cartesian coordinate system.
void SurfaceProperty(Double_t qqa, Double_t qqd, Double_t qqs, Int_t nnqs, Int_t &irep)
Set surface property coefficients.
void InitMoveScreen(Double_t xmin, Double_t xmax)
Initialize "MOVING SCREEN" method.
void FindVisibleLine(Double_t *p1, Double_t *p2, Int_t ntmax, Int_t &nt, Double_t *t)
Find visible part of a line ("RASTER SCREEN")
void LegoCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw stack of lego-plots in cartesian coordinates.
void DrawFaceMode1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 1st variant (2 colors: 1st for external surface, 2nd for internal)
void LightSource(Int_t nl, Double_t yl, Double_t xscr, Double_t yscr, Double_t zscr, Int_t &irep)
Set light source.
void GouraudFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Find part of surface with luminosity in the corners.
void DrawFaceMove1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "MOVING SCREEN" algorithm (draw face with level lines)
void SetSurfaceFunction(SurfaceFunc_t pointer)
Store pointer to current surface function.
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in polar coordinates.
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in spheric coordinates.
void BackBox(Double_t ang)
Draw back surfaces of surrounding box.
void ColorFunction(Int_t nl, Double_t *fl, Int_t *icl, Int_t &irep)
Set correspondence between function and color levels.
void DrawFaceRaster2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "RASTER SCREEN" algorithm (draw face for stacked lego plot)
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in polar coordinates.
void SetEdgeAtt(Color_t color=1, Style_t style=1, Width_t width=1, Int_t n=0)
void SetMesh(Int_t mesh=1)
void InitRaster(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Int_t nx, Int_t ny)
Initialize hidden lines removal algorithm (RASTER SCREEN)
void DefineGridLevels(Int_t ndivz)
Define the grid levels drawn in the background of surface and lego plots.
void LegoFunction(Int_t ia, Int_t ib, Int_t &nv, Double_t *ab, Double_t *vv, Double_t *t)
Service function for Legos.
void DrawFaceMove2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "MOVING SCREEN" algorithm (draw face for stacked lego plot)
void SetColorMain(Color_t color, Int_t n=0)
Store color for stack number n.
void Spectrum(Int_t nl, Double_t fmin, Double_t fmax, Int_t ic, Int_t idc, Int_t &irep)
Set Spectrum.
void DrawFaceRaster1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "RASTER SCREEN" algorithm (draw face with level lines)
void DrawFaceMode3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 3rd option (draw face for stacked lego plot)
void FrontBox(Double_t ang)
Draw front surfaces of surrounding box & axes.
void SetColorDark(Color_t color, Int_t n=0)
Store dark color for stack number n.
void DrawFaceMode2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 2nd option (fill in correspondence with function levels)
void ImplicitFunction(TF3 *f3, Double_t *rmin, Double_t *rmax, Int_t nx, Int_t ny, Int_t nz, const char *chopt)
Draw implicit function FUN(X,Y,Z) = 0 in cartesian coordinates using hidden surface removal algorithm...
The palette painting class.
void SetHistogram(TH1 *h)
virtual void Paint(Option_t *option="")
Paint the palette.
The histogram statistics painter class.
Int_t GetOptStat() const
Return the stat option.
virtual void SetStatFormat(const char *format="6.4g")
Change (i.e. set) the format for printing statistics.
void SetOptStat(Int_t stat=1)
Set the stat option.
virtual void SetParent(TObject *obj)
virtual const char * GetFitFormat() const
virtual void SetFitFormat(const char *format="5.4g")
Change (i.e. set) the format for printing fit parameters in statistics box.
Int_t GetOptFit() const
Return the fit option.
virtual void Paint(Option_t *option="")
Paint the pave stat.
void SetOptFit(Int_t fit=1)
Set the fit option.
virtual const char * GetStatFormat() const
A Pave (see TPave) with text, lines or/and boxes inside.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
virtual TText * GetLine(Int_t number) const
Get Pointer to line number in this pavetext.
virtual void Clear(Option_t *option="")
Clear all lines in this pavetext.
virtual void SetName(const char *name="")
Option_t * GetName() const
Returns name of object.
virtual void SetBorderSize(Int_t bordersize=4)
Double_t GetX1NDC() const
virtual void SetX2NDC(Double_t x2)
virtual void Paint(Option_t *)
Paint a Pie chart in a canvas.
virtual void ExecuteEvent(Int_t, Int_t, Int_t)
Execute the mouse events.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Evaluate the distance to the chart in gPad.
Defined by an array on N points in a 2-D space.
virtual void SetPoint(Int_t point, Double_t x, Double_t y)
Set point number n to (x, y) If n is greater than the current size, the arrays are automatically exte...
Profile2D histograms are used to display the mean value of Z and its 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.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Color_t GetStatTextColor() const
Float_t GetTitleX() const
Int_t GetOptTitle() const
Float_t GetStatFontSize() const
Float_t GetBarOffset() const
Float_t GetTitleSize(Option_t *axis="X") const
Return title size.
Float_t GetTitleY() const
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
Bool_t GetHistMinimumZero() const
Color_t GetTitleFillColor() const
Style_t GetTitleStyle() const
Color_t GetStatColor() const
Float_t GetBarWidth() const
Width_t GetTitleBorderSize() const
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
Float_t GetErrorX() const
Double_t GetHistTopMargin() const
void SetBarOffset(Float_t baroff=0.5)
Float_t GetEndErrorSize() const
Width_t GetStatBorderSize() const
Color_t GetTitleTextColor() const
void SetBarWidth(Float_t barwidth=0.5)
Float_t GetTitleH() const
Style_t GetStatStyle() const
const char * GetFitFormat() const
const char * GetStatFormat() const
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
Int_t GetNumberContours() const
const char * GetPaintTextFormat() const
Style_t GetStatFont() const
Float_t GetTitleFontSize() const
Float_t GetTitleW() const
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
Base class for several text objects.
virtual Double_t GetPsi()=0
virtual Double_t * GetRmax()=0
virtual void SetAxisNDC(const Double_t *x1, const Double_t *x2, const Double_t *y1, const Double_t *y2, const Double_t *z1, const Double_t *z2)=0
virtual Double_t * GetRmin()=0
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual void SetOutlineToCube()=0
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
virtual Double_t * GetTnorm()=0
virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py)=0
virtual TSeqCollection * GetOutline()=0
virtual void PadRange(Int_t rback)=0
virtual void FindNormal(Double_t x, Double_t y, Double_t z, Double_t &zn)=0
virtual void AxisVertex(Double_t ang, Double_t *av, Int_t &ix1, Int_t &ix2, Int_t &iy1, Int_t &iy2, Int_t &iz1, Int_t &iz2)=0
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
Abstract base class used by ROOT graphics editor.
static TVirtualPadEditor * GetPadEditor(Bool_t load=kTRUE)
Returns the pad editor dialog. Static method.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual Int_t GetLogz() const =0
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Int_t GetLogy() const =0
virtual Int_t GetLogx() const =0
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
RooCmdArg Bins(Int_t nbin)
double beta(double x, double y)
Calculates the beta function.
double dist(Rotation3D const &r1, Rotation3D const &r2)
static constexpr double bar
static constexpr double rad
static constexpr double s
static constexpr double mg
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 MinimumZero
"MIN0" or gStyle->GetHistMinimumZero()
int Contour
"CONT" Draw 2D plot as a Contour plot.
int Off
"][" With H option, the first and last vertical lines are not drawn.
int Func
"FUNC" Draw only the function (for example in case of fit).
long Candle
"CANDLE" Draw a 2D histogram as candle/box plot or violin plot (also with "VIOLIN").
int Spec
TSpectrum graphics.
int FrontBox
= 0 to suppress the front box
int Pie
"PIE" Draw 1D plot as a pie chart.
int Char
"CHAR" Draw 2D plot with a character set.
int Star
"*" A * is plotted at each point
int Zero
if selected with any LEGO option the empty bins are not drawn.
int Logz
log scale in Z. Also set by histogram option
int Tri
"TRI" Draw 2D plot with Delaunay triangles.
int BackBox
= 0 to suppress the back box
int Mark
"P" The current Marker is drawn at each point
int Arrow
"ARR" Draw 2D plot with Arrows.
int Line
"L" A simple polyline beetwen every point is drawn.
int Same
"S" Histogram is plotted in the current PAD.
int Lego
"LEGO" Draw as a Lego plot(LEGO,Lego=1, LEGO1,Lego1=11, LEGO2,Lego=12).
int Bar
"B" A Bar chart is drawn at each point.
int Fill
"F" A fill area is drawn ("CF" draw a smooth fill area).
int Hist
"HIST" Draw only the histogram.
int Surf
"SURF" Draw as a Surface (SURF,Surf=1, SURF1,Surf=11, SURF2,Surf=12)
int Logy
log scale in Y. Also set by histogram option
int System
type of coordinate system(1=car,2=pol,3=cyl,4=sph,5=psr)
int Error
"E" Draw Errors with current marker type and size.
Histogram parameters structure.
Double_t baroffset
offset of bin for bars or legos [0,1]
Double_t ylowedge
low edge of axis
Double_t xmin
minimum value along X
Int_t ylast
last bin number along Y
Int_t xfirst
first bin number along X
Double_t zmin
minimum value along Z
Double_t xbinsize
bin size in case of equidistant bins
Double_t ymin
minimum value along y
Double_t allchan
integrated sum of contents
Double_t xlowedge
low edge of axis
Double_t ymax
maximum value along y
Double_t factor
multiplication factor (normalization)
Int_t xlast
last bin number along X
Double_t ybinsize
bin size in case of equidistant bins
Double_t barwidth
width of bin for bars and legos [0,1]
Double_t zmax
maximum value along Z
Double_t xmax
maximum value along X
Int_t yfirst
first bin number along Y