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()) ) {
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);
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;
5674 Int_t first = ncontour;
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);
7774 strlcpy(chopay,
"V=+UN",8);
7789 strlcat(chopay,
"t",8);
7797 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
7812 strlcat(chopaz,
"t",8);
7820 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
7838 delete palette; palette = 0;
7843 delete palette; palette = 0;
7858 if (xmax > x2) xmax =
gPad->PadtoX(
gPad->GetX2()-0.01*xr);
7871 fH->TAttMarker::Modify();
7879 if (zmin == 0 && zmax == 0)
return;
7890 if (zmin == 0 && zmax == 0)
return;
7893 if (ncells > 10000) scale /= 5;
7897 if (dz >=
kNMAX || zmax < 1) {
7898 scale = (
kNMAX-1)/dz;
7899 if (ncells > 10000) scale /= 5;
7906 if (zmin >= 0) zmin = 0;
7907 else zmin -= yMARGIN*(zmax-zmin);
7909 Double_t dzmin = yMARGIN*(zmax-zmin);
7910 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
7919 strlcpy(optscat,opt.
Data(),100);
7920 char *oscat = strstr(optscat,
"scat=");
7921 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
7922 sscanf(oscat+5,
"%lg",&scale);
7936 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
7938 if (z < zmin) z = zmin;
7939 if (z > zmax) z = zmax;
7945 if (z <= 0)
continue;
7949 for (
Int_t loop=0; loop<k; loop++) {
7950 if (k+marker >=
kNMAX) {
7951 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
7954 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
7955 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
7957 if (fXbuf[marker] > 0) fXbuf[marker] =
TMath::Log10(fXbuf[marker]);
7964 if (fXbuf[marker] <
gPad->GetUxmin())
break;
7965 if (
fYbuf[marker] <
gPad->GetUymin())
break;
7966 if (fXbuf[marker] >
gPad->GetUxmax())
break;
7967 if (
fYbuf[marker] >
gPad->GetUymax())
break;
7973 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
7995 R__TMatrixFBase->
Draw(option);
8001 R__TMatrixDBase->
Draw(option);
8007 R__TVectorF->
Draw(option);
8013 R__TVectorD->
Draw(option);
8030 while ((obj = next())) {
8037 if (stats && dostat) {
8043 if (!dofit) fit = 0;
8044 if (dofit == 1) dofit = 111;
8045 if (dostat == 1) dostat = 1111;
8046 Int_t print_name = dostat%10;
8047 Int_t print_entries = (dostat/10)%10;
8048 Int_t print_mean = (dostat/100)%10;
8049 Int_t print_stddev = (dostat/1000)%10;
8050 Int_t print_under = (dostat/10000)%10;
8051 Int_t print_over = (dostat/100000)%10;
8052 Int_t print_integral= (dostat/1000000)%10;
8053 Int_t print_skew = (dostat/10000000)%10;
8054 Int_t print_kurt = (dostat/100000000)%10;
8055 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8056 print_under + print_over + print_integral +
8057 print_skew + print_kurt;
8058 Int_t print_fval = dofit%10;
8059 Int_t print_ferrors = (dofit/10)%10;
8060 Int_t print_fchi2 = (dofit/100)%10;
8061 Int_t print_fprob = (dofit/1000)%10;
8062 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8065 else nlinesf += fit->
GetNpar();
8071 if (!dostat && !fit) {
8110 if (print_entries) {
8117 if (print_mean == 1) {
8127 if (print_mean == 1) {
8139 if (print_stddev == 1) {
8149 if (print_stddev == 1) {
8170 if (print_integral) {
8171 if (print_integral == 1) {
8181 if (print_skew == 1) {
8192 if (print_kurt == 1) {
8208 if (print_fchi2) stats->
AddText(t);
8214 if (print_fval || print_ferrors) {
8219 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8223 if (print_ferrors) {
8256 while ((obj = next())) {
8262 if (stats && dostat) {
8268 if (dostat == 1) dostat = 1111;
8269 Int_t print_name = dostat%10;
8270 Int_t print_entries = (dostat/10)%10;
8271 Int_t print_mean = (dostat/100)%10;
8272 Int_t print_stddev = (dostat/1000)%10;
8273 Int_t print_under = (dostat/10000)%10;
8274 Int_t print_over = (dostat/100000)%10;
8275 Int_t print_integral= (dostat/1000000)%10;
8276 Int_t print_skew = (dostat/10000000)%10;
8277 Int_t print_kurt = (dostat/100000000)%10;
8278 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8279 if (print_under || print_over) nlines += 3;
8284 if (!dostat && !fit) {
8324 if (print_entries) {
8331 if (print_mean == 1) {
8350 if (print_stddev == 1) {
8368 if (print_integral) {
8374 if (print_skew == 1) {
8393 if (print_kurt == 1) {
8411 if (print_under || print_over) {
8422 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8423 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8424 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8425 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8426 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8427 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8428 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8429 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8430 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8445 Int_t ndf = fit->GetNDF();
8446 snprintf(t,100,
"#chi^{2} / ndf = %6.4g / %d",(
Float_t)fit->GetChisquare(),ndf);
8448 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
8449 snprintf(t,100,
"%-8s = %5.4g #pm %5.4g ",fit->GetParName(ipar)
8450 ,(
Float_t)fit->GetParameter(ipar)
8451 ,(
Float_t)fit->GetParError(ipar));
8475 while ((obj = next())) {
8481 if (stats && dostat) {
8487 if (dostat == 1) dostat = 1111;
8488 Int_t print_name = dostat%10;
8489 Int_t print_entries = (dostat/10)%10;
8490 Int_t print_mean = (dostat/100)%10;
8491 Int_t print_stddev = (dostat/1000)%10;
8492 Int_t print_under = (dostat/10000)%10;
8493 Int_t print_over = (dostat/100000)%10;
8494 Int_t print_integral= (dostat/1000000)%10;
8495 Int_t print_skew = (dostat/10000000)%10;
8496 Int_t print_kurt = (dostat/100000000)%10;
8497 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
8498 if (print_under || print_over) nlines += 3;
8503 if (!dostat && !fit) {
8541 if (print_entries) {
8548 if (print_mean == 1) {
8574 if (print_stddev == 1) {
8599 if (print_integral) {
8604 if (print_skew == 1) {
8630 if (print_kurt == 1) {
8655 if (print_under || print_over) {
8704 if (deltaz == 0) deltaz = 1;
8775 Error(
"PaintSurface",
"no TView in current pad");
8782 view->
SetView(phideg, thedeg, psideg, irep);
8792 fLego->TAttFill::Modify();
8794 Int_t backcolor =
gPad->GetFrameFillColor();
8800 fLego->TAttFill::Modify();
8806 if (Hoption.
Surf == 13 || Hoption.
Surf == 15) {
8816 Hoption.
Surf = hoption35;
8823 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 14 || Hoption.
Surf == 17) {
8832 if (Hoption.
Surf == 14) {
8838 fmax = fmin + (yligh1+0.1)*(qd+qs);
8843 if (!colref)
return;
8848 for (
Int_t col=0;col<nbcol;col++) {
8849 acol =
gROOT->GetColor(col+icol1);
8851 if (acol) acol->
SetRGB(r,g,b);
8861 }
else if (Hoption.
Surf == 15) {
8865 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 16 || Hoption.
Surf == 17) {
8894 if (Hoption.
Surf == 17) {
8907 if ((!Hoption.
Same) &&
8908 (Hoption.
Surf == 1 || Hoption.
Surf == 13 || Hoption.
Surf == 16)) {
8940 if (!dt && !dtOld)
return;
8949 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
8953 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
8958 if (!rmin || !rmax)
return;
8966 fXbuf[0] = Hparam.
xmin;
8968 fXbuf[1] = Hparam.
ymin;
8970 fXbuf[2] = Hparam.
zmin;
8977 Error(
"PaintTriangles",
"no TView in current pad");
8984 view->
SetView(phideg, thedeg, psideg, irep);
8989 fLego->TAttFill::Modify();
8990 Int_t backcolor =
gPad->GetFrameFillColor();
8995 fLego->TAttFill::Modify();
9016 if (!Hoption.
Axis && !Hoption.
Same) {
9037 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
9044 for (i = 0; i < ndivz; ++i) {
9051 delete [] colorlevel;
9074 if (Hoption.
Func == 2) {
9097 if (Hoption.
Color) {
9115 if (!Hoption.
Lego && !Hoption.
Surf &&
9121 while ((obj = next())) {
9127 if (Hoption.
Same != 1) {
9129 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9149 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9166 while ((obj=next())) {
9169 if (z==0 && Hoption.
Zero)
continue;
9175 g->TAttLine::Modify();
9176 g->TAttMarker::Modify();
9177 g->TAttFill::Modify();
9187 if (fill) g->
Paint(
"F");
9188 if (mark) g->
Paint(
"P");
9198 while ((g = (
TGraph*) nextg())) {
9199 g->TAttLine::Modify();
9200 g->TAttMarker::Modify();
9201 g->TAttFill::Modify();
9211 if (fill) g->
Paint(
"F");
9212 if (mark) g->
Paint(
"P");
9225 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9228 Int_t ncolors, color, theColor;
9259 while ((obj=next())) {
9264 if (z==0 && Hoption.
Zero)
continue;
9269 if (z < zmin)
continue;
9274 if (z < zc)
continue;
9276 for (
Int_t k=0; k<ndiv; k++) {
9285 color =
Int_t(0.01+(z-zmin)*scale);
9288 if (theColor > ncolors-1) theColor = ncolors-1;
9294 g->TAttFill::Modify();
9305 while ((g = (
TGraph*) nextg())) {
9307 g->TAttFill::Modify();
9322 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9325 Int_t k, loop, marker=0;
9326 Double_t z, xk,xstep, yk, ystep, xp, yp;
9340 scale = (
kNMAX-1)/dz;
9354 while ((obj=next())) {
9357 if (a>maxarea) maxarea =
a;
9362 while ((obj=next())) {
9366 if (z < zmin) z = zmin;
9367 if (z > zmax) z = zmax;
9382 if (k <= 0 || z <= 0)
continue;
9385 if (k+marker >=
kNMAX) {
9386 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9389 xp = (random.
Rndm()*xstep) + xk;
9390 yp = (random.
Rndm()*ystep) + yk;
9398 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9406 if (k <= 0 || z <= 0)
continue;
9409 if (k+marker >=
kNMAX) {
9410 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9413 xp = (random.
Rndm()*xstep) + xk;
9414 yp = (random.
Rndm()*ystep) + yk;
9422 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9447 if (Hoption.
Text == 1) angle = 0;
9449 text.TAttText::Modify();
9456 while ((obj=next())) {
9473 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9513 if (Hoption.
Text == 1) angle = 90;
9517 text.TAttText::Modify();
9531 if (yt == 0.)
continue;
9541 if (y >=
gPad->GetY2())
continue;
9542 if (y <= gPad->GetY1())
continue;
9549 if (Hoption.
Text == 1) angle = 0;
9551 text.TAttText::Modify();
9568 if (Hoption.
Text>2000) {
9570 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9608 Error(
"PaintTF3",
"no TView in current pad");
9614 view->
SetView(phideg, thedeg, psideg, irep);
9660 if (Hoption.
Same)
return;
9665 TIter next(
gPad->GetListOfPrimitives());
9666 while ((obj = next())) {
9669 if (strcmp(title->GetName(),
"title")) {title = 0;
continue;}
9673 if (title)
delete title;
9679 if (ht <= 0) ht = 0.05;
9694 if (wt > 0) title->SetX2NDC(title->GetX1NDC()+wt);
9700 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
9702 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
9706 if (talh == 2) xpos = xpos-wt/2.;
9707 if (talh == 3) xpos = xpos-wt;
9708 if (talv == 2) ypos = ypos+ht/2.;
9709 if (talv == 1) ypos = ypos+ht;
9727 if(!
gPad->IsEditable())
delete ptitle;
9736 if (!strcmp(mess,
"SetF3")) {
9738 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
9740 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
9834 if (Hoption.
Same)
return;
9842 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
9850 if (xmin > xmin_aid) xmin = xmin_aid;
9851 if (ymin > ymin_aid) ymin = ymin_aid;
9852 if (xmax < xmax_aid) xmax = xmax_aid;
9853 if (ymax < ymax_aid) ymax = ymax_aid;
9854 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9858 if (xmin >xmin_aid) xmin = xmin_aid;
9859 if (xmax <xmax_aid) xmax = xmax_aid;
9861 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9864 if (ymin >ymin_aid) ymin = ymin_aid;
9865 if (ymax <ymax_aid) ymax = ymax_aid;
9867 }
else if ( Hoption.
Proj ==2) {
9868 if (Hparam.
ymin <= -90 || Hparam.
ymax >=90) {
9869 Warning(
"Mercator Projection",
"Latitude out of range %f or %f", Hparam.
ymin, Hparam.
ymax);
9875 }
else if (Hoption.
Proj == 3) {
9881 if (xmin > xmin_aid) xmin = xmin_aid;
9882 if (ymin > ymin_aid) ymin = ymin_aid;
9883 if (xmax < xmax_aid) xmax = xmax_aid;
9884 if (ymax < ymax_aid) ymax = ymax_aid;
9885 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9888 if (xmin >xmin_aid) xmin = xmin_aid;
9889 if (xmax <xmax_aid) xmax = xmax_aid;
9891 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9894 if (ymin >ymin_aid) ymin = ymin_aid;
9895 if (ymax <ymax_aid) ymax = ymax_aid;
9897 }
else if (Hoption.
Proj == 4) {
9903 if (xmin > xmin_aid) xmin = xmin_aid;
9904 if (ymin > ymin_aid) ymin = ymin_aid;
9905 if (xmax < xmax_aid) xmax = xmax_aid;
9906 if (ymax < ymax_aid) ymax = ymax_aid;
9907 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9910 if (xmin >xmin_aid) xmin = xmin_aid;
9911 if (xmax <xmax_aid) xmax = xmax_aid;
9913 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9916 if (ymin >ymin_aid) ymin = ymin_aid;
9917 if (ymax <ymax_aid) ymax = ymax_aid;
9932 gPad->Range(xmin - dxr*
gPad->GetLeftMargin(),
9933 ymin - dyr*
gPad->GetBottomMargin(),
9934 xmax + dxr*
gPad->GetRightMargin(),
9935 ymax + dyr*
gPad->GetTopMargin());
9936 gPad->RangeAxis(xmin, ymin, xmax, ymax);
9959 static const char *where =
"TableInit";
9972 Hparam.
xlast = last;
9986 if (Hparam.
xmin <=0 || Hparam.
xmax <=0) {
9987 Error(where,
"cannot set X axis to log scale");
9993 if (Hparam.
xlast > last) Hparam.
xlast = last;
10001 Hparam.
ylast = last;
10010 if (Hoption.
Logy) {
10015 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
10016 Error(where,
"cannot set Y axis to log scale");
10022 if (Hparam.
ylast > last) Hparam.
ylast = last;
10038 if (Hoption.
Error) {
10051 if (Hoption.
Logz && zmax < 0) {
10052 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10054 }
else if (Hoption.
Logz && zmin>=0 && zmax==0) {
10058 if (zmin >= zmax) {
10059 if (Hoption.
Logz) {
10060 if (zmax > 0) zmin = 0.001*zmax;
10062 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10072 if (allchan) factor /= allchan;
10073 if (factor == 0) factor = 1;
10075 zmax = factor*zmax;
10076 zmin = factor*zmin;
10084 if (Hoption.
Logz) {
10102 zmax += yMARGIN*(zmax-zmin);
10110 if (zmin >= 0) zmin = 0;
10111 else zmin -= yMARGIN*(zmax-zmin);
10113 Double_t dzmin = yMARGIN*(zmax-zmin);
10114 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10115 else zmin -= dzmin;
10120 Hparam.
zmin = zmin;
10121 Hparam.
zmax = zmax;
10137 static char ef[20];
10138 char tf[20], tv[64];
10147 int iE = sv.
Index(
"E");
10148 int id = sv.
Index(
".");
10152 if (ie >= 0 || iE >= 0) {
10153 if (sv.
Index(
"+") >= 0) {
10158 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10160 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10165 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10167 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10172 }
else if (
id < 0) {
10193 Int_t projection = 0;
10194 if (opt.
Contains(
"x")) projection = 1;
10195 if (opt.
Contains(
"y")) projection = 2;
10196 if (opt.
Contains(
"z")) projection = 3;
10197 if (opt.
Contains(
"xy")) projection = 4;
10198 if (opt.
Contains(
"yx")) projection = 5;
10200 if (opt.
Contains(
"zx")) projection = 7;
10201 if (opt.
Contains(
"yz")) projection = 8;
10202 if (opt.
Contains(
"zy")) projection = 9;
10206 gROOT->MakeDefCanvas();
10218 gPad->SetDoubleBuffer(0);
10222 static int pyold1 = 0;
10223 static int pyold2 = 0;
10224 float uxmin =
gPad->GetUxmin();
10225 float uxmax =
gPad->GetUxmax();
10227 int pxmax =
gPad->XtoAbsPixel(uxmax);
10230 Int_t biny1 = fH->GetYaxis()->FindBin(y);
10232 Int_t py1 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinLowEdge(biny1));
10233 Int_t py2 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinUpEdge(biny2));
10258 TH1D *hp = ((
TH2*)fH)->ProjectionX(prjName, biny1, biny2);
10263 if (biny1 == biny2) {
10264 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
10265 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny1);
10268 if (fH->GetYaxis()->GetLabels() !=
NULL) {
10269 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf] %s", biny1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetYaxis()->GetBinLabel(biny1)));
10271 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10274 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
10275 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny2);
10280 if (fH->GetYaxis()->GetLabels() !=
NULL) {
10281 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)));
10283 hp->SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10286 hp->SetXTitle(fH->GetXaxis()->GetTitle());
10287 hp->SetYTitle(
"Number of Entries");
10301 gPad->SetDoubleBuffer(0);
10305 static int pxold1 = 0;
10306 static int pxold2 = 0;
10307 float uymin =
gPad->GetUymin();
10308 float uymax =
gPad->GetUymax();
10310 int pymax =
gPad->YtoAbsPixel(uymax);
10313 Int_t binx1 = fH->GetXaxis()->FindBin(x);
10315 Int_t px1 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinLowEdge(binx1));
10316 Int_t px2 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinUpEdge(binx2));
10341 TH1D *hp = ((
TH2*)fH)->ProjectionY(prjName, binx1, binx2);
10346 if (binx1 == binx2) {
10347 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
10348 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx1);
10351 if (fH->GetXaxis()->GetLabels() !=
NULL) {
10352 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf] [%s]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetXaxis()->GetBinLabel(binx1)));
10354 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10357 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
10358 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx2);
10363 if (fH->GetXaxis()->GetLabels() !=
NULL) {
10364 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)));
10366 hp->SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10369 hp->SetXTitle(fH->GetYaxis()->GetTitle());
10370 hp->SetYTitle(
"Number of Entries");
10389 if (fH->GetDimension() < 3) {
10394 gPad->SetDoubleBuffer(0);
10410 static TPoint endface1[5];
10411 static TPoint endface2[5];
10420 int pxmin =
gPad->XtoAbsPixel(uxmin);
10421 int pxmax =
gPad->XtoAbsPixel(uxmax);
10422 if (pxmin==pxmax)
return;
10423 int pymin =
gPad->YtoAbsPixel(uymin);
10424 int pymax =
gPad->YtoAbsPixel(uymax);
10425 if (pymin==pymax)
return;
10426 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10427 Double_t cy = (pymax-pymin)/(uymax-uymin);
10442 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10447 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10450 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10451 if (nbins>1 && line1[0].GetX()) {
10462 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10463 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10466 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10467 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10474 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10475 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10478 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10479 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10485 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10486 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10489 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10490 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10496 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10497 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10500 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10501 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10503 endface1[0].
SetX(line1[0].GetX());
10504 endface1[0].
SetY(line1[0].GetY());
10505 endface1[1].
SetX(line2[0].GetX());
10506 endface1[1].
SetY(line2[0].GetY());
10507 endface1[2].
SetX(line3[0].GetX());
10508 endface1[2].
SetY(line3[0].GetY());
10509 endface1[3].
SetX(line4[0].GetX());
10510 endface1[3].
SetY(line4[0].GetY());
10511 endface1[4].
SetX(line1[0].GetX());
10512 endface1[4].
SetY(line1[0].GetY());
10514 endface2[0].
SetX(line1[1].GetX());
10515 endface2[0].
SetY(line1[1].GetY());
10516 endface2[1].
SetX(line2[1].GetX());
10517 endface2[1].
SetY(line2[1].GetY());
10518 endface2[2].
SetX(line3[1].GetX());
10519 endface2[2].
SetY(line3[1].GetY());
10520 endface2[3].
SetX(line4[1].GetX());
10521 endface2[3].
SetY(line4[1].GetY());
10522 endface2[4].
SetX(line1[1].GetX());
10523 endface2[4].
SetY(line1[1].GetY());
10545 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10557 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10562 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10565 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10566 if (nbins>1 && line1[0].GetX()) {
10577 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10578 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10581 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10582 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10589 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10590 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10593 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10594 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10600 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10601 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10604 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10605 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10611 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10612 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10615 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10616 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10618 endface1[0].
SetX(line1[0].GetX());
10619 endface1[0].
SetY(line1[0].GetY());
10620 endface1[1].
SetX(line2[0].GetX());
10621 endface1[1].
SetY(line2[0].GetY());
10622 endface1[2].
SetX(line3[0].GetX());
10623 endface1[2].
SetY(line3[0].GetY());
10624 endface1[3].
SetX(line4[0].GetX());
10625 endface1[3].
SetY(line4[0].GetY());
10626 endface1[4].
SetX(line1[0].GetX());
10627 endface1[4].
SetY(line1[0].GetY());
10629 endface2[0].
SetX(line1[1].GetX());
10630 endface2[0].
SetY(line1[1].GetY());
10631 endface2[1].
SetX(line2[1].GetX());
10632 endface2[1].
SetY(line2[1].GetY());
10633 endface2[2].
SetX(line3[1].GetX());
10634 endface2[2].
SetY(line3[1].GetY());
10635 endface2[3].
SetX(line4[1].GetX());
10636 endface2[3].
SetY(line4[1].GetY());
10637 endface2[4].
SetX(line1[1].GetX());
10638 endface2[4].
SetY(line1[1].GetY());
10659 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10671 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10676 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
10679 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10680 if (nbins>1 && line1[0].GetX()) {
10691 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10692 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10695 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10696 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10703 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10704 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10707 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10708 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10714 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10715 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10718 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10719 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10725 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10726 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10729 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10730 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10732 endface1[0].
SetX(line1[0].GetX());
10733 endface1[0].
SetY(line1[0].GetY());
10734 endface1[1].
SetX(line2[0].GetX());
10735 endface1[1].
SetY(line2[0].GetY());
10736 endface1[2].
SetX(line3[0].GetX());
10737 endface1[2].
SetY(line3[0].GetY());
10738 endface1[3].
SetX(line4[0].GetX());
10739 endface1[3].
SetY(line4[0].GetY());
10740 endface1[4].
SetX(line1[0].GetX());
10741 endface1[4].
SetY(line1[0].GetY());
10743 endface2[0].
SetX(line1[1].GetX());
10744 endface2[0].
SetY(line1[1].GetY());
10745 endface2[1].
SetX(line2[1].GetX());
10746 endface2[1].
SetY(line2[1].GetY());
10747 endface2[2].
SetX(line3[1].GetX());
10748 endface2[2].
SetY(line3[1].GetY());
10749 endface2[3].
SetX(line4[1].GetX());
10750 endface2[3].
SetY(line4[1].GetY());
10751 endface2[4].
SetX(line1[1].GetX());
10752 endface2[4].
SetY(line1[1].GetY());
10773 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10785 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10788 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10789 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10794 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10795 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10796 rect1[4].
SetX(rect1[0].GetX());
10797 rect1[4].
SetY(rect1[0].GetY());
10800 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10801 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10804 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10805 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10808 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10809 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10816 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10817 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10818 rect2[4].
SetX(rect2[0].GetX());
10819 rect2[4].
SetY(rect2[0].GetY());
10822 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10823 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10826 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10827 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10830 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10831 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10843 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10844 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10856 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10859 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10860 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10865 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10866 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10867 rect1[4].
SetX(rect1[0].GetX());
10868 rect1[4].
SetY(rect1[0].GetY());
10871 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10872 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10875 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10876 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10879 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10880 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10887 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10888 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10889 rect2[4].
SetX(rect2[0].GetX());
10890 rect2[4].
SetY(rect2[0].GetY());
10893 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10894 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10897 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10898 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10901 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10902 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10913 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10914 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
10926 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10929 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10930 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10935 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10936 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10937 rect1[4].
SetX(rect1[0].GetX());
10938 rect1[4].
SetY(rect1[0].GetY());
10941 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10942 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10945 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10946 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10949 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10950 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10957 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10958 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10959 rect2[4].
SetX(rect2[0].GetX());
10960 rect2[4].
SetY(rect2[0].GetY());
10963 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10964 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10967 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10968 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10971 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10972 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10983 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10984 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10996 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10999 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11000 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11005 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11006 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11007 rect1[4].
SetX(rect1[0].GetX());
11008 rect1[4].
SetY(rect1[0].GetY());
11011 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11012 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11015 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11016 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11019 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11020 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11027 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11028 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11029 rect2[4].
SetX(rect2[0].GetX());
11030 rect2[4].
SetY(rect2[0].GetY());
11033 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11034 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11037 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11038 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11041 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11042 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11053 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
11054 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
11066 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
11069 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11070 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11075 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11076 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11077 rect1[4].
SetX(rect1[0].GetX());
11078 rect1[4].
SetY(rect1[0].GetY());
11081 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11082 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11085 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11086 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11089 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11090 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11097 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11098 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11099 rect2[4].
SetX(rect2[0].GetX());
11100 rect2[4].
SetY(rect2[0].GetY());
11103 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11104 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11107 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11108 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11111 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11112 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11123 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
11124 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
11136 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
11139 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11140 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11145 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11146 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11147 rect1[4].
SetX(rect1[0].GetX());
11148 rect1[4].
SetY(rect1[0].GetY());
11151 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11152 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11155 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11156 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11159 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11160 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11167 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11168 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11169 rect2[4].
SetX(rect2[0].GetX());
11170 rect2[4].
SetY(rect2[0].GetY());
11173 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11174 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11177 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11178 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11181 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11182 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11193 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
11194 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
Int_t GetFirst() const
Return first bin on the axis i.e.
void PaintGrapHist(Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt)
Draw the (x,y) as a histogram.
virtual void SetZTitle(const char *title)
virtual const char * GetTitle() const
Returns title of object.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Option_t * GetOption() const
Float_t GetEndErrorSize() const
static TString gStringKurtosisX
void SurfaceProperty(Double_t qqa, Double_t qqd, Double_t qqs, Int_t nnqs, Int_t &irep)
Set surface property coefficients.
int AxisPos
Axis position.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
TList * GetListOfFunctions() const
double dist(Rotation3D const &r1, Rotation3D const &r2)
virtual void PaintFrame()
Calculate range and clear pad (canvas).
void SetBarWidth(Float_t barwidth=0.5)
virtual void SetAlpha(Float_t a)
static TString gStringUnderflow
void SetOptFit(Int_t fit=1)
Set the fit option.
virtual void PaintArrows(Option_t *option)
Control function to draw a table as an arrow plot
virtual void SetName(const char *name="")
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Int_t FindBin(Double_t x, Double_t y, Double_t z=0)
Returns the bin number of the bin at the given coordinate.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
Float_t GetTitleW() const
virtual void SetLogy(Int_t value=1)=0
virtual void PaintStat2(Int_t dostat, TF1 *fit)
Draw the statistics box for 2D histograms.
Int_t yfirst
first bin number along Y
virtual Double_t GetBinContent(Int_t bin) const
Returns the content of the input bin For the overflow/underflow/sea bins: ~~~ {.cpp}.
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
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Double_t factor
multiplication factor (normalization)
static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual void SetMaximum(Double_t maximum=-1111)
virtual void PaintH3Box(Int_t iopt)
Control function to draw a 3D histogram with boxes.
virtual Int_t GetLogz() const =0
virtual Font_t GetTextFont() const
Return the text font.
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile2D histogram.
void SetColorDark(Color_t color, Int_t n=0)
Store dark color for stack number n.
int Char
"CHAR" Draw 2D plot with a character set.
Double_t ylowedge
low edge of axis
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile histogram.
static TString gStringMean
void PaintGraph(Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt)
Draw the (x,y) as a graph.
virtual const char * GetFitFormat() const
Histogram option structure.
TList * GetListOfGraphs() const
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
static TString gStringSkewnessX
virtual Int_t GetNumberFreeParameters() const
Return the number of free parameters.
static TString gStringSkewnessZ
virtual void PaintTH2PolyColorLevels(Option_t *option)
Control function to draw a TH2Poly as a color plot.
virtual Double_t * GetRmax()=0
void SetIsoSurfaceParameters(Double_t fmin, Double_t fmax, Int_t ncolor, Int_t ic1, Int_t ic2, Int_t ic3)
int BackBox
= 0 to suppress the back box
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
int Scat
"SCAT" Draw 2D plot a Scatter plot.
virtual const char * GetParName(Int_t ipar) const
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
int Proj
1: Aitoff, 2: Mercator, 3: Sinusoidal, 4: Parabolic
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
R__EXTERN TStyle * gStyle
virtual Int_t GetDimension() const
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside the polygon defined by the graph vertices 0 otherwise...
int Axis
"A" Axis are not drawn around the graph.
static const char * GetBestFormat(Double_t v, Double_t e, const char *f)
This function returns the best format to print the error value (e) knowing the parameter value (v) an...
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
Color_t GetTitleFillColor() const
int Logy
log scale in Y. Also set by histogram option
static TString gStringIntegralBinWidth
virtual void SetHistogram(TH1 *h)
Set current histogram to h
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual Bool_t GetTimeDisplay() const
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
void InitRaster(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Int_t nx, Int_t ny)
Initialize hidden lines removal algorithm (RASTER SCREEN)
void DrawFaceMove3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 3rd variant for "MOVING SCREEN" algorithm (draw level lines only)
void SurfaceFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Service function for Surfaces.
Int_t GetNumberContours() const
int Pie
"PIE" Draw 1D plot as a pie chart.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
virtual void SetMinimum(Double_t minimum=-1111)
int ParseOption(char *optin)
Parsing of the option-string.
virtual void PaintTH2PolyBins(Option_t *option)
Control function to draw a TH2Poly bins' contours.
virtual void SetTitle(const char *title="")
Change the title of the axis.
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
void ColorFunction(Int_t nl, Double_t *fl, Int_t *icl, Int_t &irep)
Set correspondance between function and color levels.
Float_t GetTitleX() const
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
tomato 1-D histogram with a float per channel (see TH1 documentation)}
virtual Int_t PaintInit()
Compute histogram parameters used by the drawing routines.
virtual Double_t GetNormFactor() const
R__EXTERN Hoption_t Hoption
virtual void Paint2DErrors(Option_t *option)
Draw 2D histograms errors.
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
Float_t GetTitleFontSize() const
Short_t Min(Short_t a, Short_t b)
void ToLower()
Change string to lower-case.
virtual void SetYTitle(const char *title)
void SetBarOffset(Float_t baroff=0.5)
static void HLStoRGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
static TString gStringStdDevZ
int Text
"TEXT" Draw 2D plot with the content of each cell.
The histogram statistics painter class.
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
void SetHistogram(TH1D *proj)
An abstract interface to image processing library.
virtual Int_t GetNbinsX() const
virtual void SetPoint(Int_t point, Double_t x, Double_t y)
Set point number n to (x, y) If n is greater than the current size, the arrays are automatically exte...
virtual void SetMinimum(Double_t minimum=-1111)
Set the minimum value along Y for this function In case the function is already drawn, set also the minimum in the helper histogram.
int Contour
"CONT" Draw 2D plot as a Contour plot.
void Paint(Option_t *option)
Paint a TGraphDelaunay according to the value of "option":
static std::string format(double x, double y, int digits, int width)
Double_t zmin
minimum value along Z
Double_t ymin
minimum value along y
virtual void SetX2(Double_t x2)
virtual std::vector< THistRenderingRegion > ComputeRenderingRegions(TAxis *pAxis, Int_t nPixels, bool isLog)
Returns the rendering regions for an axis to use in the COL2 option.
Double_t zmax
maximum value along Z
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
virtual Double_t GetEntries() const
Return the current number of entries.
void InitMoveScreen(Double_t xmin, Double_t xmax)
Initialize "MOVING SCREEN" method.
virtual Int_t GetNDF() const
Return the number of degrees of freedom in the fit the fNDF parameter has been previously computed du...
int Logx
log scale in X. Also set by histogram option
Helper class to represent a bin in the TH2Poly histogram.
virtual Double_t GetXmin() const
virtual void SetImageQuality(EImageQuality lquality)
Bool_t GetHistMinimumZero() const
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
Double_t ymax
maximum value along y
void SetLog(int x, int y)
static Int_t ProjectMercator2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
static TString gStringMeanZ
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual void SetImage(const Double_t *, UInt_t, UInt_t, TImagePalette *=0)
virtual void PaintColorLevelsFast(Option_t *option)
Rendering scheme for the COL2 and COLZ2 options
virtual TH1 * Project3D(Option_t *option="x") const
Project a 3-d histogram into 1 or 2-d histograms depending on the option parameter, which may contain a combination of the characters x,y,z,e.
Double_t Prob(Double_t chi2, Int_t ndf)
Computation of the probability for a certain Chi-squared (chi2) and number of degrees of freedom (ndf...
void SetOption(CandleOption opt)
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Width_t GetTitleBorderSize() const
double beta(double x, double y)
Calculates the beta function.
virtual void PaintHist(Option_t *option)
Control routine to draw 1D histograms
virtual void PaintTriangles(Option_t *option)
Control function to draw a table using Delaunay triangles.
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
if object in a list can be deleted
Style_t GetStatFont() const
static void SetF3(TF3 *f3)
Static function Store pointer to current implicit function.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
const char * Data() const
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates).
void DefineGridLevels(Int_t ndivz)
Define the grid levels drawn in the background of surface and lego plots.
virtual Double_t GetSkewness(Int_t axis=1) const
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void PaintPalette()
Paint the color palette on the right side of the pad.
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in polar coordinates.
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
static struct mg_connection * fc(struct mg_context *ctx)
virtual Double_t GetPsi()=0
virtual Double_t GetMaximumStored() const
Sequenceable collection abstract base class.
static const double x2[5]
Double_t GetYsize()
Return size of the formula along Y in pad coordinates.
virtual void Paint(Option_t *)
Paint a Pie chart in a canvas.
virtual void PaintBoxes(Option_t *option)
Control function to draw a 2D histogram as a box plot
int Surf
"SURF" Draw as a Surface (SURF,Surf=1, SURF1,Surf=11, SURF2,Surf=12)
virtual void Paint(Option_t *chopt="")
Draw this graph with its current attributes.
void DrawFaceMode3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 3rd option (draw face for stacked lego plot)
virtual void ProcessMessage(const char *mess, const TObject *obj)
Process message mess.
virtual void PaintCandlePlot(Option_t *option)
Control function to draw a 2D histogram as a candle (box) plot or violin plot
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
void DrawFaceRaster1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "RASTER SCREEN" algorithm (draw face with level lines) ...
static TVirtualPadEditor * GetPadEditor(Bool_t load=kTRUE)
Returns the pad editor dialog. Static method.
Double_t GetChisquare() const
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
Float_t GetBarOffset() const
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Color_t GetTitleTextColor() const
int Line
"L" A simple polyline beetwen every point is drawn.
void LightSource(Int_t nl, Double_t yl, Double_t xscr, Double_t yscr, Double_t zscr, Int_t &irep)
Set light source.
virtual Double_t GetMaximumStored() const
virtual void SetStatFormat(const char *format="6.4g")
Change (i.e. set) the format for printing statistics.
clip to the frame boundary
virtual EBinErrorOpt GetBinErrorOption() const
void SetMesh(Int_t mesh=1)
Width_t GetStatBorderSize() const
virtual void PaintSurface(Option_t *option)
Control function to draw a 2D histogram as a surface plot.
virtual void PaintStat(Int_t dostat, TF1 *fit)
Draw the statistics box for 1D and profile histograms.
To draw Mathematical Formula.
virtual Int_t GetLogx() const =0
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 Int_t MakeCuts(char *cutsopt)
Decode string choptin and fill Graphical cuts structure.
void DrawFaceMode2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 2nd option (fill in correspondance with function levels)
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
virtual Int_t MakeChopt(Option_t *option)
Decode string choptin and fill Hoption structure.
TH1D * ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along X.
virtual void PaintH3(Option_t *option="")
Control function to draw a 3D histograms.
int FrontBox
= 0 to suppress the front box
virtual void AxisVertex(Double_t ang, Double_t *av, Int_t &ix1, Int_t &ix2, Int_t &iy1, Int_t &iy2, Int_t &iz1, Int_t &iz2)=0
Color_t GetStatColor() const
virtual Double_t * GetTnorm()=0
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
virtual TSeqCollection * GetOutline()=0
void SetTimeFormat(const char *tformat)
Change the format used for time plotting.
virtual void Clear(Option_t *option="")
Clear all lines in this pavetext.
Base class for several text objects.
virtual void PaintColorLevels(Option_t *option)
Control function to draw a 2D histogram as a color plot.
Double_t GetXMax()
Returns the maximum value for the x coordinates of the bin.
Double_t baroffset
offset of bin for bars or legos [0,1]
virtual Bool_t IsInside(Int_t x, Int_t y)
Return kTRUE if the cell ix, iy is inside one of the graphical cuts.
Double_t GetYMin()
Returns the minimum value for the y coordinates of the bin.
void ImplicitFunction(Double_t *rmin, Double_t *rmax, Int_t nx, Int_t ny, Int_t nz, const char *chopt)
Draw implicit function FUN(X,Y,Z) = 0 in cartesian coordinates using hidden surface removal algorithm...
Float_t GetBarWidth() const
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along Y.
void DrawFaceMode1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 1st variant (2 colors: 1st for external surface, 2nd for internal)
Double_t GetYMax()
Returns the maximum value for the y coordinates of the bin.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
Int_t xfirst
first bin number along X
virtual void PaintLatex(Double_t x, Double_t y, Double_t angle, Double_t size, const char *text)
Main drawing function.
virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py)=0
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void DrawFaceMove1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "MOVING SCREEN" algorithm (draw face with level lines) ...
virtual void PaintTH2PolyScatterPlot(Option_t *option)
Control function to draw a TH2Poly as a scatter plot.
user specified contour levels
virtual Double_t GetXmax() const
int Fill
"F" A fill area is drawn ("CF" draw a smooth fill area).
The 3-D histogram classes derived from the 1-D histogram classes.
virtual void PaintTH2PolyText(Option_t *option)
Control function to draw a TH2Poly as a text plot.
void DrawFaceMove2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "MOVING SCREEN" algorithm (draw face for stacked lego plot) ...
void SetLabelSize(Float_t labelsize)
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
static TString gStringKurtosisZ
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
int Bar
"B" A Bar chart is drawn at each point.
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
virtual void GetParLimits(Int_t ipar, Double_t &parmin, Double_t &parmax) const
Return limits for parameter ipar.
static void RGBtoHLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
virtual const char * GetTimeFormat() const
Int_t GetOptTitle() const
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
virtual void SetLogx(Int_t value=1)=0
void SetDrawFace(DrawFaceFunc_t pointer)
Store pointer to current algorithm to draw faces.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
static TString gStringEntries
virtual void Delete(Option_t *option="")
Delete this object.
virtual void SetOutlineToCube()=0
virtual Int_t PaintInitH()
Compute histogram parameters used by the drawing routines for a rotated pad.
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
virtual void PaintImage(Drawable_t, Int_t, Int_t, Int_t=0, Int_t=0, UInt_t=0, UInt_t=0, Option_t *="")
virtual void RecalculateRange()
Recompute the histogram range following graphics operations.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
virtual Size_t GetMarkerSize() const
Return the marker size.
static TString gStringStdDevY
virtual void PaintAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Double_t &wmin, Double_t &wmax, Int_t &ndiv, Option_t *chopt="", Double_t gridlength=0, Bool_t drawGridOnly=kFALSE)
Control function to draw an axis.
void SetColorMain(Color_t color, Int_t n=0)
Store color for stack number n.
int Spec
TSpectrum graphics.
void IsoSurface(Int_t ns, Double_t *s, Int_t nx, Int_t ny, Int_t nz, Double_t *x, Double_t *y, Double_t *z, const char *chopt)
Draw set of iso-surfaces for a scalar function defined on a grid.
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
void FrontBox(Double_t ang)
Draw front surfaces of surrounding box & axes.
virtual void PaintText(Option_t *option)
Control function to draw a 1D/2D histograms with the bin values.
const char * ChooseTimeFormat(Double_t axislength=0)
Choose a reasonable time format from the coordinates in the active pad and the number of divisions in...
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual Int_t TableInit()
Initialize various options to draw 2D histograms.
Service class for 2-Dim histogram classes.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Evaluate the distance to the chart in gPad.
Double_t GetXsize()
Return size of the formula along X in pad coordinates.
Class to manage histogram axis.
R__EXTERN TSystem * gSystem
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Double_t ybinsize
bin size in case of equidistant bins
virtual Double_t GetMinimumStored() const
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
A 3-Dim function with parameters.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual void PaintTF3()
Control function to draw a 3D implicit functions.
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots spheric coordinates.
tomato 2-D histogram with a float per channel (see TH1 documentation)}
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
The candle plot painter class.
void LegoFunction(Int_t ia, Int_t ib, Int_t &nv, Double_t *ab, Double_t *vv, Double_t *t)
Service function for Legos.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
virtual Color_t GetFillColor() const
Return the fill area color.
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in cylindrical coordinates.
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
TObject * GetObject() const
virtual void PaintStat3(Int_t dostat, TF1 *fit)
Draw the statistics box for 3D histograms.
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual void Paint(Option_t *option="")
Paint all objects in this collection.
Bool_t TestBit(UInt_t f) const
static TImagePalette * CreateCOLPalette(Int_t nContours)
Factory method to creates an image palette for histogram plotting.
const char * GetPaintTextFormat() const
char * Form(const char *fmt,...)
virtual void PaintTable(Option_t *option)
Control function to draw 2D/3D histograms (tables).
const char * GetBinTitle(Int_t bin) const
Returns the bin title.
void SetWidth(const Double_t width)
virtual void Clear(Option_t *option="")=0
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual Int_t GetNbinsZ() const
int Arrow
"ARR" Draw 2D plot with Arrows.
virtual ~THistPainter()
Default destructor.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb"...
virtual void PaintH3Iso()
Control function to draw a 3D histogram with Iso Surfaces.
virtual const char * GetName() const
Returns name of object.
virtual Int_t GetSumw2N() const
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual Double_t GetKurtosis(Int_t axis=1) const
Double_t xlowedge
low edge of axis
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute the actions corresponding to event.
virtual void SetFitFormat(const char *format="5.4g")
Change (i.e. set) the format for printing fit parameters in statistics box.
int Color
"COL" Draw 2D plot with Colored boxes.
virtual TObjLink * FirstLink() const
void SetName(const char *name)
A 2-Dim function with parameters.
TObject * GetPolygon() const
Style_t GetTitleStyle() const
virtual void PaintBar(Option_t *option)
Draw a bar-chart in a normal pad.
virtual Color_t GetLineColor() const
Return the line color.
tomato 1-D histogram with a double per channel (see TH1 documentation)}
Double_t GetContent() const
virtual void PaintFunction(Option_t *option)
Paint functions associated to an histogram.
int Error
"E" Draw Errors with current marker type and size.
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.
Float_t GetErrorX() const
virtual const char * GetStatFormat() const
virtual Double_t * GetRmin()=0
const Double_t * GetBuffer() const
int Curve
"C" A smooth Curve is drawn.
virtual void PaintAxis(Bool_t drawGridOnly=kFALSE)
Draw axis (2D case) of an histogram.
virtual void PaintBarH(Option_t *option)
Draw a bar char in a rotated pad (X vertical, Y horizontal)
virtual void 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.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
void SetLegoFunction(LegoFunc_t pointer)
Store pointer to current lego function.
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
The histogram painter class.
virtual void SetMaximum(Double_t maximum=-1111)
Set the maximum value along Y for this function In case the function is already drawn, set also the maximum in the helper histogram.
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in spheric coordinates.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual void ExecuteEvent(Int_t, Int_t, Int_t)
Execute the mouse events.
virtual void SetY2(Double_t y2)
int Hist
"HIST" Draw only the histogram.
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Display the histogram info (bin number, contents, integral up to bin corresponding to cursor position...
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
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 Int_t GetSize() const
virtual Double_t Rndm()
TausWorth generator from L'Ecuyer, uses as seed 3x32bits integers Use a mask of 0xffffffffUL to make ...
static const double x1[5]
Double_t xbinsize
bin size in case of equidistant bins
A Pave (see TPave) with text, lines or/and boxes inside.
static TString gStringSkewness
int Zero
if selected with any LEGO option the empty bins are not drawn.
virtual const char * GetName() const
Returns name of object.
Float_t GetStatFontSize() const
TGraph2DPainter * fGraph2DPainter
The Legos and Surfaces painter class.
virtual void ShowProjectionX(Int_t px, Int_t py)
Show projection onto X.
int Box
"BOX" Draw 2D plot with proportional Boxes.
int Func
"FUNC" Draw only the function (for example in case of fit).
virtual Int_t GetNdivisions() const
virtual void SetRGB(Float_t r, Float_t g, Float_t b)
Initialize this color and its associated colors.
virtual void SetAxisNDC(const Double_t *x1, const Double_t *x2, const Double_t *y1, const Double_t *y2, const Double_t *z1, const Double_t *z2)=0
static void SetF3ClippingBoxOn(Double_t xclip, Double_t yclip, Double_t zclip)
Static function Set the implicit function clipping box "on" and define the clipping box...
TGraphDelaunay2D generates a Delaunay triangulation of a TGraph2D.
Style_t GetStatStyle() const
Int_t xlast
last bin number along X
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
void SetEdgeAtt(Color_t color=1, Style_t style=1, Width_t width=1, Int_t n=0)
Abstract base class used by ROOT graphics editor.
The color creation and management class.
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D
virtual void Paint(Option_t *option="")
Paint this 2-D function with its current attributes.
virtual void PaintTitle()
Draw the histogram title.
TList * GetContourList(Double_t contour)
Returns the X and Y graphs building a contour.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
int List
= 1 to generate the TObjArray "contours"
void Spectrum(Int_t nl, Double_t fmin, Double_t fmax, Int_t ic, Int_t idc, Int_t &irep)
Set Spectrum.
A class to define a conversion from pixel values to pixel color.
Profile2D histograms are used to display the mean value of Z and its RMS for each cell in X...
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetShowProjection(const char *option, Int_t nbins)
Set projection.
virtual void PaintLego(Option_t *option)
Control function to draw a 2D histogram as a lego plot.
virtual void ShowProjectionY(Int_t px, Int_t py)
Show projection onto Y.
int Off
"][" With H option, the first and last vertical lines are not drawn.
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
virtual Double_t GetParameter(Int_t ipar) const
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
void BackBox(Double_t ang)
Draw back surfaces of surrounding box.
Mother of all ROOT objects.
virtual TList * GetContourList(Double_t contour) const
Get a contour (as a list of TGraphs) using the Delaunay triangulation.
you should not use this method at all Int_t Int_t z
constexpr Double_t RadToDeg()
virtual void DrawPanel()
Display a panel with all histogram drawing options.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual Float_t GetLabelSize() const
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Int_t GetNbinsY() const
static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1, Double_t elev2, Int_t icont2, Double_t x2, Double_t y2, Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels)
Fill the matrix xarr and yarr for Contour Plot.
THashList * GetLabels() const
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 Color_t GetMarkerColor() const
Return the marker color.
virtual void SetXTitle(const char *title)
Double_t GetHistTopMargin() const
TPainter3dAlgorithms * fLego
const char * GetFitFormat() const
static TString gStringIntegral
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
virtual void Add(TObject *obj)
Double_t xmin
minimum value along X
Int_t GetOptStat() const
Return the stat option.
static TString gStringStdDevX
double f2(const double *x)
static TString gStringKurtosisY
const UInt_t kCannotRotate
virtual void ShowProjection3(Int_t px, Int_t py)
Show projection (specified by fShowProjection) of a TH3.
Float_t GetTitleY() const
Short_t Max(Short_t a, Short_t b)
int Star
"*" A * is plotted at each point
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
static void SetF3ClippingBoxOff()
Static function Set the implicit function clipping box "off".
static void PaintSpecialObjects(const TObject *obj, Option_t *option)
Static function to paint special objects like vectors and matrices.
virtual void PaintErrors(Option_t *option)
Draw 1D histograms error bars.
Double_t xmax
maximum value along X
void DrawFaceRaster2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "RASTER SCREEN" algorithm (draw face for stacked lego plot) ...
A Graph is a graphics object made of two arrays X and Y with npoints each.
static TString gStringKurtosis
Double_t GetArea()
Returns the area of the bin.
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
RooCmdArg Bins(Int_t nbin)
void SetTickSize(Float_t ticksize)
int System
type of coordinate system(1=car,2=pol,3=cyl,4=sph,5=psr)
Defined by an array on N points in a 2-D space.
THist< 1, double, THistStatContent, THistStatUncertainty > TH1D
R__EXTERN TH1 * gCurrentHist
Int_t GetBinNumber() const
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute the distance from the point px,py to a line.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual void PaintScatterPlot(Option_t *option)
Control function to draw a 2D histogram as a scatter plot.
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in polar coordinates.
virtual void Paint(Option_t *option="")
Paint the pave stat.
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
const TArrayD * GetXbins() const
The TGraphDelaunay painting class.
Double_t allchan
integrated sum of contents
void SurfaceCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw surface in cartesian coordinate system.
virtual void SetTitle(const char *title)
Change (i.e.
void SetSurfaceFunction(SurfaceFunc_t pointer)
Store pointer to current surface function.
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
Color_t GetStatTextColor() const
int Zscale
"Z" to display the Z scale (color palette)
virtual void Paint(Option_t *option="")
Paint the palette.
Double_t Sqrt(Double_t x)
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
TObject * At(Int_t idx) const
virtual void GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
int Same
"S" Histogram is plotted in the current PAD.
static TImage * Create()
Create an image.
static TString gStringStdDev
static TString gStringSkewnessY
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Histogram parameters structure.
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Style_t GetMarkerStyle() const
Return the marker style.
void GouraudFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Find part of surface with luminosity in the corners.
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual Width_t GetLineWidth() const
Return the line width.
Double_t GetXMin()
Returns the minimum value for the x coordinates of the bin.
virtual Float_t GetTickLength() const
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
The palette painting class.
virtual Float_t GetBarWidth() const
THist< 2, float, THistStatContent, THistStatUncertainty > TH2F
void SetHistogram(TH1 *h)
Int_t GetOptFit() const
Return the fit option.
static TString gStringMeanY
virtual void PadRange(Int_t rback)=0
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside one of the graphs 0 otherwise.
virtual Int_t GetNpar() const
constexpr Double_t PiOver2()
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Double_t barwidth
width of bin for bars and legos [0,1]
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
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.
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
int Logz
log scale in Z. Also set by histogram option
virtual void SetBorderSize(Int_t bordersize=4)
virtual Float_t GetBarOffset() const
TGraphDelaunay generates a Delaunay triangulation of a TGraph2D.
Float_t GetTitleH() const
2D Histogram with Polygonal Bins
static TString gStringOverflow
virtual void DefineColorLevels(Int_t ndivz)
Define the color levels used to paint legos, surfaces etc..
void SetParent(TObject *obj)
const char * GetStatFormat() const
int Lego
"LEGO" Draw as a Lego plot(LEGO,Lego=1, LEGO1,Lego1=11, LEGO2,Lego=12).
don't draw the histogram title
void SetOptStat(Int_t stat=1)
Set the stat option.
int Tri
"TRI" Draw 2D plot with Delaunay triangles.
virtual Float_t GetLabelOffset() const
tomato 2-D histogram with a double per channel (see TH1 documentation)}
void SetAxisPosition(const Double_t candlePos)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.