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