3191 const Int_t big = 9999;
3192 const Int_t kMaxDiff = 7;
3203 Int_t curdist = big;
3204 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
3207 if (!PadPointer)
return 0;
3221 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
3223 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
3225 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
3226 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
3237 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
3246 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
3258 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
3267 if (yxaxis < puymin) yxaxis = puymin;
3268 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
3278 if ((px > puxmin) && (py < puymin) && (px < puxmax) && (py > puymax))
3294 Int_t bin =
th2->FindBin(pxu, pyu);
3295 if (bin>0) curdist = 1;
3301 if ( px > puxmin + delta2
3302 && px < puxmax - delta2
3303 && py > puymax + delta2
3304 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
3308 if (
gPad->IsVertical()) {
3313 if (binval == 0 && pybin < puymin) pybin = 10000;
3319 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3321 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3322 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3324 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
3325 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
3326 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
3328 if (bin != binsup) {
3330 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
3331 if (py <=
TMath::Max(pybinsub,pybin) && py >=
TMath::Min(pybinsub,pybin) && pybin != 10000)
return 0;
3341 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
3347 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3349 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3350 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3352 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
3353 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
3354 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
3365 else dist =
f->DistancetoPrimitive(px,py);
3379 Error(
"DrawPanel",
"need to draw histogram first");
3384 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
3399 static Int_t bin, px1, py1, px2, py2, pyold;
3400 static TBox *zoombox;
3404 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3407 if (!
gPad->IsEditable())
return;
3428 if (IsSame.
Index(
"same")>=0) {
3430 TIter next(
gPad->GetListOfPrimitives());
3431 while ((
h1 = (
TH1 *)next())) {
3448 if (!opaque)
gVirtualX->SetLineColor(-1);
3449 fH->TAttLine::Modify();
3451 if (opaque && dimension ==2) {
3452 zbx1 =
gPad->AbsPixeltoX(px);
3453 zbx2 =
gPad->AbsPixeltoX(px);
3454 zby1 =
gPad->AbsPixeltoY(py);
3455 zby2 =
gPad->AbsPixeltoY(py);
3458 if (
gPad->GetLogx()) {
3462 if (
gPad->GetLogy()) {
3466 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3483 if (dimension ==1) {
3491 x =
gPad->AbsPixeltoX(px);
3495 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3496 ylow =
gPad->GetUymin();
3497 px1 =
gPad->XtoAbsPixel(xlow);
3498 px2 =
gPad->XtoAbsPixel(xup);
3499 py1 =
gPad->YtoAbsPixel(ylow);
3509 if (dimension ==1) {
3510 if (
gROOT->GetEditHistograms()) {
3519 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3526 if (opaque && dimension ==2) {
3528 zbx2 =
gPad->AbsPixeltoX(px);
3529 zby2 =
gPad->AbsPixeltoY(py);
3532 zoombox->
SetX2(zbx2);
3533 zoombox->
SetY2(zby2);
3543 if (dimension ==2) {
3548 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3553 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3562 if (dimension == 2) {
3567 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3572 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3580 if (dimension ==1) {
3581 if (
gROOT->GetEditHistograms()) {
3582 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3590 if (opaque && dimension ==2) {
3600 if (
x1<
x2 && y1<y2) {
3609 if (opaque)
gVirtualX->SetLineColor(-1);
3619 event =
gVirtualX->RequestLocator(1, 1, px, py);
3646 if (!dt && !dtOld)
return nullptr;
3665 if (!
gPad)
return (
char*)
"";
3675 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3676 uxmin=
gPad->GetUxmin();
3677 uxmax=
gPad->GetUxmax();
3681 uymin=
gPad->GetUymin();
3682 uymax=
gPad->GetUymax();
3688 Int_t binx,biny,binmin=0,binx1;
3689 if (
gPad->IsVertical()) {
3691 if (drawOption.
Index(
"same") >= 0) {
3693 TIter next(
gPad->GetListOfPrimitives());
3694 while ((
h1 = (
TH1 *)next())) {
3707 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3719 if (drawOption.
Index(
"same") >= 0) {
3721 TIter next(
gPad->GetListOfPrimitives());
3722 while ((
h1 = (
TH1 *)next())) {
3735 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3761 biny =
th2->FindBin(
x,
y);
3763 th2->GetBinTitle(biny),
x,
y,biny,
th2->GetBinContent(biny));
3769 fObjectInfo.
Form(
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3825 if (!changedBin)
return;
3851 if (
gPad->GetLogx()) {
3855 if (
gPad->GetLogy()) {
3862 if (
gPad->IsVertical()) {
3864 if ((hcenter < uxmin) || (hcenter > uxmax))
return;
3867 if ((hcenter < uymin) || (hcenter > uymax))
return;
3871 if ((hcenter < uymin) || (hcenter > uymax))
return;
3876 if (
gPad->IsVertical()) {
3966 Int_t nch = strlen(choptin);
3967 strlcpy(chopt,choptin,128);
3993 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
3999 char *l1 = strstr(chopt,
"PFC");
4000 char *l2 = strstr(chopt,
"PLC");
4001 char *l3 = strstr(chopt,
"PMC");
4002 if (l1 || l2 || l3) {
4010 l = strstr(chopt,
"MIN0");
4016 l = strstr(chopt,
"SPEC");
4021 l = strstr(chopt,
"BF(");
4023 if (sscanf(&
l[3],
"%d",&bs) > 0) {
4036 l = strstr(chopt,
"GL");
4040 l = strstr(chopt,
"X+");
4045 l = strstr(chopt,
"Y+");
4053 l = strstr(chopt,
"SAMES");
4060 l = strstr(chopt,
"SAME");
4068 l = strstr(chopt,
"PIE");
4075 l = strstr(chopt,
"CANDLE");
4082 l = strstr(chopt,
"VIOLIN");
4089 l = strstr(chopt,
"LEGO");
4100 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4103 l = strstr(chopt,
"SURF");
4118 l = strstr(chopt,
"TF3");
4124 l = strstr(chopt,
"ISO");
4130 l = strstr(chopt,
"LIST");
if (
l) {
Hoption.
List = 1; memcpy(
l,
" ",4);}
4132 l = strstr(chopt,
"CONT");
4147 l = strstr(chopt,
"HBAR");
4156 l = strstr(chopt,
"BAR");
4166 l = strstr(chopt,
"ARR" );
4172 l = strstr(chopt,
"COL");
if (
l) {
Hoption.
Arrow = 2; memcpy(
l,
" ",3); }
4178 l = strstr(chopt,
"BOX" );
4191 l = strstr(chopt,
"COLZ");
4199 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4205 l = strstr(chopt,
"COL" );
4212 l = strstr(chopt,
"0");
if (
l) {
Hoption.
Zero = 1; memcpy(
l,
" ",1); }
4221 l = strstr(chopt,
"AXIS");
if (
l) {
Hoption.
Axis = 1; memcpy(
l,
" ",4); }
4222 l = strstr(chopt,
"AXIG");
if (
l) {
Hoption.
Axis = 2; memcpy(
l,
" ",4); }
4223 l = strstr(chopt,
"SCAT");
if (
l) {
Hoption.
Scat = 1; memcpy(
l,
" ",4); }
4224 l = strstr(chopt,
"TEXT");
4227 if (sscanf(&
l[4],
"%d",&angle) > 0) {
4228 if (angle < 0) angle=0;
4229 if (angle > 90) angle=90;
4235 l = strstr(chopt,
"N");
4244 l = strstr(chopt,
"TRI");
4251 l = strstr(chopt,
"ERR");
if (
l) memcpy(
l,
" ",3);
4254 l = strstr(chopt,
"AITOFF");
4258 l = strstr(chopt,
"MERCATOR");
4262 l = strstr(chopt,
"SINUSOIDAL");
4266 l = strstr(chopt,
"PARABOLIC");
4292 if (strstr(chopt,
"E")) {
4302 if (strstr(chopt,
"X0")) {
4325 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
4346 char *left = (
char*)strchr(choptin,
'[');
4347 if (!left)
return 0;
4348 char *right = (
char*)strchr(choptin,
']');
4349 if (!right)
return 0;
4350 Int_t nch = right-left;
4351 if (nch < 2)
return 0;
4352 char *cuts = left+1;
4354 char *comma, *minus;
4357 comma = strchr(cuts,
',');
4358 if (comma) *comma = 0;
4359 minus = strchr(cuts,
'-');
4360 if (minus) cuts = minus+1;
4361 while (*cuts ==
' ') cuts++;
4362 Int_t nc = strlen(cuts);
4363 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
4367 while ((obj = next())) {
4369 if (strcmp(obj->
GetName(),cuts))
continue;
4382 for (i=0;i<=nch;i++) left[i] =
' ';
4410 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
4420 Error(
"Paint",
"Option PIE is for 1D histograms only");
4454 Int_t logysav=0, logzsav=0;
4505 if (gridx)
gPad->SetGridx(0);
4506 if (gridy)
gPad->SetGridy(0);
4508 if (gridx)
gPad->SetGridx(1);
4509 if (gridy)
gPad->SetGridy(1);
4544 if (gridx)
gPad->SetGridx(0);
4545 if (gridy)
gPad->SetGridy(0);
4547 if (gridx)
gPad->SetGridx(1);
4548 if (gridy)
gPad->SetGridy(1);
4557 while ((obj = next())) {
4565 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4593 arrow->SetAngle(30);
4594 arrow->SetFillStyle(1001);
4600 Int_t ncolors=0, ndivz=0;
4614 for (
Int_t id=1;
id<=2;
id++) {
4621 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4639 }
else if (
id == 2) {
4651 if (theColor > ncolors-1) theColor = ncolors-1;
4656 arrow->PaintArrow(
x1, y1,
x2, y2, 0.015,
"|>");
4658 arrow->PaintArrow(
x1, y1,
x2, y2, 0.005,
"|>");
4681 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4693 TIter next(
gPad->GetListOfPrimitives());
4696 while ((obj = next())) {
4702 if (strstr(opt,
"hbar")) {
4706 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4716 static char chopt[10] =
"";
4718 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4719 Int_t useHparam = 0;
4720 Double_t umin, umax, uminsave, umaxsave;
4736 TIter next(
gPad->GetListOfPrimitives());
4737 while ((obj=next())) {
4748 if (
gPad->PadInSelectionMode())
4752 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4763 strlcat(chopt,
"SDH",10);
4764 if (ndivx < 0) strlcat(chopt,
"N",10);
4765 if (
gPad->GetGridx()) {
4766 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4767 strlcat(chopt,
"W",10);
4772 strlcat(chopt,
"G",10);
4794 strlcat(chopt,
"t",10);
4802 if (xAxisPos == 1) {
4818 strlcat(chopt,
"-",10);
4827 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4832 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4834 cw=strstr(chopt,
"-");
4837 strlcat(chopt,
"-",10);
4839 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4840 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4844 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4850 if (
gPad->PadInSelectionMode())
4854 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4859 strlcat(chopt,
"SDH",10);
4860 if (ndivy < 0) strlcat(chopt,
"N",10);
4861 if (
gPad->GetGridy()) {
4862 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4863 strlcat(chopt,
"W",10);
4868 strlcat(chopt,
"G",10);
4890 strlcat(chopt,
"t",10);
4898 if (yAxisPos == 1) {
4914 strlcat(chopt,
"+L",10);
4923 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4928 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4929 if (
gPad->GetTicky() < 2) {
4930 strlcat(chopt,
"U",10);
4933 strlcat(chopt,
"+L",10);
4935 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4939 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4962 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4964 box.SetFillColor(hcolor);
4965 box.SetFillStyle(hstyle);
4975 if (ymax < gPad->GetUymin())
continue;
4977 if (ymin < gPad->GetUymin())
ymin =
gPad->GetUymin();
4991 box.SetFillColor(hcolor);
5011 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
5025 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
5027 box.SetFillColor(hcolor);
5028 box.SetFillStyle(hstyle);
5037 if (xmax < gPad->GetUxmin())
continue;
5039 if (xmin < gPad->GetUxmin())
xmin =
gPad->GetUxmin();
5052 box.SetFillColor(hcolor);
5065 while ((obj = next())) {
5086 fH->TAttLine::Modify();
5087 fH->TAttFill::Modify();
5089 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
5100 Double_t zminlin = zmin, zmaxlin = zmax;
5106 TIter next(
gPad->GetListOfPrimitives());
5107 while ((h2 = (
TH2 *)next())) {
5157 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5164 if (kZminNeg && z==0)
continue;
5176 if (dz == 0)
continue;
5178 if (zratio == 0)
continue;
5180 xup = xcent*zratio + xk + xcent;
5181 xlow = 2*(xk + xcent) - xup;
5182 if (xup-xlow < dxmin) xup = xlow+dxmin;
5190 yup = ycent*zratio + yk + ycent;
5191 ylow = 2*(yk + ycent) - yup;
5192 if (yup-ylow < dymin) yup = ylow+dymin;
5205 if (xlow >= xup)
continue;
5206 if (ylow >= yup)
continue;
5210 fH->TAttFill::Modify();
5211 gPad->PaintBox(xlow, ylow, xup, yup);
5213 gPad->PaintLine(xlow, ylow, xup, yup);
5214 gPad->PaintLine(xlow, yup, xup, ylow);
5219 fH->TAttFill::Modify();
5220 gPad->PaintBox(xlow, ylow, xup, yup);
5225 x[0] = xlow;
y[0] = ylow;
5226 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5227 x[2] =
x[1];
y[2] = yup - bwidth*(yup-ylow);
5228 x[3] = xup - bwidth*(xup-xlow);
y[3] =
y[2];
5229 x[4] = xup;
y[4] = yup;
5230 x[5] = xlow;
y[5] = yup;
5231 x[6] = xlow;
y[6] = ylow;
5234 fH->TAttFill::Modify();
5235 gPad->PaintFillArea(7,
x,
y);
5238 x[0] = xlow;
y[0] = ylow;
5239 x[1] = xlow + bwidth*(xup-xlow);
y[1] = ylow + bwidth*(yup-ylow);
5240 x[2] = xup - bwidth*(xup-xlow);
y[2] =
y[1];
5241 x[3] =
x[2];
y[3] = yup - bwidth*(yup-ylow);
5242 x[4] = xup;
y[4] = yup;
5243 x[5] = xup;
y[5] = ylow;
5244 x[6] = xlow;
y[6] = ylow;
5247 fH->TAttFill::Modify();
5248 gPad->PaintFillArea(7,
x,
y);
5256 fH->TAttFill::Modify();
5281 const Double_t standardCandleWidth = 0.66;
5282 const Double_t standardHistoWidth = 0.8;
5285 double allMaxIntegral = 0;
5291 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5301 double myIntegral = hproj->
Integral();
5303 if (candleWidth > 0.999 && candleWidth < 1.001) {
5304 candleWidth = standardCandleWidth;
5305 histoWidth = standardHistoWidth;
5310 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5311 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5324 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5334 double myIntegral = hproj->
Integral();
5336 if (candleWidth > 0.999 && candleWidth < 1.001) {
5337 candleWidth = standardCandleWidth;
5338 histoWidth = standardHistoWidth;
5343 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5344 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5372std::vector<THistRenderingRegion>
5375 std::vector<THistRenderingRegion> regions;
5377 enum STRATEGY {
Bins, Pixels } strategy;
5381 if (nBins >= nPixels) {
5393 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
5403 if (strategy ==
Bins) {
5412 for (
Int_t bin=pAxis->
GetFirst()+binOffset; bin<=pAxis->GetLast(); bin++) {
5421 std::make_pair(bin, bin+1)};
5422 regions.push_back(region);
5431 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
5436 std::make_pair(binLow, binHigh)};
5437 regions.push_back(region);
5443 if (strategy ==
Bins) {
5445 for (
Int_t bin=pAxis->
GetFirst(); bin<=pAxis->GetLast(); bin++) {
5450 Int_t xPx1 = xPx0 + nPixels/nBins;
5453 if (xPx1>= nPixels) xPx1 = nPixels-1;
5456 std::make_pair(bin, bin+1)};
5457 regions.push_back(region);
5461 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
5463 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
5464 Int_t binHigh = binLow + nBins/nPixels;
5466 std::make_pair(binLow, binHigh)};
5467 regions.push_back(region);
5482 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5483 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
5496 if ((zmin == -1111) && (zmax == -1111)) {
5500 }
else if (zmin == -1111) {
5503 }
else if (zmax == -1111) {
5521 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5522 "Cannot plot logz because bin content is less than 0.");
5533 std::vector<Double_t> colorBounds(ndiv);
5534 std::vector<Double_t> contours(ndiv, 0);
5542 for (
Int_t i=0; i<ndiv; ++i) {
5543 colorBounds[i] = step*i;
5546 auto pFrame =
gPad->GetFrame();
5547 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5548 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5549 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5550 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5551 Int_t nXPixels = px1-px0;
5552 Int_t nYPixels = py0-py1;
5554 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5558 if (xRegions.size() == 0 || yRegions.size() == 0) {
5559 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5560 "Encountered error while computing rendering regions.");
5568 for (
auto& yRegion : yRegions) {
5569 for (
auto& xRegion : xRegions ) {
5571 const auto& xBinRange = xRegion.fBinRange;
5572 const auto& yBinRange = yRegion.fBinRange;
5583 if (z > zmax) z = zmax;
5584 if (z < zmin) z = zmin;
5589 z = colorBounds[index];
5593 index = 0.001 + ((z - zmin)/dz)*ndiv;
5596 if (index ==
static_cast<Int_t>(colorBounds.size())) {
5604 }
else if (index ==
static_cast<Int_t>(colorBounds.size()-1)) {
5608 z = colorBounds[index];
5619 const auto& xPixelRange = xRegion.fPixelRange;
5620 const auto& yPixelRange = yRegion.fPixelRange;
5621 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5622 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5623 Int_t pixel = yPx*nXPixels + xPx;
5634 if (minValue != maxValue) {
5640 buffer[buffer.size()-nXPixels] = 0.95;
5648 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5652 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5669 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5685 TIter next(
gPad->GetListOfPrimitives());
5686 while ((h2 = (
TH2 *)next())) {
5718 fH->TAttFill::Modify();
5729 Double_t scale = (dz ? ndivz / dz : 1.0);
5741 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5746 if (binEntries == 0)
5779 if (xup < gPad->GetUxmin())
continue;
5780 if (yup < gPad->GetUymin())
continue;
5781 if (xlow >
gPad->GetUxmax())
continue;
5782 if (ylow >
gPad->GetUymax())
continue;
5783 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5784 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5785 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5786 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5791 if (z < zc)
continue;
5793 for (
Int_t k=0; k<ndiv; k++) {
5802 color =
Int_t(0.01+(z-zmin)*scale);
5806 if (theColor > ncolors-1) theColor = ncolors-1;
5808 fH->TAttFill::Modify();
5810 gPad->PaintBox(xlow, ylow, xup, yup);
5823 fH->TAttFill::Modify();
5833 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5834 Int_t itars, mode, ir[4];
5835 Double_t xsave, ysave, thesave,phisave,
x[4],
y[4], zc[4];
5840 thesave =
gPad->GetTheta();
5841 phisave =
gPad->GetPhi();
5843 gPad->SetTheta(90.);
5845 gPad->SetPhi(phisave);
5846 gPad->SetTheta(thesave);
5857 TIter next(
gPad->GetListOfPrimitives());
5858 while ((obj=next())) {
5875 if (!dt && !dtOld)
return;
5895 if (ncontour == 0) {
5900 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
5911 fH->TAttLine::Modify();
5921 np =
new Int_t[ncontour];
5922 for (i=0;i<ncontour;i++) np[i] = 0;
5924 for (i=0;i<ncontour;i++) {
5928 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
5930 gROOT->GetListOfSpecials()->Remove(contours);
5932 for (i=0;i<count;i++) {
5933 list = (
TList*)contours->
At(i);
5934 if (list) list->
Delete();
5938 contours->
SetName(
"contours");
5939 gROOT->GetListOfSpecials()->Add(contours);
5940 for (i=0;i<ncontour;i++) {
5942 contours->
Add(list);
5975 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
5980 if (zc[0] <= zc[1])
n = 0;
else n = 1;
5981 if (zc[2] <= zc[3])
m = 2;
else m = 3;
5982 if (zc[
n] > zc[
m])
n =
m;
5985 for (ix=1;ix<=4;ix++) {
5988 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5993 if (zc[0] <= zc[1])
n = 0;
else n = 1;
5994 if (zc[2] <= zc[3])
m = 2;
else m = 3;
5995 if (zc[
n] > zc[
m])
n =
m;
5998 for (ix=1;ix<=4;ix++) {
6002 ir[
m-1],
x[
m-1],
y[
m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
6010 for (ix=1; ix<=lj-5; ix +=2) {
6012 while (itarr[ix-1] != itarr[ix]) {
6016 for (jx=ix; jx<=lj-5; jx +=2) {
6017 xarr[jx] = xarr[jx+2];
6018 yarr[jx] = yarr[jx+2];
6019 itarr[jx] = itarr[jx+2];
6023 itarr[lj-3] = itars;
6024 if (count > 100)
break;
6029 if (count > 100)
continue;
6030 for (ix=1; ix<=lj-2; ix +=2) {
6038 if (mode == 0) mode = 5;
6042 fH->TAttLine::Modify();
6043 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
6047 ipoly = itarr[ix-1];
6048 if (ipoly >=0 && ipoly <ncontour) {
6049 poly =
polys[ipoly];
6050 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
6051 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
6053 if (npmax < np[ipoly]) npmax = np[ipoly];
6062 Int_t nadd,iminus,iplus;
6066 Int_t *polysort = 0;
6078 polysort =
new Int_t[ncontour];
6080 for (ipoly=0;ipoly<ncontour;ipoly++) {
6081 if (levels[ipoly] >= 0) {
first = ipoly;
break;}
6085 for (ipoly=
first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
6086 for (ipoly=
first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
6090 for (k=0;k<ncontour;k++) {
6091 ipoly = polysort[k];
6092 if (np[ipoly] == 0)
continue;
6095 poly =
polys[ipoly];
6102 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
6103 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
6104 xx[istart] =
xmin; yy[istart] =
ymin;
6105 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
6108 for (i=2;i<np[ipoly];i+=2) {
6109 if ((iplus < 2*npmax-1) && (xx[i] == xp[iplus]) && (yy[i] == yp[iplus])) {
6111 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
6116 if ((iminus > 0) && (xx[i+1] == xp[iminus]) && (yy[i+1] == yp[iminus])) {
6118 xp[iminus] = xx[i]; yp[iminus] = yy[i];
6124 if (nadd == 0)
break;
6129 fH->TAttFill::Modify();
6130 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6132 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
6133 graph->SetFillColor(icol);
6139 for (i=2;i<np[ipoly];i+=2) {
6140 if (xx[i] !=
xmin && yy[i] !=
ymin) {
6145 if (istart == 0)
break;
6149 for (i=0;i<ncontour;i++)
delete polys[i];
6161 if (np)
delete [] np;
6177 Double_t tlen, tdif, elev, diff, pdif, xlen;
6189 tdif = elev2 - elev1;
6195 diff = elev - elev1;
6206 yarr[i] = y1 + xlen;
6211 xarr[i] =
x1 + xlen;
6234 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
6236 const Int_t kBASEMARKER=8;
6237 Double_t xp, yp, ex1, ex2, ey1, ey2;
6239 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
6240 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
6249 Int_t drawmarker, errormarker;
6250 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
6254 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
6263 if (
Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
6264 if (option2+option3 == 0) optionE = 1;
6279 if (errormarker == 1) symbolsize = 0.01;
6280 sbase = symbolsize*kBASEMARKER;
6283 fH->TAttLine::Modify();
6284 fH->TAttFill::Modify();
6285 fH->TAttMarker::Modify();
6292 npoints = last -
first +1;
6302 if (!xline || !yline) {
6303 Error(
"PaintErrors",
"too many points, out of memory");
6316 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
6317 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
6333 for (k=
first; k<=last; k++) {
6352 xminTmp += offset*(xmaxTmp-xminTmp);
6353 xmaxTmp = xminTmp + w;
6354 xp = (xminTmp+xmaxTmp)/2.;
6357 if (xp <= 0)
goto L30;
6358 if (xp < logxmin)
goto L30;
6361 if (xp <
xmin)
goto L30;
6362 if (xp >
xmax)
break;
6365 if (optionI0 && yp==0)
goto L30;
6417 if (!option0 && !option3) {
6419 if (yi1 < ymin || yi1 >
ymax)
goto L30;
6422 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
6425 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
6439 if (optionE && drawmarker) {
6444 if (yi1<ymax && yi1>
ymin) {
6445 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
6446 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
6450 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
6455 if (yi1<ymax && yi1>
ymin) {
6456 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
6457 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
6464 if (option1 && drawmarker) {
6465 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
6466 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
6467 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
6468 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
6473 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
6502 if (if2 > npoints) {
6503 for (i=1; i<if1; i++) {
6504 xline[if1-2+i] = xline[if2-1+i];
6505 yline[if1-2+i] = yline[if2-1+i];
6509 if (option4)
graph.PaintGraph(2*npoints,xline,yline,
"FC");
6510 else graph.PaintGraph(2*npoints,xline,yline,
"F");
6511 gPad->SetLogx(logx);
6512 gPad->SetLogy(logy);
6524 fH->TAttMarker::Modify();
6525 fH->TAttLine::Modify();
6537 Error(
"Paint2DErrors",
"no TView in current pad");
6544 view->
SetView(phideg, thedeg, psideg, irep);
6549 fLego->TAttFill::Modify();
6550 Int_t backcolor =
gPad->GetFrameFillColor();
6555 fLego->TAttFill::Modify();
6596 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6639 gPad->PaintLine3D(temp1, temp2);
6646 gPad->PaintLine3D(temp1, temp2);
6653 gPad->PaintLine3D(temp1, temp2);
6657 view->
WCtoNDC(temp1, &temp2[0]);
6658 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6692 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6698 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6721 f2->
Paint(
"surf same");
6723 obj->
Paint(
"cont3 same");
6730 gPad->PushSelectableObject(obj);
6734 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6750 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6753 static char chopth[17];
6755 Int_t htype, oldhtype;
6760 strlcpy(chopth,
" ",17);
6775 nbins = last -
first + 1;
6781 if (fixbin) keepx =
new Double_t[2];
6782 else keepx =
new Double_t[nbins+1];
6789 for (j=
first; j<=last;j++) {
6799 keepy[j-
first] = yb;
6815 if (htype == 0 || htype == 1000) htype = 1001;
6839 if (!fixbin && strlen(chopth)) {
6864 graph.SetLineWidth(lw);
6867 graph.SetFillStyle(htype);
6874 graph.PaintGrapHist(nbins, keepx, keepy ,chopth);
6906 }
else if (strstr(opt,
"iso")) {
6909 }
else if (strstr(opt,
"tf3")) {
6913 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6924 view->
SetView(phideg, thedeg, psideg, irep);
6927 gROOT->ProcessLine(cmd);
6958 while ((obj = next())) {
6981 static const char *where =
"PaintInit";
7002 Error(where,
"cannot set X axis to log scale");
7009 for (i=
first; i<=last; i++) {
7021 Error(where,
"cannot set X axis to log scale");
7045 Int_t nonNullErrors = 0;
7047 for (i=
first; i<=last;i++) {
7060 if (e1 > 0) nonNullErrors++;
7077 fval =
f1->
Eval(xv[0],0,0);
7089 if (!nonNullErrors) {
7108 Error(where,
"log scale requested with a negative argument (%f)", xm);
7121 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
ymax);
7129 }
else if (
ymin < 0) {
7149 if (allchan) factor /= allchan;
7150 if (factor == 0) factor = 1;
7168 Error(where,
"Cannot set Y axis to log scale");
7214 static const char *where =
"PaintInitH";
7239 Error(where,
"cannot set Y axis to log scale");
7261 for (i=
first; i<=last;i++) {
7276 fval =
f1->
Eval(xv[0],0,0);
7298 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
7306 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)",
xmax);
7314 }
else if (
xmin < 0) {
7328 if (allchan) factor /= allchan;
7329 if (factor == 0) factor = 1;
7340 Error(where,
"Cannot set Y axis to log scale");
7379 Double_t wxyz[8][3] = { {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7380 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1} };
7381 Int_t iface[6][4] = { {0,3,2,1}, {4,5,6,7},
7382 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7} };
7402 Error(
"PaintH3",
"no TView in current pad");
7409 view->
SetView(phideg, thedeg, psideg, irep);
7411 Int_t backcolor =
gPad->GetFrameFillColor();
7427 Int_t incrx = (tnorm[ 8] < 0.) ? -1 : +1;
7428 Int_t incry = (tnorm[ 9] < 0.) ? -1 : +1;
7429 Int_t incrz = (tnorm[10] < 0.) ? -1 : +1;
7444 fH->TAttFill::Modify();
7445 fH->TAttLine::Modify();
7454 Double_t pmin[3], pmax[3], sxyz[8][3];
7455 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7458 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7461 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7471 if (w < wmin)
continue;
7472 if (w > wmax) w = wmax;
7474 if (scale == 0)
continue;
7475 for (
Int_t i=0; i<3; ++i) {
7478 for (
Int_t k=0; k<8; ++k) {
7479 sxyz[k][i] = wxyz[k][i]*
d +
c;
7482 for (
Int_t k=0; k<8; ++k) {
7483 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7486 for (
Int_t k=0; k<6; ++k) {
7487 for (
Int_t i=0; i<4; ++i) {
7488 Int_t iv = iface[k][i];
7492 x[4] =
x[0] ;
y[4] =
y[0];
7494 x[5] =
x[2] ;
y[5] =
y[2];
7495 x[6] =
x[3] ;
y[6] =
y[3];
7496 x[7] =
x[1] ;
y[7] =
y[1];
7502 if (z <= 0.)
continue;
7504 theColor = ncolors*((w-wmin)/(wmax-wmin)) -1;
7507 if (k == 3 || k == 5) {
7509 }
else if (k == 0 || k == 1) {
7515 fH->TAttFill::Modify();
7516 gPad->PaintFillArea(4,
x,
y);
7517 if (iopt != 3)
gPad->PaintPolyLine(
n,
x,
y);
7545 fH->TAttFill::Modify();
7555 {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7556 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1}
7558 Int_t iface[6][4] = {
7559 {0,3,2,1}, {4,5,6,7},
7560 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}
7564 {0,-1,0}, {1,0,0}, {0,1,0}, {-1,0,0}
7585 Error(
"PaintH3",
"no TView in current pad");
7592 view->
SetView(phideg, thedeg, psideg, irep);
7594 Int_t backcolor =
gPad->GetFrameFillColor();
7609 Int_t incrx = (tnorm[ 8] < 0.) ? +1 : -1;
7610 Int_t incry = (tnorm[ 9] < 0.) ? +1 : -1;
7611 Int_t incrz = (tnorm[10] < 0.) ? +1 : -1;
7620 fH->TAttLine::Modify();
7623 const Int_t NTMAX = 100;
7628 Double_t pmin[3], pmax[3], sxyz[8][3], pp[4][2];
7629 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7632 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7635 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7644 if (w < wmin)
continue;
7645 if (w > wmax) w = wmax;
7647 if (scale == 0)
continue;
7648 for (
Int_t i=0; i<3; ++i) {
7651 for (
Int_t k=0; k<8; ++k) {
7652 sxyz[k][i] = wxyz[k][i]*
d +
c;
7655 for (
Int_t k=0; k<8; ++k) {
7656 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7658 for (
Int_t k=0; k<6; ++k) {
7660 view->
FindNormal(normal[k][0], normal[k][1], normal[k][2], zn);
7661 if (zn <= 0)
continue;
7662 for (
Int_t i=0; i<4; ++i) {
7663 Int_t ip = iface[k][i];
7664 pp[i][0] = sxyz[ip][0];
7665 pp[i][1] = sxyz[ip][1];
7667 for (
Int_t i=0; i<4; ++i) {
7669 Int_t i2 = (i == 3) ? 0 : i + 1;
7672 Double_t xdel = pp[i2][0] - pp[i1][0];
7673 Double_t ydel = pp[i2][1] - pp[i1][1];
7675 for (
Int_t it = 0; it < nt; ++it) {
7676 x[0] = pp[i1][0] + xdel*
tt[it][0];
7677 y[0] = pp[i1][1] + ydel*
tt[it][0];
7678 x[1] = pp[i1][0] + xdel*
tt[it][1];
7679 y[1] = pp[i1][1] + ydel*
tt[it][1];
7680 gPad->PaintPolyLine(2,
x,
y);
7688 Double_t xdel = pp[i2][0] - pp[i1][0];
7689 Double_t ydel = pp[i2][1] - pp[i1][1];
7691 for (
Int_t it = 0; it < nt; ++it) {
7692 x[0] = pp[i1][0] + xdel*
tt[it][0];
7693 y[0] = pp[i1][1] + ydel*
tt[it][0];
7694 x[1] = pp[i1][0] + xdel*
tt[it][1];
7695 y[1] = pp[i1][1] + ydel*
tt[it][1];
7696 gPad->PaintPolyLine(2,
x,
y);
7701 xdel = pp[i2][0] - pp[i1][0];
7702 ydel = pp[i2][1] - pp[i1][1];
7703 for (
Int_t it = 0; it < nt; ++it) {
7704 x[0] = pp[i1][0] + xdel*
tt[it][0];
7705 y[0] = pp[i1][1] + ydel*
tt[it][0];
7706 x[1] = pp[i1][0] + xdel*
tt[it][1];
7707 y[1] = pp[i1][1] + ydel*
tt[it][1];
7708 gPad->PaintPolyLine(2,
x,
y);
7750 Int_t ic2 = ic1+nbcol;
7751 Int_t ic3 = ic2+nbcol;
7786 Error(
"PaintH3Iso",
"no TView in current pad");
7795 view->
SetView(phideg, thedeg, psideg, irep);
7797 Int_t backcolor =
gPad->GetFrameFillColor();
7813 for (
Int_t col=0;col<nbcol;col++) {
7814 acol =
gROOT->GetColor(col+icol1);
7831 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
7870 if (deltaz == 0) deltaz = 1;
7918 Color_t colormain = -1, colordark = -1;
7929 drawShadowsInLego1 =
kFALSE;
7959 for (
Int_t id=0;
id<=nids;
id++) {
7962 if (colormain == 1) colormain = 17;
7964 else colordark = colormain;
7977 Error(
"PaintLego",
"no TView in current pad");
7984 view->
SetView(phideg, thedeg, psideg, irep);
7992 fLego->TAttFill::Modify();
7994 Int_t backcolor =
gPad->GetFrameFillColor();
8000 fLego->TAttFill::Modify();
8080 Int_t ndivx, ndivy, ndivz, i;
8081 Double_t x1[3],
x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
8082 static char chopax[8], chopay[8], chopaz[8];
8083 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
8088 Error(
"PaintLegoAxis",
"no TView in current pad");
8113 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
8114 for (i = 1; i <= 8; ++i) {
8115 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
8116 r[i*3 - 2] = av[i*3 - 2]*sina;
8117 r[i*3 - 1] = av[i*3 - 1];
8131 if (!rmin || !rmax)
return;
8134 if (
x1[0] >
x2[0]) strlcpy(chopax,
"SDH=+",8);
8135 else strlcpy(chopax,
"SDH=-",8);
8136 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
8137 else strlcpy(chopay,
"SDH=-",8);
8138 if (z2[1] > z1[1]) strlcpy(chopaz,
"SDH=+",8);
8139 else strlcpy(chopaz,
"SDH=-",8);
8153 strlcat(chopax,
"N",8);
8157 strlcat(chopay,
"N",8);
8161 strlcat(chopaz,
"N",8);
8183 strlcat(chopax,
"t",8);
8201 strlcpy(chopay,
"V=+UN",8);
8216 strlcat(chopay,
"t",8);
8224 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
8239 strlcat(chopaz,
"t",8);
8247 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
8265 delete palette; palette = 0;
8270 delete palette; palette = 0;
8298 fH->TAttMarker::Modify();
8301 Double_t dz, z, xk,xstep, yk, ystep;
8306 if (zmin == 0 && zmax == 0)
return;
8317 if (zmin == 0 && zmax == 0)
return;
8320 if (ncells > 10000) scale /= 5;
8324 if (dz >=
kNMAX || zmax < 1) {
8325 scale = (
kNMAX-1)/dz;
8326 if (ncells > 10000) scale /= 5;
8333 if (zmin >= 0) zmin = 0;
8334 else zmin -= yMARGIN*(zmax-zmin);
8336 Double_t dzmin = yMARGIN*(zmax-zmin);
8337 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
8346 strlcpy(optscat,opt.
Data(),100);
8347 char *oscat = strstr(optscat,
"scat=");
8348 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
8349 sscanf(oscat+5,
"%lg",&scale);
8363 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
8365 if (z < zmin) z = zmin;
8366 if (z > zmax) z = zmax;
8372 if (z <= 0)
continue;
8376 for (
Int_t loop=0; loop<k; loop++) {
8377 if (k+marker >=
kNMAX) {
8381 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
8382 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
8391 if (
fXbuf[marker] <
gPad->GetUxmin())
break;
8392 if (
fYbuf[marker] <
gPad->GetUymin())
break;
8393 if (
fXbuf[marker] >
gPad->GetUxmax())
break;
8394 if (
fYbuf[marker] >
gPad->GetUymax())
break;
8422 R__TMatrixFBase->
Draw(option);
8428 R__TMatrixDBase->
Draw(option);
8434 R__TVectorF->
Draw(option);
8440 R__TVectorD->
Draw(option);
8457 while ((obj = next())) {
8464 if (stats && dostat) {
8470 if (!dofit) fit = 0;
8471 if (dofit == 1) dofit = 111;
8472 if (dostat == 1) dostat = 1111;
8473 Int_t print_name = dostat%10;
8474 Int_t print_entries = (dostat/10)%10;
8475 Int_t print_mean = (dostat/100)%10;
8476 Int_t print_stddev = (dostat/1000)%10;
8477 Int_t print_under = (dostat/10000)%10;
8478 Int_t print_over = (dostat/100000)%10;
8479 Int_t print_integral= (dostat/1000000)%10;
8480 Int_t print_skew = (dostat/10000000)%10;
8481 Int_t print_kurt = (dostat/100000000)%10;
8482 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8483 print_under + print_over + print_integral +
8484 print_skew + print_kurt;
8485 Int_t print_fval = dofit%10;
8486 Int_t print_ferrors = (dofit/10)%10;
8487 Int_t print_fchi2 = (dofit/100)%10;
8488 Int_t print_fprob = (dofit/1000)%10;
8489 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8492 else nlinesf += fit->
GetNpar();
8498 if (!dostat && !fit) {
8537 if (print_entries) {
8543 if (print_mean == 1) {
8553 if (print_mean == 1) {
8565 if (print_stddev == 1) {
8575 if (print_stddev == 1) {
8596 if (print_integral) {
8597 if (print_integral == 1) {
8607 if (print_skew == 1) {
8618 if (print_kurt == 1) {
8634 if (print_fchi2) stats->
AddText(
tt.Data());
8640 if (print_fval || print_ferrors) {
8644 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8645 if (print_ferrors) {
8677 while ((obj = next())) {
8683 if (stats && dostat) {
8689 if (dostat == 1) dostat = 1111;
8690 Int_t print_name = dostat%10;
8691 Int_t print_entries = (dostat/10)%10;
8692 Int_t print_mean = (dostat/100)%10;
8693 Int_t print_stddev = (dostat/1000)%10;
8694 Int_t print_under = (dostat/10000)%10;
8695 Int_t print_over = (dostat/100000)%10;
8696 Int_t print_integral= (dostat/1000000)%10;
8697 Int_t print_skew = (dostat/10000000)%10;
8698 Int_t print_kurt = (dostat/100000000)%10;
8699 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8700 if (print_under || print_over) nlines += 3;
8705 if (!dostat && !fit) {
8745 if (print_entries) {
8751 if (print_mean == 1) {
8770 if (print_stddev == 1) {
8788 if (print_integral) {
8794 if (print_skew == 1) {
8813 if (print_kurt == 1) {
8831 if (print_under || print_over) {
8842 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8843 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8844 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8845 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8846 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8847 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8848 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8849 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8850 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8869 tt.Form(
"%-8s = %5.4g #pm %5.4g ",fit->
GetParName(ipar)
8894 while ((obj = next())) {
8900 if (stats && dostat) {
8906 if (dostat == 1) dostat = 1111;
8907 Int_t print_name = dostat%10;
8908 Int_t print_entries = (dostat/10)%10;
8909 Int_t print_mean = (dostat/100)%10;
8910 Int_t print_stddev = (dostat/1000)%10;
8911 Int_t print_under = (dostat/10000)%10;
8912 Int_t print_over = (dostat/100000)%10;
8913 Int_t print_integral= (dostat/1000000)%10;
8914 Int_t print_skew = (dostat/10000000)%10;
8915 Int_t print_kurt = (dostat/100000000)%10;
8916 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
8917 if (print_under || print_over) nlines += 3;
8922 if (!dostat && !fit) {
8960 if (print_entries) {
8966 if (print_mean == 1) {
8992 if (print_stddev == 1) {
9017 if (print_integral) {
9022 if (print_skew == 1) {
9048 if (print_kurt == 1) {
9073 if (print_under || print_over) {
9084 tt.Form(
"%-8s = %5.4g #pm %5.4g ",fit->
GetParName(ipar)
9121 if (deltaz == 0) deltaz = 1;
9192 Error(
"PaintSurface",
"no TView in current pad");
9199 view->
SetView(phideg, thedeg, psideg, irep);
9209 fLego->TAttFill::Modify();
9211 Int_t backcolor =
gPad->GetFrameFillColor();
9217 fLego->TAttFill::Modify();
9255 fmax = fmin + (yligh1+0.1)*(qd+qs);
9260 if (!colref)
return;
9265 for (
Int_t col=0;col<nbcol;col++) {
9266 acol =
gROOT->GetColor(col+icol1);
9357 if (!dt && !dtOld)
return;
9370 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
9375 if (!rmin || !rmax)
return;
9394 Error(
"PaintTriangles",
"no TView in current pad");
9401 view->
SetView(phideg, thedeg, psideg, irep);
9406 fLego->TAttFill::Modify();
9407 Int_t backcolor =
gPad->GetFrameFillColor();
9412 fLego->TAttFill::Modify();
9454 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
9461 for (i = 0; i < ndivz; ++i) {
9468 delete [] colorlevel;
9538 while ((obj = next())) {
9546 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9566 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9583 while ((obj=next())) {
9585 z =
b->GetContent();
9587 poly =
b->GetPolygon();
9592 g->TAttLine::Modify();
9593 g->TAttMarker::Modify();
9594 g->TAttFill::Modify();
9596 Int_t fs =
g->GetFillStyle();
9599 g->SetFillColor(
g->GetLineColor());
9601 g->SetFillStyle(fs);
9602 g->SetFillColor(
fc);
9604 if (
fill)
g->Paint(
"F");
9605 if (
mark)
g->Paint(
"P");
9611 TList *gl =
mg->GetListOfGraphs();
9615 while ((
g = (
TGraph*) nextg())) {
9616 g->TAttLine::Modify();
9617 g->TAttMarker::Modify();
9618 g->TAttFill::Modify();
9620 Int_t fs =
g->GetFillStyle();
9623 g->SetFillColor(
g->GetLineColor());
9625 g->SetFillStyle(fs);
9626 g->SetFillColor(
fc);
9628 if (
fill)
g->Paint(
"F");
9629 if (
mark)
g->Paint(
"P");
9642 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9645 Int_t ncolors, color, theColor;
9676 while ((obj=next())) {
9678 poly =
b->GetPolygon();
9680 z =
b->GetContent();
9686 if (z < zmin)
continue;
9691 if (z < zc)
continue;
9693 for (
Int_t k=0; k<ndiv; k++) {
9702 color =
Int_t(0.01+(z-zmin)*scale);
9705 if (theColor > ncolors-1) theColor = ncolors-1;
9711 g->TAttFill::Modify();
9718 TList *gl =
mg->GetListOfGraphs();
9722 while ((
g = (
TGraph*) nextg())) {
9724 g->TAttFill::Modify();
9739 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9742 Int_t k, loop, marker=0;
9743 Double_t z, xk,xstep, yk, ystep, xp, yp;
9757 scale = (
kNMAX-1)/dz;
9771 while ((obj=next())) {
9774 if (
a>maxarea) maxarea =
a;
9779 while ((obj=next())) {
9781 poly =
b->GetPolygon();
9782 z =
b->GetContent();
9783 if (z < zmin) z = zmin;
9784 if (z > zmax) z = zmax;
9790 k =
Int_t((z*scale)*(
b->GetArea()/maxarea));
9793 xstep =
b->GetXMax()-xk;
9794 ystep =
b->GetYMax()-yk;
9799 if (k <= 0 || z <= 0)
continue;
9802 if (k+marker >=
kNMAX) {
9806 xp = (random.
Rndm()*xstep) + xk;
9807 yp = (random.
Rndm()*ystep) + yk;
9808 if (
g->IsInside(xp,yp)) {
9821 TList *gl =
mg->GetListOfGraphs();
9823 if (k <= 0 || z <= 0)
continue;
9826 if (k+marker >=
kNMAX) {
9830 xp = (random.
Rndm()*xstep) + xk;
9831 yp = (random.
Rndm()*ystep) + yk;
9832 if (
mg->IsInside(xp,yp)) {
9865 text.TAttText::Modify();
9872 while ((obj=next())) {
9874 p =
b->GetPolygon();
9875 x = (
b->GetXMin()+
b->GetXMax())/2;
9880 y = (
b->GetYMin()+
b->GetYMax())/2;
9885 z =
b->GetContent();
9889 tf.
Form(
"#splitline{%s%s}{#pm %s%s}",
9932 text.TAttText::Modify();
9946 if (yt == 0.)
continue;
9956 if (
y >=
gPad->GetY2())
continue;
9957 if (y <= gPad->GetY1())
continue;
9966 text.TAttText::Modify();
9985 tf.
Form(
"#splitline{%s%s}{#pm %s%s}",
10023 Error(
"PaintTF3",
"no TView in current pad");
10029 view->
SetView(phideg, thedeg, psideg, irep);
10083 TIter next(
gPad->GetListOfPrimitives());
10084 while ((obj = next())) {
10087 if (strcmp(title->
GetName(),
"title")) {title = 0;
continue;}
10091 if (title)
delete title;
10106 if (ht <= 0) ht = 0.05;
10127 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
10129 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
10133 if (talh == 2) xpos = xpos-wt/2.;
10134 if (talh == 3) xpos = xpos-wt;
10135 if (talv == 2) ypos = ypos+ht/2.;
10136 if (talv == 1) ypos = ypos+ht;
10154 if(!
gPad->IsEditable())
delete ptitle;
10163 if (!strcmp(mess,
"SetF3")) {
10165 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
10167 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
10269 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
10277 if (
xmin > xmin_aid)
xmin = xmin_aid;
10278 if (
ymin > ymin_aid)
ymin = ymin_aid;
10279 if (
xmax < xmax_aid)
xmax = xmax_aid;
10280 if (
ymax < ymax_aid)
ymax = ymax_aid;
10285 if (
xmin >xmin_aid)
xmin = xmin_aid;
10286 if (
xmax <xmax_aid)
xmax = xmax_aid;
10291 if (
ymin >ymin_aid)
ymin = ymin_aid;
10292 if (
ymax <ymax_aid)
ymax = ymax_aid;
10308 if (
xmin > xmin_aid)
xmin = xmin_aid;
10309 if (
ymin > ymin_aid)
ymin = ymin_aid;
10310 if (
xmax < xmax_aid)
xmax = xmax_aid;
10311 if (
ymax < ymax_aid)
ymax = ymax_aid;
10315 if (
xmin >xmin_aid)
xmin = xmin_aid;
10316 if (
xmax <xmax_aid)
xmax = xmax_aid;
10321 if (
ymin >ymin_aid)
ymin = ymin_aid;
10322 if (
ymax <ymax_aid)
ymax = ymax_aid;
10330 if (
xmin > xmin_aid)
xmin = xmin_aid;
10331 if (
ymin > ymin_aid)
ymin = ymin_aid;
10332 if (
xmax < xmax_aid)
xmax = xmax_aid;
10333 if (
ymax < ymax_aid)
ymax = ymax_aid;
10337 if (
xmin >xmin_aid)
xmin = xmin_aid;
10338 if (
xmax <xmax_aid)
xmax = xmax_aid;
10343 if (
ymin >ymin_aid)
ymin = ymin_aid;
10344 if (
ymax <ymax_aid)
ymax = ymax_aid;
10360 ymin - dyr*
gPad->GetBottomMargin(),
10361 xmax + dxr*
gPad->GetRightMargin(),
10372 if (
h == 0)
return;
10386 static const char *where =
"TableInit";
10414 Error(where,
"cannot set X axis to log scale");
10443 Error(where,
"cannot set Y axis to log scale");
10479 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10485 if (zmin >= zmax) {
10487 if (zmax > 0) zmin = 0.001*zmax;
10489 if (!
Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10499 if (allchan) factor /= allchan;
10500 if (factor == 0) factor = 1;
10502 zmax = factor*zmax;
10503 zmin = factor*zmin;
10529 zmax += yMARGIN*(zmax-zmin);
10537 if (zmin >= 0) zmin = 0;
10538 else zmin -= yMARGIN*(zmax-zmin);
10540 Double_t dzmin = yMARGIN*(zmax-zmin);
10541 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10542 else zmin -= dzmin;
10568 tf.
Form(
"%s%s",
"%",
f);
10572 int ie = tv.
Index(
"e");
10573 int iE = tv.
Index(
"E");
10574 int id = tv.
Index(
".");
10578 if (ie >= 0 || iE >= 0) {
10579 if (tv.
Index(
"+") >= 0) {
10581 ef.
Form(
"%s.1f",
"%");
10584 ef.
Form(
"%s.%de",
"%",ie-
id-1);
10586 ef.
Form(
"%s.%dE",
"%",iE-
id-1);
10591 ef.
Form(
"%s.%de",
"%",ie-
id-1);
10593 ef.
Form(
"%s.%dE",
"%",iE-
id-1);
10598 }
else if (
id < 0) {
10599 ef.
Form(
"%s.1f",
"%");
10619 Int_t projection = 0;
10620 if (opt.
Contains(
"x")) projection = 1;
10621 if (opt.
Contains(
"y")) projection = 2;
10622 if (opt.
Contains(
"z")) projection = 3;
10623 if (opt.
Contains(
"xy")) projection = 4;
10624 if (opt.
Contains(
"yx")) projection = 5;
10625 if (opt.
Contains(
"xz")) projection = 6;
10626 if (opt.
Contains(
"zx")) projection = 7;
10627 if (opt.
Contains(
"yz")) projection = 8;
10628 if (opt.
Contains(
"zy")) projection = 9;
10632 gROOT->MakeDefCanvas();
10644 gPad->SetDoubleBuffer(0);
10648 static int pyold1 = 0;
10649 static int pyold2 = 0;
10650 float uxmin =
gPad->GetUxmin();
10651 float uxmax =
gPad->GetUxmax();
10652 int pxmin =
gPad->XtoAbsPixel(uxmin);
10653 int pxmax =
gPad->XtoAbsPixel(uxmax);
10684 TH1D *hp = ((
TH2*)
fH)->ProjectionX(prjName, biny1, biny2);
10689 if (biny1 == biny2) {
10697 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10709 hp->
SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10727 gPad->SetDoubleBuffer(0);
10731 static int pxold1 = 0;
10732 static int pxold2 = 0;
10733 float uymin =
gPad->GetUymin();
10734 float uymax =
gPad->GetUymax();
10735 int pymin =
gPad->YtoAbsPixel(uymin);
10736 int pymax =
gPad->YtoAbsPixel(uymax);
10767 TH1D *hp = ((
TH2*)
fH)->ProjectionY(prjName, binx1, binx2);
10772 if (binx1 == binx2) {
10780 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10792 hp->
SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10820 gPad->SetDoubleBuffer(0);
10836 static TPoint endface1[5];
10837 static TPoint endface2[5];
10846 int pxmin =
gPad->XtoAbsPixel(uxmin);
10847 int pxmax =
gPad->XtoAbsPixel(uxmax);
10848 if (pxmin==pxmax)
return;
10849 int pymin =
gPad->YtoAbsPixel(uymin);
10850 int pymax =
gPad->YtoAbsPixel(uymax);
10851 if (pymin==pymax)
return;
10852 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10853 Double_t cy = (pymax-pymin)/(uymax-uymin);
10868 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10873 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10876 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10877 if (nbins>1 && line1[0].GetX()) {
10888 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10889 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10892 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10893 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10900 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10901 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10904 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10905 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10911 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10912 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10915 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10916 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10922 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10923 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10926 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10927 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10929 endface1[0].
SetX(line1[0].GetX());
10930 endface1[0].
SetY(line1[0].GetY());
10931 endface1[1].
SetX(line2[0].GetX());
10932 endface1[1].
SetY(line2[0].GetY());
10933 endface1[2].
SetX(line3[0].GetX());
10934 endface1[2].
SetY(line3[0].GetY());
10935 endface1[3].
SetX(line4[0].GetX());
10936 endface1[3].
SetY(line4[0].GetY());
10937 endface1[4].
SetX(line1[0].GetX());
10938 endface1[4].
SetY(line1[0].GetY());
10940 endface2[0].
SetX(line1[1].GetX());
10941 endface2[0].
SetY(line1[1].GetY());
10942 endface2[1].
SetX(line2[1].GetX());
10943 endface2[1].
SetY(line2[1].GetY());
10944 endface2[2].
SetX(line3[1].GetX());
10945 endface2[2].
SetY(line3[1].GetY());
10946 endface2[3].
SetX(line4[1].GetX());
10947 endface2[3].
SetY(line4[1].GetY());
10948 endface2[4].
SetX(line1[1].GetX());
10949 endface2[4].
SetY(line1[1].GetY());
10983 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10988 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10991 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10992 if (nbins>1 && line1[0].GetX()) {
11003 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11004 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11007 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11008 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11015 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11016 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11019 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11020 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11026 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11027 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11030 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11031 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11037 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11038 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11041 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11042 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11044 endface1[0].
SetX(line1[0].GetX());
11045 endface1[0].
SetY(line1[0].GetY());
11046 endface1[1].
SetX(line2[0].GetX());
11047 endface1[1].
SetY(line2[0].GetY());
11048 endface1[2].
SetX(line3[0].GetX());
11049 endface1[2].
SetY(line3[0].GetY());
11050 endface1[3].
SetX(line4[0].GetX());
11051 endface1[3].
SetY(line4[0].GetY());
11052 endface1[4].
SetX(line1[0].GetX());
11053 endface1[4].
SetY(line1[0].GetY());
11055 endface2[0].
SetX(line1[1].GetX());
11056 endface2[0].
SetY(line1[1].GetY());
11057 endface2[1].
SetX(line2[1].GetX());
11058 endface2[1].
SetY(line2[1].GetY());
11059 endface2[2].
SetX(line3[1].GetX());
11060 endface2[2].
SetY(line3[1].GetY());
11061 endface2[3].
SetX(line4[1].GetX());
11062 endface2[3].
SetY(line4[1].GetY());
11063 endface2[4].
SetX(line1[1].GetX());
11064 endface2[4].
SetY(line1[1].GetY());
11097 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
11102 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
11105 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
11106 if (nbins>1 && line1[0].GetX()) {
11117 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11118 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11121 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11122 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11129 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11130 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11133 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11134 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11140 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11141 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11144 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11145 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11151 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11152 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11155 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11156 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11158 endface1[0].
SetX(line1[0].GetX());
11159 endface1[0].
SetY(line1[0].GetY());
11160 endface1[1].
SetX(line2[0].GetX());
11161 endface1[1].
SetY(line2[0].GetY());
11162 endface1[2].
SetX(line3[0].GetX());
11163 endface1[2].
SetY(line3[0].GetY());
11164 endface1[3].
SetX(line4[0].GetX());
11165 endface1[3].
SetY(line4[0].GetY());
11166 endface1[4].
SetX(line1[0].GetX());
11167 endface1[4].
SetY(line1[0].GetY());
11169 endface2[0].
SetX(line1[1].GetX());
11170 endface2[0].
SetY(line1[1].GetY());
11171 endface2[1].
SetX(line2[1].GetX());
11172 endface2[1].
SetY(line2[1].GetY());
11173 endface2[2].
SetX(line3[1].GetX());
11174 endface2[2].
SetY(line3[1].GetY());
11175 endface2[3].
SetX(line4[1].GetX());
11176 endface2[3].
SetY(line4[1].GetY());
11177 endface2[4].
SetX(line1[1].GetX());
11178 endface2[4].
SetY(line1[1].GetY());
11214 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11215 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11220 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11221 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11222 rect1[4].
SetX(rect1[0].GetX());
11223 rect1[4].
SetY(rect1[0].GetY());
11226 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11227 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11230 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11231 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11234 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11235 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11242 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11243 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11244 rect2[4].
SetX(rect2[0].GetX());
11245 rect2[4].
SetY(rect2[0].GetY());
11248 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11249 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11252 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11253 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11256 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11257 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11285 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11286 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11291 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11292 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11293 rect1[4].
SetX(rect1[0].GetX());
11294 rect1[4].
SetY(rect1[0].GetY());
11297 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11298 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11301 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11302 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11305 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11306 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11313 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11314 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11315 rect2[4].
SetX(rect2[0].GetX());
11316 rect2[4].
SetY(rect2[0].GetY());
11319 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11320 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11323 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11324 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11327 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11328 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11355 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11356 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11361 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11362 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11363 rect1[4].
SetX(rect1[0].GetX());
11364 rect1[4].
SetY(rect1[0].GetY());
11367 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11368 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11371 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11372 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11375 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11376 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11383 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11384 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11385 rect2[4].
SetX(rect2[0].GetX());
11386 rect2[4].
SetY(rect2[0].GetY());
11389 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11390 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11393 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11394 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11397 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11398 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11425 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11426 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11431 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11432 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11433 rect1[4].
SetX(rect1[0].GetX());
11434 rect1[4].
SetY(rect1[0].GetY());
11437 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11438 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11441 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11442 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11445 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11446 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11453 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11454 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11455 rect2[4].
SetX(rect2[0].GetX());
11456 rect2[4].
SetY(rect2[0].GetY());
11459 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11460 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11463 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11464 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11467 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11468 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11495 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11496 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11501 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11502 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11503 rect1[4].
SetX(rect1[0].GetX());
11504 rect1[4].
SetY(rect1[0].GetY());
11507 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11508 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11511 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11512 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11515 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11516 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11523 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11524 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11525 rect2[4].
SetX(rect2[0].GetX());
11526 rect2[4].
SetY(rect2[0].GetY());
11529 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11530 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11533 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11534 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11537 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11538 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11565 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11566 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11571 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11572 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11573 rect1[4].
SetX(rect1[0].GetX());
11574 rect1[4].
SetY(rect1[0].GetY());
11577 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11578 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11581 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11582 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11585 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11586 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11593 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11594 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11595 rect2[4].
SetX(rect2[0].GetX());
11596 rect2[4].
SetY(rect2[0].GetY());
11599 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11600 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11603 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11604 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11607 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11608 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 Graph is a graphics object made of two arrays X and Y with npoints each.
@ kClipFrame
clip to the frame boundary
1-D histogram with a double per channel (see TH1 documentation)}
1-D histogram with a float per channel (see TH1 documentation)}
virtual void SetTitle(const char *title)
See GetStatOverflows for more information.
virtual EBinErrorOpt GetBinErrorOption() const
virtual Float_t GetBarWidth() const
virtual Double_t GetMinimumStored() const
virtual Float_t GetBarOffset() const
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
virtual Int_t GetNbinsY() const
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Int_t GetNbinsZ() const
virtual Double_t GetNormFactor() const
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
virtual Double_t GetSkewness(Int_t axis=1) const
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
virtual void SetXTitle(const char *title)
virtual Int_t GetDimension() const
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
@ kNoTitle
don't draw the histogram title
@ kUserContour
user specified contour levels
@ kNoStats
don't draw stats box
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual Int_t GetNbinsX() const
virtual void SetMaximum(Double_t maximum=-1111)
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
virtual void SetMinimum(Double_t minimum=-1111)
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual Double_t GetEntries() const
Return the current number of entries.
virtual void SetZTitle(const char *title)
TList * GetListOfFunctions() const
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
virtual Double_t GetMaximumStored() const
virtual void GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
@ kNormal
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
const Double_t * GetBuffer() const
virtual Bool_t IsHighlight() const
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual void SetYTitle(const char *title)
virtual Int_t GetSumw2N() const
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual Double_t GetKurtosis(Int_t axis=1) const
2-D histogram with a double per channel (see TH1 documentation)}
2-D histogram with a float per channel (see TH1 documentation)}
Helper class to represent a bin in the TH2Poly histogram.
2D Histogram with Polygonal Bins
Service class for 2-Dim histogram classes.
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along Y.
TH1D * ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along X.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
The 3-D histogram classes derived from the 1-D histogram classes.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual TH1 * Project3D(Option_t *option="x") const
Project a 3-d histogram into 1 or 2-d histograms depending on the option parameter,...
The histogram painter class.
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Bool_t IsInside(Int_t x, Int_t y)
Return kTRUE if the cell ix, iy is inside one of the graphical cuts.
virtual void DrawPanel()
Display a panel with all histogram drawing options.
virtual void PaintErrors(Option_t *option)
Draw 1D histograms error bars.
virtual void SetHistogram(TH1 *h)
Set current histogram to h
virtual void PaintTF3()
Control function to draw a 3D implicit functions.
virtual void PaintStat(Int_t dostat, TF1 *fit)
Draw the statistics box for 1D and profile histograms.
virtual Int_t TableInit()
Initialize various options to draw 2D histograms.
virtual void PaintTH2PolyScatterPlot(Option_t *option)
Control function to draw a TH2Poly as a scatter plot.
static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual void PaintText(Option_t *option)
Control function to draw a 1D/2D histograms with the bin values.
virtual void PaintAxis(Bool_t drawGridOnly=kFALSE)
Draw axis (2D case) of an histogram.
virtual void PaintColorLevelsFast(Option_t *option)
[Rendering scheme for the COL2 and COLZ2 options] (#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 ImplicitFunction(Double_t *rmin, Double_t *rmax, Int_t nx, Int_t ny, Int_t nz, const char *chopt)
Draw implicit function FUN(X,Y,Z) = 0 in cartesian coordinates using hidden surface removal algorithm...
void SetLegoFunction(LegoFunc_t pointer)
Store pointer to current lego function.
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in cylindrical coordinates.
void SurfaceFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Service function for Surfaces.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
void FillPolygonBorder(Int_t nn, Double_t *xy)
Fill a polygon including border ("RASTER SCREEN")
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots spheric coordinates.
void SurfaceCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw surface in cartesian coordinate system.
static void SetF3ClippingBoxOff()
Static function Set the implicit function clipping box "off".
void SurfaceProperty(Double_t qqa, Double_t qqd, Double_t qqs, Int_t nnqs, Int_t &irep)
Set surface property coefficients.
void InitMoveScreen(Double_t xmin, Double_t xmax)
Initialize "MOVING SCREEN" method.
void FindVisibleLine(Double_t *p1, Double_t *p2, Int_t ntmax, Int_t &nt, Double_t *t)
Find visible part of a line ("RASTER SCREEN")
void LegoCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw stack of lego-plots in cartesian coordinates.
void DrawFaceMode1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 1st variant (2 colors: 1st for external surface, 2nd for internal)
void LightSource(Int_t nl, Double_t yl, Double_t xscr, Double_t yscr, Double_t zscr, Int_t &irep)
Set light source.
void GouraudFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Find part of surface with luminosity in the corners.
void DrawFaceMove1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "MOVING SCREEN" algorithm (draw face with level lines)
void SetSurfaceFunction(SurfaceFunc_t pointer)
Store pointer to current surface function.
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in polar coordinates.
static void SetF3ClippingBoxOn(Double_t xclip, Double_t yclip, Double_t zclip)
Static function Set the implicit function clipping box "on" and define the clipping box.
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in spheric coordinates.
void BackBox(Double_t ang)
Draw back surfaces of surrounding box.
void ColorFunction(Int_t nl, Double_t *fl, Int_t *icl, Int_t &irep)
Set 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)
static void SetF3(TF3 *f3)
Static function Store pointer to current implicit function.
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in polar coordinates.
void SetEdgeAtt(Color_t color=1, Style_t style=1, Width_t width=1, Int_t n=0)
void SetMesh(Int_t mesh=1)
void InitRaster(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Int_t nx, Int_t ny)
Initialize hidden lines removal algorithm (RASTER SCREEN)
void DefineGridLevels(Int_t ndivz)
Define the grid levels drawn in the background of surface and lego plots.
void LegoFunction(Int_t ia, Int_t ib, Int_t &nv, Double_t *ab, Double_t *vv, Double_t *t)
Service function for Legos.
void DrawFaceMove2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "MOVING SCREEN" algorithm (draw face for stacked lego plot)
void SetColorMain(Color_t color, Int_t n=0)
Store color for stack number n.
void Spectrum(Int_t nl, Double_t fmin, Double_t fmax, Int_t ic, Int_t idc, Int_t &irep)
Set Spectrum.
void DrawFaceRaster1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "RASTER SCREEN" algorithm (draw face with level lines)
void DrawFaceMode3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 3rd option (draw face for stacked lego plot)
void FrontBox(Double_t ang)
Draw front surfaces of surrounding box & axes.
void SetColorDark(Color_t color, Int_t n=0)
Store dark color for stack number n.
void DrawFaceMode2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 2nd option (fill in correspondence with function levels)
The palette painting class.
void SetHistogram(TH1 *h)
virtual void Paint(Option_t *option="")
Paint the palette.
The histogram statistics painter class.
Int_t GetOptStat() const
Return the stat option.
virtual void SetStatFormat(const char *format="6.4g")
Change (i.e. set) the format for printing statistics.
void SetOptStat(Int_t stat=1)
Set the stat option.
virtual 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)
double beta(double x, double y)
Calculates the beta function.
double dist(Rotation3D const &r1, Rotation3D const &r2)
RooCmdArg Bins(Int_t nbin)
static constexpr double 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