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);
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());
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 Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile2D histogram.
virtual const char * GetName() const
Returns name of object.
virtual Double_t GetMaximumStored() const
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
static TString gStringKurtosisX
virtual Float_t GetTickLength() const
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.
Color_t GetStatColor() const
double dist(Rotation3D const &r1, Rotation3D const &r2)
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 void PaintFrame()
Calculate range and clear pad (canvas).
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
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.
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
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 Int_t GetLogy() const =0
Int_t GetFirst() const
Return first bin on the axis i.e.
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 Int_t GetLogz() const =0
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...
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
Color_t GetTitleTextColor() const
Double_t GetBinError(Int_t bin) const
Returns the value of error associated to bin number bin.
Int_t GetNumberContours() const
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.
Histogram option structure.
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 Float_t GetLabelOffset() const
static TString gStringSkewnessZ
virtual void PaintTH2PolyColorLevels(Option_t *option)
Control function to draw a TH2Poly as a color plot.
virtual Double_t * GetRmax()=0
virtual Float_t GetBarOffset() const
void SetIsoSurfaceParameters(Double_t fmin, Double_t fmax, Int_t ncolor, Int_t ic1, Int_t ic2, Int_t ic3)
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Int_t GetBinNumber() const
virtual Int_t GetNumberFreeParameters() const
Return the number of free parameters.
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.
Double_t GetHistTopMargin() const
virtual Double_t GetMinimumStored() const
virtual Double_t GetNormFactor() 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
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.
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
R__EXTERN TStyle * gStyle
Bool_t TestBit(UInt_t f) const
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
int Logy
log scale in Y. Also set by histogram option
virtual void Paint(Option_t *option="")
Paint this crown with its current attributes.
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
static TString gStringIntegralBinWidth
virtual void SetHistogram(TH1 *h)
Set current histogram to h
A TMultiGraph is a collection of TGraph (or derived) objects.
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 Double_t Integral(Option_t *option="") const
Return integral of bin contents.
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 Pie
"PIE" Draw 1D plot as a pie chart.
TH1D * ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along X.
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual Int_t GetNbinsZ() const
virtual void SetMinimum(Double_t minimum=-1111)
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.
Float_t GetEndErrorSize() const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
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.
Option_t * GetOption() const
void ColorFunction(Int_t nl, Double_t *fl, Int_t *icl, Int_t &irep)
Set correspondance between function and color levels.
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 void Paint2DErrors(Option_t *option)
Draw 2D histograms errors.
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
Short_t Min(Short_t a, Short_t b)
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
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 void SetFillStyle(Style_t fstyle)
Set the fill area style.
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.
static TString gStringStdDevZ
int Text
"TEXT" Draw 2D plot with the content of each cell.
The histogram statistics painter class.
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
void SetHistogram(TH1D *proj)
An abstract interface to image processing library.
virtual Float_t GetLabelSize() 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.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
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)
TObject * At(Int_t idx) const
Double_t zmin
minimum value along Z
Float_t GetTitleY() const
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)
void InitMoveScreen(Double_t xmin, Double_t xmax)
Initialize "MOVING SCREEN" method.
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
int Logx
log scale in X. Also set by histogram option
Helper class to represent a bin in the TH2Poly histogram.
const char * GetFitFormat() const
virtual void SetImageQuality(EImageQuality lquality)
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 Width_t GetLineWidth() const
Return the line width.
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
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.
double beta(double x, double y)
Calculates the beta function.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
Int_t GetOptFit() const
Return the fit option.
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
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual Style_t GetMarkerStyle() const
Return the marker style.
static void SetF3(TF3 *f3)
Static function Store pointer to current implicit function.
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 void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void PaintPalette()
Paint the color palette on the right side of the pad.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Int_t GetDimension() const
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 Int_t GetNDF() const
Return the number of degrees of freedom in the fit the fNDF parameter has been previously computed du...
virtual Double_t GetPsi()=0
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.
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile histogram.
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)
Float_t GetTitleFontSize() const
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.
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.
const char * GetBinTitle(Int_t bin) const
Returns the bin title.
virtual Bool_t GetTimeDisplay() const
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
const Double_t * GetBuffer() 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 void SetStatFormat(const char *format="6.4g")
Change (i.e. set) the format for printing statistics.
void SetMesh(Int_t mesh=1)
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.
THashList * GetLabels() const
virtual Int_t GetLogx() const =0
virtual const char * GetStatFormat() const
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 Double_t GetBinCenter(Int_t bin) const
Return center of bin.
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 MakeChopt(Option_t *option)
Decode string choptin and fill Hoption structure.
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
virtual TSeqCollection * GetOutline()=0
void SetTimeFormat(const char *tformat)
Change the format used for time plotting.
virtual Size_t GetMarkerSize() const
Return the marker size.
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.
Float_t GetTitleX() const
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...
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.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
Float_t GetBarWidth() const
Int_t xfirst
first bin number along X
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
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.
virtual Double_t GetMaximumStored() const
Style_t GetStatStyle() const
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.
virtual const char * GetTimeFormat() 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 Double_t GetSkewness(Int_t axis=1) const
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
static TString gStringKurtosisZ
virtual Int_t GetNdivisions() const
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 Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Double_t GetBinContent(Int_t bin) const
Returns the content of the input bin For the overflow/underflow/sea bins: -1 | -2 | -3 ---+----+---- ...
virtual void GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
static void RGBtoHLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
virtual const char * GetParName(Int_t ipar) const
TObject * GetPolygon() const
virtual EBinErrorOpt GetBinErrorOption() const
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
Float_t GetErrorX() const
virtual void SetLogx(Int_t value=1)=0
const char * GetPaintTextFormat() const
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.
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.
void FrontBox(Double_t ang)
Draw forward faces of surrounding box & axes.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
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 Int_t TableInit()
Initialize various options to draw 2D histograms.
Int_t GetLast() const
Return last bin on the axis i.e.
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.
virtual Double_t GetKurtosis(Int_t axis=1) const
R__EXTERN TSystem * gSystem
Float_t GetTitleH() const
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Double_t ybinsize
bin size in case of equidistant bins
Style_t GetStatFont() const
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
A 3-Dim function with parameters.
virtual void PaintTF3()
Control function to draw a 3D implicit functions.
Double_t GetContent() const
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots spheric coordinates.
virtual Font_t GetTextFont() const
Return the text font.
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.
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...
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 Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
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...
Bool_t GetHistMinimumZero() const
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in cylindrical coordinates.
virtual void PaintStat3(Int_t dostat, TF1 *fit)
Draw the statistics box for 3D histograms.
virtual void Paint(Option_t *option="")
Paint all objects in this collection.
static TImagePalette * CreateCOLPalette(Int_t nContours)
Factory method to creates an image palette for histogram plotting.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
char * Form(const char *fmt,...)
virtual void PaintTable(Option_t *option)
Control function to draw 2D/3D histograms (tables).
void SetWidth(const Double_t width)
virtual void Clear(Option_t *option="")=0
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 void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
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 TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual void SetFitFormat(const char *format="5.4g")
Change (i.e. set) the format for printing fit parameters in statistics box.
virtual const char * GetFitFormat() const
int Color
"COL" Draw 2D plot with Colored boxes.
void SetName(const char *name)
A 2-Dim function with parameters.
virtual void PaintBar(Option_t *option)
Draw a bar-chart in a normal pad.
virtual Double_t GetXmin() const
tomato 1-D histogram with a double per channel (see TH1 documentation)}
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.
don't draw the histogram title
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
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.
virtual Double_t * GetRmin()=0
virtual TObjLink * FirstLink() 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.
Color_t GetTitleFillColor() const
void SetLegoFunction(LegoFunc_t pointer)
Store pointer to current lego function.
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...
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
The histogram painter class.
virtual Color_t GetLineColor() const
Return the line color.
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.
Width_t GetTitleBorderSize() const
Float_t GetTitleW() const
virtual Int_t GetSumw2N() const
Double_t GetChisquare() const
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
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 void PaintLegoAxis(TGaxis *axis, Double_t ang)
Draw the axis for legos and surface plots.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
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.
user specified contour levels
static TString gStringSkewness
int Zero
if selected with any LEGO option the empty bins are not drawn.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
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).
Int_t GetOptStat() const
Return the stat option.
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...
virtual Double_t GetXmax() const
virtual Color_t GetFillColor() const
Return the fill area color.
TGraphDelaunay2D generates a Delaunay triangulation of a TGraph2D.
Double_t GetMinimum() const
Returns the minimum value of the histogram.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) 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
virtual Double_t GetEntries() const
Return the current number of entries.
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.
Width_t GetStatBorderSize() const
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 const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
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.
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
void BackBox(Double_t ang)
Draw back surfaces of surrounding box.
Mother of all ROOT objects.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
you should not use this method at all Int_t Int_t z
virtual void DrawPanel()
Display a panel with all histogram drawing options.
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
TObject * GetObject() const
Float_t GetStatFontSize() 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 GetNpar() const
virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1, Double_t elev2, Int_t icont2, Double_t x2, Double_t y2, Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels)
Fill the matrix xarr and yarr for Contour Plot.
virtual void GetParLimits(Int_t ipar, Double_t &parmin, Double_t &parmax) const
Return limits for parameter ipar.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual void SetXTitle(const char *title)
TList * GetListOfGraphs() const
TPainter3dAlgorithms * fLego
static TString gStringIntegral
virtual void Add(TObject *obj)
Double_t xmin
minimum value along X
static TString gStringStdDevX
double f2(const double *x)
static TString gStringKurtosisY
const UInt_t kCannotRotate
virtual Double_t GetParameter(Int_t ipar) const
virtual void ShowProjection3(Int_t px, Int_t py)
Show projection (specified by fShowProjection) of a TH3.
Short_t Max(Short_t a, Short_t b)
int Star
"*" A * is plotted at each point
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.
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
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 Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
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.
Float_t GetBarOffset() const
Style_t GetTitleStyle() 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 TList * GetContourList(Double_t contour) const
Get a contour (as a list of TGraphs) using the Delaunay triangulation.
virtual void SetTitle(const char *title)
Change (i.e.
void SetSurfaceFunction(SurfaceFunc_t pointer)
Store pointer to current surface function.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Int_t GetNbinsX() const
int Zscale
"Z" to display the Z scale (color palette)
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 Paint(Option_t *option="")
Paint the palette.
virtual Style_t GetFillStyle() const
Return the fill area style.
Double_t Sqrt(Double_t x)
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
int Same
"S" Histogram is plotted in the current PAD.
static TImage * Create()
Create an image.
Color_t GetStatTextColor() const
static TString gStringStdDev
static TString gStringSkewnessY
virtual const char * GetName() const
Returns name of object.
virtual Int_t GetSize() const
Histogram parameters structure.
void GouraudFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Find part of surface with luminosity in the corners.
Double_t GetXMin()
Returns the minimum value for the x coordinates of the bin.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
TList * GetListOfFunctions() const
The palette painting class.
THist< 2, float, THistStatContent, THistStatUncertainty > TH2F
void SetHistogram(TH1 *h)
static TString gStringMeanY
virtual void PadRange(Int_t rback)=0
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
Double_t GetMaximum() const
Returns the maximum value of the histogram.
virtual Float_t GetBarWidth() const
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Double_t barwidth
width of bin for bars and legos [0,1]
unsigned int r2[N_CITIES]
const TArrayD * GetXbins() const
int Logz
log scale in Z. Also set by histogram option
virtual void SetBorderSize(Int_t bordersize=4)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
TGraphDelaunay generates a Delaunay triangulation of a TGraph2D.
if(line.BeginsWith("/*"))
2D Histogram with Polygonal Bins
const char * GetStatFormat() const
static TString gStringOverflow
virtual const char * GetTitle() const
Returns title of object.
virtual void DefineColorLevels(Int_t ndivz)
Define the color levels used to paint legos, surfaces etc..
virtual Int_t GetNbinsY() const
void SetParent(TObject *obj)
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
int Lego
"LEGO" Draw as a Lego plot(LEGO,Lego=1, LEGO1,Lego1=11, LEGO2,Lego=12).
void SetOptStat(Int_t stat=1)
Set the stat option.
Int_t GetOptTitle() const
int Tri
"TRI" Draw 2D plot with Delaunay triangles.
tomato 2-D histogram with a double per channel (see TH1 documentation)}
const char * Data() const
void SetAxisPosition(const Double_t candlePos)