2987 fGraph2DPainter = 0;
2988 fShowProjection = 0;
2995 gStringEntries =
gEnv->
GetValue(
"Hist.Stats.Entries",
"Entries");
2996 gStringMean =
gEnv->
GetValue(
"Hist.Stats.Mean",
"Mean");
2997 gStringMeanX =
gEnv->
GetValue(
"Hist.Stats.MeanX",
"Mean x");
2998 gStringMeanY =
gEnv->
GetValue(
"Hist.Stats.MeanY",
"Mean y");
2999 gStringMeanZ =
gEnv->
GetValue(
"Hist.Stats.MeanZ",
"Mean z");
3000 gStringStdDev =
gEnv->
GetValue(
"Hist.Stats.StdDev",
"Std Dev");
3001 gStringStdDevX =
gEnv->
GetValue(
"Hist.Stats.StdDevX",
"Std Dev x");
3002 gStringStdDevY =
gEnv->
GetValue(
"Hist.Stats.StdDevY",
"Std Dev y");
3003 gStringStdDevZ =
gEnv->
GetValue(
"Hist.Stats.StdDevZ",
"Std Dev z");
3004 gStringUnderflow =
gEnv->
GetValue(
"Hist.Stats.Underflow",
"Underflow");
3005 gStringOverflow =
gEnv->
GetValue(
"Hist.Stats.Overflow",
"Overflow");
3006 gStringIntegral =
gEnv->
GetValue(
"Hist.Stats.Integral",
"Integral");
3007 gStringIntegralBinWidth =
gEnv->
GetValue(
"Hist.Stats.IntegralBinWidth",
"Integral(w)");
3008 gStringSkewness =
gEnv->
GetValue(
"Hist.Stats.Skewness",
"Skewness");
3009 gStringSkewnessX =
gEnv->
GetValue(
"Hist.Stats.SkewnessX",
"Skewness x");
3010 gStringSkewnessY =
gEnv->
GetValue(
"Hist.Stats.SkewnessY",
"Skewness y");
3011 gStringSkewnessZ =
gEnv->
GetValue(
"Hist.Stats.SkewnessZ",
"Skewness z");
3012 gStringKurtosis =
gEnv->
GetValue(
"Hist.Stats.Kurtosis",
"Kurtosis");
3013 gStringKurtosisX =
gEnv->
GetValue(
"Hist.Stats.KurtosisX",
"Kurtosis x");
3014 gStringKurtosisY =
gEnv->
GetValue(
"Hist.Stats.KurtosisY",
"Kurtosis y");
3015 gStringKurtosisZ =
gEnv->
GetValue(
"Hist.Stats.KurtosisZ",
"Kurtosis z");
3039 const Int_t big = 9999;
3040 const Int_t kMaxDiff = 7;
3051 Int_t curdist = big;
3052 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
3055 if (!PadPointer)
return 0;
3066 if (view && Hoption.
Contour != 14) {
3069 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
3071 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
3073 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
3074 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
3085 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
3094 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
3106 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
3115 if (yxaxis < puymin) yxaxis = puymin;
3116 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
3130 gPad->GetRangeAxis(xmin, ymin, xmax, ymax);
3133 if ((pxu>xmax) || (pxu < xmin) || (pyu>ymax) || (pyu < ymin)) {
3138 if (bin>0) curdist = 1;
3144 if ( px > puxmin + delta2
3145 && px < puxmax - delta2
3146 && py > puymax + delta2
3147 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
3151 if (
gPad->IsVertical()) {
3156 if (binval == 0 && pybin < puymin) pybin = 10000;
3162 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3164 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3165 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3167 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
3168 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
3169 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
3171 if (bin != binsup) {
3173 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
3184 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
3190 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3192 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3193 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3195 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
3196 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
3197 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
3205 while ((f = (
TObject*) next())) {
3209 if (dist < kMaxDiff) {
gPad->SetSelected(f);
return dist;}
3222 Error(
"DrawPanel",
"need to draw histogram first");
3227 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
3242 static Int_t bin, px1, py1, px2, py2, pyold;
3243 static TBox *zoombox;
3247 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3250 if (!
gPad->IsEditable())
return;
3277 if (!opaque)
gVirtualX->SetLineColor(-1);
3278 fH->TAttLine::Modify();
3280 if (opaque && dimension ==2) {
3281 zbx1 =
gPad->AbsPixeltoX(px);
3282 zbx2 =
gPad->AbsPixeltoX(px);
3283 zby1 =
gPad->AbsPixeltoY(py);
3284 zby2 =
gPad->AbsPixeltoY(py);
3287 if (
gPad->GetLogx()) {
3291 if (
gPad->GetLogy()) {
3295 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3312 if (dimension ==1) {
3320 x =
gPad->AbsPixeltoX(px);
3324 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3325 ylow =
gPad->GetUymin();
3326 px1 =
gPad->XtoAbsPixel(xlow);
3327 px2 =
gPad->XtoAbsPixel(xup);
3328 py1 =
gPad->YtoAbsPixel(ylow);
3338 if (dimension ==1) {
3339 if (
gROOT->GetEditHistograms()) {
3348 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3355 if (opaque && dimension ==2) {
3357 zbx2 =
gPad->AbsPixeltoX(px);
3358 zby2 =
gPad->AbsPixeltoY(py);
3361 zoombox->
SetX2(zbx2);
3362 zoombox->
SetY2(zby2);
3372 if (dimension ==2) {
3377 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3382 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3391 if (dimension == 2) {
3396 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3401 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3409 if (dimension ==1) {
3410 if (
gROOT->GetEditHistograms()) {
3411 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3419 if (opaque && dimension ==2) {
3429 if (x1<x2 && y1<y2) {
3438 if (opaque)
gVirtualX->SetLineColor(-1);
3448 event =
gVirtualX->RequestLocator(1, 1, px, py);
3475 if (!dt && !dtOld)
return nullptr;
3480 if (dt) ((THistPainter*)
this)->fGraph2DPainter =
new TGraph2DPainter(dt);
3481 else ((THistPainter*)
this)->fGraph2DPainter =
new TGraph2DPainter(dtOld);
3494 if (!
gPad)
return (
char*)
"";
3495 static char info[200];
3504 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3505 uxmin=
gPad->GetUxmin();
3506 uxmax=
gPad->GetUxmax();
3509 x = xmin +(xmax-
xmin)*(x-uxmin)/(uxmax-uxmin);
3510 uymin=
gPad->GetUymin();
3511 uymax=
gPad->GetUymax();
3514 y = ymin +(ymax-
ymin)*(y-uymin)/(uymax-uymin);
3517 Int_t binx,biny,binmin=0,binx1;
3518 if (
gPad->IsVertical()) {
3520 if (drawOption.
Index(
"same") >= 0) {
3522 TIter next(
gPad->GetListOfPrimitives());
3523 while ((h1 = (
TH1 *)next())) {
3536 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3546 x1 =
gPad->PadtoY(
gPad->AbsPixeltoY(py+1));
3548 if (drawOption.
Index(
"same") >= 0) {
3550 TIter next(
gPad->GetListOfPrimitives());
3551 while ((h1 = (
TH1 *)next())) {
3564 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3577 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, bine=%g, binn=%d)",
3584 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, Sum=%g)",
3591 snprintf(info,200,
"%s (x=%g, y=%g, bin=%d, binc=%g)",
3598 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3603 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g bine=%g)",
3610 snprintf(info,200,
"(x=%g, y=%g)",x,y);
3657 Int_t nch = strlen(choptin);
3658 strlcpy(chopt,choptin,128);
3682 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
3683 if (hdim > 1) Hoption.
Scat = 1;
3684 if (!nch) Hoption.
Hist = 1;
3688 char *l1 = strstr(chopt,
"PFC");
3689 char *l2 = strstr(chopt,
"PLC");
3690 char *l3 = strstr(chopt,
"PMC");
3691 if (l1 || l2 || l3) {
3698 l = strstr(chopt,
"SPEC");
3703 l = strstr(chopt,
"BF(");
3705 if (sscanf(&l[3],
"%d",&bs) > 0) {
3718 l = strstr(chopt,
"GL");
3722 l = strstr(chopt,
"X+");
3727 l = strstr(chopt,
"Y+");
3733 if (Hoption.
AxisPos == 11 && nch == 4) Hoption.
Hist = 1;
3735 l = strstr(chopt,
"SAMES");
3737 if (nch == 5) Hoption.
Hist = 1;
3741 l = strstr(chopt,
"SAME");
3743 if (nch == 4) Hoption.
Hist = 1;
3748 l = strstr(chopt,
"PIE");
3755 l = strstr(chopt,
"CANDLE");
3762 l = strstr(chopt,
"VIOLIN");
3769 l = strstr(chopt,
"LEGO");
3772 Hoption.
Lego = 1; strncpy(l,
" ",4);
3773 if (l[4] ==
'1') { Hoption.
Lego = 11; l[4] =
' '; }
3774 if (l[4] ==
'2') { Hoption.
Lego = 12; l[4] =
' '; }
3775 if (l[4] ==
'3') { Hoption.
Lego = 13; l[4] =
' '; }
3776 if (l[4] ==
'4') { Hoption.
Lego = 14; l[4] =
' '; }
3777 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3778 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3779 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3782 l = strstr(chopt,
"SURF");
3785 Hoption.
Surf = 1; strncpy(l,
" ",4);
3786 if (l[4] ==
'1') { Hoption.
Surf = 11; l[4] =
' '; }
3787 if (l[4] ==
'2') { Hoption.
Surf = 12; l[4] =
' '; }
3788 if (l[4] ==
'3') { Hoption.
Surf = 13; l[4] =
' '; }
3789 if (l[4] ==
'4') { Hoption.
Surf = 14; l[4] =
' '; }
3790 if (l[4] ==
'5') { Hoption.
Surf = 15; l[4] =
' '; }
3791 if (l[4] ==
'6') { Hoption.
Surf = 16; l[4] =
' '; }
3792 if (l[4] ==
'7') { Hoption.
Surf = 17; l[4] =
' '; }
3793 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3794 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3797 l = strstr(chopt,
"TF3");
3799 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3800 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3803 l = strstr(chopt,
"ISO");
3805 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3806 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3809 l = strstr(chopt,
"LIST");
if (l) { Hoption.
List = 1; strncpy(l,
" ",4);}
3811 l = strstr(chopt,
"CONT");
3817 if (l[4] ==
'1') { Hoption.
Contour = 11; l[4] =
' '; }
3818 if (l[4] ==
'2') { Hoption.
Contour = 12; l[4] =
' '; }
3819 if (l[4] ==
'3') { Hoption.
Contour = 13; l[4] =
' '; }
3820 if (l[4] ==
'4') { Hoption.
Contour = 14; l[4] =
' '; }
3821 if (l[4] ==
'5') { Hoption.
Contour = 15; l[4] =
' '; }
3826 l = strstr(chopt,
"HBAR");
3829 Hoption.
Bar = 20; strncpy(l,
" ",4);
3830 if (l[4] ==
'1') { Hoption.
Bar = 21; l[4] =
' '; }
3831 if (l[4] ==
'2') { Hoption.
Bar = 22; l[4] =
' '; }
3832 if (l[4] ==
'3') { Hoption.
Bar = 23; l[4] =
' '; }
3833 if (l[4] ==
'4') { Hoption.
Bar = 24; l[4] =
' '; }
3835 l = strstr(chopt,
"BAR");
3838 Hoption.
Bar = 10; strncpy(l,
" ",3);
3839 if (l[3] ==
'1') { Hoption.
Bar = 11; l[3] =
' '; }
3840 if (l[3] ==
'2') { Hoption.
Bar = 12; l[3] =
' '; }
3841 if (l[3] ==
'3') { Hoption.
Bar = 13; l[3] =
' '; }
3842 if (l[3] ==
'4') { Hoption.
Bar = 14; l[3] =
' '; }
3845 l = strstr(chopt,
"ARR" );
3855 l = strstr(chopt,
"BOX" );
3861 if (l[3] ==
'1') { Hoption.
Box = 11; l[3] =
' '; }
3866 l = strstr(chopt,
"COLZ");
3873 if (l[4] ==
'2') { Hoption.
Color = 3; l[4] =
' '; }
3874 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3875 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3880 l = strstr(chopt,
"COL" );
3886 if (l[3] ==
'2') { Hoption.
Color = 3; l[3] =
' '; }
3887 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3888 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3893 l = strstr(chopt,
"CHAR");
if (l) { Hoption.
Char = 1; strncpy(l,
" ",4); Hoption.
Scat = 0; }
3894 l = strstr(chopt,
"FUNC");
if (l) { Hoption.
Func = 2; strncpy(l,
" ",4); Hoption.
Hist = 0; }
3895 l = strstr(chopt,
"HIST");
if (l) { Hoption.
Hist = 2; strncpy(l,
" ",4); Hoption.
Func = 0; Hoption.
Error = 0;}
3896 l = strstr(chopt,
"AXIS");
if (l) { Hoption.
Axis = 1; strncpy(l,
" ",4); }
3897 l = strstr(chopt,
"AXIG");
if (l) { Hoption.
Axis = 2; strncpy(l,
" ",4); }
3898 l = strstr(chopt,
"SCAT");
if (l) { Hoption.
Scat = 1; strncpy(l,
" ",4); }
3899 l = strstr(chopt,
"TEXT");
3902 if (sscanf(&l[4],
"%d",&angle) > 0) {
3903 if (angle < 0) angle=0;
3904 if (angle > 90) angle=90;
3905 Hoption.
Text = 1000+angle;
3910 l = strstr(chopt,
"N");
3914 l = strstr(chopt,
"POL");
if (l) { Hoption.
System =
kPOLAR; strncpy(l,
" ",3); }
3916 l = strstr(chopt,
"SPH");
if (l) { Hoption.
System =
kSPHERICAL; strncpy(l,
" ",3); }
3917 l = strstr(chopt,
"PSR");
if (l) { Hoption.
System =
kRAPIDITY; strncpy(l,
" ",3); }
3919 l = strstr(chopt,
"TRI");
3923 Hoption.
Tri = 1; strncpy(l,
" ",3);
3924 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3925 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3926 l = strstr(chopt,
"ERR");
if (l) strncpy(l,
" ",3);
3929 l = strstr(chopt,
"AITOFF");
3931 Hoption.
Proj = 1; strncpy(l,
" ",6);
3933 l = strstr(chopt,
"MERCATOR");
3935 Hoption.
Proj = 2; strncpy(l,
" ",8);
3937 l = strstr(chopt,
"SINUSOIDAL");
3939 Hoption.
Proj = 3; strncpy(l,
" ",10);
3941 l = strstr(chopt,
"PARABOLIC");
3943 Hoption.
Proj = 4; strncpy(l,
" ",9);
3945 if (Hoption.
Proj > 0) {
3950 if (strstr(chopt,
"A")) Hoption.
Axis = -1;
3951 if (strstr(chopt,
"B")) Hoption.
Bar = 1;
3952 if (strstr(chopt,
"C")) { Hoption.
Curve =1; Hoption.
Hist = -1;}
3953 if (strstr(chopt,
"F")) Hoption.
Fill =1;
3954 if (strstr(chopt,
"][")) {Hoption.
Off =1; Hoption.
Hist =1;}
3955 if (strstr(chopt,
"F2")) Hoption.
Fill =2;
3956 if (strstr(chopt,
"L")) { Hoption.
Line =1; Hoption.
Hist = -1;}
3957 if (strstr(chopt,
"P")) { Hoption.
Mark =1; Hoption.
Hist = -1;}
3958 if (strstr(chopt,
"Z")) Hoption.
Zscale =1;
3959 if (strstr(chopt,
"*")) Hoption.
Star =1;
3960 if (strstr(chopt,
"H")) Hoption.
Hist =2;
3961 if (strstr(chopt,
"P0")) Hoption.
Mark =10;
3967 if (strstr(chopt,
"E")) {
3970 if (strstr(chopt,
"E0")) Hoption.
Error = 10;
3971 if (strstr(chopt,
"E1")) Hoption.
Error = 11;
3972 if (strstr(chopt,
"E2")) Hoption.
Error = 12;
3973 if (strstr(chopt,
"E3")) Hoption.
Error = 13;
3974 if (strstr(chopt,
"E4")) Hoption.
Error = 14;
3975 if (strstr(chopt,
"E5")) Hoption.
Error = 15;
3976 if (strstr(chopt,
"E6")) Hoption.
Error = 16;
3977 if (strstr(chopt,
"X0")) {
3979 Hoption.
Error += 10;
3982 Hoption.
Text += 2000;
3986 if (Hoption.
Error == 0) {
3987 Hoption.
Error = 100;
3991 Hoption.
Text += 2000;
3997 if (Hoption.
Surf == 15) {
4000 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
4010 if (Hoption.
Bar == 1) Hoption.
Hist = -1;
4021 char *left = (
char*)strchr(choptin,
'[');
4022 if (!left)
return 0;
4023 char *right = (
char*)strchr(choptin,
']');
4024 if (!right)
return 0;
4025 Int_t nch = right-left;
4026 if (nch < 2)
return 0;
4027 char *cuts = left+1;
4029 char *comma, *minus;
4032 comma = strchr(cuts,
',');
4033 if (comma) *comma = 0;
4034 minus = strchr(cuts,
'-');
4035 if (minus) cuts = minus+1;
4036 while (*cuts ==
' ') cuts++;
4037 Int_t nc = strlen(cuts);
4038 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
4042 while ((obj = next())) {
4044 if (strcmp(obj->
GetName(),cuts))
continue;
4057 for (i=0;i<=nch;i++) left[i] =
' ';
4085 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
4095 Error(
"Paint",
"Option PIE is for 1D histograms only");
4116 gCurrentHist = oldhist;
4122 if (!Hoption.
Lego && !Hoption.
Surf && !Hoption.
Tri) {
4129 Int_t logysav=0, logzsav=0;
4131 logysav = Hoption.
Logy;
4132 logzsav = Hoption.
Logz;
4149 gCurrentHist = oldhist;
4152 Hoption.
Logy = logysav;
4153 Hoption.
Logz = logzsav;
4176 if (Hoption.
Axis > 0) {
4179 if (gridx)
gPad->SetGridx(0);
4180 if (gridy)
gPad->SetGridy(0);
4182 if (gridx)
gPad->SetGridx(1);
4183 if (gridy)
gPad->SetGridy(1);
4185 if (Hoption.
Same ==1) Hoption.
Same = 2;
4191 if (Hoption.
Bar >= 10) {
4196 if (!Hoption.
Error) {
4201 if (Hoption.
Error) {
4218 if (gridx)
gPad->SetGridx(0);
4219 if (gridy)
gPad->SetGridy(0);
4221 if (gridx)
gPad->SetGridx(1);
4222 if (gridy)
gPad->SetGridy(1);
4231 while ((obj = next())) {
4239 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4243 gCurrentHist = oldhist;
4254 fH->TAttLine::Modify();
4257 Double_t dx, dy, si, co, anr,
x1,
x2, y1, y2, xc, yc, dxn, dyn;
4268 for (
Int_t id=1;
id<=2;
id++) {
4275 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4276 if (i == Hparam.
xfirst) {
4278 }
else if (i == Hparam.
xlast) {
4283 if (j == Hparam.
yfirst) {
4285 }
else if (j == Hparam.
ylast) {
4293 }
else if (
id == 2) {
4307 anr = 0.005*.5*
TMath::Sqrt(2/(dxn*dxn + dyn*dyn));
4308 si = anr*(dxn + dyn);
4309 co = anr*(dxn - dyn);
4343 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4346 if (Hoption.
Axis == -1)
return;
4347 if (Hoption.
Same && Hoption.
Axis <= 0)
return;
4353 if (Hoption.
Same && Hoption.
Axis) {
4355 TIter next(
gPad->GetListOfPrimitives());
4358 while ((obj = next())) {
4361 TString opt = obj->GetDrawOption();
4364 if (strstr(opt,
"hbar")) {
4368 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4378 static char chopt[10] =
"";
4380 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4381 Int_t useHparam = 0;
4382 Double_t umin, umax, uminsave, umaxsave;
4395 if (Hoption.
Contour == 14) useHparam = 1;
4398 TIter next(
gPad->GetListOfPrimitives());
4399 while ((obj=next())) {
4410 if (
gPad->PadInSelectionMode())
4414 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4425 strlcat(chopt,
"SDH",10);
4426 if (ndivx < 0) strlcat(chopt,
"N",10);
4427 if (
gPad->GetGridx()) {
4428 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4429 strlcat(chopt,
"W",10);
4434 strlcat(chopt,
"G",10);
4456 strlcat(chopt,
"t",10);
4464 if (xAxisPos == 1) {
4480 strlcat(chopt,
"-",10);
4483 if (Hoption.
Same && Hoption.
Axis) {
4489 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4494 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4496 cw=strstr(chopt,
"-");
4499 strlcat(chopt,
"-",10);
4501 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4502 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4506 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4512 if (
gPad->PadInSelectionMode())
4516 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4521 strlcat(chopt,
"SDH",10);
4522 if (ndivy < 0) strlcat(chopt,
"N",10);
4523 if (
gPad->GetGridy()) {
4524 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4525 strlcat(chopt,
"W",10);
4530 strlcat(chopt,
"G",10);
4552 strlcat(chopt,
"t",10);
4560 if (yAxisPos == 1) {
4576 strlcat(chopt,
"+L",10);
4579 if (Hoption.
Same && Hoption.
Axis) {
4585 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4590 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4591 if (
gPad->GetTicky() < 2) {
4592 strlcat(chopt,
"U",10);
4595 strlcat(chopt,
"+L",10);
4597 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4601 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4624 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4632 ymin =
gPad->GetUymin();
4633 ymax =
gPad->YtoPad(y);
4634 if (ymax < gPad->GetUymin())
continue;
4635 if (ymax >
gPad->GetUymax()) ymax =
gPad->GetUymax();
4636 if (ymin < gPad->GetUymin()) ymin =
gPad->GetUymin();
4639 w = (xmax-
xmin)*width;
4640 xmin += offset*(xmax-
xmin);
4645 umin = xmin + bar*(xmax-
xmin)/10.;
4646 umax = xmax - bar*(xmax-
xmin)/10.;
4670 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4683 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4690 xmin =
gPad->GetUxmin();
4692 if (xmax < gPad->GetUxmin())
continue;
4693 if (xmax >
gPad->GetUxmax()) xmax =
gPad->GetUxmax();
4694 if (xmin < gPad->GetUxmin()) xmin =
gPad->GetUxmin();
4697 w = (ymax-
ymin)*width;
4698 ymin += offset*(ymax-
ymin);
4703 umin = ymin + bar*(ymax-
ymin)/10.;
4704 umax = ymax - bar*(ymax-
ymin)/10.;
4719 while ((obj = next())) {
4741 fH->TAttLine::Modify();
4742 fH->TAttFill::Modify();
4744 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
4760 TIter next(
gPad->GetListOfPrimitives());
4761 while ((h2 = (
TH2 *)next())) {
4795 if (Hoption.
Box == 11) {
4809 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4816 if (kZminNeg && z==0)
continue;
4819 if (Hoption.
Logz)
continue;
4828 if (dz == 0)
continue;
4830 if (zratio == 0)
continue;
4832 xup = xcent*zratio + xk + xcent;
4833 xlow = 2*(xk + xcent) - xup;
4834 if (xup-xlow < dxmin) xup = xlow+dxmin;
4842 yup = ycent*zratio + yk + ycent;
4843 ylow = 2*(yk + ycent) - yup;
4844 if (yup-ylow < dymin) yup = ylow+dymin;
4857 if (xlow >= xup)
continue;
4858 if (ylow >= yup)
continue;
4860 if (Hoption.
Box == 1) {
4862 fH->TAttFill::Modify();
4863 gPad->PaintBox(xlow, ylow, xup, yup);
4865 gPad->PaintLine(xlow, ylow, xup, yup);
4866 gPad->PaintLine(xlow, yup, xup, ylow);
4868 }
else if (Hoption.
Box == 11) {
4871 fH->TAttFill::Modify();
4872 gPad->PaintBox(xlow, ylow, xup, yup);
4877 x[0] = xlow; y[0] = ylow;
4878 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4879 x[2] = x[1]; y[2] = yup - bwidth*(yup-ylow);
4880 x[3] = xup - bwidth*(xup-xlow); y[3] = y[2];
4881 x[4] = xup; y[4] = yup;
4882 x[5] = xlow; y[5] = yup;
4883 x[6] = xlow; y[6] = ylow;
4886 fH->TAttFill::Modify();
4887 gPad->PaintFillArea(7, x, y);
4890 x[0] = xlow; y[0] = ylow;
4891 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4892 x[2] = xup - bwidth*(xup-xlow); y[2] = y[1];
4893 x[3] = x[2]; y[3] = yup - bwidth*(yup-ylow);
4894 x[4] = xup; y[4] = yup;
4895 x[5] = xup; y[5] = ylow;
4896 x[6] = xlow; y[6] = ylow;
4899 fH->TAttFill::Modify();
4900 gPad->PaintFillArea(7, x, y);
4908 fH->TAttFill::Modify();
4932 const Double_t standardCandleWidth = 0.66;
4942 if (width > 0.999 && width < 1.001) width = standardCandleWidth;
4957 if (width > 0.999 && width < 1.001) width = standardCandleWidth;
4983 std::vector<THistRenderingRegion>
4986 std::vector<THistRenderingRegion> regions;
4992 if (nBins >= nPixels) {
5004 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
5014 if (strategy ==
Bins) {
5032 std::make_pair(bin, bin+1)};
5033 regions.push_back(region);
5042 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
5047 std::make_pair(binLow, binHigh)};
5048 regions.push_back(region);
5054 if (strategy ==
Bins) {
5061 Int_t xPx1 = xPx0 + nPixels/nBins;
5064 if (xPx1>= nPixels) xPx1 = nPixels-1;
5067 std::make_pair(bin, bin+1)};
5068 regions.push_back(region);
5072 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
5074 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
5075 Int_t binHigh = binLow + nBins/nPixels;
5077 std::make_pair(binLow, binHigh)};
5078 regions.push_back(region);
5093 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5094 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
5107 if ((zmin == -1111) && (zmax == -1111)) {
5111 }
else if (zmin == -1111) {
5114 }
else if (zmax == -1111) {
5132 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5133 "Cannot plot logz because bin content is less than 0.");
5144 std::vector<Double_t> colorBounds(ndiv);
5145 std::vector<Double_t> contours(ndiv, 0);
5153 for (
Int_t i=0; i<ndiv; ++i) {
5154 colorBounds[i] = step*i;
5157 auto pFrame =
gPad->GetFrame();
5158 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5159 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5160 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5161 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5162 Int_t nXPixels = px1-px0;
5163 Int_t nYPixels = py0-py1;
5165 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5169 if (xRegions.size() == 0 || yRegions.size() == 0) {
5170 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5171 "Encountered error while computing rendering regions.");
5179 for (
auto& yRegion : yRegions) {
5180 for (
auto& xRegion : xRegions ) {
5182 const auto& xBinRange = xRegion.fBinRange;
5183 const auto& yBinRange = yRegion.fBinRange;
5194 if (z > zmax) z = zmax;
5195 if (z < zmin) z = zmin;
5200 z = colorBounds[index];
5204 index = 0.001 + ((z - zmin)/dz)*ndiv;
5207 if (index == static_cast<Int_t>(colorBounds.size())) {
5215 }
else if (index == static_cast<Int_t>(colorBounds.size()-1)) {
5219 z = colorBounds[index];
5230 const auto& xPixelRange = xRegion.fPixelRange;
5231 const auto& yPixelRange = yRegion.fPixelRange;
5232 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5233 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5234 Int_t pixel = yPx*nXPixels + xPx;
5245 if (minValue != maxValue) {
5251 buffer[buffer.size()-nXPixels] = 0.95;
5259 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5263 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5280 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5296 TIter next(
gPad->GetListOfPrimitives());
5297 while ((h2 = (
TH2 *)next())) {
5327 fH->TAttFill::Modify();
5350 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5355 if (binEntries == 0)
5361 if (zmin >= 0 || Hoption.
Logz)
continue;
5362 if (Hoption.
Color == 2)
continue;
5370 if (z < zmin && !Hoption.
Zero)
continue;
5388 if (xup < gPad->GetUxmin())
continue;
5389 if (yup < gPad->GetUymin())
continue;
5390 if (xlow >
gPad->GetUxmax())
continue;
5391 if (ylow >
gPad->GetUymax())
continue;
5392 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5393 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5394 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5395 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5400 if (z < zc)
continue;
5402 for (
Int_t k=0; k<ndiv; k++) {
5411 color =
Int_t(0.01+(z-zmin)*scale);
5415 if (theColor > ncolors-1) theColor = ncolors-1;
5417 fH->TAttFill::Modify();
5419 gPad->PaintBox(xlow, ylow, xup, yup);
5432 fH->TAttFill::Modify();
5442 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5443 Int_t itars, mode, ir[4];
5444 Double_t xsave, ysave, thesave,phisave,x[4], y[4], zc[4];
5449 thesave =
gPad->GetTheta();
5450 phisave =
gPad->GetPhi();
5452 gPad->SetTheta(90.);
5454 gPad->SetPhi(phisave);
5455 gPad->SetTheta(thesave);
5466 TIter next(
gPad->GetListOfPrimitives());
5467 while ((obj=next())) {
5484 if (!dt && !dtOld)
return;
5504 if (ncontour == 0) {
5508 if (ncontour > kMAXCONTOUR) {
5509 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
5510 kMAXCONTOUR, ncontour);
5511 ncontour = kMAXCONTOUR-1;
5520 fH->TAttLine::Modify();
5530 np =
new Int_t[ncontour];
5531 for (i=0;i<ncontour;i++) np[i] = 0;
5533 for (i=0;i<ncontour;i++) {
5536 if (Hoption.
List == 1) {
5537 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
5539 gROOT->GetListOfSpecials()->Remove(contours);
5541 for (i=0;i<count;i++) {
5542 list = (
TList*)contours->
At(i);
5543 if (list) list->
Delete();
5547 contours->
SetName(
"contours");
5548 gROOT->GetListOfSpecials()->Add(contours);
5549 for (i=0;i<ncontour;i++) {
5551 contours->
Add(list);
5573 else zc[0] = Hparam.
zmin;
5575 else zc[1] = Hparam.
zmin;
5577 else zc[2] = Hparam.
zmin;
5579 else zc[3] = Hparam.
zmin;
5584 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
5589 if (zc[0] <= zc[1]) n = 0;
else n = 1;
5590 if (zc[2] <= zc[3]) m = 2;
else m = 3;
5591 if (zc[n] > zc[m]) n =
m;
5594 for (ix=1;ix<=4;ix++) {
5597 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5602 if (zc[0] <= zc[1]) n = 0;
else n = 1;
5603 if (zc[2] <= zc[3]) m = 2;
else m = 3;
5604 if (zc[n] > zc[m]) n =
m;
5607 for (ix=1;ix<=4;ix++) {
5611 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5619 for (ix=1; ix<=lj-5; ix +=2) {
5621 while (itarr[ix-1] != itarr[ix]) {
5625 for (jx=ix; jx<=lj-5; jx +=2) {
5626 xarr[jx] = xarr[jx+2];
5627 yarr[jx] = yarr[jx+2];
5628 itarr[jx] = itarr[jx+2];
5632 itarr[lj-3] = itars;
5633 if (count > 100)
break;
5638 if (count > 100)
continue;
5639 for (ix=1; ix<=lj-2; ix +=2) {
5647 if (mode == 0) mode = 5;
5651 fH->TAttLine::Modify();
5652 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
5656 ipoly = itarr[ix-1];
5657 if (ipoly >=0 && ipoly <ncontour) {
5658 poly = polys[ipoly];
5659 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
5660 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
5662 if (npmax < np[ipoly]) npmax = np[ipoly];
5671 Int_t nadd,iminus,iplus;
5675 Int_t *polysort = 0;
5677 if (Hoption.
Contour != 1)
goto theEND;
5683 xmin =
gPad->GetUxmin();
5684 ymin =
gPad->GetUymin();
5687 polysort =
new Int_t[ncontour];
5689 for (ipoly=0;ipoly<ncontour;ipoly++) {
5690 if (levels[ipoly] >= 0) {first = ipoly;
break;}
5694 for (ipoly=first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
5695 for (ipoly=first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
5699 for (k=0;k<ncontour;k++) {
5700 ipoly = polysort[k];
5701 if (np[ipoly] == 0)
continue;
5702 if (Hoption.
List) list = (
TList*)contours->
At(contListNb);
5704 poly = polys[ipoly];
5711 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
5712 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
5713 xx[istart] =
xmin; yy[istart] =
ymin;
5714 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
5717 for (i=2;i<np[ipoly];i+=2) {
5718 if (xx[i] == xp[iplus] && yy[i] == yp[iplus]) {
5720 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
5725 if (xx[i+1] == xp[iminus] && yy[i+1] == yp[iminus]) {
5727 xp[iminus] = xx[i]; yp[iminus] = yy[i];
5733 if (nadd == 0)
break;
5738 fH->TAttFill::Modify();
5739 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5741 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5748 for (i=2;i<np[ipoly];i+=2) {
5749 if (xx[i] != xmin && yy[i] != ymin) {
5754 if (istart == 0)
break;
5758 for (i=0;i<ncontour;i++)
delete polys[i];
5770 if (np)
delete [] np;
5786 Double_t tlen, tdif, elev, diff, pdif, xlen;
5798 tdif = elev2 - elev1;
5801 while (n <= icont2 && i <= kMAXCONTOUR/2 -3) {
5804 diff = elev - elev1;
5815 yarr[i] = y1 + xlen;
5820 xarr[i] = x1 + xlen;
5843 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
5845 const Int_t kBASEMARKER=8;
5846 Double_t xp, yp, ex1, ex2, ey1, ey2;
5848 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
5853 Int_t i, k, npoints, first, last, fixbin;
5856 Int_t drawmarker, errormarker;
5857 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
5861 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
5862 if (
Int_t(Hoption.
Error/10) == 2) {optionEX0 = 1; Hoption.
Error -= 10;}
5863 if (Hoption.
Error == 31) {optionEX0 = 1; Hoption.
Error = 1;}
5864 if (Hoption.
Error == 10) option0 = 1;
5865 if (Hoption.
Error == 11) option1 = 1;
5866 if (Hoption.
Error == 12) option2 = 1;
5867 if (Hoption.
Error == 13) option3 = 1;
5868 if (Hoption.
Error == 14) {option4 = 1; option3 = 1;}
5869 if (Hoption.
Error == 15) {optionI0 = 1; option3 = 1;}
5870 if (Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
5871 if (option2+option3 == 0) optionE = 1;
5872 if (Hoption.
Error == 0) optionE = 0;
5883 if (errormarker == 1) symbolsize = 0.01;
5884 sbase = symbolsize*kBASEMARKER;
5887 fH->TAttLine::Modify();
5888 fH->TAttFill::Modify();
5889 fH->TAttMarker::Modify();
5895 last = Hparam.
xlast;
5896 npoints = last - first +1;
5897 xmin =
gPad->GetUxmin();
5898 xmax =
gPad->GetUxmax();
5899 ymin =
gPad->GetUymin();
5900 ymax =
gPad->GetUymax();
5906 if (!xline || !yline) {
5907 Error(
"PaintErrors",
"too many points, out of memory");
5920 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
5921 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
5937 for (k=first; k<=last; k++) {
5949 if (xp <= 0)
goto L30;
5950 if (xp < logxmin)
goto L30;
5953 if (xp < xmin)
goto L30;
5954 if (xp > xmax)
break;
5957 if (optionI0 && yp==0)
goto L30;
6009 if (!option0 && !option3) {
6010 if (Hoption.
Logy && yp < logymin)
goto L30;
6011 if (yi1 < ymin || yi1 > ymax)
goto L30;
6012 if (Hoption.
Error != 0 && yp == 0 && ey1 <= 0) drawmarker =
kFALSE;
6014 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
6017 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
6030 if (Hoption.
Logy && yp < logymin) drawmarker =
kFALSE;
6031 if (optionE && drawmarker) {
6032 if ((yi3 < yi1 - s2y) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1 - s2y,ymax));
6033 if ((yi1 + s2y < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1 + s2y, ymin),xi4,yi4);
6035 if (Hoption.
Hist != 2) {
6036 if (yi1<ymax && yi1>ymin) {
6037 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
6038 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
6042 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
6043 if ((yi3 < yi1) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1,ymax));
6044 if ((yi1 < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1,ymin),xi4,yi4);
6046 if (Hoption.
Hist != 2) {
6047 if (yi1<ymax && yi1>ymin) {
6048 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
6049 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
6056 if (option1 && drawmarker) {
6057 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
6058 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
6059 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
6060 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
6065 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
6094 if (if2 > npoints) {
6095 for (i=1; i<if1; i++) {
6096 xline[if1-2+i] = xline[if2-1+i];
6097 yline[if1-2+i] = yline[if2-1+i];
6101 if (option4) graph.
PaintGraph(2*npoints,xline,yline,
"FC");
6102 else graph.
PaintGraph(2*npoints,xline,yline,
"F");
6103 gPad->SetLogx(logx);
6104 gPad->SetLogy(logy);
6116 fH->TAttMarker::Modify();
6117 fH->TAttLine::Modify();
6129 Error(
"Paint2DErrors",
"no TView in current pad");
6136 view->
SetView(phideg, thedeg, psideg, irep);
6141 fLego->TAttFill::Modify();
6142 Int_t backcolor =
gPad->GetFrameFillColor();
6147 fLego->TAttFill::Modify();
6163 if (Hoption.
Error == 110) {
6179 else y1 = Hparam.
ymin;
6181 else y2 = Hparam.
ymin;
6188 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6198 else x1 = Hparam.
xmin;
6200 else x2 = Hparam.
xmin;
6215 else z = Hparam.
zmin;
6217 else z1 = Hparam.
zmin;
6219 else z2 = Hparam.
zmin;
6222 if (z <= Hparam.
zmin)
continue;
6223 if (z > Hparam.
zmax) z = Hparam.
zmax;
6231 gPad->PaintLine3D(temp1, temp2);
6238 gPad->PaintLine3D(temp1, temp2);
6245 gPad->PaintLine3D(temp1, temp2);
6249 view->
WCtoNDC(temp1, &temp2[0]);
6250 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6277 if (Hoption.
Same)
return;
6281 if (Hoption.
Lego || Hoption.
Surf || Hoption.
Tri ||
6284 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6290 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6308 if (Hoption.
Lego || Hoption.
Surf) {
6313 f2->
Paint(
"surf same");
6315 obj->
Paint(
"cont3 same");
6322 gPad->PushSelectableObject(obj);
6326 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6342 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6345 static char chopth[17];
6347 Int_t htype, oldhtype;
6352 strlcpy(chopth,
" ",17);
6366 last = Hparam.
xlast;
6367 nbins = last - first + 1;
6373 if (fixbin) keepx =
new Double_t[2];
6374 else keepx =
new Double_t[nbins+1];
6381 for (j=first; j<=last;j++) {
6387 if (!Hoption.
Line) {
6391 keepy[j-first] = yb;
6396 if (fixbin) { keepx[0] = Hparam.
xmin; keepx[1] = Hparam.
xmax; }
6407 if (htype == 0 || htype == 1000) htype = 1001;
6414 if (Hoption.
Line) chopth[0] =
'L';
6415 if (Hoption.
Star) chopth[1] =
'*';
6416 if (Hoption.
Mark) chopth[2] =
'P';
6417 if (Hoption.
Mark == 10) chopth[3] =
'0';
6419 if (Hoption.
Curve) chopth[3] =
'C';
6420 if (Hoption.
Hist > 0) chopth[4] =
'H';
6421 else if (Hoption.
Bar) chopth[5] =
'B';
6431 if (!fixbin && strlen(chopth)) {
6435 if (Hoption.
Fill == 2) chopth[13] =
'2';
6487 if (
fH->
GetDrawOption() && (strstr(opt,
"box") || strstr(opt,
"lego"))) {
6488 if (strstr(opt,
"1")) {
6490 }
else if (strstr(opt,
"2")) {
6492 }
else if (strstr(opt,
"3")) {
6501 }
else if (strstr(option,
"tf3")) {
6505 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6508 if (strstr(opt,
"fb")) Hoption.
FrontBox = 0;
6509 if (strstr(opt,
"bb")) Hoption.
BackBox = 0;
6516 view->
SetView(phideg, thedeg, psideg, irep);
6519 gROOT->ProcessLine(cmd);
6521 if (Hoption.
Same)
return;
6550 while ((obj = next())) {
6556 if (Hoption.
Same != 1) {
6573 static const char *where =
"PaintInit";
6586 Hparam.
xlast = last;
6593 if (Hparam.
xmax<=0) {
6594 Error(where,
"cannot set X axis to log scale");
6601 for (i=first; i<=last; i++) {
6613 Error(where,
"cannot set X axis to log scale");
6623 if (Hparam.
xlast > last) Hparam.
xlast = last;
6637 Int_t nonNullErrors = 0;
6639 for (i=first; i<=last;i++) {
6647 if (Hoption.
Error) {
6652 if (e1 > 0) nonNullErrors++;
6665 while ((f = (
TObject*) next())) {
6669 fval = f1->
Eval(xv[0],0,0);
6673 if (c1 > 0 && fval > 0.3*c1) ymin =
TMath::Min(ymin,fval);
6681 if (!nonNullErrors) {
6682 if (Hoption.
Error) {
6691 if (Hoption.
Logy && ymin <= 0) {
6692 if (ymax >= 1) ymin =
TMath::Max(.005,ymax*1
e-10);
6693 else ymin = 0.001*
ymax;
6699 if (Hoption.
Logy && xm < 0) {
6700 Error(where,
"log scale requested with a negative argument (%f)", xm);
6702 }
else if (Hoption.
Logy && xm>=0 && ymax==0) {
6711 if (ymax > 0) ymin = 0.001*
ymax;
6713 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", ymax);
6721 }
else if (ymin < 0) {
6733 ymin = ymin*(1-1
E-14);
6734 ymax = ymax*(1+1
E-14);
6741 if (allchan) factor /= allchan;
6742 if (factor == 0) factor = 1;
6759 if (ymin <=0 || ymax <=0) {
6760 Error(where,
"Cannot set Y axis to log scale");
6767 if (!Hoption.
Same) {
6779 if (ymin >= 0) ymin = 0;
6780 else ymin -= yMARGIN*(ymax-
ymin);
6783 if (ymin >= 0 && (ymin-dymin <= 0)) ymin = 0;
6792 ymax += yMARGIN*(ymax-
ymin);
6806 static const char *where =
"PaintInitH";
6819 Hparam.
xlast = last;
6830 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
6831 Error(where,
"cannot set Y axis to log scale");
6838 if (Hparam.
xlast > last) Hparam.
xlast = last;
6853 for (i=first; i<=last;i++) {
6857 if (Hoption.
Error) {
6864 while ((f = (
TObject*) next())) {
6868 fval = f1->
Eval(xv[0],0,0);
6871 if (fval > 0.3*c1) xmin =
TMath::Min(xmin,fval);
6882 if (Hoption.
Logx && xmin <= 0) {
6884 else xmin = 0.001*
xmax;
6889 if (Hoption.
Logx && xm <= 0) {
6890 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
6896 if (xmax > 0) xmin = 0.001*
xmax;
6898 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", xmax);
6906 }
else if (xmin < 0) {
6920 if (allchan) factor /= allchan;
6921 if (factor == 0) factor = 1;
6931 if (xmin <=0 || xmax <=0) {
6932 Error(where,
"Cannot set Y axis to log scale");
6939 if (!Hoption.
Same) {
6950 if (xmin >= 0) xmin = 0;
6951 else xmin -= yMARGIN*(xmax-
xmin);
6958 xmax += yMARGIN*(xmax-
xmin);
6971 Double_t wxyz[8][3] = { {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
6972 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1} };
6973 Int_t iface[6][4] = { {0,3,2,1}, {4,5,6,7},
6974 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7} };
6994 Error(
"PaintH3",
"no TView in current pad");
7001 view->
SetView(phideg, thedeg, psideg, irep);
7003 Int_t backcolor =
gPad->GetFrameFillColor();
7019 Int_t incrx = (tnorm[ 8] < 0.) ? -1 : +1;
7020 Int_t incry = (tnorm[ 9] < 0.) ? -1 : +1;
7021 Int_t incrz = (tnorm[10] < 0.) ? -1 : +1;
7036 fH->TAttFill::Modify();
7037 fH->TAttLine::Modify();
7046 Double_t pmin[3], pmax[3], sxyz[8][3];
7047 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7050 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7053 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7063 if (w < wmin)
continue;
7064 if (w > wmax) w = wmax;
7066 if (scale == 0)
continue;
7067 for (
Int_t i=0; i<3; ++i) {
7068 Double_t c = (pmax[i] + pmin[i])*0.5;
7069 Double_t d = (pmax[i] - pmin[i])*scale;
7070 for (
Int_t k=0; k<8; ++k) {
7071 sxyz[k][i] = wxyz[k][i]*d + c;
7074 for (
Int_t k=0; k<8; ++k) {
7075 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7078 for (
Int_t k=0; k<6; ++k) {
7079 for (
Int_t i=0; i<4; ++i) {
7080 Int_t iv = iface[k][i];
7084 x[4] = x[0] ; y[4] = y[0];
7086 x[5] = x[2] ; y[5] = y[2];
7087 x[6] = x[3] ; y[6] = y[3];
7088 x[7] = x[1] ; y[7] = y[1];
7093 Double_t z = (x[2]-x[0])*(y[3]-y[1]) - (y[2]-y[0])*(x[3]-x[1]);
7094 if (z <= 0.)
continue;
7096 theColor = ncolors*((w-wmin)/(wmax-wmin)) -1;
7099 if (k == 3 || k == 5) {
7101 }
else if (k == 0 || k == 1) {
7107 fH->TAttFill::Modify();
7108 gPad->PaintFillArea(4, x, y);
7109 if (iopt != 3)
gPad->PaintPolyLine(n, x, y);
7127 fH->TAttFill::Modify();
7137 {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7138 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1}
7140 Int_t iface[6][4] = {
7141 {0,3,2,1}, {4,5,6,7},
7142 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}
7146 {0,-1,0}, {1,0,0}, {0,1,0}, {-1,0,0}
7167 Error(
"PaintH3",
"no TView in current pad");
7174 view->
SetView(phideg, thedeg, psideg, irep);
7176 Int_t backcolor =
gPad->GetFrameFillColor();
7191 Int_t incrx = (tnorm[ 8] < 0.) ? +1 : -1;
7192 Int_t incry = (tnorm[ 9] < 0.) ? +1 : -1;
7193 Int_t incrz = (tnorm[10] < 0.) ? +1 : -1;
7202 fH->TAttLine::Modify();
7205 const Int_t NTMAX = 100;
7210 Double_t pmin[3], pmax[3], sxyz[8][3], pp[4][2];
7211 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7214 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7217 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7226 if (w < wmin)
continue;
7227 if (w > wmax) w = wmax;
7229 if (scale == 0)
continue;
7230 for (
Int_t i=0; i<3; ++i) {
7231 Double_t c = (pmax[i] + pmin[i])*0.5;
7232 Double_t d = (pmax[i] - pmin[i])*scale;
7233 for (
Int_t k=0; k<8; ++k) {
7234 sxyz[k][i] = wxyz[k][i]*d + c;
7237 for (
Int_t k=0; k<8; ++k) {
7238 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7240 for (
Int_t k=0; k<6; ++k) {
7242 view->
FindNormal(normal[k][0], normal[k][1], normal[k][2], zn);
7243 if (zn <= 0)
continue;
7244 for (
Int_t i=0; i<4; ++i) {
7245 Int_t ip = iface[k][i];
7246 pp[i][0] = sxyz[ip][0];
7247 pp[i][1] = sxyz[ip][1];
7249 for (
Int_t i=0; i<4; ++i) {
7251 Int_t i2 = (i == 3) ? 0 : i + 1;
7254 Double_t xdel = pp[i2][0] - pp[i1][0];
7255 Double_t ydel = pp[i2][1] - pp[i1][1];
7257 for (
Int_t it = 0; it < nt; ++it) {
7258 x[0] = pp[i1][0] + xdel*tt[it][0];
7259 y[0] = pp[i1][1] + ydel*tt[it][0];
7260 x[1] = pp[i1][0] + xdel*tt[it][1];
7261 y[1] = pp[i1][1] + ydel*tt[it][1];
7262 gPad->PaintPolyLine(2, x, y);
7270 Double_t xdel = pp[i2][0] - pp[i1][0];
7271 Double_t ydel = pp[i2][1] - pp[i1][1];
7273 for (
Int_t it = 0; it < nt; ++it) {
7274 x[0] = pp[i1][0] + xdel*tt[it][0];
7275 y[0] = pp[i1][1] + ydel*tt[it][0];
7276 x[1] = pp[i1][0] + xdel*tt[it][1];
7277 y[1] = pp[i1][1] + ydel*tt[it][1];
7278 gPad->PaintPolyLine(2, x, y);
7283 xdel = pp[i2][0] - pp[i1][0];
7284 ydel = pp[i2][1] - pp[i1][1];
7285 for (
Int_t it = 0; it < nt; ++it) {
7286 x[0] = pp[i1][0] + xdel*tt[it][0];
7287 y[0] = pp[i1][1] + ydel*tt[it][0];
7288 x[1] = pp[i1][0] + xdel*tt[it][1];
7289 y[1] = pp[i1][1] + ydel*tt[it][1];
7290 gPad->PaintPolyLine(2, x, y);
7332 Int_t ic2 = ic1+nbcol;
7333 Int_t ic3 = ic2+nbcol;
7368 Error(
"PaintH3Iso",
"no TView in current pad");
7377 view->
SetView(phideg, thedeg, psideg, irep);
7379 Int_t backcolor =
gPad->GetFrameFillColor();
7395 for (
Int_t col=0;col<nbcol;col++) {
7396 acol =
gROOT->GetColor(col+icol1);
7398 if (acol) acol->
SetRGB(r, g, b);
7413 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
7441 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
7452 if (deltaz == 0) deltaz = 1;
7500 Color_t colormain = -1, colordark = -1;
7504 if (Hoption.
Lego == 13) {
7509 if (Hoption.
Lego == 14) {
7511 drawShadowsInLego1 =
kFALSE;
7537 if (Hoption.
Lego == 11) {
7541 for (
Int_t id=0;
id<=nids;
id++) {
7544 if (colormain == 1) colormain = 17;
7546 else colordark = colormain;
7559 Error(
"PaintLego",
"no TView in current pad");
7566 view->
SetView(phideg, thedeg, psideg, irep);
7574 fLego->TAttFill::Modify();
7576 Int_t backcolor =
gPad->GetFrameFillColor();
7582 fLego->TAttFill::Modify();
7589 if (Hoption.
Lego == 11 || Hoption.
Lego == 12) {
7619 if (Hoption.
Lego == 1) {
7626 if (Hoption.
Lego == 1 || Hoption.
Lego == 11) {
7654 Int_t ndivx, ndivy, ndivz, i;
7655 Double_t x1[3], x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
7656 static char chopax[8], chopay[8], chopaz[8];
7657 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
7662 Error(
"PaintLegoAxis",
"no TView in current pad");
7677 gPad->PaintLine(x1[0],x1[1],x2[0],x2[1]);
7687 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
7688 for (i = 1; i <= 8; ++i) {
7689 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
7690 r[i*3 - 2] = av[i*3 - 2]*sina;
7691 r[i*3 - 1] = av[i*3 - 1];
7694 view->
WCtoNDC(&r[ix1*3 - 3], x1);
7695 view->
WCtoNDC(&r[ix2*3 - 3], x2);
7696 view->
WCtoNDC(&r[iy1*3 - 3], y1);
7697 view->
WCtoNDC(&r[iy2*3 - 3], y2);
7698 view->
WCtoNDC(&r[iz1*3 - 3], z1);
7699 view->
WCtoNDC(&r[iz2*3 - 3], z2);
7705 if (!rmin || !rmax)
return;
7708 if (x1[0] > x2[0]) strlcpy(chopax,
"SDH=+",8);
7709 else strlcpy(chopax,
"SDH=-",8);
7710 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
7711 else strlcpy(chopay,
"SDH=-",8);
7712 if (z2[1] > z1[1]) strlcpy(chopaz,
"SDH=+",8);
7713 else strlcpy(chopaz,
"SDH=-",8);
7716 if (Hoption.
Logx) strlcat(chopax,
"G",8);
7717 if (Hoption.
Logy) strlcat(chopay,
"G",8);
7718 if (Hoption.
Logz) strlcat(chopaz,
"G",8);
7727 strlcat(chopax,
"N",8);
7731 strlcat(chopay,
"N",8);
7735 strlcat(chopaz,
"N",8);
7757 strlcat(chopax,
"t",8);
7765 axis->
PaintAxis(x1[0], x1[1], x2[0], x2[1], bmin, bmax, ndivx, chopax);
7775 strlcpy(chopay,
"V=+UN",8);
7790 strlcat(chopay,
"t",8);
7798 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
7813 strlcat(chopaz,
"t",8);
7821 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
7839 delete palette; palette = 0;
7844 delete palette; palette = 0;
7859 if (xmax > x2) xmax =
gPad->PadtoX(
gPad->GetX2()-0.01*xr);
7872 fH->TAttMarker::Modify();
7880 if (zmin == 0 && zmax == 0)
return;
7891 if (zmin == 0 && zmax == 0)
return;
7894 if (ncells > 10000) scale /= 5;
7898 if (dz >=
kNMAX || zmax < 1) {
7899 scale = (
kNMAX-1)/dz;
7900 if (ncells > 10000) scale /= 5;
7907 if (zmin >= 0) zmin = 0;
7908 else zmin -= yMARGIN*(zmax-zmin);
7910 Double_t dzmin = yMARGIN*(zmax-zmin);
7911 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
7920 strlcpy(optscat,opt.
Data(),100);
7921 char *oscat = strstr(optscat,
"scat=");
7922 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
7923 sscanf(oscat+5,
"%lg",&scale);
7937 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
7939 if (z < zmin) z = zmin;
7940 if (z > zmax) z = zmax;
7946 if (z <= 0)
continue;
7950 for (
Int_t loop=0; loop<k; loop++) {
7951 if (k+marker >=
kNMAX) {
7952 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
7955 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
7956 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
7958 if (fXbuf[marker] > 0) fXbuf[marker] =
TMath::Log10(fXbuf[marker]);
7965 if (fXbuf[marker] <
gPad->GetUxmin())
break;
7966 if (
fYbuf[marker] <
gPad->GetUymin())
break;
7967 if (fXbuf[marker] >
gPad->GetUxmax())
break;
7968 if (
fYbuf[marker] >
gPad->GetUymax())
break;
7974 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
7996 R__TMatrixFBase->
Draw(option);
8002 R__TMatrixDBase->
Draw(option);
8008 R__TVectorF->
Draw(option);
8014 R__TVectorD->
Draw(option);
8031 while ((obj = next())) {
8038 if (stats && dostat) {
8044 if (!dofit) fit = 0;
8045 if (dofit == 1) dofit = 111;
8046 if (dostat == 1) dostat = 1111;
8047 Int_t print_name = dostat%10;
8048 Int_t print_entries = (dostat/10)%10;
8049 Int_t print_mean = (dostat/100)%10;
8050 Int_t print_stddev = (dostat/1000)%10;
8051 Int_t print_under = (dostat/10000)%10;
8052 Int_t print_over = (dostat/100000)%10;
8053 Int_t print_integral= (dostat/1000000)%10;
8054 Int_t print_skew = (dostat/10000000)%10;
8055 Int_t print_kurt = (dostat/100000000)%10;
8056 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8057 print_under + print_over + print_integral +
8058 print_skew + print_kurt;
8059 Int_t print_fval = dofit%10;
8060 Int_t print_ferrors = (dofit/10)%10;
8061 Int_t print_fchi2 = (dofit/100)%10;
8062 Int_t print_fprob = (dofit/1000)%10;
8063 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8066 else nlinesf += fit->
GetNpar();
8072 if (!dostat && !fit) {
8111 if (print_entries) {
8118 if (print_mean == 1) {
8128 if (print_mean == 1) {
8140 if (print_stddev == 1) {
8150 if (print_stddev == 1) {
8171 if (print_integral) {
8172 if (print_integral == 1) {
8182 if (print_skew == 1) {
8193 if (print_kurt == 1) {
8209 if (print_fchi2) stats->
AddText(t);
8215 if (print_fval || print_ferrors) {
8220 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8224 if (print_ferrors) {
8257 while ((obj = next())) {
8263 if (stats && dostat) {
8269 if (dostat == 1) dostat = 1111;
8270 Int_t print_name = dostat%10;
8271 Int_t print_entries = (dostat/10)%10;
8272 Int_t print_mean = (dostat/100)%10;
8273 Int_t print_stddev = (dostat/1000)%10;
8274 Int_t print_under = (dostat/10000)%10;
8275 Int_t print_over = (dostat/100000)%10;
8276 Int_t print_integral= (dostat/1000000)%10;
8277 Int_t print_skew = (dostat/10000000)%10;
8278 Int_t print_kurt = (dostat/100000000)%10;
8279 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8280 if (print_under || print_over) nlines += 3;
8285 if (!dostat && !fit) {
8325 if (print_entries) {
8332 if (print_mean == 1) {
8351 if (print_stddev == 1) {
8369 if (print_integral) {
8375 if (print_skew == 1) {
8394 if (print_kurt == 1) {
8412 if (print_under || print_over) {
8423 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8424 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8425 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8426 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8427 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8428 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8429 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8430 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8431 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8476 while ((obj = next())) {
8482 if (stats && dostat) {
8488 if (dostat == 1) dostat = 1111;
8489 Int_t print_name = dostat%10;
8490 Int_t print_entries = (dostat/10)%10;
8491 Int_t print_mean = (dostat/100)%10;
8492 Int_t print_stddev = (dostat/1000)%10;
8493 Int_t print_under = (dostat/10000)%10;
8494 Int_t print_over = (dostat/100000)%10;
8495 Int_t print_integral= (dostat/1000000)%10;
8496 Int_t print_skew = (dostat/10000000)%10;
8497 Int_t print_kurt = (dostat/100000000)%10;
8498 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
8499 if (print_under || print_over) nlines += 3;
8504 if (!dostat && !fit) {
8542 if (print_entries) {
8549 if (print_mean == 1) {
8575 if (print_stddev == 1) {
8600 if (print_integral) {
8605 if (print_skew == 1) {
8631 if (print_kurt == 1) {
8656 if (print_under || print_over) {
8705 if (deltaz == 0) deltaz = 1;
8776 Error(
"PaintSurface",
"no TView in current pad");
8783 view->
SetView(phideg, thedeg, psideg, irep);
8793 fLego->TAttFill::Modify();
8795 Int_t backcolor =
gPad->GetFrameFillColor();
8801 fLego->TAttFill::Modify();
8807 if (Hoption.
Surf == 13 || Hoption.
Surf == 15) {
8817 Hoption.
Surf = hoption35;
8824 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 14 || Hoption.
Surf == 17) {
8833 if (Hoption.
Surf == 14) {
8839 fmax = fmin + (yligh1+0.1)*(qd+qs);
8844 if (!colref)
return;
8849 for (
Int_t col=0;col<nbcol;col++) {
8850 acol =
gROOT->GetColor(col+icol1);
8852 if (acol) acol->
SetRGB(r,g,b);
8862 }
else if (Hoption.
Surf == 15) {
8866 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 16 || Hoption.
Surf == 17) {
8895 if (Hoption.
Surf == 17) {
8908 if ((!Hoption.
Same) &&
8909 (Hoption.
Surf == 1 || Hoption.
Surf == 13 || Hoption.
Surf == 16)) {
8941 if (!dt && !dtOld)
return;
8950 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
8954 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
8959 if (!rmin || !rmax)
return;
8967 fXbuf[0] = Hparam.
xmin;
8969 fXbuf[1] = Hparam.
ymin;
8971 fXbuf[2] = Hparam.
zmin;
8978 Error(
"PaintTriangles",
"no TView in current pad");
8985 view->
SetView(phideg, thedeg, psideg, irep);
8990 fLego->TAttFill::Modify();
8991 Int_t backcolor =
gPad->GetFrameFillColor();
8996 fLego->TAttFill::Modify();
9017 if (!Hoption.
Axis && !Hoption.
Same) {
9038 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
9045 for (i = 0; i < ndivz; ++i) {
9052 delete [] colorlevel;
9075 if (Hoption.
Func == 2) {
9098 if (Hoption.
Color) {
9116 if (!Hoption.
Lego && !Hoption.
Surf &&
9122 while ((obj = next())) {
9128 if (Hoption.
Same != 1) {
9130 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9150 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9167 while ((obj=next())) {
9170 if (z==0 && Hoption.
Zero)
continue;
9176 g->TAttLine::Modify();
9177 g->TAttMarker::Modify();
9178 g->TAttFill::Modify();
9188 if (fill) g->
Paint(
"F");
9189 if (mark) g->
Paint(
"P");
9199 while ((g = (
TGraph*) nextg())) {
9200 g->TAttLine::Modify();
9201 g->TAttMarker::Modify();
9202 g->TAttFill::Modify();
9212 if (fill) g->
Paint(
"F");
9213 if (mark) g->
Paint(
"P");
9226 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9229 Int_t ncolors, color, theColor;
9260 while ((obj=next())) {
9265 if (z==0 && Hoption.
Zero)
continue;
9270 if (z < zmin)
continue;
9275 if (z < zc)
continue;
9277 for (
Int_t k=0; k<ndiv; k++) {
9286 color =
Int_t(0.01+(z-zmin)*scale);
9289 if (theColor > ncolors-1) theColor = ncolors-1;
9295 g->TAttFill::Modify();
9306 while ((g = (
TGraph*) nextg())) {
9308 g->TAttFill::Modify();
9323 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9326 Int_t k, loop, marker=0;
9327 Double_t z, xk,xstep, yk, ystep, xp, yp;
9341 scale = (
kNMAX-1)/dz;
9355 while ((obj=next())) {
9358 if (
a>maxarea) maxarea =
a;
9363 while ((obj=next())) {
9367 if (z < zmin) z = zmin;
9368 if (z > zmax) z = zmax;
9383 if (k <= 0 || z <= 0)
continue;
9386 if (k+marker >=
kNMAX) {
9387 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9390 xp = (random.
Rndm()*xstep) + xk;
9391 yp = (random.
Rndm()*ystep) + yk;
9399 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9407 if (k <= 0 || z <= 0)
continue;
9410 if (k+marker >=
kNMAX) {
9411 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9414 xp = (random.
Rndm()*xstep) + xk;
9415 yp = (random.
Rndm()*ystep) + yk;
9423 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9448 if (Hoption.
Text == 1) angle = 0;
9450 text.TAttText::Modify();
9457 while ((obj=next())) {
9474 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9514 if (Hoption.
Text == 1) angle = 90;
9518 text.TAttText::Modify();
9532 if (yt == 0.)
continue;
9542 if (y >=
gPad->GetY2())
continue;
9543 if (y <= gPad->GetY1())
continue;
9550 if (Hoption.
Text == 1) angle = 0;
9552 text.TAttText::Modify();
9569 if (Hoption.
Text>2000) {
9571 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9609 Error(
"PaintTF3",
"no TView in current pad");
9615 view->
SetView(phideg, thedeg, psideg, irep);
9661 if (Hoption.
Same)
return;
9666 TIter next(
gPad->GetListOfPrimitives());
9667 while ((obj = next())) {
9670 if (strcmp(title->GetName(),
"title")) {title = 0;
continue;}
9674 if (title)
delete title;
9680 if (ht <= 0) ht = 0.05;
9695 if (wt > 0) title->SetX2NDC(title->GetX1NDC()+wt);
9701 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
9703 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
9707 if (talh == 2) xpos = xpos-wt/2.;
9708 if (talh == 3) xpos = xpos-wt;
9709 if (talv == 2) ypos = ypos+ht/2.;
9710 if (talv == 1) ypos = ypos+ht;
9728 if(!
gPad->IsEditable())
delete ptitle;
9737 if (!strcmp(mess,
"SetF3")) {
9739 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
9741 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
9835 if (Hoption.
Same)
return;
9843 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
9851 if (xmin > xmin_aid) xmin = xmin_aid;
9852 if (ymin > ymin_aid) ymin = ymin_aid;
9853 if (xmax < xmax_aid) xmax = xmax_aid;
9854 if (ymax < ymax_aid) ymax = ymax_aid;
9855 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9859 if (xmin >xmin_aid) xmin = xmin_aid;
9860 if (xmax <xmax_aid) xmax = xmax_aid;
9862 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9865 if (ymin >ymin_aid) ymin = ymin_aid;
9866 if (ymax <ymax_aid) ymax = ymax_aid;
9868 }
else if ( Hoption.
Proj ==2) {
9869 if (Hparam.
ymin <= -90 || Hparam.
ymax >=90) {
9870 Warning(
"Mercator Projection",
"Latitude out of range %f or %f", Hparam.
ymin, Hparam.
ymax);
9876 }
else if (Hoption.
Proj == 3) {
9882 if (xmin > xmin_aid) xmin = xmin_aid;
9883 if (ymin > ymin_aid) ymin = ymin_aid;
9884 if (xmax < xmax_aid) xmax = xmax_aid;
9885 if (ymax < ymax_aid) ymax = ymax_aid;
9886 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9889 if (xmin >xmin_aid) xmin = xmin_aid;
9890 if (xmax <xmax_aid) xmax = xmax_aid;
9892 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9895 if (ymin >ymin_aid) ymin = ymin_aid;
9896 if (ymax <ymax_aid) ymax = ymax_aid;
9898 }
else if (Hoption.
Proj == 4) {
9904 if (xmin > xmin_aid) xmin = xmin_aid;
9905 if (ymin > ymin_aid) ymin = ymin_aid;
9906 if (xmax < xmax_aid) xmax = xmax_aid;
9907 if (ymax < ymax_aid) ymax = ymax_aid;
9908 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9911 if (xmin >xmin_aid) xmin = xmin_aid;
9912 if (xmax <xmax_aid) xmax = xmax_aid;
9914 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9917 if (ymin >ymin_aid) ymin = ymin_aid;
9918 if (ymax <ymax_aid) ymax = ymax_aid;
9933 gPad->Range(xmin - dxr*
gPad->GetLeftMargin(),
9934 ymin - dyr*
gPad->GetBottomMargin(),
9935 xmax + dxr*
gPad->GetRightMargin(),
9936 ymax + dyr*
gPad->GetTopMargin());
9937 gPad->RangeAxis(xmin, ymin, xmax, ymax);
9960 static const char *where =
"TableInit";
9973 Hparam.
xlast = last;
9987 if (Hparam.
xmin <=0 || Hparam.
xmax <=0) {
9988 Error(where,
"cannot set X axis to log scale");
9994 if (Hparam.
xlast > last) Hparam.
xlast = last;
10002 Hparam.
ylast = last;
10011 if (Hoption.
Logy) {
10016 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
10017 Error(where,
"cannot set Y axis to log scale");
10023 if (Hparam.
ylast > last) Hparam.
ylast = last;
10039 if (Hoption.
Error) {
10052 if (Hoption.
Logz && zmax < 0) {
10053 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10055 }
else if (Hoption.
Logz && zmin>=0 && zmax==0) {
10059 if (zmin >= zmax) {
10060 if (Hoption.
Logz) {
10061 if (zmax > 0) zmin = 0.001*zmax;
10063 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10073 if (allchan) factor /= allchan;
10074 if (factor == 0) factor = 1;
10076 zmax = factor*zmax;
10077 zmin = factor*zmin;
10085 if (Hoption.
Logz) {
10103 zmax += yMARGIN*(zmax-zmin);
10111 if (zmin >= 0) zmin = 0;
10112 else zmin -= yMARGIN*(zmax-zmin);
10114 Double_t dzmin = yMARGIN*(zmax-zmin);
10115 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10116 else zmin -= dzmin;
10121 Hparam.
zmin = zmin;
10122 Hparam.
zmax = zmax;
10138 static char ef[20];
10139 char tf[20], tv[64];
10148 int iE = sv.
Index(
"E");
10149 int id = sv.
Index(
".");
10153 if (ie >= 0 || iE >= 0) {
10154 if (sv.
Index(
"+") >= 0) {
10159 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10161 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10166 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10168 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10173 }
else if (
id < 0) {
10194 Int_t projection = 0;
10195 if (opt.
Contains(
"x")) projection = 1;
10196 if (opt.
Contains(
"y")) projection = 2;
10197 if (opt.
Contains(
"z")) projection = 3;
10198 if (opt.
Contains(
"xy")) projection = 4;
10199 if (opt.
Contains(
"yx")) projection = 5;
10201 if (opt.
Contains(
"zx")) projection = 7;
10202 if (opt.
Contains(
"yz")) projection = 8;
10203 if (opt.
Contains(
"zy")) projection = 9;
10207 gROOT->MakeDefCanvas();
10219 gPad->SetDoubleBuffer(0);
10223 static int pyold1 = 0;
10224 static int pyold2 = 0;
10225 float uxmin =
gPad->GetUxmin();
10226 float uxmax =
gPad->GetUxmax();
10228 int pxmax =
gPad->XtoAbsPixel(uxmax);
10231 Int_t biny1 = fH->GetYaxis()->FindBin(y);
10233 Int_t py1 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinLowEdge(biny1));
10234 Int_t py2 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinUpEdge(biny2));
10259 TH1D *hp = ((
TH2*)fH)->ProjectionX(prjName, biny1, biny2);
10264 if (biny1 == biny2) {
10265 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
10266 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny1);
10269 if (fH->GetYaxis()->GetLabels() !=
NULL) {
10270 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf] %s", biny1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetYaxis()->GetBinLabel(biny1)));
10272 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10275 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
10276 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny2);
10281 if (fH->GetYaxis()->GetLabels() !=
NULL) {
10282 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)));
10284 hp->SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10287 hp->SetXTitle(fH->GetXaxis()->GetTitle());
10288 hp->SetYTitle(
"Number of Entries");
10302 gPad->SetDoubleBuffer(0);
10306 static int pxold1 = 0;
10307 static int pxold2 = 0;
10308 float uymin =
gPad->GetUymin();
10309 float uymax =
gPad->GetUymax();
10311 int pymax =
gPad->YtoAbsPixel(uymax);
10314 Int_t binx1 = fH->GetXaxis()->FindBin(x);
10316 Int_t px1 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinLowEdge(binx1));
10317 Int_t px2 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinUpEdge(binx2));
10342 TH1D *hp = ((
TH2*)fH)->ProjectionY(prjName, binx1, binx2);
10347 if (binx1 == binx2) {
10348 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
10349 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx1);
10352 if (fH->GetXaxis()->GetLabels() !=
NULL) {
10353 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf] [%s]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetXaxis()->GetBinLabel(binx1)));
10355 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10358 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
10359 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx2);
10364 if (fH->GetXaxis()->GetLabels() !=
NULL) {
10365 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)));
10367 hp->SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10370 hp->SetXTitle(fH->GetYaxis()->GetTitle());
10371 hp->SetYTitle(
"Number of Entries");
10390 if (fH->GetDimension() < 3) {
10395 gPad->SetDoubleBuffer(0);
10411 static TPoint endface1[5];
10412 static TPoint endface2[5];
10421 int pxmin =
gPad->XtoAbsPixel(uxmin);
10422 int pxmax =
gPad->XtoAbsPixel(uxmax);
10423 if (pxmin==pxmax)
return;
10424 int pymin =
gPad->YtoAbsPixel(uymin);
10425 int pymax =
gPad->YtoAbsPixel(uymax);
10426 if (pymin==pymax)
return;
10427 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10428 Double_t cy = (pymax-pymin)/(uymax-uymin);
10443 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10447 Int_t lastZ = zaxis->
GetLast();
10448 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10451 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10452 if (nbins>1 && line1[0].GetX()) {
10463 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10464 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10467 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10468 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10475 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10476 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10479 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10480 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10486 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10487 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10490 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10491 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10497 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10498 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10501 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10502 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10504 endface1[0].
SetX(line1[0].GetX());
10505 endface1[0].
SetY(line1[0].GetY());
10506 endface1[1].
SetX(line2[0].GetX());
10507 endface1[1].
SetY(line2[0].GetY());
10508 endface1[2].
SetX(line3[0].GetX());
10509 endface1[2].
SetY(line3[0].GetY());
10510 endface1[3].
SetX(line4[0].GetX());
10511 endface1[3].
SetY(line4[0].GetY());
10512 endface1[4].
SetX(line1[0].GetX());
10513 endface1[4].
SetY(line1[0].GetY());
10515 endface2[0].
SetX(line1[1].GetX());
10516 endface2[0].
SetY(line1[1].GetY());
10517 endface2[1].
SetX(line2[1].GetX());
10518 endface2[1].
SetY(line2[1].GetY());
10519 endface2[2].
SetX(line3[1].GetX());
10520 endface2[2].
SetY(line3[1].GetY());
10521 endface2[3].
SetX(line4[1].GetX());
10522 endface2[3].
SetY(line4[1].GetY());
10523 endface2[4].
SetX(line1[1].GetX());
10524 endface2[4].
SetY(line1[1].GetY());
10546 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10558 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10562 Int_t lastZ = zaxis->
GetLast();
10563 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10566 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10567 if (nbins>1 && line1[0].GetX()) {
10578 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10579 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10582 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10583 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10590 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10591 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10594 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10595 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10601 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10602 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10605 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10606 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10612 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10613 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10616 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10617 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10619 endface1[0].
SetX(line1[0].GetX());
10620 endface1[0].
SetY(line1[0].GetY());
10621 endface1[1].
SetX(line2[0].GetX());
10622 endface1[1].
SetY(line2[0].GetY());
10623 endface1[2].
SetX(line3[0].GetX());
10624 endface1[2].
SetY(line3[0].GetY());
10625 endface1[3].
SetX(line4[0].GetX());
10626 endface1[3].
SetY(line4[0].GetY());
10627 endface1[4].
SetX(line1[0].GetX());
10628 endface1[4].
SetY(line1[0].GetY());
10630 endface2[0].
SetX(line1[1].GetX());
10631 endface2[0].
SetY(line1[1].GetY());
10632 endface2[1].
SetX(line2[1].GetX());
10633 endface2[1].
SetY(line2[1].GetY());
10634 endface2[2].
SetX(line3[1].GetX());
10635 endface2[2].
SetY(line3[1].GetY());
10636 endface2[3].
SetX(line4[1].GetX());
10637 endface2[3].
SetY(line4[1].GetY());
10638 endface2[4].
SetX(line1[1].GetX());
10639 endface2[4].
SetY(line1[1].GetY());
10660 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10672 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10676 Int_t lastY = yaxis->
GetLast();
10677 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
10680 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10681 if (nbins>1 && line1[0].GetX()) {
10692 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10693 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10696 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10697 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10704 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10705 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10708 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10709 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10715 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10716 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10719 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10720 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10726 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10727 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10730 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10731 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10733 endface1[0].
SetX(line1[0].GetX());
10734 endface1[0].
SetY(line1[0].GetY());
10735 endface1[1].
SetX(line2[0].GetX());
10736 endface1[1].
SetY(line2[0].GetY());
10737 endface1[2].
SetX(line3[0].GetX());
10738 endface1[2].
SetY(line3[0].GetY());
10739 endface1[3].
SetX(line4[0].GetX());
10740 endface1[3].
SetY(line4[0].GetY());
10741 endface1[4].
SetX(line1[0].GetX());
10742 endface1[4].
SetY(line1[0].GetY());
10744 endface2[0].
SetX(line1[1].GetX());
10745 endface2[0].
SetY(line1[1].GetY());
10746 endface2[1].
SetX(line2[1].GetX());
10747 endface2[1].
SetY(line2[1].GetY());
10748 endface2[2].
SetX(line3[1].GetX());
10749 endface2[2].
SetY(line3[1].GetY());
10750 endface2[3].
SetX(line4[1].GetX());
10751 endface2[3].
SetY(line4[1].GetY());
10752 endface2[4].
SetX(line1[1].GetX());
10753 endface2[4].
SetY(line1[1].GetY());
10774 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10786 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10789 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10790 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10795 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10796 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10797 rect1[4].
SetX(rect1[0].GetX());
10798 rect1[4].
SetY(rect1[0].GetY());
10801 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10802 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10805 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10806 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10809 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10810 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10817 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10818 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10819 rect2[4].
SetX(rect2[0].GetX());
10820 rect2[4].
SetY(rect2[0].GetY());
10823 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10824 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10827 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10828 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10831 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10832 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10844 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10845 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10857 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10860 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10861 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10866 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10867 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10868 rect1[4].
SetX(rect1[0].GetX());
10869 rect1[4].
SetY(rect1[0].GetY());
10872 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10873 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10876 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10877 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10880 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10881 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10888 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10889 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10890 rect2[4].
SetX(rect2[0].GetX());
10891 rect2[4].
SetY(rect2[0].GetY());
10894 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10895 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10898 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10899 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10902 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10903 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10914 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10915 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
10927 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10930 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10931 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10936 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10937 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10938 rect1[4].
SetX(rect1[0].GetX());
10939 rect1[4].
SetY(rect1[0].GetY());
10942 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10943 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10946 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10947 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10950 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10951 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10958 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10959 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10960 rect2[4].
SetX(rect2[0].GetX());
10961 rect2[4].
SetY(rect2[0].GetY());
10964 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10965 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10968 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10969 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10972 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10973 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10984 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10985 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10997 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
11000 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11001 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11006 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11007 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11008 rect1[4].
SetX(rect1[0].GetX());
11009 rect1[4].
SetY(rect1[0].GetY());
11012 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11013 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11016 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11017 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11020 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11021 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11028 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11029 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11030 rect2[4].
SetX(rect2[0].GetX());
11031 rect2[4].
SetY(rect2[0].GetY());
11034 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11035 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11038 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11039 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11042 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11043 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11054 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
11055 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
11067 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
11070 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11071 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11076 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11077 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11078 rect1[4].
SetX(rect1[0].GetX());
11079 rect1[4].
SetY(rect1[0].GetY());
11082 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11083 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11086 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11087 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11090 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11091 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11098 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11099 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11100 rect2[4].
SetX(rect2[0].GetX());
11101 rect2[4].
SetY(rect2[0].GetY());
11104 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11105 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11108 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11109 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11112 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11113 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11124 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
11125 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
11137 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
11140 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11141 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11146 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11147 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11148 rect1[4].
SetX(rect1[0].GetX());
11149 rect1[4].
SetY(rect1[0].GetY());
11152 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11153 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11156 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11157 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11160 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11161 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11168 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11169 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11170 rect2[4].
SetX(rect2[0].GetX());
11171 rect2[4].
SetY(rect2[0].GetY());
11174 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11175 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11178 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11179 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11182 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11183 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11194 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
11195 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.
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 void PaintH3Box(Int_t iopt)
Control function to draw a 3D histogram with boxes.
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, which may contain a combination of the characters x,y,z,e.
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
virtual 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
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 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.
static struct mg_connection * fc(struct mg_context *ctx)
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 or violin 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.
clip to the frame boundary
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
constexpr Double_t DegToRad()
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 Double_t * GetTnorm()=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.
user specified contour levels
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.
virtual 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 iso-surfaces for a scalar function defined on a grid.
void FrontBox(Double_t ang)
Draw front surfaces 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 Float_t GetTitleOffset() const
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.
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.
void DrawLevelLines(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw level lines without hidden line removal.
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 FindNormal(Double_t x, Double_t y, Double_t z, Double_t &zn)=0
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.
long Candle
"CANDLE" Draw a 2D histogram as candle/box plot or violin plot (also with "VIOLIN").
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.
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 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 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
constexpr Double_t RadToDeg()
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.
void FindVisibleLine(Double_t *p1, Double_t *p2, Int_t ntmax, Int_t &nt, Double_t *t)
Find visible part of a line ("RASTER SCREEN")
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.
def normal(shape, name=None)
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 SetTitleOffset(Float_t titleoffset=1)
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.
constexpr Double_t PiOver2()
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]
void FillPolygonBorder(Int_t nn, Double_t *xy)
Fill a polygon including border ("RASTER SCREEN")
unsigned int r2[N_CITIES]
virtual void PaintH3BoxRaster()
Control function to draw a 3D histogram with boxes.
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.
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).
don't draw the histogram title
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)