2770 fGraph2DPainter = 0;
2771 fShowProjection = 0;
2778 gStringEntries =
gEnv->
GetValue(
"Hist.Stats.Entries",
"Entries");
2779 gStringMean =
gEnv->
GetValue(
"Hist.Stats.Mean",
"Mean");
2780 gStringMeanX =
gEnv->
GetValue(
"Hist.Stats.MeanX",
"Mean x");
2781 gStringMeanY =
gEnv->
GetValue(
"Hist.Stats.MeanY",
"Mean y");
2782 gStringMeanZ =
gEnv->
GetValue(
"Hist.Stats.MeanZ",
"Mean z");
2783 gStringStdDev =
gEnv->
GetValue(
"Hist.Stats.StdDev",
"Std Dev");
2784 gStringStdDevX =
gEnv->
GetValue(
"Hist.Stats.StdDevX",
"Std Dev x");
2785 gStringStdDevY =
gEnv->
GetValue(
"Hist.Stats.StdDevY",
"Std Dev y");
2786 gStringStdDevZ =
gEnv->
GetValue(
"Hist.Stats.StdDevZ",
"Std Dev z");
2787 gStringUnderflow =
gEnv->
GetValue(
"Hist.Stats.Underflow",
"Underflow");
2788 gStringOverflow =
gEnv->
GetValue(
"Hist.Stats.Overflow",
"Overflow");
2789 gStringIntegral =
gEnv->
GetValue(
"Hist.Stats.Integral",
"Integral");
2790 gStringIntegralBinWidth =
gEnv->
GetValue(
"Hist.Stats.IntegralBinWidth",
"Integral(w)");
2791 gStringSkewness =
gEnv->
GetValue(
"Hist.Stats.Skewness",
"Skewness");
2792 gStringSkewnessX =
gEnv->
GetValue(
"Hist.Stats.SkewnessX",
"Skewness x");
2793 gStringSkewnessY =
gEnv->
GetValue(
"Hist.Stats.SkewnessY",
"Skewness y");
2794 gStringSkewnessZ =
gEnv->
GetValue(
"Hist.Stats.SkewnessZ",
"Skewness z");
2795 gStringKurtosis =
gEnv->
GetValue(
"Hist.Stats.Kurtosis",
"Kurtosis");
2796 gStringKurtosisX =
gEnv->
GetValue(
"Hist.Stats.KurtosisX",
"Kurtosis x");
2797 gStringKurtosisY =
gEnv->
GetValue(
"Hist.Stats.KurtosisY",
"Kurtosis y");
2798 gStringKurtosisZ =
gEnv->
GetValue(
"Hist.Stats.KurtosisZ",
"Kurtosis z");
2822 const Int_t big = 9999;
2823 const Int_t kMaxDiff = 7;
2834 Int_t curdist = big;
2835 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
2838 if (!PadPointer)
return 0;
2849 if (view && Hoption.
Contour != 14) {
2852 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
2854 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
2856 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
2857 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
2868 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
2877 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
2889 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
2898 if (yxaxis < puymin) yxaxis = puymin;
2899 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
2913 gPad->GetRangeAxis(xmin, ymin, xmax, ymax);
2916 if ((pxu>xmax) || (pxu < xmin) || (pyu>ymax) || (pyu < ymin)) {
2921 if (bin>0) curdist = 1;
2927 if ( px > puxmin + delta2
2928 && px < puxmax - delta2
2929 && py > puymax + delta2
2930 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
2934 if (
gPad->IsVertical()) {
2939 if (binval == 0 && pybin < puymin) pybin = 10000;
2945 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
2947 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
2948 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
2950 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
2951 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
2952 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
2954 if (bin != binsup) {
2956 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
2967 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
2973 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
2975 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
2976 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
2978 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
2979 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
2980 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
2988 while ((f = (
TObject*) next())) {
2992 if (dist < kMaxDiff) {
gPad->SetSelected(f);
return dist;}
3005 Error(
"DrawPanel",
"need to draw histogram first");
3010 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
3025 static Int_t bin, px1, py1, px2, py2, pyold;
3026 static TBox *zoombox;
3030 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3033 if (!
gPad->IsEditable())
return;
3060 if (!opaque)
gVirtualX->SetLineColor(-1);
3061 fH->TAttLine::Modify();
3063 if (opaque && dimension ==2) {
3064 zbx1 =
gPad->AbsPixeltoX(px);
3065 zbx2 =
gPad->AbsPixeltoX(px);
3066 zby1 =
gPad->AbsPixeltoY(py);
3067 zby2 =
gPad->AbsPixeltoY(py);
3070 if (
gPad->GetLogx()) {
3074 if (
gPad->GetLogy()) {
3078 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3095 if (dimension ==1) {
3103 x =
gPad->AbsPixeltoX(px);
3107 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3108 ylow =
gPad->GetUymin();
3109 px1 =
gPad->XtoAbsPixel(xlow);
3110 px2 =
gPad->XtoAbsPixel(xup);
3111 py1 =
gPad->YtoAbsPixel(ylow);
3121 if (dimension ==1) {
3122 if (
gROOT->GetEditHistograms()) {
3131 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3138 if (opaque && dimension ==2) {
3140 zbx2 =
gPad->AbsPixeltoX(px);
3141 zby2 =
gPad->AbsPixeltoY(py);
3144 zoombox->
SetX2(zbx2);
3145 zoombox->
SetY2(zby2);
3155 if (dimension ==2) {
3160 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3165 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3174 if (dimension == 2) {
3179 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3184 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3192 if (dimension ==1) {
3193 if (
gROOT->GetEditHistograms()) {
3194 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3202 if (opaque && dimension ==2) {
3212 if (x1<x2 && y1<y2) {
3221 if (opaque)
gVirtualX->SetLineColor(-1);
3231 event =
gVirtualX->RequestLocator(1, 1, px, py);
3258 if (!dt && !dtOld)
return nullptr;
3263 if (dt) ((THistPainter*)
this)->fGraph2DPainter =
new TGraph2DPainter(dt);
3264 else ((THistPainter*)
this)->fGraph2DPainter =
new TGraph2DPainter(dtOld);
3277 if (!
gPad)
return (
char*)
"";
3278 static char info[200];
3287 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3288 uxmin=
gPad->GetUxmin();
3289 uxmax=
gPad->GetUxmax();
3292 x = xmin +(xmax-
xmin)*(x-uxmin)/(uxmax-uxmin);
3293 uymin=
gPad->GetUymin();
3294 uymax=
gPad->GetUymax();
3297 y = ymin +(ymax-
ymin)*(y-uymin)/(uymax-uymin);
3300 Int_t binx,biny,binmin=0,binx1;
3301 if (
gPad->IsVertical()) {
3303 if (drawOption.
Index(
"same") >= 0) {
3305 TIter next(
gPad->GetListOfPrimitives());
3306 while ((h1 = (
TH1 *)next())) {
3319 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3329 x1 =
gPad->PadtoY(
gPad->AbsPixeltoY(py+1));
3331 if (drawOption.
Index(
"same") >= 0) {
3333 TIter next(
gPad->GetListOfPrimitives());
3334 while ((h1 = (
TH1 *)next())) {
3347 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3360 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, bine=%g, binn=%d)",
3367 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, Sum=%g)",
3374 snprintf(info,200,
"%s (x=%g, y=%g, bin=%d, binc=%g)",
3381 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3386 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g bine=%g)",
3393 snprintf(info,200,
"(x=%g, y=%g)",x,y);
3440 Int_t nch = strlen(choptin);
3441 strlcpy(chopt,choptin,128);
3465 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
3466 if (hdim > 1) Hoption.
Scat = 1;
3467 if (!nch) Hoption.
Hist = 1;
3471 l = strstr(chopt,
"SPEC");
3476 l = strstr(chopt,
"BF(");
3478 if (sscanf(&l[3],
"%d",&bs) > 0) {
3491 l = strstr(chopt,
"GL");
3495 l = strstr(chopt,
"X+");
3500 l = strstr(chopt,
"Y+");
3506 if (Hoption.
AxisPos == 11 && nch == 4) Hoption.
Hist = 1;
3508 l = strstr(chopt,
"SAMES");
3510 if (nch == 5) Hoption.
Hist = 1;
3514 l = strstr(chopt,
"SAME");
3516 if (nch == 4) Hoption.
Hist = 1;
3521 l = strstr(chopt,
"PIE");
3528 l = strstr(chopt,
"CANDLE");
3535 l = strstr(chopt,
"VIOLIN");
3540 if (l[6] ==
'X') { Hoption.
Violin = 1; l[6] =
' '; }
3541 if (l[6] ==
'Y') { Hoption.
Violin = 2; l[6] =
' '; }
3544 l = strstr(chopt,
"LEGO");
3547 Hoption.
Lego = 1; strncpy(l,
" ",4);
3548 if (l[4] ==
'1') { Hoption.
Lego = 11; l[4] =
' '; }
3549 if (l[4] ==
'2') { Hoption.
Lego = 12; l[4] =
' '; }
3550 if (l[4] ==
'3') { Hoption.
Lego = 13; l[4] =
' '; }
3551 if (l[4] ==
'4') { Hoption.
Lego = 14; l[4] =
' '; }
3552 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3553 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3554 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3557 l = strstr(chopt,
"SURF");
3560 Hoption.
Surf = 1; strncpy(l,
" ",4);
3561 if (l[4] ==
'1') { Hoption.
Surf = 11; l[4] =
' '; }
3562 if (l[4] ==
'2') { Hoption.
Surf = 12; l[4] =
' '; }
3563 if (l[4] ==
'3') { Hoption.
Surf = 13; l[4] =
' '; }
3564 if (l[4] ==
'4') { Hoption.
Surf = 14; l[4] =
' '; }
3565 if (l[4] ==
'5') { Hoption.
Surf = 15; l[4] =
' '; }
3566 if (l[4] ==
'6') { Hoption.
Surf = 16; l[4] =
' '; }
3567 if (l[4] ==
'7') { Hoption.
Surf = 17; l[4] =
' '; }
3568 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3569 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3572 l = strstr(chopt,
"TF3");
3574 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3575 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3578 l = strstr(chopt,
"ISO");
3580 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3581 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3584 l = strstr(chopt,
"LIST");
if (l) { Hoption.
List = 1; strncpy(l,
" ",4);}
3586 l = strstr(chopt,
"CONT");
3592 if (l[4] ==
'1') { Hoption.
Contour = 11; l[4] =
' '; }
3593 if (l[4] ==
'2') { Hoption.
Contour = 12; l[4] =
' '; }
3594 if (l[4] ==
'3') { Hoption.
Contour = 13; l[4] =
' '; }
3595 if (l[4] ==
'4') { Hoption.
Contour = 14; l[4] =
' '; }
3596 if (l[4] ==
'5') { Hoption.
Contour = 15; l[4] =
' '; }
3601 l = strstr(chopt,
"HBAR");
3604 Hoption.
Bar = 20; strncpy(l,
" ",4);
3605 if (l[4] ==
'1') { Hoption.
Bar = 21; l[4] =
' '; }
3606 if (l[4] ==
'2') { Hoption.
Bar = 22; l[4] =
' '; }
3607 if (l[4] ==
'3') { Hoption.
Bar = 23; l[4] =
' '; }
3608 if (l[4] ==
'4') { Hoption.
Bar = 24; l[4] =
' '; }
3610 l = strstr(chopt,
"BAR");
3613 Hoption.
Bar = 10; strncpy(l,
" ",3);
3614 if (l[3] ==
'1') { Hoption.
Bar = 11; l[3] =
' '; }
3615 if (l[3] ==
'2') { Hoption.
Bar = 12; l[3] =
' '; }
3616 if (l[3] ==
'3') { Hoption.
Bar = 13; l[3] =
' '; }
3617 if (l[3] ==
'4') { Hoption.
Bar = 14; l[3] =
' '; }
3620 l = strstr(chopt,
"ARR" );
3630 l = strstr(chopt,
"BOX" );
3636 if (l[3] ==
'1') { Hoption.
Box = 11; l[3] =
' '; }
3641 l = strstr(chopt,
"COLZ");
3648 if (l[4] ==
'2') { Hoption.
Color = 3; l[4] =
' '; }
3649 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3650 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3655 l = strstr(chopt,
"COL" );
3661 if (l[3] ==
'2') { Hoption.
Color = 3; l[3] =
' '; }
3662 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3663 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3668 l = strstr(chopt,
"CHAR");
if (l) { Hoption.
Char = 1; strncpy(l,
" ",4); Hoption.
Scat = 0; }
3669 l = strstr(chopt,
"FUNC");
if (l) { Hoption.
Func = 2; strncpy(l,
" ",4); Hoption.
Hist = 0; }
3670 l = strstr(chopt,
"HIST");
if (l) { Hoption.
Hist = 2; strncpy(l,
" ",4); Hoption.
Func = 0; Hoption.
Error = 0;}
3671 l = strstr(chopt,
"AXIS");
if (l) { Hoption.
Axis = 1; strncpy(l,
" ",4); }
3672 l = strstr(chopt,
"AXIG");
if (l) { Hoption.
Axis = 2; strncpy(l,
" ",4); }
3673 l = strstr(chopt,
"SCAT");
if (l) { Hoption.
Scat = 1; strncpy(l,
" ",4); }
3674 l = strstr(chopt,
"TEXT");
3677 if (sscanf(&l[4],
"%d",&angle) > 0) {
3678 if (angle < 0) angle=0;
3679 if (angle > 90) angle=90;
3680 Hoption.
Text = 1000+angle;
3685 l = strstr(chopt,
"N");
3689 l = strstr(chopt,
"POL");
if (l) { Hoption.
System =
kPOLAR; strncpy(l,
" ",3); }
3691 l = strstr(chopt,
"SPH");
if (l) { Hoption.
System =
kSPHERICAL; strncpy(l,
" ",3); }
3692 l = strstr(chopt,
"PSR");
if (l) { Hoption.
System =
kRAPIDITY; strncpy(l,
" ",3); }
3694 l = strstr(chopt,
"TRI");
3698 Hoption.
Tri = 1; strncpy(l,
" ",3);
3699 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3700 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3701 l = strstr(chopt,
"ERR");
if (l) strncpy(l,
" ",3);
3704 l = strstr(chopt,
"AITOFF");
3706 Hoption.
Proj = 1; strncpy(l,
" ",6);
3708 l = strstr(chopt,
"MERCATOR");
3710 Hoption.
Proj = 2; strncpy(l,
" ",8);
3712 l = strstr(chopt,
"SINUSOIDAL");
3714 Hoption.
Proj = 3; strncpy(l,
" ",10);
3716 l = strstr(chopt,
"PARABOLIC");
3718 Hoption.
Proj = 4; strncpy(l,
" ",9);
3720 if (Hoption.
Proj > 0) {
3725 if (strstr(chopt,
"A")) Hoption.
Axis = -1;
3726 if (strstr(chopt,
"B")) Hoption.
Bar = 1;
3727 if (strstr(chopt,
"C")) { Hoption.
Curve =1; Hoption.
Hist = -1;}
3728 if (strstr(chopt,
"F")) Hoption.
Fill =1;
3729 if (strstr(chopt,
"][")) {Hoption.
Off =1; Hoption.
Hist =1;}
3730 if (strstr(chopt,
"F2")) Hoption.
Fill =2;
3731 if (strstr(chopt,
"L")) { Hoption.
Line =1; Hoption.
Hist = -1;}
3732 if (strstr(chopt,
"P")) { Hoption.
Mark =1; Hoption.
Hist = -1;}
3733 if (strstr(chopt,
"Z")) Hoption.
Zscale =1;
3734 if (strstr(chopt,
"*")) Hoption.
Star =1;
3735 if (strstr(chopt,
"H")) Hoption.
Hist =2;
3736 if (strstr(chopt,
"P0")) Hoption.
Mark =10;
3742 if (strstr(chopt,
"E")) {
3745 if (strstr(chopt,
"E0")) Hoption.
Error = 10;
3746 if (strstr(chopt,
"E1")) Hoption.
Error = 11;
3747 if (strstr(chopt,
"E2")) Hoption.
Error = 12;
3748 if (strstr(chopt,
"E3")) Hoption.
Error = 13;
3749 if (strstr(chopt,
"E4")) Hoption.
Error = 14;
3750 if (strstr(chopt,
"E5")) Hoption.
Error = 15;
3751 if (strstr(chopt,
"E6")) Hoption.
Error = 16;
3752 if (strstr(chopt,
"X0")) {
3754 Hoption.
Error += 10;
3757 Hoption.
Text += 2000;
3761 if (Hoption.
Error == 0) {
3762 Hoption.
Error = 100;
3766 Hoption.
Text += 2000;
3772 if (Hoption.
Surf == 15) {
3775 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
3785 if (Hoption.
Bar == 1) Hoption.
Hist = -1;
3796 char *left = (
char*)strchr(choptin,
'[');
3797 if (!left)
return 0;
3798 char *right = (
char*)strchr(choptin,
']');
3799 if (!right)
return 0;
3801 if (nch < 2)
return 0;
3802 char *cuts = left+1;
3804 char *comma, *minus;
3807 comma = strchr(cuts,
',');
3808 if (comma) *comma = 0;
3809 minus = strchr(cuts,
'-');
3810 if (minus) cuts = minus+1;
3811 while (*cuts ==
' ') cuts++;
3812 Int_t nc = strlen(cuts);
3813 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
3817 while ((obj = next())) {
3819 if (strcmp(obj->
GetName(),cuts))
continue;
3832 for (i=0;i<=nch;i++) left[i] =
' ';
3860 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
3870 Error(
"Paint",
"Option PIE is for 1D histograms only");
3891 gCurrentHist = oldhist;
3897 if (!Hoption.
Lego && !Hoption.
Surf && !Hoption.
Tri) {
3904 Int_t logysav=0, logzsav=0;
3906 logysav = Hoption.
Logy;
3907 logzsav = Hoption.
Logz;
3924 gCurrentHist = oldhist;
3927 Hoption.
Logy = logysav;
3928 Hoption.
Logz = logzsav;
3951 if (Hoption.
Axis > 0) {
3954 if (gridx)
gPad->SetGridx(0);
3955 if (gridy)
gPad->SetGridy(0);
3957 if (gridx)
gPad->SetGridx(1);
3958 if (gridy)
gPad->SetGridy(1);
3960 if (Hoption.
Same ==1) Hoption.
Same = 2;
3966 if (Hoption.
Bar >= 10) {
3971 if (!Hoption.
Error) {
3976 if (Hoption.
Error) {
3993 if (gridx)
gPad->SetGridx(0);
3994 if (gridy)
gPad->SetGridy(0);
3996 if (gridx)
gPad->SetGridx(1);
3997 if (gridy)
gPad->SetGridy(1);
4006 while ((obj = next())) {
4014 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4018 gCurrentHist = oldhist;
4034 fH->TAttLine::Modify();
4037 Double_t dx, dy, si, co, anr,
x1,
x2, y1, y2, xc, yc, dxn, dyn;
4048 for (
Int_t id=1;
id<=2;
id++) {
4055 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4056 if (i == Hparam.
xfirst) {
4058 }
else if (i == Hparam.
xlast) {
4063 if (j == Hparam.
yfirst) {
4065 }
else if (j == Hparam.
ylast) {
4073 }
else if (
id == 2) {
4087 anr = 0.005*.5*
TMath::Sqrt(2/(dxn*dxn + dyn*dyn));
4088 si = anr*(dxn + dyn);
4089 co = anr*(dxn - dyn);
4110 fH->TAttLine::Modify();
4126 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4130 if (Hoption.
Same && Hoption.
Axis <= 0)
return;
4136 if (Hoption.
Same && Hoption.
Axis) {
4138 TIter next(
gPad->GetListOfPrimitives());
4141 while ((obj = next())) {
4144 TString opt = obj->GetDrawOption();
4147 if (strstr(opt,
"hbar")) {
4151 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4161 static char chopt[10] =
"";
4163 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4164 Int_t useHparam = 0;
4165 Double_t umin, umax, uminsave, umaxsave;
4178 if (Hoption.
Contour == 14) useHparam = 1;
4181 TIter next(
gPad->GetListOfPrimitives());
4182 while ((obj=next())) {
4193 if (
gPad->PadInSelectionMode())
4197 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4208 strlcat(chopt,
"SDH",10);
4209 if (ndivx < 0) strlcat(chopt,
"N",10);
4210 if (
gPad->GetGridx()) {
4211 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4212 strlcat(chopt,
"W",10);
4217 strlcat(chopt,
"G",10);
4239 strlcat(chopt,
"t",10);
4247 if (xAxisPos == 1) {
4263 strlcat(chopt,
"-",10);
4266 if (Hoption.
Same && Hoption.
Axis) {
4272 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4277 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4279 cw=strstr(chopt,
"-");
4282 strlcat(chopt,
"-",10);
4284 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4285 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4289 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4295 if (
gPad->PadInSelectionMode())
4299 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4304 strlcat(chopt,
"SDH",10);
4305 if (ndivy < 0) strlcat(chopt,
"N",10);
4306 if (
gPad->GetGridy()) {
4307 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4308 strlcat(chopt,
"W",10);
4313 strlcat(chopt,
"G",10);
4335 strlcat(chopt,
"t",10);
4343 if (yAxisPos == 1) {
4359 strlcat(chopt,
"+L",10);
4362 if (Hoption.
Same && Hoption.
Axis) {
4368 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4373 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4374 if (
gPad->GetTicky() < 2) {
4375 strlcat(chopt,
"U",10);
4378 strlcat(chopt,
"+L",10);
4380 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4384 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4407 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4415 ymin =
gPad->GetUymin();
4416 ymax =
gPad->YtoPad(y);
4417 if (ymax < gPad->GetUymin())
continue;
4418 if (ymax >
gPad->GetUymax()) ymax =
gPad->GetUymax();
4419 if (ymin < gPad->GetUymin()) ymin =
gPad->GetUymin();
4422 w = (xmax-
xmin)*width;
4423 xmin += offset*(xmax-
xmin);
4428 umin = xmin + bar*(xmax-
xmin)/10.;
4429 umax = xmax - bar*(xmax-
xmin)/10.;
4453 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4466 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4473 xmin =
gPad->GetUxmin();
4475 if (xmax < gPad->GetUxmin())
continue;
4476 if (xmax >
gPad->GetUxmax()) xmax =
gPad->GetUxmax();
4477 if (xmin < gPad->GetUxmin()) xmin =
gPad->GetUxmin();
4480 w = (ymax-
ymin)*width;
4481 ymin += offset*(ymax-
ymin);
4486 umin = ymin + bar*(ymax-
ymin)/10.;
4487 umax = ymax - bar*(ymax-
ymin)/10.;
4502 while ((obj = next())) {
4524 fH->TAttLine::Modify();
4527 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
4543 TIter next(
gPad->GetListOfPrimitives());
4544 while ((h2 = (
TH2 *)next())) {
4576 if (Hoption.
Box == 11) {
4590 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4595 if (z < zmin)
continue;
4596 if (z > zmax) z = zmax;
4599 if (Hoption.
Logz)
continue;
4608 if (dz == 0)
continue;
4610 if (zratio == 0)
continue;
4612 xup = xcent*zratio + xk + xcent;
4613 xlow = 2*(xk + xcent) - xup;
4614 if (xup-xlow < dxmin) xup = xlow+dxmin;
4622 yup = ycent*zratio + yk + ycent;
4623 ylow = 2*(yk + ycent) - yup;
4624 if (yup-ylow < dymin) yup = ylow+dymin;
4637 if (xlow >= xup)
continue;
4638 if (ylow >= yup)
continue;
4640 if (Hoption.
Box == 1) {
4642 fH->TAttFill::Modify();
4643 gPad->PaintBox(xlow, ylow, xup, yup);
4645 gPad->PaintLine(xlow, ylow, xup, yup);
4646 gPad->PaintLine(xlow, yup, xup, ylow);
4648 }
else if (Hoption.
Box == 11) {
4651 fH->TAttFill::Modify();
4652 gPad->PaintBox(xlow, ylow, xup, yup);
4657 x[0] = xlow; y[0] = ylow;
4658 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4659 x[2] = x[1]; y[2] = yup - bwidth*(yup-ylow);
4660 x[3] = xup - bwidth*(xup-xlow); y[3] = y[2];
4661 x[4] = xup; y[4] = yup;
4662 x[5] = xlow; y[5] = yup;
4663 x[6] = xlow; y[6] = ylow;
4666 fH->TAttFill::Modify();
4667 gPad->PaintFillArea(7, x, y);
4670 x[0] = xlow; y[0] = ylow;
4671 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4672 x[2] = xup - bwidth*(xup-xlow); y[2] = y[1];
4673 x[3] = x[2]; y[3] = yup - bwidth*(yup-ylow);
4674 x[4] = xup; y[4] = yup;
4675 x[5] = xup; y[5] = ylow;
4676 x[6] = xlow; y[6] = ylow;
4679 fH->TAttFill::Modify();
4680 gPad->PaintFillArea(7, x, y);
4688 fH->TAttFill::Modify();
4713 const Double_t standardCandleWidth = 0.66;
4723 if (width > 0.999) width = standardCandleWidth;
4738 if (width > 0.999) width = standardCandleWidth;
4761 quantiles[0]=0.; quantiles[1]=0.; quantiles[2] = 0.; quantiles[3] = 0.; quantiles[4] = 0.;
4763 prob[0]=1
E-15; prob[1]=0.25; prob[2]=0.5; prob[3]=0.75; prob[4]=1-1
E-15;
4774 h2->TAttLine::Modify();
4775 h2->TAttFill::Modify();
4776 h2->TAttMarker::Modify();
4779 if (Hoption.
Violin == 1) {
4795 gPad->PaintBox(x-0.5*bcon, bcen-0.5*bw, x+0.5*bcon, bcen+0.5*bw);
4799 h2->TAttLine::Modify();
4802 h2->TAttLine::Modify();
4803 gPad->PaintLine(x, quantiles[3], x, quantiles[4]);
4804 gPad->PaintLine(x, quantiles[0], x, quantiles[1]);
4807 gPad->PaintPolyMarker(1,xpm,ypm);
4823 h2->TAttLine::Modify();
4829 gPad->PaintBox(bcen-0.5*bw, y-0.5*bcon, bcen+0.5*bw, y+0.5*bcon);
4837 h2->TAttLine::Modify();
4838 gPad->PaintLine(quantiles[3], y, quantiles[4], y);
4839 gPad->PaintLine(quantiles[0], y, quantiles[1], y);
4842 gPad->PaintPolyMarker(1,xpm,ypm);
4852 h2->TAttFill::Modify();
4853 h2->TAttLine::Modify();
4854 h2->TAttMarker::Modify();
4857 delete [] quantiles;
4874 std::vector<THistRenderingRegion>
4877 std::vector<THistRenderingRegion> regions;
4883 if (nBins >= nPixels) {
4895 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
4905 if (strategy ==
Bins) {
4923 std::make_pair(bin, bin+1)};
4924 regions.push_back(region);
4933 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
4938 std::make_pair(binLow, binHigh)};
4939 regions.push_back(region);
4945 if (strategy ==
Bins) {
4952 Int_t xPx1 = xPx0 + nPixels/nBins;
4955 if (xPx1>= nPixels) xPx1 = nPixels-1;
4958 std::make_pair(bin, bin+1)};
4959 regions.push_back(region);
4963 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
4965 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
4966 Int_t binHigh = binLow + nBins/nPixels;
4968 std::make_pair(binLow, binHigh)};
4969 regions.push_back(region);
4984 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
4985 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
4996 if ((zmin == -1111) && (zmax == -1111)) {
5000 }
else if (zmin == -1111) {
5003 }
else if (zmax == -1111) {
5021 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5022 "Cannot plot logz because bin content is less than 0.");
5033 std::vector<Double_t> colorBounds(ndiv);
5034 std::vector<Double_t> contours(ndiv, 0);
5042 for (
Int_t i=0; i<ndiv; ++i) {
5043 colorBounds[i] = step*i;
5046 auto pFrame =
gPad->GetFrame();
5047 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5048 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5049 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5050 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5051 Int_t nXPixels = px1-px0;
5052 Int_t nYPixels = py0-py1;
5054 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5058 if (xRegions.size() == 0 || yRegions.size() == 0) {
5059 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5060 "Encountered error while computing rendering regions.");
5068 for (
auto& yRegion : yRegions) {
5069 for (
auto& xRegion : xRegions ) {
5071 const auto& xBinRange = xRegion.fBinRange;
5072 const auto& yBinRange = yRegion.fBinRange;
5083 if (z > zmax) z = zmax;
5084 if (z < zmin) z = zmin;
5089 z = colorBounds[index];
5093 index = 0.001 + ((z - zmin)/dz)*ndiv;
5096 if (index == static_cast<Int_t>(colorBounds.size())) {
5104 }
else if (index == static_cast<Int_t>(colorBounds.size()-1)) {
5108 z = colorBounds[index];
5119 const auto& xPixelRange = xRegion.fPixelRange;
5120 const auto& yPixelRange = yRegion.fPixelRange;
5121 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5122 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5123 Int_t pixel = yPx*nXPixels + xPx;
5134 if (minValue != maxValue) {
5140 buffer[buffer.size()-nXPixels] = 0.95;
5148 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5152 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5163 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5188 fH->TAttFill::Modify();
5211 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5216 if (binEntries == 0)
5222 if (zmin >= 0 || Hoption.
Logz)
continue;
5223 if (Hoption.
Color == 2)
continue;
5231 if (z < zmin && !Hoption.
Zero)
continue;
5249 if (xup < gPad->GetUxmin())
continue;
5250 if (yup < gPad->GetUymin())
continue;
5251 if (xlow >
gPad->GetUxmax())
continue;
5252 if (ylow >
gPad->GetUymax())
continue;
5253 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5254 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5255 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5256 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5261 if (z < zc)
continue;
5263 for (
Int_t k=0; k<ndiv; k++) {
5272 color =
Int_t(0.01+(z-zmin)*scale);
5276 if (theColor > ncolors-1) theColor = ncolors-1;
5278 fH->TAttFill::Modify();
5280 gPad->PaintBox(xlow, ylow, xup, yup);
5293 fH->TAttFill::Modify();
5303 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5304 Int_t itars, mode, ir[4];
5305 Double_t xsave, ysave, thesave,phisave,x[4], y[4], zc[4];
5310 thesave =
gPad->GetTheta();
5311 phisave =
gPad->GetPhi();
5313 gPad->SetTheta(90.);
5315 gPad->SetPhi(phisave);
5316 gPad->SetTheta(thesave);
5327 TIter next(
gPad->GetListOfPrimitives());
5328 while ((obj=next())) {
5345 if (!dt && !dtOld)
return;
5365 if (ncontour == 0) {
5369 if (ncontour > kMAXCONTOUR) {
5370 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
5371 kMAXCONTOUR, ncontour);
5372 ncontour = kMAXCONTOUR-1;
5381 fH->TAttLine::Modify();
5391 np =
new Int_t[ncontour];
5392 for (i=0;i<ncontour;i++) np[i] = 0;
5394 for (i=0;i<ncontour;i++) {
5397 if (Hoption.
List == 1) {
5398 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
5400 gROOT->GetListOfSpecials()->Remove(contours);
5402 for (i=0;i<count;i++) {
5403 list = (
TList*)contours->
At(i);
5404 if (list) list->
Delete();
5408 contours->
SetName(
"contours");
5409 gROOT->GetListOfSpecials()->Add(contours);
5410 for (i=0;i<ncontour;i++) {
5412 contours->
Add(list);
5434 else zc[0] = Hparam.
zmin;
5436 else zc[1] = Hparam.
zmin;
5438 else zc[2] = Hparam.
zmin;
5440 else zc[3] = Hparam.
zmin;
5445 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
5450 if (zc[0] <= zc[1]) n = 0;
else n = 1;
5451 if (zc[2] <= zc[3]) m = 2;
else m = 3;
5452 if (zc[n] > zc[m]) n =
m;
5455 for (ix=1;ix<=4;ix++) {
5458 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5463 if (zc[0] <= zc[1]) n = 0;
else n = 1;
5464 if (zc[2] <= zc[3]) m = 2;
else m = 3;
5465 if (zc[n] > zc[m]) n =
m;
5468 for (ix=1;ix<=4;ix++) {
5472 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5480 for (ix=1; ix<=lj-5; ix +=2) {
5482 while (itarr[ix-1] != itarr[ix]) {
5486 for (jx=ix; jx<=lj-5; jx +=2) {
5487 xarr[jx] = xarr[jx+2];
5488 yarr[jx] = yarr[jx+2];
5489 itarr[jx] = itarr[jx+2];
5493 itarr[lj-3] = itars;
5494 if (count > 100)
break;
5499 if (count > 100)
continue;
5500 for (ix=1; ix<=lj-2; ix +=2) {
5508 if (mode == 0) mode = 5;
5512 fH->TAttLine::Modify();
5513 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
5517 ipoly = itarr[ix-1];
5518 if (ipoly >=0 && ipoly <ncontour) {
5519 poly = polys[ipoly];
5520 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
5521 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
5523 if (npmax < np[ipoly]) npmax = np[ipoly];
5532 Int_t nadd,iminus,iplus;
5536 Int_t *polysort = 0;
5538 if (Hoption.
Contour != 1)
goto theEND;
5544 xmin =
gPad->GetUxmin();
5545 ymin =
gPad->GetUymin();
5548 polysort =
new Int_t[ncontour];
5550 for (ipoly=0;ipoly<ncontour;ipoly++) {
5551 if (levels[ipoly] >= 0) {first = ipoly;
break;}
5555 for (ipoly=first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
5556 for (ipoly=first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
5560 for (k=0;k<ncontour;k++) {
5561 ipoly = polysort[k];
5562 if (np[ipoly] == 0)
continue;
5563 if (Hoption.
List) list = (
TList*)contours->
At(contListNb);
5565 poly = polys[ipoly];
5572 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
5573 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
5574 xx[istart] =
xmin; yy[istart] =
ymin;
5575 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
5578 for (i=2;i<np[ipoly];i+=2) {
5579 if (xx[i] == xp[iplus] && yy[i] == yp[iplus]) {
5581 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
5586 if (xx[i+1] == xp[iminus] && yy[i+1] == yp[iminus]) {
5588 xp[iminus] = xx[i]; yp[iminus] = yy[i];
5594 if (nadd == 0)
break;
5599 fH->TAttFill::Modify();
5600 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5602 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5609 for (i=2;i<np[ipoly];i+=2) {
5610 if (xx[i] != xmin && yy[i] != ymin) {
5615 if (istart == 0)
break;
5619 for (i=0;i<ncontour;i++)
delete polys[i];
5631 if (np)
delete [] np;
5647 Double_t tlen, tdif, elev, diff, pdif, xlen;
5659 tdif = elev2 - elev1;
5662 while (n <= icont2 && i <= kMAXCONTOUR/2 -3) {
5665 diff = elev - elev1;
5676 yarr[i] = y1 + xlen;
5681 xarr[i] = x1 + xlen;
5704 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
5707 Double_t xp, yp, ex1, ex2, ey1, ey2;
5709 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
5710 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
5714 Int_t i, k, npoints, first, last, fixbin;
5717 Int_t drawmarker, errormarker;
5718 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
5722 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
5723 if (
Int_t(Hoption.
Error/10) == 2) {optionEX0 = 1; Hoption.
Error -= 10;}
5724 if (Hoption.
Error == 31) {optionEX0 = 1; Hoption.
Error = 1;}
5725 if (Hoption.
Error == 10) option0 = 1;
5726 if (Hoption.
Error == 11) option1 = 1;
5727 if (Hoption.
Error == 12) option2 = 1;
5728 if (Hoption.
Error == 13) option3 = 1;
5729 if (Hoption.
Error == 14) {option4 = 1; option3 = 1;}
5730 if (Hoption.
Error == 15) {optionI0 = 1; option3 = 1;}
5731 if (Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
5732 if (option2+option3 == 0) optionE = 1;
5733 if (Hoption.
Error == 0) optionE = 0;
5744 if (errormarker == 1) symbolsize = 0.01;
5745 sbase = symbolsize*kBASEMARKER;
5748 fH->TAttLine::Modify();
5749 fH->TAttFill::Modify();
5750 fH->TAttMarker::Modify();
5756 last = Hparam.
xlast;
5757 npoints = last - first +1;
5758 xmin =
gPad->GetUxmin();
5759 xmax =
gPad->GetUxmax();
5760 ymin =
gPad->GetUymin();
5761 ymax =
gPad->GetUymax();
5767 if (!xline || !yline) {
5768 Error(
"PaintErrors",
"too many points, out of memory");
5781 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
5782 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
5798 for (k=first; k<=last; k++) {
5810 if (xp <= 0)
goto L30;
5811 if (xp < logxmin)
goto L30;
5814 if (xp < xmin)
goto L30;
5815 if (xp > xmax)
break;
5818 if (optionI0 && yp==0)
goto L30;
5870 if (!option0 && !option3) {
5871 if (Hoption.
Logy && yp < logymin)
goto L30;
5872 if (yi1 < ymin || yi1 > ymax)
goto L30;
5873 if (Hoption.
Error != 0 && yp == 0 && ey1 <= 0) drawmarker =
kFALSE;
5875 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
5878 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
5891 if (Hoption.
Logy && yp < logymin) drawmarker =
kFALSE;
5892 if (optionE && drawmarker) {
5893 if ((yi3 < yi1 - s2y) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1 - s2y,ymax));
5894 if ((yi1 + s2y < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1 + s2y, ymin),xi4,yi4);
5896 if (Hoption.
Hist != 2) {
5897 if (yi1<ymax && yi1>ymin) {
5898 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
5899 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
5903 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
5904 if ((yi3 < yi1) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1,ymax));
5905 if ((yi1 < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1,ymin),xi4,yi4);
5907 if (Hoption.
Hist != 2) {
5908 if (yi1<ymax && yi1>ymin) {
5909 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
5910 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
5917 if (option1 && drawmarker) {
5918 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
5919 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
5920 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
5921 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
5926 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
5955 if (if2 > npoints) {
5956 for (i=1; i<if1; i++) {
5957 xline[if1-2+i] = xline[if2-1+i];
5958 yline[if1-2+i] = yline[if2-1+i];
5962 if (option4) graph.
PaintGraph(2*npoints,xline,yline,
"FC");
5963 else graph.
PaintGraph(2*npoints,xline,yline,
"F");
5964 gPad->SetLogx(logx);
5965 gPad->SetLogy(logy);
5977 fH->TAttMarker::Modify();
5978 fH->TAttLine::Modify();
5990 Error(
"Paint2DErrors",
"no TView in current pad");
5997 view->
SetView(phideg, thedeg, psideg, irep);
6002 fLego->TAttFill::Modify();
6003 Int_t backcolor =
gPad->GetFrameFillColor();
6008 fLego->TAttFill::Modify();
6024 if (Hoption.
Error == 110) {
6040 else y1 = Hparam.
ymin;
6042 else y2 = Hparam.
ymin;
6049 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6059 else x1 = Hparam.
xmin;
6061 else x2 = Hparam.
xmin;
6076 else z = Hparam.
zmin;
6078 else z1 = Hparam.
zmin;
6080 else z2 = Hparam.
zmin;
6083 if (z <= Hparam.
zmin)
continue;
6084 if (z > Hparam.
zmax) z = Hparam.
zmax;
6092 gPad->PaintLine3D(temp1, temp2);
6099 gPad->PaintLine3D(temp1, temp2);
6106 gPad->PaintLine3D(temp1, temp2);
6110 view->
WCtoNDC(temp1, &temp2[0]);
6111 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6138 if (Hoption.
Same)
return;
6142 if (Hoption.
Lego || Hoption.
Surf || Hoption.
Tri ||
6145 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6151 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6169 if (Hoption.
Lego || Hoption.
Surf) {
6174 f2->
Paint(
"surf same");
6176 obj->
Paint(
"cont3 same");
6183 gPad->PushSelectableObject(obj);
6187 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6203 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6206 static char chopth[17];
6208 Int_t htype, oldhtype;
6213 strlcpy(chopth,
" ",17);
6227 last = Hparam.
xlast;
6228 nbins = last - first + 1;
6234 if (fixbin) keepx =
new Double_t[2];
6235 else keepx =
new Double_t[nbins+1];
6242 for (j=first; j<=last;j++) {
6248 if (!Hoption.
Line) {
6252 keepy[j-first] = yb;
6257 if (fixbin) { keepx[0] = Hparam.
xmin; keepx[1] = Hparam.
xmax; }
6268 if (htype == 0 || htype == 1000) htype = 1001;
6275 if (Hoption.
Line) chopth[0] =
'L';
6276 if (Hoption.
Star) chopth[1] =
'*';
6277 if (Hoption.
Mark) chopth[2] =
'P';
6278 if (Hoption.
Mark == 10) chopth[3] =
'0';
6280 if (Hoption.
Curve) chopth[3] =
'C';
6281 if (Hoption.
Hist > 0) chopth[4] =
'H';
6282 else if (Hoption.
Bar) chopth[5] =
'B';
6292 if (!fixbin && strlen(chopth)) {
6296 if (Hoption.
Fill == 2) chopth[13] =
'2';
6349 cmd =
Form(
"TMarker3DBox::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6353 }
else if (strstr(option,
"tf3")) {
6357 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6360 if (strstr(opt,
"fb")) Hoption.
FrontBox = 0;
6361 if (strstr(opt,
"bb")) Hoption.
BackBox = 0;
6368 view->
SetView(phideg, thedeg, psideg, irep);
6371 gROOT->ProcessLine(cmd);
6373 if (Hoption.
Same)
return;
6402 while ((obj = next())) {
6408 if (Hoption.
Same != 1) {
6425 static const char *where =
"PaintInit";
6438 Hparam.
xlast = last;
6445 if (Hparam.
xmax<=0) {
6446 Error(where,
"cannot set X axis to log scale");
6453 for (i=first; i<=last; i++) {
6465 Error(where,
"cannot set X axis to log scale");
6475 if (Hparam.
xlast > last) Hparam.
xlast = last;
6489 Int_t nonNullErrors = 0;
6491 for (i=first; i<=last;i++) {
6499 if (Hoption.
Error) {
6504 if (e1 > 0) nonNullErrors++;
6517 while ((f = (
TObject*) next())) {
6521 fval = f1->
Eval(xv[0],0,0);
6525 if (c1 > 0 && fval > 0.3*c1) ymin =
TMath::Min(ymin,fval);
6533 if (!nonNullErrors) {
6534 if (Hoption.
Error) {
6543 if (Hoption.
Logy && ymin <= 0) {
6544 if (ymax >= 1) ymin =
TMath::Max(.005,ymax*1
e-10);
6545 else ymin = 0.001*
ymax;
6551 if (Hoption.
Logy && xm < 0) {
6552 Error(where,
"log scale requested with a negative argument (%f)", xm);
6554 }
else if (Hoption.
Logy && xm>=0 && ymax==0) {
6563 if (ymax > 0) ymin = 0.001*
ymax;
6565 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", ymax);
6573 }
else if (ymin < 0) {
6585 ymin = ymin*(1-1
E-14);
6586 ymax = ymax*(1+1
E-14);
6593 if (allchan) factor /= allchan;
6594 if (factor == 0) factor = 1;
6611 if (ymin <=0 || ymax <=0) {
6612 Error(where,
"Cannot set Y axis to log scale");
6619 if (!Hoption.
Same) {
6631 if (ymin >= 0) ymin = 0;
6632 else ymin -= yMARGIN*(ymax-
ymin);
6635 if (ymin >= 0 && (ymin-dymin <= 0)) ymin = 0;
6644 ymax += yMARGIN*(ymax-
ymin);
6658 static const char *where =
"PaintInitH";
6671 Hparam.
xlast = last;
6682 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
6683 Error(where,
"cannot set Y axis to log scale");
6690 if (Hparam.
xlast > last) Hparam.
xlast = last;
6705 for (i=first; i<=last;i++) {
6709 if (Hoption.
Error) {
6716 while ((f = (
TObject*) next())) {
6720 fval = f1->
Eval(xv[0],0,0);
6723 if (fval > 0.3*c1) xmin =
TMath::Min(xmin,fval);
6734 if (Hoption.
Logx && xmin <= 0) {
6736 else xmin = 0.001*
xmax;
6741 if (Hoption.
Logx && xm <= 0) {
6742 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
6748 if (xmax > 0) xmin = 0.001*
xmax;
6750 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", xmax);
6758 }
else if (xmin < 0) {
6772 if (allchan) factor /= allchan;
6773 if (factor == 0) factor = 1;
6783 if (xmin <=0 || xmax <=0) {
6784 Error(where,
"Cannot set Y axis to log scale");
6791 if (!Hoption.
Same) {
6802 if (xmin >= 0) xmin = 0;
6803 else xmin -= yMARGIN*(xmax-
xmin);
6810 xmax += yMARGIN*(xmax-
xmin);
6833 Int_t ic2 = ic1+nbcol;
6834 Int_t ic3 = ic2+nbcol;
6869 Error(
"PaintH3Iso",
"no TView in current pad");
6878 view->
SetView(phideg, thedeg, psideg, irep);
6880 Int_t backcolor =
gPad->GetFrameFillColor();
6896 for (
Int_t col=0;col<nbcol;col++) {
6897 acol =
gROOT->GetColor(col+icol1);
6899 if (acol) acol->
SetRGB(r, g, b);
6914 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
6942 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
6953 if (deltaz == 0) deltaz = 1;
7001 Color_t colormain = -1, colordark = -1;
7005 if (Hoption.
Lego == 13) {
7010 if (Hoption.
Lego == 14) {
7012 drawShadowsInLego1 =
kFALSE;
7038 if (Hoption.
Lego == 11) {
7042 for (
Int_t id=0;
id<=nids;
id++) {
7045 if (colormain == 1) colormain = 17;
7047 else colordark = colormain;
7060 Error(
"PaintLego",
"no TView in current pad");
7067 view->
SetView(phideg, thedeg, psideg, irep);
7075 fLego->TAttFill::Modify();
7077 Int_t backcolor =
gPad->GetFrameFillColor();
7083 fLego->TAttFill::Modify();
7090 if (Hoption.
Lego == 11 || Hoption.
Lego == 12) {
7120 if (Hoption.
Lego == 1) {
7127 if (Hoption.
Lego == 1 || Hoption.
Lego == 11) {
7156 Double_t x1[3], x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
7157 static char chopax[8], chopay[8], chopaz[8];
7158 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
7163 Error(
"PaintLegoAxis",
"no TView in current pad");
7178 gPad->PaintLine(x1[0],x1[1],x2[0],x2[1]);
7188 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
7189 for (i = 1; i <= 8; ++i) {
7190 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
7191 r[i*3 - 2] = av[i*3 - 2]*sina;
7192 r[i*3 - 1] = av[i*3 - 1];
7195 view->
WCtoNDC(&r[ix1*3 - 3], x1);
7196 view->
WCtoNDC(&r[ix2*3 - 3], x2);
7197 view->
WCtoNDC(&r[iy1*3 - 3], y1);
7198 view->
WCtoNDC(&r[iy2*3 - 3], y2);
7199 view->
WCtoNDC(&r[iz1*3 - 3], z1);
7200 view->
WCtoNDC(&r[iz2*3 - 3], z2);
7206 if (!rmin || !rmax)
return;
7209 if (x1[0] > x2[0]) strlcpy(chopax,
"SDH=+",8);
7210 else strlcpy(chopax,
"SDH=-",8);
7211 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
7212 else strlcpy(chopay,
"SDH=-",8);
7213 strlcpy(chopaz,
"SDH+=",8);
7216 if (Hoption.
Logx) strlcat(chopax,
"G",8);
7217 if (Hoption.
Logy) strlcat(chopay,
"G",8);
7218 if (Hoption.
Logz) strlcat(chopaz,
"G",8);
7227 strlcat(chopax,
"N",8);
7231 strlcat(chopay,
"N",8);
7235 strlcat(chopaz,
"N",8);
7257 strlcat(chopax,
"t",8);
7265 axis->
PaintAxis(x1[0], x1[1], x2[0], x2[1], bmin, bmax, ndivx, chopax);
7274 strlcpy(chopay,
"V=+UN",8);
7289 strlcat(chopay,
"t",8);
7297 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
7312 strlcat(chopaz,
"t",8);
7320 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
7338 delete palette; palette = 0;
7343 delete palette; palette = 0;
7358 if (xmax > x2) xmax =
gPad->PadtoX(
gPad->GetX2()-0.01*xr);
7371 fH->TAttMarker::Modify();
7379 if (zmin == 0 && zmax == 0)
return;
7390 if (zmin == 0 && zmax == 0)
return;
7393 if (ncells > 10000) scale /= 5;
7397 if (dz >=
kNMAX || zmax < 1) {
7398 scale = (
kNMAX-1)/dz;
7399 if (ncells > 10000) scale /= 5;
7406 if (zmin >= 0) zmin = 0;
7407 else zmin -= yMARGIN*(zmax-zmin);
7409 Double_t dzmin = yMARGIN*(zmax-zmin);
7410 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
7419 strlcpy(optscat,opt.
Data(),100);
7420 char *oscat = strstr(optscat,
"scat=");
7421 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
7422 sscanf(oscat+5,
"%lg",&scale);
7436 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
7438 if (z < zmin) z = zmin;
7439 if (z > zmax) z = zmax;
7445 if (z <= 0)
continue;
7449 for (
Int_t loop=0; loop<k; loop++) {
7450 if (k+marker >=
kNMAX) {
7451 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
7454 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
7455 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
7457 if (fXbuf[marker] > 0) fXbuf[marker] =
TMath::Log10(fXbuf[marker]);
7464 if (fXbuf[marker] <
gPad->GetUxmin())
break;
7465 if (
fYbuf[marker] <
gPad->GetUymin())
break;
7466 if (fXbuf[marker] >
gPad->GetUxmax())
break;
7467 if (
fYbuf[marker] >
gPad->GetUymax())
break;
7473 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
7495 R__TMatrixFBase->
Draw(option);
7501 R__TMatrixDBase->
Draw(option);
7507 R__TVectorF->
Draw(option);
7513 R__TVectorD->
Draw(option);
7530 while ((obj = next())) {
7537 if (stats && dostat) {
7543 if (!dofit) fit = 0;
7544 if (dofit == 1) dofit = 111;
7545 if (dostat == 1) dostat = 1111;
7546 Int_t print_name = dostat%10;
7547 Int_t print_entries = (dostat/10)%10;
7548 Int_t print_mean = (dostat/100)%10;
7549 Int_t print_stddev = (dostat/1000)%10;
7550 Int_t print_under = (dostat/10000)%10;
7551 Int_t print_over = (dostat/100000)%10;
7552 Int_t print_integral= (dostat/1000000)%10;
7553 Int_t print_skew = (dostat/10000000)%10;
7554 Int_t print_kurt = (dostat/100000000)%10;
7555 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
7556 print_under + print_over + print_integral +
7557 print_skew + print_kurt;
7558 Int_t print_fval = dofit%10;
7559 Int_t print_ferrors = (dofit/10)%10;
7560 Int_t print_fchi2 = (dofit/100)%10;
7561 Int_t print_fprob = (dofit/1000)%10;
7562 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
7565 else nlinesf += fit->
GetNpar();
7571 if (!dostat && !fit) {
7610 if (print_entries) {
7617 if (print_mean == 1) {
7627 if (print_mean == 1) {
7639 if (print_stddev == 1) {
7649 if (print_stddev == 1) {
7670 if (print_integral) {
7671 if (print_integral == 1) {
7681 if (print_skew == 1) {
7692 if (print_kurt == 1) {
7708 if (print_fchi2) stats->
AddText(t);
7714 if (print_fval || print_ferrors) {
7719 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
7723 if (print_ferrors) {
7756 while ((obj = next())) {
7762 if (stats && dostat) {
7768 if (dostat == 1) dostat = 1111;
7769 Int_t print_name = dostat%10;
7770 Int_t print_entries = (dostat/10)%10;
7771 Int_t print_mean = (dostat/100)%10;
7772 Int_t print_stddev = (dostat/1000)%10;
7773 Int_t print_under = (dostat/10000)%10;
7774 Int_t print_over = (dostat/100000)%10;
7775 Int_t print_integral= (dostat/1000000)%10;
7776 Int_t print_skew = (dostat/10000000)%10;
7777 Int_t print_kurt = (dostat/100000000)%10;
7778 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
7779 if (print_under || print_over) nlines += 3;
7784 if (!dostat && !fit) {
7824 if (print_entries) {
7831 if (print_mean == 1) {
7850 if (print_stddev == 1) {
7868 if (print_integral) {
7874 if (print_skew == 1) {
7893 if (print_kurt == 1) {
7911 if (print_under || print_over) {
7922 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
7923 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
7924 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
7925 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
7926 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
7927 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
7928 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
7929 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
7930 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
7945 Int_t ndf = fit->GetNDF();
7946 snprintf(t,100,
"#chi^{2} / ndf = %6.4g / %d",(
Float_t)fit->GetChisquare(),ndf);
7948 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
7949 snprintf(t,100,
"%-8s = %5.4g #pm %5.4g ",fit->GetParName(ipar)
7950 ,(
Float_t)fit->GetParameter(ipar)
7951 ,(
Float_t)fit->GetParError(ipar));
7975 while ((obj = next())) {
7981 if (stats && dostat) {
7987 if (dostat == 1) dostat = 1111;
7988 Int_t print_name = dostat%10;
7989 Int_t print_entries = (dostat/10)%10;
7990 Int_t print_mean = (dostat/100)%10;
7991 Int_t print_stddev = (dostat/1000)%10;
7992 Int_t print_under = (dostat/10000)%10;
7993 Int_t print_over = (dostat/100000)%10;
7994 Int_t print_integral= (dostat/1000000)%10;
7995 Int_t print_skew = (dostat/10000000)%10;
7996 Int_t print_kurt = (dostat/100000000)%10;
7997 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
7998 if (print_under || print_over) nlines += 3;
8003 if (!dostat && !fit) {
8041 if (print_entries) {
8048 if (print_mean == 1) {
8074 if (print_stddev == 1) {
8099 if (print_integral) {
8104 if (print_skew == 1) {
8130 if (print_kurt == 1) {
8155 if (print_under || print_over) {
8193 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
8204 if (deltaz == 0) deltaz = 1;
8275 Error(
"PaintSurface",
"no TView in current pad");
8282 view->
SetView(phideg, thedeg, psideg, irep);
8292 fLego->TAttFill::Modify();
8294 Int_t backcolor =
gPad->GetFrameFillColor();
8300 fLego->TAttFill::Modify();
8306 if (Hoption.
Surf == 13 || Hoption.
Surf == 15) {
8316 Hoption.
Surf = hoption35;
8323 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 14 || Hoption.
Surf == 17) {
8332 if (Hoption.
Surf == 14) {
8338 fmax = fmin + (yligh1+0.1)*(qd+qs);
8343 if (!colref)
return;
8348 for (
Int_t col=0;col<nbcol;col++) {
8349 acol =
gROOT->GetColor(col+icol1);
8351 if (acol) acol->
SetRGB(r,g,b);
8361 }
else if (Hoption.
Surf == 15) {
8365 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 16 || Hoption.
Surf == 17) {
8394 if (Hoption.
Surf == 17) {
8407 if ((!Hoption.
Same) &&
8408 (Hoption.
Surf == 1 || Hoption.
Surf == 13 || Hoption.
Surf == 16)) {
8440 if (!dt && !dtOld)
return;
8449 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
8453 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
8458 if (!rmin || !rmax)
return;
8466 fXbuf[0] = Hparam.
xmin;
8468 fXbuf[1] = Hparam.
ymin;
8470 fXbuf[2] = Hparam.
zmin;
8477 Error(
"PaintTriangles",
"no TView in current pad");
8484 view->
SetView(phideg, thedeg, psideg, irep);
8489 fLego->TAttFill::Modify();
8490 Int_t backcolor =
gPad->GetFrameFillColor();
8495 fLego->TAttFill::Modify();
8516 if (!Hoption.
Axis && !Hoption.
Same) {
8537 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
8544 for (i = 0; i < ndivz; ++i) {
8551 delete [] colorlevel;
8574 if (Hoption.
Func == 2) {
8597 if (Hoption.
Color) {
8616 if (!Hoption.
Lego && !Hoption.
Surf &&
8622 while ((obj = next())) {
8628 if (Hoption.
Same != 1) {
8630 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
8650 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
8666 while ((obj=next())) {
8673 g->TAttLine::Modify();
8674 g->TAttMarker::Modify();
8675 g->TAttFill::Modify();
8676 if (line) g->
Paint(
"L");
8677 if (fill) g->
Paint(
"F");
8678 if (mark) g->
Paint(
"P");
8688 while ((g = (
TGraph*) nextg())) {
8689 g->TAttLine::Modify();
8690 g->TAttMarker::Modify();
8691 g->TAttFill::Modify();
8692 if (line) g->
Paint(
"L");
8693 if (fill) g->
Paint(
"F");
8694 if (mark) g->
Paint(
"P");
8707 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
8710 Int_t ncolors, color, theColor;
8741 while ((obj=next())) {
8750 if (z < zmin)
continue;
8755 if (z < zc)
continue;
8757 for (
Int_t k=0; k<ndiv; k++) {
8766 color =
Int_t(0.01+(z-zmin)*scale);
8769 if (theColor > ncolors-1) theColor = ncolors-1;
8775 g->TAttFill::Modify();
8786 while ((g = (
TGraph*) nextg())) {
8788 g->TAttFill::Modify();
8803 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
8806 Int_t k, loop, marker=0;
8821 scale = (
kNMAX-1)/dz;
8835 while ((obj=next())) {
8838 if (
a>maxarea) maxarea =
a;
8843 while ((obj=next())) {
8847 if (z < zmin) z = zmin;
8848 if (z > zmax) z = zmax;
8863 if (k <= 0 || z <= 0)
continue;
8866 if (k+marker >=
kNMAX) {
8867 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8870 xp = (random.
Rndm()*xstep) + xk;
8871 yp = (random.
Rndm()*ystep) + yk;
8879 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8887 if (k <= 0 || z <= 0)
continue;
8890 if (k+marker >=
kNMAX) {
8891 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8894 xp = (random.
Rndm()*xstep) + xk;
8895 yp = (random.
Rndm()*ystep) + yk;
8903 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8924 if (Hoption.
Text >= 1000) angle = Hoption.
Text%1000;
8928 if (Hoption.
Text == 1) angle = 0;
8930 text.TAttText::Modify();
8937 while ((obj=next())) {
8954 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
8983 if (Hoption.
Text >= 1000) angle = Hoption.
Text%1000;
8994 if (Hoption.
Text == 1) angle = 90;
8998 text.TAttText::Modify();
9012 if (yt == 0.)
continue;
9022 if (y >=
gPad->GetY2())
continue;
9023 if (y <= gPad->GetY1())
continue;
9030 if (Hoption.
Text == 1) angle = 0;
9032 text.TAttText::Modify();
9049 if (Hoption.
Text>2000) {
9051 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9089 Error(
"PaintTF3",
"no TView in current pad");
9095 view->
SetView(phideg, thedeg, psideg, irep);
9141 if (Hoption.
Same)
return;
9147 while ((obj = next())) {
9150 if (strcmp(title->GetName(),
"title")) {title = 0;
continue;}
9154 if (title)
delete title;
9160 if (ht <= 0) ht = 0.05;
9175 if (wt > 0) title->SetX2NDC(title->GetX1NDC()+wt);
9181 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
9183 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
9187 if (talh == 2) xpos = xpos-wt/2.;
9188 if (talh == 3) xpos = xpos-wt;
9189 if (talv == 2) ypos = ypos+ht/2.;
9190 if (talv == 1) ypos = ypos+ht;
9208 if(!
gPad->IsEditable())
delete ptitle;
9217 if (!strcmp(mess,
"SetF3")) {
9219 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
9221 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
9315 if (Hoption.
Same)
return;
9323 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
9324 if (Hoption.
Proj ==1) {
9331 if (xmin > xmin_aid) xmin = xmin_aid;
9332 if (ymin > ymin_aid) ymin = ymin_aid;
9333 if (xmax < xmax_aid) xmax = xmax_aid;
9334 if (ymax < ymax_aid) ymax = ymax_aid;
9335 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9339 if (xmin >xmin_aid) xmin = xmin_aid;
9340 if (xmax <xmax_aid) xmax = xmax_aid;
9342 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9345 if (ymin >ymin_aid) ymin = ymin_aid;
9346 if (ymax <ymax_aid) ymax = ymax_aid;
9348 }
else if ( Hoption.
Proj ==2) {
9349 if (Hparam.
ymin <= -90 || Hparam.
ymax >=90) {
9350 Warning(
"Mercator Projection",
"Latitude out of range %f or %f", Hparam.
ymin, Hparam.
ymax);
9356 }
else if (Hoption.
Proj == 3) {
9362 if (xmin > xmin_aid) xmin = xmin_aid;
9363 if (ymin > ymin_aid) ymin = ymin_aid;
9364 if (xmax < xmax_aid) xmax = xmax_aid;
9365 if (ymax < ymax_aid) ymax = ymax_aid;
9366 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9369 if (xmin >xmin_aid) xmin = xmin_aid;
9370 if (xmax <xmax_aid) xmax = xmax_aid;
9372 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9375 if (ymin >ymin_aid) ymin = ymin_aid;
9376 if (ymax <ymax_aid) ymax = ymax_aid;
9378 }
else if (Hoption.
Proj == 4) {
9384 if (xmin > xmin_aid) xmin = xmin_aid;
9385 if (ymin > ymin_aid) ymin = ymin_aid;
9386 if (xmax < xmax_aid) xmax = xmax_aid;
9387 if (ymax < ymax_aid) ymax = ymax_aid;
9388 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9391 if (xmin >xmin_aid) xmin = xmin_aid;
9392 if (xmax <xmax_aid) xmax = xmax_aid;
9394 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9397 if (ymin >ymin_aid) ymin = ymin_aid;
9398 if (ymax <ymax_aid) ymax = ymax_aid;
9413 gPad->Range(xmin - dxr*
gPad->GetLeftMargin(),
9414 ymin - dyr*
gPad->GetBottomMargin(),
9415 xmax + dxr*
gPad->GetRightMargin(),
9416 ymax + dyr*
gPad->GetTopMargin());
9417 gPad->RangeAxis(xmin, ymin, xmax, ymax);
9440 static const char *where =
"TableInit";
9453 Hparam.
xlast = last;
9467 if (Hparam.
xmin <=0 || Hparam.
xmax <=0) {
9468 Error(where,
"cannot set X axis to log scale");
9474 if (Hparam.
xlast > last) Hparam.
xlast = last;
9482 Hparam.
ylast = last;
9496 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
9497 Error(where,
"cannot set Y axis to log scale");
9503 if (Hparam.
ylast > last) Hparam.
ylast = last;
9519 if (Hoption.
Error) {
9532 if (Hoption.
Logz && zmax < 0) {
9533 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
9535 }
else if (Hoption.
Logz && zmin>=0 && zmax==0) {
9541 if (zmax > 0) zmin = 0.001*zmax;
9543 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
9553 if (allchan) factor /= allchan;
9554 if (factor == 0) factor = 1;
9583 zmax += yMARGIN*(zmax-zmin);
9591 if (zmin >= 0) zmin = 0;
9592 else zmin -= yMARGIN*(zmax-zmin);
9594 Double_t dzmin = yMARGIN*(zmax-zmin);
9595 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
9619 char tf[20], tv[64];
9627 int ie = sv.
Index(
"e");
9628 int iE = sv.
Index(
"E");
9629 int id = sv.
Index(
".");
9633 if (ie >= 0 || iE >= 0) {
9634 if (sv.
Index(
"+") >= 0) {
9639 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
9641 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
9646 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
9648 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
9653 }
else if (
id < 0) {
9674 Int_t projection = 0;
9675 if (opt.
Contains(
"x")) projection = 1;
9677 if (opt.
Contains(
"z")) projection = 3;
9678 if (opt.
Contains(
"xy")) projection = 4;
9679 if (opt.
Contains(
"yx")) projection = 5;
9680 if (opt.
Contains(
"xz")) projection = 6;
9681 if (opt.
Contains(
"zx")) projection = 7;
9682 if (opt.
Contains(
"yz")) projection = 8;
9683 if (opt.
Contains(
"zy")) projection = 9;
9687 gROOT->MakeDefCanvas();
9699 gPad->SetDoubleBuffer(0);
9703 static int pyold1 = 0;
9704 static int pyold2 = 0;
9705 float uxmin =
gPad->GetUxmin();
9706 float uxmax =
gPad->GetUxmax();
9707 int pxmin =
gPad->XtoAbsPixel(uxmin);
9708 int pxmax =
gPad->XtoAbsPixel(uxmax);
9711 Int_t biny1 = fH->GetYaxis()->FindBin(y);
9713 Int_t py1 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinLowEdge(biny1));
9714 Int_t py2 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinUpEdge(biny2));
9739 TH1D *hp = ((
TH2*)fH)->ProjectionX(prjName, biny1, biny2);
9744 if (biny1 == biny2) {
9745 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
9746 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny1);
9749 if (fH->GetYaxis()->GetLabels() !=
NULL) {
9750 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf] %s", biny1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetYaxis()->GetBinLabel(biny1)));
9752 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
9755 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
9756 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny2);
9761 if (fH->GetYaxis()->GetLabels() !=
NULL) {
9762 hp->SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf] [%s..%s]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetYaxis()->GetBinLabel(biny1), fH->GetYaxis()->GetBinLabel(biny2)));
9764 hp->SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
9767 hp->SetXTitle(fH->GetXaxis()->GetTitle());
9768 hp->SetYTitle(
"Number of Entries");
9782 gPad->SetDoubleBuffer(0);
9786 static int pxold1 = 0;
9787 static int pxold2 = 0;
9788 float uymin =
gPad->GetUymin();
9789 float uymax =
gPad->GetUymax();
9790 int pymin =
gPad->YtoAbsPixel(uymin);
9791 int pymax =
gPad->YtoAbsPixel(uymax);
9794 Int_t binx1 = fH->GetXaxis()->FindBin(x);
9796 Int_t px1 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinLowEdge(binx1));
9797 Int_t px2 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinUpEdge(binx2));
9822 TH1D *hp = ((
TH2*)fH)->ProjectionY(prjName, binx1, binx2);
9827 if (binx1 == binx2) {
9828 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
9829 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx1);
9832 if (fH->GetXaxis()->GetLabels() !=
NULL) {
9833 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf] [%s]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetXaxis()->GetBinLabel(binx1)));
9835 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
9838 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
9839 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx2);
9844 if (fH->GetXaxis()->GetLabels() !=
NULL) {
9845 hp->SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf] [%s..%s]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetXaxis()->GetBinLabel(binx1), fH->GetXaxis()->GetBinLabel(binx2)));
9847 hp->SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
9850 hp->SetXTitle(fH->GetYaxis()->GetTitle());
9851 hp->SetYTitle(
"Number of Entries");
9870 if (fH->GetDimension() < 3) {
9875 gPad->SetDoubleBuffer(0);
9891 static TPoint endface1[5];
9892 static TPoint endface2[5];
9901 int pxmin =
gPad->XtoAbsPixel(uxmin);
9902 int pxmax =
gPad->XtoAbsPixel(uxmax);
9903 if (pxmin==pxmax)
return;
9904 int pymin =
gPad->YtoAbsPixel(uymin);
9905 int pymax =
gPad->YtoAbsPixel(uymax);
9906 if (pymin==pymax)
return;
9907 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
9908 Double_t cy = (pymax-pymin)/(uymax-uymin);
9923 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
9927 Int_t lastZ = zaxis->
GetLast();
9928 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
9931 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
9932 if (nbins>1 && line1[0].GetX()) {
9943 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9944 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9947 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9948 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9955 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9956 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9959 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9960 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9966 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9967 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9970 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9971 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9977 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9978 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9981 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9982 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9984 endface1[0].
SetX(line1[0].GetX());
9985 endface1[0].
SetY(line1[0].GetY());
9986 endface1[1].
SetX(line2[0].GetX());
9987 endface1[1].
SetY(line2[0].GetY());
9988 endface1[2].
SetX(line3[0].GetX());
9989 endface1[2].
SetY(line3[0].GetY());
9990 endface1[3].
SetX(line4[0].GetX());
9991 endface1[3].
SetY(line4[0].GetY());
9992 endface1[4].
SetX(line1[0].GetX());
9993 endface1[4].
SetY(line1[0].GetY());
9995 endface2[0].
SetX(line1[1].GetX());
9996 endface2[0].
SetY(line1[1].GetY());
9997 endface2[1].
SetX(line2[1].GetX());
9998 endface2[1].
SetY(line2[1].GetY());
9999 endface2[2].
SetX(line3[1].GetX());
10000 endface2[2].
SetY(line3[1].GetY());
10001 endface2[3].
SetX(line4[1].GetX());
10002 endface2[3].
SetY(line4[1].GetY());
10003 endface2[4].
SetX(line1[1].GetX());
10004 endface2[4].
SetY(line1[1].GetY());
10026 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10038 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10042 Int_t lastZ = zaxis->
GetLast();
10043 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10046 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10047 if (nbins>1 && line1[0].GetX()) {
10058 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10059 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10062 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10063 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10070 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10071 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10074 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10075 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10081 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10082 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10085 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10086 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10092 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10093 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10096 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10097 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10099 endface1[0].
SetX(line1[0].GetX());
10100 endface1[0].
SetY(line1[0].GetY());
10101 endface1[1].
SetX(line2[0].GetX());
10102 endface1[1].
SetY(line2[0].GetY());
10103 endface1[2].
SetX(line3[0].GetX());
10104 endface1[2].
SetY(line3[0].GetY());
10105 endface1[3].
SetX(line4[0].GetX());
10106 endface1[3].
SetY(line4[0].GetY());
10107 endface1[4].
SetX(line1[0].GetX());
10108 endface1[4].
SetY(line1[0].GetY());
10110 endface2[0].
SetX(line1[1].GetX());
10111 endface2[0].
SetY(line1[1].GetY());
10112 endface2[1].
SetX(line2[1].GetX());
10113 endface2[1].
SetY(line2[1].GetY());
10114 endface2[2].
SetX(line3[1].GetX());
10115 endface2[2].
SetY(line3[1].GetY());
10116 endface2[3].
SetX(line4[1].GetX());
10117 endface2[3].
SetY(line4[1].GetY());
10118 endface2[4].
SetX(line1[1].GetX());
10119 endface2[4].
SetY(line1[1].GetY());
10140 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10152 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10156 Int_t lastY = yaxis->
GetLast();
10157 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
10160 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10161 if (nbins>1 && line1[0].GetX()) {
10172 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10173 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10176 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10177 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10184 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10185 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10188 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10189 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10195 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10196 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10199 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10200 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10206 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10207 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10210 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10211 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10213 endface1[0].
SetX(line1[0].GetX());
10214 endface1[0].
SetY(line1[0].GetY());
10215 endface1[1].
SetX(line2[0].GetX());
10216 endface1[1].
SetY(line2[0].GetY());
10217 endface1[2].
SetX(line3[0].GetX());
10218 endface1[2].
SetY(line3[0].GetY());
10219 endface1[3].
SetX(line4[0].GetX());
10220 endface1[3].
SetY(line4[0].GetY());
10221 endface1[4].
SetX(line1[0].GetX());
10222 endface1[4].
SetY(line1[0].GetY());
10224 endface2[0].
SetX(line1[1].GetX());
10225 endface2[0].
SetY(line1[1].GetY());
10226 endface2[1].
SetX(line2[1].GetX());
10227 endface2[1].
SetY(line2[1].GetY());
10228 endface2[2].
SetX(line3[1].GetX());
10229 endface2[2].
SetY(line3[1].GetY());
10230 endface2[3].
SetX(line4[1].GetX());
10231 endface2[3].
SetY(line4[1].GetY());
10232 endface2[4].
SetX(line1[1].GetX());
10233 endface2[4].
SetY(line1[1].GetY());
10254 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10266 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10269 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10270 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10275 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10276 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10277 rect1[4].
SetX(rect1[0].GetX());
10278 rect1[4].
SetY(rect1[0].GetY());
10281 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10282 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10285 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10286 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10289 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10290 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10297 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10298 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10299 rect2[4].
SetX(rect2[0].GetX());
10300 rect2[4].
SetY(rect2[0].GetY());
10303 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10304 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10307 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10308 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10311 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10312 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10324 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10325 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10337 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10340 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10341 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10346 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10347 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10348 rect1[4].
SetX(rect1[0].GetX());
10349 rect1[4].
SetY(rect1[0].GetY());
10352 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10353 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10356 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10357 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10360 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10361 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10368 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10369 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10370 rect2[4].
SetX(rect2[0].GetX());
10371 rect2[4].
SetY(rect2[0].GetY());
10374 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10375 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10378 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10379 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10382 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10383 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10394 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10395 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
10407 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10410 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10411 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10416 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10417 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10418 rect1[4].
SetX(rect1[0].GetX());
10419 rect1[4].
SetY(rect1[0].GetY());
10422 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10423 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10426 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10427 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10430 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10431 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10438 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10439 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10440 rect2[4].
SetX(rect2[0].GetX());
10441 rect2[4].
SetY(rect2[0].GetY());
10444 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10445 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10448 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10449 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10452 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10453 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10464 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10465 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10477 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10480 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10481 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10486 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10487 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10488 rect1[4].
SetX(rect1[0].GetX());
10489 rect1[4].
SetY(rect1[0].GetY());
10492 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10493 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10496 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10497 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10500 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10501 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10508 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10509 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10510 rect2[4].
SetX(rect2[0].GetX());
10511 rect2[4].
SetY(rect2[0].GetY());
10514 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10515 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10518 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10519 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10522 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10523 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10534 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10535 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
10547 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
10550 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10551 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10556 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10557 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10558 rect1[4].
SetX(rect1[0].GetX());
10559 rect1[4].
SetY(rect1[0].GetY());
10562 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10563 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10566 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10567 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10570 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10571 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10578 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10579 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10580 rect2[4].
SetX(rect2[0].GetX());
10581 rect2[4].
SetY(rect2[0].GetY());
10584 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10585 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10588 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10589 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10592 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10593 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10604 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10605 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
10617 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
10620 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10621 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10626 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10627 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10628 rect1[4].
SetX(rect1[0].GetX());
10629 rect1[4].
SetY(rect1[0].GetY());
10632 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10633 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10636 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10637 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10640 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10641 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10648 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10649 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10650 rect2[4].
SetX(rect2[0].GetX());
10651 rect2[4].
SetY(rect2[0].GetY());
10654 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10655 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10658 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10659 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10662 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10663 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10674 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10675 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
Int_t GetFirst() const
Return first bin on the axis i.e.
void PaintGrapHist(Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt)
Draw the (x,y) as a histogram.
virtual void SetZTitle(const char *title)
virtual const char * GetTitle() const
Returns title of object.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Option_t * GetOption() const
Float_t GetEndErrorSize() const
static TString gStringKurtosisX
void SurfaceProperty(Double_t qqa, Double_t qqd, Double_t qqs, Int_t nnqs, Int_t &irep)
Set surface property coefficients.
int AxisPos
Axis position.
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
TList * GetListOfFunctions() const
double dist(Rotation3D const &r1, Rotation3D const &r2)
virtual void PaintFrame()
Calculate range and clear pad (canvas).
void SetBarWidth(Float_t barwidth=0.5)
virtual void SetAlpha(Float_t a)
static TString gStringUnderflow
void SetOptFit(Int_t fit=1)
Set the fit option.
virtual void PaintArrows(Option_t *option)
Control function to draw a table as an arrow plot
virtual void SetName(const char *name="")
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Int_t FindBin(Double_t x, Double_t y, Double_t z=0)
Returns the bin number of the bin at the given coordinate.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
Float_t GetTitleW() const
virtual void SetLogy(Int_t value=1)=0
virtual void PaintStat2(Int_t dostat, TF1 *fit)
Draw the statistics box for 2D histograms.
Int_t yfirst
first bin number along Y
Double_t GetBinContent(Int_t bin) const
Returns the content of the input bin For the overflow/underflow/sea bins: -1 | -2 | -3 ---+----+---- ...
void LegoCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw stack of lego-plots in cartesian coordinates.
static TString gStringMeanX
virtual void PaintContour(Option_t *option)
Control function to draw a 2D histogram as a contour plot.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Double_t factor
multiplication factor (normalization)
static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual void SetMaximum(Double_t maximum=-1111)
virtual Font_t GetTextFont() const
Return the text font.
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile2D histogram.
void SetColorDark(Color_t color, Int_t n=0)
Store dark color for stack number n.
int Char
"CHAR" Draw 2D plot with a character set.
Double_t ylowedge
low edge of axis
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile histogram.
static TString gStringMean
void PaintGraph(Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt)
Draw the (x,y) as a graph.
virtual const char * GetFitFormat() const
Histogram option structure.
TList * GetListOfGraphs() const
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
static TString gStringSkewnessX
virtual Int_t GetNumberFreeParameters() const
Return the number of free parameters.
static TString gStringSkewnessZ
virtual void PaintTH2PolyColorLevels(Option_t *option)
Control function to draw a TH2Poly as a color plot.
virtual Double_t * GetRmax()=0
void SetIsoSurfaceParameters(Double_t fmin, Double_t fmax, Int_t ncolor, Int_t ic1, Int_t ic2, Int_t ic3)
int BackBox
= 0 to suppress the back box
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
int Scat
"SCAT" Draw 2D plot a Scatter plot.
virtual Int_t GetLogx() const =0
virtual const char * GetParName(Int_t ipar) const
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
int Proj
1: Aitoff, 2: Mercator, 3: Sinusoidal, 4: Parabolic
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
R__EXTERN TStyle * gStyle
virtual Int_t GetDimension() const
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside the polygon defined by the graph vertices 0 otherwise...
virtual void PaintViolinPlot(Option_t *option)
Control function to draw a 2D histogram as a violin plot
int Axis
"A" Axis are not drawn around the graph.
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...
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
Color_t GetTitleFillColor() const
int Logy
log scale in Y. Also set by histogram option
virtual void Paint(Option_t *option="")
Paint this crown with its current attributes.
static TString gStringIntegralBinWidth
virtual void SetHistogram(TH1 *h)
Set current histogram to h
virtual Int_t GetLogy() const =0
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual Bool_t GetTimeDisplay() const
virtual Int_t GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum=0)
Compute Quantiles for this histogram Quantile x_q of a probability distribution Function F is defined...
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
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 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 SurfaceFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Service function for Surfaces.
Int_t GetNumberContours() const
int Pie
"PIE" Draw 1D plot as a pie chart.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
virtual void SetMinimum(Double_t minimum=-1111)
int ParseOption(char *optin)
Parsing of the option-string.
virtual void PaintTH2PolyBins(Option_t *option)
Control function to draw a TH2Poly bins' contours.
virtual void SetTitle(const char *title="")
Change the title of the axis.
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
void ColorFunction(Int_t nl, Double_t *fl, Int_t *icl, Int_t &irep)
Set correspondance between function and color levels.
Float_t GetTitleX() const
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
tomato 1-D histogram with a float per channel (see TH1 documentation)}
virtual Int_t PaintInit()
Compute histogram parameters used by the drawing routines.
virtual Double_t GetNormFactor() const
virtual void Paint2DErrors(Option_t *option)
Draw 2D histograms errors.
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
Float_t GetTitleFontSize() const
Short_t Min(Short_t a, Short_t b)
void ToLower()
Change string to lower-case.
virtual void SetYTitle(const char *title)
void SetBarOffset(Float_t baroff=0.5)
static void HLStoRGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
static TString gStringStdDevZ
int Text
"TEXT" Draw 2D plot with the content of each cell.
The histogram statistics painter class.
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
void SetHistogram(TH1D *proj)
An abstract interface to image processing library.
virtual Int_t GetNbinsX() const
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...
virtual void SetMinimum(Double_t minimum=-1111)
Set the minimum value along Y for this function In case the function is already drawn, set also the minimum in the helper histogram.
int Contour
"CONT" Draw 2D plot as a Contour plot.
void Paint(Option_t *option)
Paint a TGraphDelaunay according to the value of "option":
static std::string format(double x, double y, int digits, int width)
Double_t zmin
minimum value along Z
Double_t ymin
minimum value along y
virtual void SetX2(Double_t x2)
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.
Double_t zmax
maximum value along Z
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
virtual Double_t GetEntries() const
Return the current number of entries.
void InitMoveScreen(Double_t xmin, Double_t xmax)
Initialize "MOVING SCREEN" method.
virtual Int_t GetNDF() const
Return the number of degrees of freedom in the fit the fNDF parameter has been previously computed du...
int Logx
log scale in X. Also set by histogram option
Helper class to represent a bin in the TH2Poly histogram.
virtual Double_t GetXmin() const
virtual void SetImageQuality(EImageQuality lquality)
Bool_t GetHistMinimumZero() const
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
Double_t ymax
maximum value along y
void SetLog(int x, int y)
static Int_t ProjectMercator2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
static TString gStringMeanZ
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual void SetImage(const Double_t *, UInt_t, UInt_t, TImagePalette *=0)
virtual void PaintColorLevelsFast(Option_t *option)
Rendering scheme for the COL2 and COLZ2 options
virtual TH1 * Project3D(Option_t *option="x") const
Project a 3-d histogram into 1 or 2-d histograms depending on the option parameter option may contain...
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...
void SetOption(CandleOption opt)
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Width_t GetTitleBorderSize() const
double beta(double x, double y)
Calculates the beta function.
virtual void PaintHist(Option_t *option)
Control routine to draw 1D histograms
virtual void PaintTriangles(Option_t *option)
Control function to draw a table using Delaunay triangles.
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
if object in a list can be deleted
Style_t GetStatFont() const
static void SetF3(TF3 *f3)
Static function Store pointer to current implicit function.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
const char * Data() const
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates).
void DefineGridLevels(Int_t ndivz)
Define the grid levels drawn in the background of surface and lego plots.
virtual Double_t GetSkewness(Int_t axis=1) const
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void PaintPalette()
Paint the color palette on the right side of the pad.
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in polar coordinates.
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
virtual Double_t GetPsi()=0
virtual Double_t GetMaximumStored() const
Sequenceable collection abstract base class.
static const double x2[5]
Double_t GetYsize()
Return size of the formula along Y in pad coordinates.
virtual void Paint(Option_t *)
Paint a Pie chart in a canvas.
virtual void PaintBoxes(Option_t *option)
Control function to draw a 2D histogram as a box plot
int Surf
"SURF" Draw as a Surface (SURF,Surf=1, SURF1,Surf=11, SURF2,Surf=12)
virtual void Paint(Option_t *chopt="")
Draw this graph with its current attributes.
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)
virtual void ProcessMessage(const char *mess, const TObject *obj)
Process message mess.
virtual void PaintCandlePlot(Option_t *option)
Control function to draw a 2D histogram as a candle (box) plot.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
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) ...
static TVirtualPadEditor * GetPadEditor(Bool_t load=kTRUE)
Returns the pad editor dialog. Static method.
Double_t GetChisquare() const
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
Float_t GetBarOffset() const
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Color_t GetTitleTextColor() const
int Line
"L" A simple polyline beetwen every point is drawn.
void LightSource(Int_t nl, Double_t yl, Double_t xscr, Double_t yscr, Double_t zscr, Int_t &irep)
Set light source.
virtual Double_t GetMaximumStored() const
virtual void SetStatFormat(const char *format="6.4g")
Change (i.e. set) the format for printing statistics.
virtual EBinErrorOpt GetBinErrorOption() const
void SetMesh(Int_t mesh=1)
Width_t GetStatBorderSize() const
virtual void PaintSurface(Option_t *option)
Control function to draw a 2D histogram as a surface plot.
virtual void PaintStat(Int_t dostat, TF1 *fit)
Draw the statistics box for 1D and profile histograms.
To draw Mathematical Formula.
Double_t Log10(Double_t x)
void SetOption(Option_t *option="")
To set axis options.
int Mark
"P" The current Marker is drawn at each point
virtual Int_t MakeCuts(char *cutsopt)
Decode string choptin and fill Graphical cuts structure.
void DrawFaceMode2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 2nd option (fill in correspondance with function levels)
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
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 Int_t MakeChopt(Option_t *option)
Decode string choptin and fill Hoption structure.
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 void PaintH3(Option_t *option="")
Control function to draw a 3D histograms.
int FrontBox
= 0 to suppress the front box
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
Color_t GetStatColor() const
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
virtual TSeqCollection * GetOutline()=0
void SetTimeFormat(const char *tformat)
Change the format used for time plotting.
virtual void Clear(Option_t *option="")
Clear all lines in this pavetext.
Base class for several text objects.
virtual void PaintColorLevels(Option_t *option)
Control function to draw a 2D histogram as a color plot.
Double_t GetXMax()
Returns the maximum value for the x coordinates of the bin.
Double_t baroffset
offset of bin for bars or legos [0,1]
virtual Bool_t IsInside(Int_t x, Int_t y)
Return kTRUE if the cell ix, iy is inside one of the graphical cuts.
Double_t GetYMin()
Returns the minimum value for the y coordinates of the bin.
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...
Float_t GetBarWidth() const
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.
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)
Double_t GetYMax()
Returns the maximum value for the y coordinates of the bin.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
Int_t xfirst
first bin number along X
virtual void PaintLatex(Double_t x, Double_t y, Double_t angle, Double_t size, const char *text)
Main drawing function.
virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py)=0
TVirtualPad is an abstract base class for the Pad and Canvas classes.
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) ...
virtual void PaintTH2PolyScatterPlot(Option_t *option)
Control function to draw a TH2Poly as a scatter plot.
user specified contour levels
virtual Double_t GetXmax() const
int Fill
"F" A fill area is drawn ("CF" draw a smooth fill area).
The 3-D histogram classes derived from the 1-D histogram classes.
virtual void PaintTH2PolyText(Option_t *option)
Control function to draw a TH2Poly as a text plot.
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 SetLabelSize(Float_t labelsize)
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
static TString gStringKurtosisZ
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
int Bar
"B" A Bar chart is drawn at each point.
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
virtual void GetParLimits(Int_t ipar, Double_t &parmin, Double_t &parmax) const
Return limits for parameter ipar.
static void RGBtoHLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
virtual const char * GetTimeFormat() const
Int_t GetOptTitle() const
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
virtual void SetLogx(Int_t value=1)=0
void SetDrawFace(DrawFaceFunc_t pointer)
Store pointer to current algorithm to draw faces.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
static TString gStringEntries
virtual void Delete(Option_t *option="")
Delete this object.
virtual void SetOutlineToCube()=0
virtual Int_t PaintInitH()
Compute histogram parameters used by the drawing routines for a rotated pad.
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
virtual void PaintImage(Drawable_t, Int_t, Int_t, Int_t=0, Int_t=0, UInt_t=0, UInt_t=0, Option_t *="")
virtual void RecalculateRange()
Recompute the histogram range following graphics operations.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
virtual Size_t GetMarkerSize() const
Return the marker size.
static TString gStringStdDevY
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 SetColorMain(Color_t color, Int_t n=0)
Store color for stack number n.
int Spec
TSpectrum graphics.
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 isosurfaces for a scalar function defined on a grid.
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.
void FrontBox(Double_t ang)
Draw forward faces of surrounding box & axes.
virtual void PaintText(Option_t *option)
Control function to draw a 1D/2D histograms with the bin values.
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...
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual Int_t TableInit()
Initialize various options to draw 2D histograms.
Service class for 2-Dim histogram classes.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Evaluate the distance to the chart in gPad.
Double_t GetXsize()
Return size of the formula along X in pad coordinates.
Class to manage histogram axis.
R__EXTERN TSystem * gSystem
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Double_t ybinsize
bin size in case of equidistant bins
virtual Double_t GetMinimumStored() const
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
A 3-Dim function with parameters.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual void PaintTF3()
Control function to draw a 3D implicit functions.
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots spheric coordinates.
tomato 2-D histogram with a float per channel (see TH1 documentation)}
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
The candle plot painter class.
void LegoFunction(Int_t ia, Int_t ib, Int_t &nv, Double_t *ab, Double_t *vv, Double_t *t)
Service function for Legos.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
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 Color_t GetFillColor() const
Return the fill area color.
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in cylindrical coordinates.
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
TObject * GetObject() const
virtual void PaintStat3(Int_t dostat, TF1 *fit)
Draw the statistics box for 3D histograms.
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual void Paint(Option_t *option="")
Paint all objects in this collection.
Bool_t TestBit(UInt_t f) const
static TImagePalette * CreateCOLPalette(Int_t nContours)
Factory method to creates an image palette for histogram plotting.
const char * GetPaintTextFormat() const
char * Form(const char *fmt,...)
virtual void PaintTable(Option_t *option)
Control function to draw 2D/3D histograms (tables).
const char * GetBinTitle(Int_t bin) const
Returns the bin title.
void SetWidth(const Double_t width)
virtual void Clear(Option_t *option="")=0
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual Int_t GetNbinsZ() const
int Arrow
"ARR" Draw 2D plot with Arrows.
virtual ~THistPainter()
Default destructor.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb"...
virtual void PaintH3Iso()
Control function to draw a 3D histogram with Iso Surfaces.
virtual const char * GetName() const
Returns name of object.
virtual Int_t GetSumw2N() const
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual Double_t GetKurtosis(Int_t axis=1) const
Double_t xlowedge
low edge of axis
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute the actions corresponding to event.
virtual void SetFitFormat(const char *format="5.4g")
Change (i.e. set) the format for printing fit parameters in statistics box.
int Color
"COL" Draw 2D plot with Colored boxes.
virtual TObjLink * FirstLink() const
void SetName(const char *name)
A 2-Dim function with parameters.
TObject * GetPolygon() const
Style_t GetTitleStyle() const
virtual void PaintBar(Option_t *option)
Draw a bar-chart in a normal pad.
virtual Color_t GetLineColor() const
Return the line color.
tomato 1-D histogram with a double per channel (see TH1 documentation)}
Double_t GetContent() const
virtual void PaintFunction(Option_t *option)
Paint functions associated to an histogram.
int Error
"E" Draw Errors with current marker type and size.
Int_t ylast
last bin number along Y
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
if object destructor must call RecursiveRemove()
virtual void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="")
Draw this box with new coordinates.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Float_t GetErrorX() const
virtual const char * GetStatFormat() const
virtual Double_t * GetRmin()=0
const Double_t * GetBuffer() const
int Curve
"C" A smooth Curve is drawn.
virtual void PaintAxis(Bool_t drawGridOnly=kFALSE)
Draw axis (2D case) of an histogram.
virtual void PaintBarH(Option_t *option)
Draw a bar char in a rotated pad (X vertical, Y horizontal)
virtual void Paint(Option_t *option="")
Paint one candle with its current attributes.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
void SetLegoFunction(LegoFunc_t pointer)
Store pointer to current lego function.
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
The histogram painter class.
virtual void SetMaximum(Double_t maximum=-1111)
Set the maximum value along Y for this function In case the function is already drawn, set also the maximum in the helper histogram.
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in spheric coordinates.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual void ExecuteEvent(Int_t, Int_t, Int_t)
Execute the mouse events.
virtual void SetY2(Double_t y2)
int Hist
"HIST" Draw only the histogram.
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 Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
void SetLabelOffset(Float_t labeloffset)
virtual Int_t GetLogz() const =0
virtual void PaintLegoAxis(TGaxis *axis, Double_t ang)
Draw the axis for legos and surface plots.
virtual Int_t GetSize() const
virtual Double_t Rndm()
TausWorth generator from L'Ecuyer, uses as seed 3x32bits integers Use a mask of 0xffffffffUL to make ...
static const double x1[5]
Double_t xbinsize
bin size in case of equidistant bins
A Pave (see TPave) with text, lines or/and boxes inside.
static TString gStringSkewness
int Zero
if selected with any LEGO option the empty bins are not drawn.
virtual const char * GetName() const
Returns name of object.
Float_t GetStatFontSize() const
TGraph2DPainter * fGraph2DPainter
The Legos and Surfaces painter class.
virtual void ShowProjectionX(Int_t px, Int_t py)
Show projection onto X.
int Candle
"CANDLE" Draw a 2D histogram as candle/box plot.
int Box
"BOX" Draw 2D plot with proportional Boxes.
int Func
"FUNC" Draw only the function (for example in case of fit).
virtual Int_t GetNdivisions() const
virtual void SetRGB(Float_t r, Float_t g, Float_t b)
Initialize this color and its associated colors.
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
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...
TGraphDelaunay2D generates a Delaunay triangulation of a TGraph2D.
Style_t GetStatStyle() const
Int_t xlast
last bin number along X
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
void SetEdgeAtt(Color_t color=1, Style_t style=1, Width_t width=1, Int_t n=0)
Abstract base class used by ROOT graphics editor.
The color creation and management class.
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D
virtual void Paint(Option_t *option="")
Paint this 2-D function with its current attributes.
virtual void PaintTitle()
Draw the histogram title.
TList * GetContourList(Double_t contour)
Returns the X and Y graphs building a contour.
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.
int List
= 1 to generate the TObjArray "contours"
void Spectrum(Int_t nl, Double_t fmin, Double_t fmax, Int_t ic, Int_t idc, Int_t &irep)
Set Spectrum.
A class to define a conversion from pixel values to pixel color.
Profile2D histograms are used to display the mean value of Z and its RMS for each cell in X...
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetShowProjection(const char *option, Int_t nbins)
Set projection.
virtual void PaintLego(Option_t *option)
Control function to draw a 2D histogram as a lego plot.
virtual void ShowProjectionY(Int_t px, Int_t py)
Show projection onto Y.
int Violin
"VIOLIN" Draw a 2D histogram as violin plot.
int Off
"][" With H option, the first and last vertical lines are not drawn.
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
virtual Double_t GetParameter(Int_t ipar) const
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
void BackBox(Double_t ang)
Draw back surfaces of surrounding box.
Mother of all ROOT objects.
virtual TList * GetContourList(Double_t contour) const
Get a contour (as a list of TGraphs) using the Delaunay triangulation.
you should not use this method at all Int_t Int_t z
virtual void DrawPanel()
Display a panel with all histogram drawing options.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual Float_t GetLabelSize() const
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Int_t GetNbinsY() const
static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
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.
THashList * GetLabels() const
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual void SetXTitle(const char *title)
Double_t GetHistTopMargin() const
TPainter3dAlgorithms * fLego
const char * GetFitFormat() const
static TString gStringIntegral
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
virtual void Add(TObject *obj)
Double_t xmin
minimum value along X
Int_t GetOptStat() const
Return the stat option.
static TString gStringStdDevX
double f2(const double *x)
static TString gStringKurtosisY
const UInt_t kCannotRotate
virtual void ShowProjection3(Int_t px, Int_t py)
Show projection (specified by fShowProjection) of a TH3.
Float_t GetTitleY() const
Short_t Max(Short_t a, Short_t b)
int Star
"*" A * is plotted at each point
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
static void SetF3ClippingBoxOff()
Static function Set the implicit function clipping box "off".
static void PaintSpecialObjects(const TObject *obj, Option_t *option)
Static function to paint special objects like vectors and matrices.
virtual void PaintErrors(Option_t *option)
Draw 1D histograms error bars.
Double_t xmax
maximum value along X
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) ...
A Graph is a graphics object made of two arrays X and Y with npoints each.
static TString gStringKurtosis
Double_t GetArea()
Returns the area of the bin.
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
RooCmdArg Bins(Int_t nbin)
void SetTickSize(Float_t ticksize)
int System
type of coordinate system(1=car,2=pol,3=cyl,4=sph,5=psr)
Defined by an array on N points in a 2-D space.
THist< 1, double, THistStatContent, THistStatUncertainty > TH1D
Int_t GetBinNumber() const
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute the distance from the point px,py to a line.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual void PaintScatterPlot(Option_t *option)
Control function to draw a 2D histogram as a scatter plot.
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in polar coordinates.
virtual void Paint(Option_t *option="")
Paint the pave stat.
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
const TArrayD * GetXbins() const
The TGraphDelaunay painting class.
Double_t allchan
integrated sum of contents
void SurfaceCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw surface in cartesian coordinate system.
virtual void SetTitle(const char *title)
Change (i.e.
void SetSurfaceFunction(SurfaceFunc_t pointer)
Store pointer to current surface function.
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
Color_t GetStatTextColor() const
int Zscale
"Z" to display the Z scale (color palette)
virtual void Paint(Option_t *option="")
Paint the palette.
Double_t Sqrt(Double_t x)
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
TObject * At(Int_t idx) const
virtual void GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
int Same
"S" Histogram is plotted in the current PAD.
static TImage * Create()
Create an image.
static TString gStringStdDev
static TString gStringSkewnessY
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Histogram parameters structure.
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Style_t GetMarkerStyle() const
Return the marker style.
void GouraudFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Find part of surface with luminosity in the corners.
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 Width_t GetLineWidth() const
Return the line width.
Double_t GetXMin()
Returns the minimum value for the x coordinates of the bin.
virtual Float_t GetTickLength() const
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
The palette painting class.
virtual Float_t GetBarWidth() const
THist< 2, float, THistStatContent, THistStatUncertainty > TH2F
void SetHistogram(TH1 *h)
Int_t GetOptFit() const
Return the fit option.
static TString gStringMeanY
virtual void PadRange(Int_t rback)=0
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside one of the graphs 0 otherwise.
virtual Int_t GetNpar() const
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Double_t barwidth
width of bin for bars and legos [0,1]
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...
unsigned int r2[N_CITIES]
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
int Logz
log scale in Z. Also set by histogram option
virtual void SetBorderSize(Int_t bordersize=4)
virtual Float_t GetBarOffset() const
TGraphDelaunay generates a Delaunay triangulation of a TGraph2D.
if(line.BeginsWith("/*"))
Float_t GetTitleH() const
2D Histogram with Polygonal Bins
static TString gStringOverflow
virtual void DefineColorLevels(Int_t ndivz)
Define the color levels used to paint legos, surfaces etc..
void SetParent(TObject *obj)
const char * GetStatFormat() const
int Lego
"LEGO" Draw as a Lego plot(LEGO,Lego=1, LEGO1,Lego1=11, LEGO2,Lego=12).
don't draw the histogram title
void SetOptStat(Int_t stat=1)
Set the stat option.
int Tri
"TRI" Draw 2D plot with Delaunay triangles.
virtual Float_t GetLabelOffset() const
tomato 2-D histogram with a double per channel (see TH1 documentation)}
void SetAxisPosition(const Double_t candlePos)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.