3039 gStringEntries =
gEnv->
GetValue(
"Hist.Stats.Entries",
"Entries");
3040 gStringMean =
gEnv->
GetValue(
"Hist.Stats.Mean",
"Mean");
3041 gStringMeanX =
gEnv->
GetValue(
"Hist.Stats.MeanX",
"Mean x");
3042 gStringMeanY =
gEnv->
GetValue(
"Hist.Stats.MeanY",
"Mean y");
3043 gStringMeanZ =
gEnv->
GetValue(
"Hist.Stats.MeanZ",
"Mean z");
3044 gStringStdDev =
gEnv->
GetValue(
"Hist.Stats.StdDev",
"Std Dev");
3045 gStringStdDevX =
gEnv->
GetValue(
"Hist.Stats.StdDevX",
"Std Dev x");
3046 gStringStdDevY =
gEnv->
GetValue(
"Hist.Stats.StdDevY",
"Std Dev y");
3047 gStringStdDevZ =
gEnv->
GetValue(
"Hist.Stats.StdDevZ",
"Std Dev z");
3048 gStringUnderflow =
gEnv->
GetValue(
"Hist.Stats.Underflow",
"Underflow");
3049 gStringOverflow =
gEnv->
GetValue(
"Hist.Stats.Overflow",
"Overflow");
3050 gStringIntegral =
gEnv->
GetValue(
"Hist.Stats.Integral",
"Integral");
3051 gStringIntegralBinWidth =
gEnv->
GetValue(
"Hist.Stats.IntegralBinWidth",
"Integral(w)");
3052 gStringSkewness =
gEnv->
GetValue(
"Hist.Stats.Skewness",
"Skewness");
3053 gStringSkewnessX =
gEnv->
GetValue(
"Hist.Stats.SkewnessX",
"Skewness x");
3054 gStringSkewnessY =
gEnv->
GetValue(
"Hist.Stats.SkewnessY",
"Skewness y");
3055 gStringSkewnessZ =
gEnv->
GetValue(
"Hist.Stats.SkewnessZ",
"Skewness z");
3056 gStringKurtosis =
gEnv->
GetValue(
"Hist.Stats.Kurtosis",
"Kurtosis");
3057 gStringKurtosisX =
gEnv->
GetValue(
"Hist.Stats.KurtosisX",
"Kurtosis x");
3058 gStringKurtosisY =
gEnv->
GetValue(
"Hist.Stats.KurtosisY",
"Kurtosis y");
3059 gStringKurtosisZ =
gEnv->
GetValue(
"Hist.Stats.KurtosisZ",
"Kurtosis z");
3083 const Int_t big = 9999;
3084 const Int_t kMaxDiff = 7;
3095 Int_t curdist = big;
3096 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
3099 if (!PadPointer)
return 0;
3110 if (view && Hoption.
Contour != 14) {
3113 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
3115 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
3117 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
3118 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
3129 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
3138 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
3150 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
3159 if (yxaxis < puymin) yxaxis = puymin;
3160 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
3174 gPad->GetRangeAxis(xmin, ymin, xmax, ymax);
3177 if ((pxu>xmax) || (pxu < xmin) || (pyu>ymax) || (pyu < ymin)) {
3182 if (bin>0) curdist = 1;
3188 if ( px > puxmin + delta2
3189 && px < puxmax - delta2
3190 && py > puymax + delta2
3191 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
3195 if (
gPad->IsVertical()) {
3200 if (binval == 0 && pybin < puymin) pybin = 10000;
3206 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3208 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3209 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3211 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
3212 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
3213 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
3215 if (bin != binsup) {
3217 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
3218 if (py <=
TMath::Max(pybinsub,pybin) && py >=
TMath::Min(pybinsub,pybin) && pybin != 10000)
return 0;
3228 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
3234 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3236 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3237 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3239 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
3240 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
3241 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
3249 while ((f = (
TObject*) next())) {
3253 if (dist < kMaxDiff) {
gPad->SetSelected(f);
return dist;}
3266 Error(
"DrawPanel",
"need to draw histogram first");
3271 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
3286 static Int_t bin, px1, py1, px2, py2, pyold;
3287 static TBox *zoombox;
3291 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3294 if (!
gPad->IsEditable())
return;
3321 if (!opaque)
gVirtualX->SetLineColor(-1);
3322 fH->TAttLine::Modify();
3324 if (opaque && dimension ==2) {
3325 zbx1 =
gPad->AbsPixeltoX(px);
3326 zbx2 =
gPad->AbsPixeltoX(px);
3327 zby1 =
gPad->AbsPixeltoY(py);
3328 zby2 =
gPad->AbsPixeltoY(py);
3331 if (
gPad->GetLogx()) {
3335 if (
gPad->GetLogy()) {
3339 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3356 if (dimension ==1) {
3364 x =
gPad->AbsPixeltoX(px);
3368 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3369 ylow =
gPad->GetUymin();
3370 px1 =
gPad->XtoAbsPixel(xlow);
3371 px2 =
gPad->XtoAbsPixel(xup);
3372 py1 =
gPad->YtoAbsPixel(ylow);
3382 if (dimension ==1) {
3383 if (
gROOT->GetEditHistograms()) {
3392 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3399 if (opaque && dimension ==2) {
3401 zbx2 =
gPad->AbsPixeltoX(px);
3402 zby2 =
gPad->AbsPixeltoY(py);
3405 zoombox->
SetX2(zbx2);
3406 zoombox->
SetY2(zby2);
3416 if (dimension ==2) {
3421 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3426 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3435 if (dimension == 2) {
3440 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3445 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3453 if (dimension ==1) {
3454 if (
gROOT->GetEditHistograms()) {
3455 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3463 if (opaque && dimension ==2) {
3473 if (x1<x2 && y1<y2) {
3482 if (opaque)
gVirtualX->SetLineColor(-1);
3492 event =
gVirtualX->RequestLocator(1, 1, px, py);
3519 if (!dt && !dtOld)
return nullptr;
3538 if (!
gPad)
return (
char*)
"";
3539 static char info[200];
3548 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3549 uxmin=
gPad->GetUxmin();
3550 uxmax=
gPad->GetUxmax();
3553 x = xmin +(xmax-
xmin)*(x-uxmin)/(uxmax-uxmin);
3554 uymin=
gPad->GetUymin();
3555 uymax=
gPad->GetUymax();
3558 y = ymin +(ymax-
ymin)*(y-uymin)/(uymax-uymin);
3561 Int_t binx,biny,binmin=0,binx1;
3562 if (
gPad->IsVertical()) {
3564 if (drawOption.
Index(
"same") >= 0) {
3566 TIter next(
gPad->GetListOfPrimitives());
3567 while ((h1 = (
TH1 *)next())) {
3580 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3590 x1 =
gPad->PadtoY(
gPad->AbsPixeltoY(py+1));
3592 if (drawOption.
Index(
"same") >= 0) {
3594 TIter next(
gPad->GetListOfPrimitives());
3595 while ((h1 = (
TH1 *)next())) {
3608 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3621 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, bine=%g, binn=%d)",
3628 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, Sum=%g)",
3635 snprintf(info,200,
"%s (x=%g, y=%g, bin=%d, binc=%g)",
3642 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3647 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g bine=%g)",
3654 snprintf(info,200,
"(x=%g, y=%g)",x,y);
3701 Int_t nch = strlen(choptin);
3702 strlcpy(chopt,choptin,128);
3726 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
3727 if (hdim > 1) Hoption.
Scat = 1;
3728 if (!nch) Hoption.
Hist = 1;
3732 char *l1 = strstr(chopt,
"PFC");
3733 char *l2 = strstr(chopt,
"PLC");
3734 char *l3 = strstr(chopt,
"PMC");
3735 if (l1 || l2 || l3) {
3742 l = strstr(chopt,
"SPEC");
3747 l = strstr(chopt,
"BF(");
3749 if (sscanf(&l[3],
"%d",&bs) > 0) {
3762 l = strstr(chopt,
"GL");
3766 l = strstr(chopt,
"X+");
3771 l = strstr(chopt,
"Y+");
3777 if (Hoption.
AxisPos == 11 && nch == 4) Hoption.
Hist = 1;
3779 l = strstr(chopt,
"SAMES");
3781 if (nch == 5) Hoption.
Hist = 1;
3785 l = strstr(chopt,
"SAME");
3787 if (nch == 4) Hoption.
Hist = 1;
3792 l = strstr(chopt,
"PIE");
3799 l = strstr(chopt,
"CANDLE");
3806 l = strstr(chopt,
"VIOLIN");
3813 l = strstr(chopt,
"LEGO");
3816 Hoption.
Lego = 1; strncpy(l,
" ",4);
3817 if (l[4] ==
'1') { Hoption.
Lego = 11; l[4] =
' '; }
3818 if (l[4] ==
'2') { Hoption.
Lego = 12; l[4] =
' '; }
3819 if (l[4] ==
'3') { Hoption.
Lego = 13; l[4] =
' '; }
3820 if (l[4] ==
'4') { Hoption.
Lego = 14; l[4] =
' '; }
3821 if (l[4] ==
'9') { Hoption.
Lego = 19; l[4] =
' '; }
3822 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3823 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3824 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3827 l = strstr(chopt,
"SURF");
3830 Hoption.
Surf = 1; strncpy(l,
" ",4);
3831 if (l[4] ==
'1') { Hoption.
Surf = 11; l[4] =
' '; }
3832 if (l[4] ==
'2') { Hoption.
Surf = 12; l[4] =
' '; }
3833 if (l[4] ==
'3') { Hoption.
Surf = 13; l[4] =
' '; }
3834 if (l[4] ==
'4') { Hoption.
Surf = 14; l[4] =
' '; }
3835 if (l[4] ==
'5') { Hoption.
Surf = 15; l[4] =
' '; }
3836 if (l[4] ==
'6') { Hoption.
Surf = 16; l[4] =
' '; }
3837 if (l[4] ==
'7') { Hoption.
Surf = 17; l[4] =
' '; }
3838 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3839 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3842 l = strstr(chopt,
"TF3");
3844 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3845 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3848 l = strstr(chopt,
"ISO");
3850 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3851 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3854 l = strstr(chopt,
"LIST");
if (l) { Hoption.
List = 1; strncpy(l,
" ",4);}
3856 l = strstr(chopt,
"CONT");
3862 if (l[4] ==
'1') { Hoption.
Contour = 11; l[4] =
' '; }
3863 if (l[4] ==
'2') { Hoption.
Contour = 12; l[4] =
' '; }
3864 if (l[4] ==
'3') { Hoption.
Contour = 13; l[4] =
' '; }
3865 if (l[4] ==
'4') { Hoption.
Contour = 14; l[4] =
' '; }
3866 if (l[4] ==
'5') { Hoption.
Contour = 15; l[4] =
' '; }
3871 l = strstr(chopt,
"HBAR");
3874 Hoption.
Bar = 20; strncpy(l,
" ",4);
3875 if (l[4] ==
'1') { Hoption.
Bar = 21; l[4] =
' '; }
3876 if (l[4] ==
'2') { Hoption.
Bar = 22; l[4] =
' '; }
3877 if (l[4] ==
'3') { Hoption.
Bar = 23; l[4] =
' '; }
3878 if (l[4] ==
'4') { Hoption.
Bar = 24; l[4] =
' '; }
3880 l = strstr(chopt,
"BAR");
3883 Hoption.
Bar = 10; strncpy(l,
" ",3);
3884 if (l[3] ==
'1') { Hoption.
Bar = 11; l[3] =
' '; }
3885 if (l[3] ==
'2') { Hoption.
Bar = 12; l[3] =
' '; }
3886 if (l[3] ==
'3') { Hoption.
Bar = 13; l[3] =
' '; }
3887 if (l[3] ==
'4') { Hoption.
Bar = 14; l[3] =
' '; }
3890 l = strstr(chopt,
"ARR" );
3900 l = strstr(chopt,
"BOX" );
3906 if (l[3] ==
'1') { Hoption.
Box = 11; l[3] =
' '; }
3907 if (l[3] ==
'2') { Hoption.
Box = 12; l[3] =
' '; }
3908 if (l[3] ==
'3') { Hoption.
Box = 13; l[3] =
' '; }
3913 l = strstr(chopt,
"COLZ");
3920 if (l[4] ==
'2') { Hoption.
Color = 3; l[4] =
' '; }
3921 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3922 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3927 l = strstr(chopt,
"COL" );
3933 if (l[3] ==
'2') { Hoption.
Color = 3; l[3] =
' '; }
3934 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3935 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3940 l = strstr(chopt,
"CHAR");
if (l) { Hoption.
Char = 1; strncpy(l,
" ",4); Hoption.
Scat = 0; }
3941 l = strstr(chopt,
"FUNC");
if (l) { Hoption.
Func = 2; strncpy(l,
" ",4); Hoption.
Hist = 0; }
3942 l = strstr(chopt,
"HIST");
if (l) { Hoption.
Hist = 2; strncpy(l,
" ",4); Hoption.
Func = 0; Hoption.
Error = 0;}
3943 l = strstr(chopt,
"AXIS");
if (l) { Hoption.
Axis = 1; strncpy(l,
" ",4); }
3944 l = strstr(chopt,
"AXIG");
if (l) { Hoption.
Axis = 2; strncpy(l,
" ",4); }
3945 l = strstr(chopt,
"SCAT");
if (l) { Hoption.
Scat = 1; strncpy(l,
" ",4); }
3946 l = strstr(chopt,
"TEXT");
3949 if (sscanf(&l[4],
"%d",&angle) > 0) {
3950 if (angle < 0) angle=0;
3951 if (angle > 90) angle=90;
3952 Hoption.
Text = 1000+angle;
3957 l = strstr(chopt,
"N");
3961 l = strstr(chopt,
"POL");
if (l) { Hoption.
System =
kPOLAR; strncpy(l,
" ",3); }
3963 l = strstr(chopt,
"SPH");
if (l) { Hoption.
System =
kSPHERICAL; strncpy(l,
" ",3); }
3964 l = strstr(chopt,
"PSR");
if (l) { Hoption.
System =
kRAPIDITY; strncpy(l,
" ",3); }
3966 l = strstr(chopt,
"TRI");
3970 Hoption.
Tri = 1; strncpy(l,
" ",3);
3971 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3972 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3973 l = strstr(chopt,
"ERR");
if (l) strncpy(l,
" ",3);
3976 l = strstr(chopt,
"AITOFF");
3978 Hoption.
Proj = 1; strncpy(l,
" ",6);
3980 l = strstr(chopt,
"MERCATOR");
3982 Hoption.
Proj = 2; strncpy(l,
" ",8);
3984 l = strstr(chopt,
"SINUSOIDAL");
3986 Hoption.
Proj = 3; strncpy(l,
" ",10);
3988 l = strstr(chopt,
"PARABOLIC");
3990 Hoption.
Proj = 4; strncpy(l,
" ",9);
3992 if (Hoption.
Proj > 0) {
3997 if (strstr(chopt,
"A")) Hoption.
Axis = -1;
3998 if (strstr(chopt,
"B")) Hoption.
Bar = 1;
3999 if (strstr(chopt,
"C")) { Hoption.
Curve =1; Hoption.
Hist = -1;}
4000 if (strstr(chopt,
"F")) Hoption.
Fill =1;
4001 if (strstr(chopt,
"][")) {Hoption.
Off =1; Hoption.
Hist =1;}
4002 if (strstr(chopt,
"F2")) Hoption.
Fill =2;
4003 if (strstr(chopt,
"L")) { Hoption.
Line =1; Hoption.
Hist = -1;}
4004 if (strstr(chopt,
"P")) { Hoption.
Mark =1; Hoption.
Hist = -1;}
4005 if (strstr(chopt,
"Z")) Hoption.
Zscale =1;
4006 if (strstr(chopt,
"*")) Hoption.
Star =1;
4007 if (strstr(chopt,
"H")) Hoption.
Hist =2;
4008 if (strstr(chopt,
"P0")) Hoption.
Mark =10;
4014 if (strstr(chopt,
"E")) {
4017 if (strstr(chopt,
"E0")) Hoption.
Error = 10;
4018 if (strstr(chopt,
"E1")) Hoption.
Error = 11;
4019 if (strstr(chopt,
"E2")) Hoption.
Error = 12;
4020 if (strstr(chopt,
"E3")) Hoption.
Error = 13;
4021 if (strstr(chopt,
"E4")) Hoption.
Error = 14;
4022 if (strstr(chopt,
"E5")) Hoption.
Error = 15;
4023 if (strstr(chopt,
"E6")) Hoption.
Error = 16;
4024 if (strstr(chopt,
"X0")) {
4026 Hoption.
Error += 10;
4029 Hoption.
Text += 2000;
4033 if (Hoption.
Error == 0) {
4034 Hoption.
Error = 100;
4038 Hoption.
Text += 2000;
4044 if (Hoption.
Surf == 15) {
4047 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
4057 if (Hoption.
Bar == 1) Hoption.
Hist = -1;
4068 char *left = (
char*)strchr(choptin,
'[');
4069 if (!left)
return 0;
4070 char *right = (
char*)strchr(choptin,
']');
4071 if (!right)
return 0;
4072 Int_t nch = right-left;
4073 if (nch < 2)
return 0;
4074 char *cuts = left+1;
4076 char *comma, *minus;
4079 comma = strchr(cuts,
',');
4080 if (comma) *comma = 0;
4081 minus = strchr(cuts,
'-');
4082 if (minus) cuts = minus+1;
4083 while (*cuts ==
' ') cuts++;
4084 Int_t nc = strlen(cuts);
4085 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
4089 while ((obj = next())) {
4091 if (strcmp(obj->
GetName(),cuts))
continue;
4104 for (i=0;i<=nch;i++) left[i] =
' ';
4132 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
4142 Error(
"Paint",
"Option PIE is for 1D histograms only");
4163 gCurrentHist = oldhist;
4169 if (!Hoption.
Lego && !Hoption.
Surf && !Hoption.
Tri) {
4176 Int_t logysav=0, logzsav=0;
4178 logysav = Hoption.
Logy;
4179 logzsav = Hoption.
Logz;
4196 gCurrentHist = oldhist;
4199 Hoption.
Logy = logysav;
4200 Hoption.
Logz = logzsav;
4205 if (Hoption.
Bar >= 20) {
4224 if (Hoption.
Axis > 0) {
4227 if (gridx)
gPad->SetGridx(0);
4228 if (gridy)
gPad->SetGridy(0);
4230 if (gridx)
gPad->SetGridx(1);
4231 if (gridy)
gPad->SetGridy(1);
4233 if (Hoption.
Same ==1) Hoption.
Same = 2;
4239 if (Hoption.
Bar >= 10) {
4244 if (!Hoption.
Error) {
4249 if (Hoption.
Error) {
4266 if (gridx)
gPad->SetGridx(0);
4267 if (gridy)
gPad->SetGridy(0);
4269 if (gridx)
gPad->SetGridx(1);
4270 if (gridy)
gPad->SetGridy(1);
4279 while ((obj = next())) {
4287 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4291 gCurrentHist = oldhist;
4302 fH->TAttLine::Modify();
4305 Double_t dx, dy, si, co, anr,
x1,
x2, y1, y2, xc, yc, dxn, dyn;
4316 for (
Int_t id=1;
id<=2;
id++) {
4323 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4324 if (i == Hparam.
xfirst) {
4326 }
else if (i == Hparam.
xlast) {
4331 if (j == Hparam.
yfirst) {
4333 }
else if (j == Hparam.
ylast) {
4341 }
else if (
id == 2) {
4355 anr = 0.005*.5*
TMath::Sqrt(2/(dxn*dxn + dyn*dyn));
4356 si = anr*(dxn + dyn);
4357 co = anr*(dxn - dyn);
4391 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4394 if (Hoption.
Axis == -1)
return;
4395 if (Hoption.
Same && Hoption.
Axis <= 0)
return;
4401 if (Hoption.
Same && Hoption.
Axis) {
4403 TIter next(
gPad->GetListOfPrimitives());
4406 while ((obj = next())) {
4409 TString opt = obj->GetDrawOption();
4412 if (strstr(opt,
"hbar")) {
4416 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4426 static char chopt[10] =
"";
4428 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4429 Int_t useHparam = 0;
4430 Double_t umin, umax, uminsave, umaxsave;
4443 if (Hoption.
Contour == 14) useHparam = 1;
4446 TIter next(
gPad->GetListOfPrimitives());
4447 while ((obj=next())) {
4458 if (
gPad->PadInSelectionMode())
4462 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4473 strlcat(chopt,
"SDH",10);
4474 if (ndivx < 0) strlcat(chopt,
"N",10);
4475 if (
gPad->GetGridx()) {
4476 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4477 strlcat(chopt,
"W",10);
4482 strlcat(chopt,
"G",10);
4504 strlcat(chopt,
"t",10);
4512 if (xAxisPos == 1) {
4528 strlcat(chopt,
"-",10);
4531 if (Hoption.
Same && Hoption.
Axis) {
4537 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4542 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4544 cw=strstr(chopt,
"-");
4547 strlcat(chopt,
"-",10);
4549 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4550 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4554 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4560 if (
gPad->PadInSelectionMode())
4564 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4569 strlcat(chopt,
"SDH",10);
4570 if (ndivy < 0) strlcat(chopt,
"N",10);
4571 if (
gPad->GetGridy()) {
4572 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4573 strlcat(chopt,
"W",10);
4578 strlcat(chopt,
"G",10);
4600 strlcat(chopt,
"t",10);
4608 if (yAxisPos == 1) {
4624 strlcat(chopt,
"+L",10);
4627 if (Hoption.
Same && Hoption.
Axis) {
4633 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4638 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4639 if (
gPad->GetTicky() < 2) {
4640 strlcat(chopt,
"U",10);
4643 strlcat(chopt,
"+L",10);
4645 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4649 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4672 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4680 ymin =
gPad->GetUymin();
4681 ymax =
gPad->YtoPad(y);
4682 if (ymax < gPad->GetUymin())
continue;
4683 if (ymax >
gPad->GetUymax()) ymax =
gPad->GetUymax();
4684 if (ymin < gPad->GetUymin()) ymin =
gPad->GetUymin();
4687 w = (xmax-
xmin)*width;
4688 xmin += offset*(xmax-
xmin);
4693 umin = xmin + bar*(xmax-
xmin)/10.;
4694 umax = xmax - bar*(xmax-
xmin)/10.;
4718 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4732 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4739 xmin =
gPad->GetUxmin();
4741 if (xmax < gPad->GetUxmin())
continue;
4742 if (xmax >
gPad->GetUxmax()) xmax =
gPad->GetUxmax();
4743 if (xmin < gPad->GetUxmin()) xmin =
gPad->GetUxmin();
4746 w = (ymax-
ymin)*width;
4747 ymin += offset*(ymax-
ymin);
4752 umin = ymin + bar*(ymax-
ymin)/10.;
4753 umax = ymax - bar*(ymax-
ymin)/10.;
4769 while ((obj = next())) {
4790 fH->TAttLine::Modify();
4791 fH->TAttFill::Modify();
4793 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
4804 Double_t zminlin = zmin, zmaxlin = zmax;
4810 TIter next(
gPad->GetListOfPrimitives());
4811 while ((h2 = (
TH2 *)next())) {
4847 if (Hoption.
Box == 11) {
4861 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4868 if (kZminNeg && z==0)
continue;
4871 if (Hoption.
Logz)
continue;
4880 if (dz == 0)
continue;
4882 if (zratio == 0)
continue;
4884 xup = xcent*zratio + xk + xcent;
4885 xlow = 2*(xk + xcent) - xup;
4886 if (xup-xlow < dxmin) xup = xlow+dxmin;
4894 yup = ycent*zratio + yk + ycent;
4895 ylow = 2*(yk + ycent) - yup;
4896 if (yup-ylow < dymin) yup = ylow+dymin;
4909 if (xlow >= xup)
continue;
4910 if (ylow >= yup)
continue;
4912 if (Hoption.
Box == 1) {
4914 fH->TAttFill::Modify();
4915 gPad->PaintBox(xlow, ylow, xup, yup);
4917 gPad->PaintLine(xlow, ylow, xup, yup);
4918 gPad->PaintLine(xlow, yup, xup, ylow);
4920 }
else if (Hoption.
Box == 11) {
4923 fH->TAttFill::Modify();
4924 gPad->PaintBox(xlow, ylow, xup, yup);
4929 x[0] = xlow; y[0] = ylow;
4930 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4931 x[2] = x[1]; y[2] = yup - bwidth*(yup-ylow);
4932 x[3] = xup - bwidth*(xup-xlow); y[3] = y[2];
4933 x[4] = xup; y[4] = yup;
4934 x[5] = xlow; y[5] = yup;
4935 x[6] = xlow; y[6] = ylow;
4938 fH->TAttFill::Modify();
4939 gPad->PaintFillArea(7, x, y);
4942 x[0] = xlow; y[0] = ylow;
4943 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4944 x[2] = xup - bwidth*(xup-xlow); y[2] = y[1];
4945 x[3] = x[2]; y[3] = yup - bwidth*(yup-ylow);
4946 x[4] = xup; y[4] = yup;
4947 x[5] = xup; y[5] = ylow;
4948 x[6] = xlow; y[6] = ylow;
4951 fH->TAttFill::Modify();
4952 gPad->PaintFillArea(7, x, y);
4960 fH->TAttFill::Modify();
4985 const Double_t standardCandleWidth = 0.66;
4986 const Double_t standardHistoWidth = 0.8;
4989 double allMaxIntegral = 0;
4995 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5005 double myIntegral = hproj->
Integral();
5007 if (candleWidth > 0.999 && candleWidth < 1.001) {
5008 candleWidth = standardCandleWidth;
5009 histoWidth = standardHistoWidth;
5011 if (Hoption.
Logz && myMaxContent > 0) {
5014 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5015 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5028 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5038 double myIntegral = hproj->
Integral();
5040 if (candleWidth > 0.999 && candleWidth < 1.001) {
5041 candleWidth = standardCandleWidth;
5042 histoWidth = standardHistoWidth;
5044 if (Hoption.
Logz && myMaxContent > 0) {
5047 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5048 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5076 std::vector<THistRenderingRegion>
5079 std::vector<THistRenderingRegion> regions;
5081 enum STRATEGY {
Bins, Pixels } strategy;
5085 if (nBins >= nPixels) {
5097 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
5107 if (strategy ==
Bins) {
5125 std::make_pair(bin, bin+1)};
5126 regions.push_back(region);
5135 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
5140 std::make_pair(binLow, binHigh)};
5141 regions.push_back(region);
5147 if (strategy ==
Bins) {
5154 Int_t xPx1 = xPx0 + nPixels/nBins;
5157 if (xPx1>= nPixels) xPx1 = nPixels-1;
5160 std::make_pair(bin, bin+1)};
5161 regions.push_back(region);
5165 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
5167 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
5168 Int_t binHigh = binLow + nBins/nPixels;
5170 std::make_pair(binLow, binHigh)};
5171 regions.push_back(region);
5186 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5187 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
5200 if ((zmin == -1111) && (zmax == -1111)) {
5204 }
else if (zmin == -1111) {
5207 }
else if (zmax == -1111) {
5225 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5226 "Cannot plot logz because bin content is less than 0.");
5237 std::vector<Double_t> colorBounds(ndiv);
5238 std::vector<Double_t> contours(ndiv, 0);
5246 for (
Int_t i=0; i<ndiv; ++i) {
5247 colorBounds[i] = step*i;
5250 auto pFrame =
gPad->GetFrame();
5251 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5252 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5253 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5254 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5255 Int_t nXPixels = px1-px0;
5256 Int_t nYPixels = py0-py1;
5258 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5262 if (xRegions.size() == 0 || yRegions.size() == 0) {
5263 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5264 "Encountered error while computing rendering regions.");
5272 for (
auto& yRegion : yRegions) {
5273 for (
auto& xRegion : xRegions ) {
5275 const auto& xBinRange = xRegion.fBinRange;
5276 const auto& yBinRange = yRegion.fBinRange;
5287 if (z > zmax) z = zmax;
5288 if (z < zmin) z = zmin;
5293 z = colorBounds[index];
5297 index = 0.001 + ((z - zmin)/dz)*ndiv;
5300 if (index == static_cast<Int_t>(colorBounds.size())) {
5308 }
else if (index == static_cast<Int_t>(colorBounds.size()-1)) {
5312 z = colorBounds[index];
5323 const auto& xPixelRange = xRegion.fPixelRange;
5324 const auto& yPixelRange = yRegion.fPixelRange;
5325 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5326 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5327 Int_t pixel = yPx*nXPixels + xPx;
5338 if (minValue != maxValue) {
5344 buffer[buffer.size()-nXPixels] = 0.95;
5352 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5356 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5373 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5389 TIter next(
gPad->GetListOfPrimitives());
5390 while ((h2 = (
TH2 *)next())) {
5420 fH->TAttFill::Modify();
5443 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5448 if (binEntries == 0)
5454 if (zmin >= 0 || Hoption.
Logz)
continue;
5455 if (Hoption.
Color == 2)
continue;
5463 if (z < zmin && !Hoption.
Zero)
continue;
5481 if (xup < gPad->GetUxmin())
continue;
5482 if (yup < gPad->GetUymin())
continue;
5483 if (xlow >
gPad->GetUxmax())
continue;
5484 if (ylow >
gPad->GetUymax())
continue;
5485 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5486 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5487 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5488 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5493 if (z < zc)
continue;
5495 for (
Int_t k=0; k<ndiv; k++) {
5504 color =
Int_t(0.01+(z-zmin)*scale);
5508 if (theColor > ncolors-1) theColor = ncolors-1;
5510 fH->TAttFill::Modify();
5512 gPad->PaintBox(xlow, ylow, xup, yup);
5525 fH->TAttFill::Modify();
5535 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5536 Int_t itars, mode, ir[4];
5537 Double_t xsave, ysave, thesave,phisave,x[4], y[4], zc[4];
5542 thesave =
gPad->GetTheta();
5543 phisave =
gPad->GetPhi();
5545 gPad->SetTheta(90.);
5547 gPad->SetPhi(phisave);
5548 gPad->SetTheta(thesave);
5559 TIter next(
gPad->GetListOfPrimitives());
5560 while ((obj=next())) {
5577 if (!dt && !dtOld)
return;
5597 if (ncontour == 0) {
5601 if (ncontour > kMAXCONTOUR) {
5602 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
5603 kMAXCONTOUR, ncontour);
5604 ncontour = kMAXCONTOUR-1;
5613 fH->TAttLine::Modify();
5623 np =
new Int_t[ncontour];
5624 for (i=0;i<ncontour;i++) np[i] = 0;
5626 for (i=0;i<ncontour;i++) {
5629 if (Hoption.
List == 1) {
5630 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
5632 gROOT->GetListOfSpecials()->Remove(contours);
5634 for (i=0;i<count;i++) {
5635 list = (
TList*)contours->
At(i);
5636 if (list) list->
Delete();
5640 contours->
SetName(
"contours");
5641 gROOT->GetListOfSpecials()->Add(contours);
5642 for (i=0;i<ncontour;i++) {
5644 contours->
Add(list);
5666 else zc[0] = Hparam.
zmin;
5668 else zc[1] = Hparam.
zmin;
5670 else zc[2] = Hparam.
zmin;
5672 else zc[3] = Hparam.
zmin;
5677 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
5682 if (zc[0] <= zc[1]) n = 0;
else n = 1;
5683 if (zc[2] <= zc[3]) m = 2;
else m = 3;
5684 if (zc[n] > zc[m]) n =
m;
5687 for (ix=1;ix<=4;ix++) {
5690 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5695 if (zc[0] <= zc[1]) n = 0;
else n = 1;
5696 if (zc[2] <= zc[3]) m = 2;
else m = 3;
5697 if (zc[n] > zc[m]) n =
m;
5700 for (ix=1;ix<=4;ix++) {
5704 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5712 for (ix=1; ix<=lj-5; ix +=2) {
5714 while (itarr[ix-1] != itarr[ix]) {
5718 for (jx=ix; jx<=lj-5; jx +=2) {
5719 xarr[jx] = xarr[jx+2];
5720 yarr[jx] = yarr[jx+2];
5721 itarr[jx] = itarr[jx+2];
5725 itarr[lj-3] = itars;
5726 if (count > 100)
break;
5731 if (count > 100)
continue;
5732 for (ix=1; ix<=lj-2; ix +=2) {
5740 if (mode == 0) mode = 5;
5744 fH->TAttLine::Modify();
5745 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
5749 ipoly = itarr[ix-1];
5750 if (ipoly >=0 && ipoly <ncontour) {
5751 poly = polys[ipoly];
5752 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
5753 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
5755 if (npmax < np[ipoly]) npmax = np[ipoly];
5764 Int_t nadd,iminus,iplus;
5768 Int_t *polysort = 0;
5770 if (Hoption.
Contour != 1)
goto theEND;
5776 xmin =
gPad->GetUxmin();
5777 ymin =
gPad->GetUymin();
5780 polysort =
new Int_t[ncontour];
5782 for (ipoly=0;ipoly<ncontour;ipoly++) {
5783 if (levels[ipoly] >= 0) {first = ipoly;
break;}
5787 for (ipoly=first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
5788 for (ipoly=first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
5792 for (k=0;k<ncontour;k++) {
5793 ipoly = polysort[k];
5794 if (np[ipoly] == 0)
continue;
5795 if (Hoption.
List) list = (
TList*)contours->
At(contListNb);
5797 poly = polys[ipoly];
5804 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
5805 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
5806 xx[istart] =
xmin; yy[istart] =
ymin;
5807 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
5810 for (i=2;i<np[ipoly];i+=2) {
5811 if ((iplus < 2*npmax-1) && (xx[i] == xp[iplus]) && (yy[i] == yp[iplus])) {
5813 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
5818 if ((iminus > 0) && (xx[i+1] == xp[iminus]) && (yy[i+1] == yp[iminus])) {
5820 xp[iminus] = xx[i]; yp[iminus] = yy[i];
5826 if (nadd == 0)
break;
5831 fH->TAttFill::Modify();
5832 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5834 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5841 for (i=2;i<np[ipoly];i+=2) {
5842 if (xx[i] != xmin && yy[i] != ymin) {
5847 if (istart == 0)
break;
5851 for (i=0;i<ncontour;i++)
delete polys[i];
5863 if (np)
delete [] np;
5879 Double_t tlen, tdif, elev, diff, pdif, xlen;
5891 tdif = elev2 - elev1;
5894 while (n <= icont2 && i <= kMAXCONTOUR/2 -3) {
5897 diff = elev - elev1;
5908 yarr[i] = y1 + xlen;
5913 xarr[i] = x1 + xlen;
5936 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
5938 const Int_t kBASEMARKER=8;
5939 Double_t xp, yp, ex1, ex2, ey1, ey2;
5941 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
5946 Int_t i, k, npoints, first, last, fixbin;
5949 Int_t drawmarker, errormarker;
5950 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
5954 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
5955 if (
Int_t(Hoption.
Error/10) == 2) {optionEX0 = 1; Hoption.
Error -= 10;}
5956 if (Hoption.
Error == 31) {optionEX0 = 1; Hoption.
Error = 1;}
5957 if (Hoption.
Error == 10) option0 = 1;
5958 if (Hoption.
Error == 11) option1 = 1;
5959 if (Hoption.
Error == 12) option2 = 1;
5960 if (Hoption.
Error == 13) option3 = 1;
5961 if (Hoption.
Error == 14) {option4 = 1; option3 = 1;}
5962 if (Hoption.
Error == 15) {optionI0 = 1; option3 = 1;}
5963 if (Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
5964 if (option2+option3 == 0) optionE = 1;
5965 if (Hoption.
Error == 0) optionE = 0;
5976 if (errormarker == 1) symbolsize = 0.01;
5977 sbase = symbolsize*kBASEMARKER;
5980 fH->TAttLine::Modify();
5981 fH->TAttFill::Modify();
5982 fH->TAttMarker::Modify();
5988 last = Hparam.
xlast;
5989 npoints = last - first +1;
5990 xmin =
gPad->GetUxmin();
5991 xmax =
gPad->GetUxmax();
5992 ymin =
gPad->GetUymin();
5993 ymax =
gPad->GetUymax();
5999 if (!xline || !yline) {
6000 Error(
"PaintErrors",
"too many points, out of memory");
6013 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
6014 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
6030 for (k=first; k<=last; k++) {
6042 if (xp <= 0)
goto L30;
6043 if (xp < logxmin)
goto L30;
6046 if (xp < xmin)
goto L30;
6047 if (xp > xmax)
break;
6050 if (optionI0 && yp==0)
goto L30;
6102 if (!option0 && !option3) {
6103 if (Hoption.
Logy && yp < logymin)
goto L30;
6104 if (yi1 < ymin || yi1 > ymax)
goto L30;
6105 if (Hoption.
Error != 0 && yp == 0 && ey1 <= 0) drawmarker =
kFALSE;
6107 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
6110 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
6123 if (Hoption.
Logy && yp < logymin) drawmarker =
kFALSE;
6124 if (optionE && drawmarker) {
6125 if ((yi3 < yi1 - s2y) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1 - s2y,ymax));
6126 if ((yi1 + s2y < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1 + s2y, ymin),xi4,yi4);
6128 if (Hoption.
Hist != 2) {
6129 if (yi1<ymax && yi1>ymin) {
6130 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
6131 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
6135 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
6136 if ((yi3 < yi1) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1,ymax));
6137 if ((yi1 < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1,ymin),xi4,yi4);
6139 if (Hoption.
Hist != 2) {
6140 if (yi1<ymax && yi1>ymin) {
6141 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
6142 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
6149 if (option1 && drawmarker) {
6150 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
6151 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
6152 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
6153 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
6158 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
6187 if (if2 > npoints) {
6188 for (i=1; i<if1; i++) {
6189 xline[if1-2+i] = xline[if2-1+i];
6190 yline[if1-2+i] = yline[if2-1+i];
6194 if (option4) graph.
PaintGraph(2*npoints,xline,yline,
"FC");
6195 else graph.
PaintGraph(2*npoints,xline,yline,
"F");
6196 gPad->SetLogx(logx);
6197 gPad->SetLogy(logy);
6209 fH->TAttMarker::Modify();
6210 fH->TAttLine::Modify();
6222 Error(
"Paint2DErrors",
"no TView in current pad");
6229 view->
SetView(phideg, thedeg, psideg, irep);
6234 fLego->TAttFill::Modify();
6235 Int_t backcolor =
gPad->GetFrameFillColor();
6240 fLego->TAttFill::Modify();
6256 if (Hoption.
Error == 110) {
6272 else y1 = Hparam.
ymin;
6274 else y2 = Hparam.
ymin;
6281 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6291 else x1 = Hparam.
xmin;
6293 else x2 = Hparam.
xmin;
6308 else z = Hparam.
zmin;
6310 else z1 = Hparam.
zmin;
6312 else z2 = Hparam.
zmin;
6315 if (z <= Hparam.
zmin)
continue;
6316 if (z > Hparam.
zmax) z = Hparam.
zmax;
6324 gPad->PaintLine3D(temp1, temp2);
6331 gPad->PaintLine3D(temp1, temp2);
6338 gPad->PaintLine3D(temp1, temp2);
6342 view->
WCtoNDC(temp1, &temp2[0]);
6343 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6370 if (Hoption.
Same)
return;
6374 if (Hoption.
Lego || Hoption.
Surf || Hoption.
Tri ||
6377 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6383 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6406 f2->
Paint(
"surf same");
6408 obj->
Paint(
"cont3 same");
6415 gPad->PushSelectableObject(obj);
6419 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6435 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6438 static char chopth[17];
6440 Int_t htype, oldhtype;
6441 Int_t i, j, first, last, nbins, fixbin;
6445 strlcpy(chopth,
" ",17);
6459 last = Hparam.
xlast;
6460 nbins = last - first + 1;
6466 if (fixbin) keepx =
new Double_t[2];
6467 else keepx =
new Double_t[nbins+1];
6474 for (j=first; j<=last;j++) {
6480 if (!Hoption.
Line) {
6484 keepy[j-first] = yb;
6489 if (fixbin) { keepx[0] = Hparam.
xmin; keepx[1] = Hparam.
xmax; }
6500 if (htype == 0 || htype == 1000) htype = 1001;
6507 if (Hoption.
Line) chopth[0] =
'L';
6508 if (Hoption.
Star) chopth[1] =
'*';
6509 if (Hoption.
Mark) chopth[2] =
'P';
6510 if (Hoption.
Mark == 10) chopth[3] =
'0';
6512 if (Hoption.
Curve) chopth[3] =
'C';
6513 if (Hoption.
Hist > 0) chopth[4] =
'H';
6514 else if (Hoption.
Bar) chopth[5] =
'B';
6524 if (!fixbin && strlen(chopth)) {
6528 if (Hoption.
Fill == 2) chopth[13] =
'2';
6580 if (Hoption.
Box || Hoption.
Lego) {
6581 if (Hoption.
Box == 11 || Hoption.
Lego == 11) {
6583 }
else if (Hoption.
Box == 12 || Hoption.
Lego == 12) {
6585 }
else if (Hoption.
Box == 13 || Hoption.
Lego == 13) {
6591 }
else if (strstr(opt,
"iso")) {
6594 }
else if (strstr(opt,
"tf3")) {
6598 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6601 if (strstr(opt,
"fb")) Hoption.
FrontBox = 0;
6602 if (strstr(opt,
"bb")) Hoption.
BackBox = 0;
6609 view->
SetView(phideg, thedeg, psideg, irep);
6612 gROOT->ProcessLine(cmd);
6614 if (Hoption.
Same)
return;
6643 while ((obj = next())) {
6649 if (Hoption.
Same != 1) {
6666 static const char *where =
"PaintInit";
6679 Hparam.
xlast = last;
6686 if (Hparam.
xmax<=0) {
6687 Error(where,
"cannot set X axis to log scale");
6694 for (i=first; i<=last; i++) {
6706 Error(where,
"cannot set X axis to log scale");
6716 if (Hparam.
xlast > last) Hparam.
xlast = last;
6730 Int_t nonNullErrors = 0;
6732 for (i=first; i<=last;i++) {
6740 if (Hoption.
Error) {
6745 if (e1 > 0) nonNullErrors++;
6758 while ((f = (
TObject*) next())) {
6762 fval = f1->
Eval(xv[0],0,0);
6766 if (c1 > 0 && fval > 0.3*c1) ymin =
TMath::Min(ymin,fval);
6774 if (!nonNullErrors) {
6775 if (Hoption.
Error) {
6784 if (Hoption.
Logy && ymin <= 0) {
6785 if (ymax >= 1) ymin =
TMath::Max(.005,ymax*1
e-10);
6786 else ymin = 0.001*
ymax;
6792 if (Hoption.
Logy && xm < 0) {
6793 Error(where,
"log scale requested with a negative argument (%f)", xm);
6795 }
else if (Hoption.
Logy && xm>=0 && ymax==0) {
6804 if (ymax > 0) ymin = 0.001*
ymax;
6806 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", ymax);
6814 }
else if (ymin < 0) {
6826 ymin = ymin*(1-1
E-14);
6827 ymax = ymax*(1+1
E-14);
6834 if (allchan) factor /= allchan;
6835 if (factor == 0) factor = 1;
6852 if (ymin <=0 || ymax <=0) {
6853 Error(where,
"Cannot set Y axis to log scale");
6860 if (!Hoption.
Same) {
6872 if (ymin >= 0) ymin = 0;
6873 else ymin -= yMARGIN*(ymax-
ymin);
6876 if (ymin >= 0 && (ymin-dymin <= 0)) ymin = 0;
6885 ymax += yMARGIN*(ymax-
ymin);
6899 static const char *where =
"PaintInitH";
6912 Hparam.
xlast = last;
6923 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
6924 Error(where,
"cannot set Y axis to log scale");
6931 if (Hparam.
xlast > last) Hparam.
xlast = last;
6946 for (i=first; i<=last;i++) {
6950 if (Hoption.
Error) {
6957 while ((f = (
TObject*) next())) {
6961 fval = f1->
Eval(xv[0],0,0);
6964 if (fval > 0.3*c1) xmin =
TMath::Min(xmin,fval);
6975 if (Hoption.
Logx && xmin <= 0) {
6977 else xmin = 0.001*
xmax;
6982 if (Hoption.
Logx && xm <= 0) {
6983 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
6989 if (xmax > 0) xmin = 0.001*
xmax;
6991 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", xmax);
6999 }
else if (xmin < 0) {
7013 if (allchan) factor /= allchan;
7014 if (factor == 0) factor = 1;
7024 if (xmin <=0 || xmax <=0) {
7025 Error(where,
"Cannot set Y axis to log scale");
7032 if (!Hoption.
Same) {
7043 if (xmin >= 0) xmin = 0;
7044 else xmin -= yMARGIN*(xmax-
xmin);
7051 xmax += yMARGIN*(xmax-
xmin);
7064 Double_t wxyz[8][3] = { {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7065 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1} };
7066 Int_t iface[6][4] = { {0,3,2,1}, {4,5,6,7},
7067 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7} };
7087 Error(
"PaintH3",
"no TView in current pad");
7094 view->
SetView(phideg, thedeg, psideg, irep);
7096 Int_t backcolor =
gPad->GetFrameFillColor();
7112 Int_t incrx = (tnorm[ 8] < 0.) ? -1 : +1;
7113 Int_t incry = (tnorm[ 9] < 0.) ? -1 : +1;
7114 Int_t incrz = (tnorm[10] < 0.) ? -1 : +1;
7129 fH->TAttFill::Modify();
7130 fH->TAttLine::Modify();
7139 Double_t pmin[3], pmax[3], sxyz[8][3];
7140 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7143 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7146 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7156 if (w < wmin)
continue;
7157 if (w > wmax) w = wmax;
7159 if (scale == 0)
continue;
7160 for (
Int_t i=0; i<3; ++i) {
7161 Double_t c = (pmax[i] + pmin[i])*0.5;
7162 Double_t d = (pmax[i] - pmin[i])*scale;
7163 for (
Int_t k=0; k<8; ++k) {
7164 sxyz[k][i] = wxyz[k][i]*d + c;
7167 for (
Int_t k=0; k<8; ++k) {
7168 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7171 for (
Int_t k=0; k<6; ++k) {
7172 for (
Int_t i=0; i<4; ++i) {
7173 Int_t iv = iface[k][i];
7177 x[4] = x[0] ; y[4] = y[0];
7179 x[5] = x[2] ; y[5] = y[2];
7180 x[6] = x[3] ; y[6] = y[3];
7181 x[7] = x[1] ; y[7] = y[1];
7186 Double_t z = (x[2]-x[0])*(y[3]-y[1]) - (y[2]-y[0])*(x[3]-x[1]);
7187 if (z <= 0.)
continue;
7189 theColor = ncolors*((w-wmin)/(wmax-wmin)) -1;
7192 if (k == 3 || k == 5) {
7194 }
else if (k == 0 || k == 1) {
7200 fH->TAttFill::Modify();
7201 gPad->PaintFillArea(4, x, y);
7202 if (iopt != 3)
gPad->PaintPolyLine(n, x, y);
7230 fH->TAttFill::Modify();
7240 {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7241 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1}
7243 Int_t iface[6][4] = {
7244 {0,3,2,1}, {4,5,6,7},
7245 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}
7249 {0,-1,0}, {1,0,0}, {0,1,0}, {-1,0,0}
7270 Error(
"PaintH3",
"no TView in current pad");
7277 view->
SetView(phideg, thedeg, psideg, irep);
7279 Int_t backcolor =
gPad->GetFrameFillColor();
7294 Int_t incrx = (tnorm[ 8] < 0.) ? +1 : -1;
7295 Int_t incry = (tnorm[ 9] < 0.) ? +1 : -1;
7296 Int_t incrz = (tnorm[10] < 0.) ? +1 : -1;
7305 fH->TAttLine::Modify();
7308 const Int_t NTMAX = 100;
7313 Double_t pmin[3], pmax[3], sxyz[8][3], pp[4][2];
7314 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7317 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7320 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7329 if (w < wmin)
continue;
7330 if (w > wmax) w = wmax;
7332 if (scale == 0)
continue;
7333 for (
Int_t i=0; i<3; ++i) {
7334 Double_t c = (pmax[i] + pmin[i])*0.5;
7335 Double_t d = (pmax[i] - pmin[i])*scale;
7336 for (
Int_t k=0; k<8; ++k) {
7337 sxyz[k][i] = wxyz[k][i]*d + c;
7340 for (
Int_t k=0; k<8; ++k) {
7341 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7343 for (
Int_t k=0; k<6; ++k) {
7345 view->
FindNormal(normal[k][0], normal[k][1], normal[k][2], zn);
7346 if (zn <= 0)
continue;
7347 for (
Int_t i=0; i<4; ++i) {
7348 Int_t ip = iface[k][i];
7349 pp[i][0] = sxyz[ip][0];
7350 pp[i][1] = sxyz[ip][1];
7352 for (
Int_t i=0; i<4; ++i) {
7354 Int_t i2 = (i == 3) ? 0 : i + 1;
7357 Double_t xdel = pp[i2][0] - pp[i1][0];
7358 Double_t ydel = pp[i2][1] - pp[i1][1];
7360 for (
Int_t it = 0; it < nt; ++it) {
7361 x[0] = pp[i1][0] + xdel*tt[it][0];
7362 y[0] = pp[i1][1] + ydel*tt[it][0];
7363 x[1] = pp[i1][0] + xdel*tt[it][1];
7364 y[1] = pp[i1][1] + ydel*tt[it][1];
7365 gPad->PaintPolyLine(2, x, y);
7373 Double_t xdel = pp[i2][0] - pp[i1][0];
7374 Double_t ydel = pp[i2][1] - pp[i1][1];
7376 for (
Int_t it = 0; it < nt; ++it) {
7377 x[0] = pp[i1][0] + xdel*tt[it][0];
7378 y[0] = pp[i1][1] + ydel*tt[it][0];
7379 x[1] = pp[i1][0] + xdel*tt[it][1];
7380 y[1] = pp[i1][1] + ydel*tt[it][1];
7381 gPad->PaintPolyLine(2, x, y);
7386 xdel = pp[i2][0] - pp[i1][0];
7387 ydel = pp[i2][1] - pp[i1][1];
7388 for (
Int_t it = 0; it < nt; ++it) {
7389 x[0] = pp[i1][0] + xdel*tt[it][0];
7390 y[0] = pp[i1][1] + ydel*tt[it][0];
7391 x[1] = pp[i1][0] + xdel*tt[it][1];
7392 y[1] = pp[i1][1] + ydel*tt[it][1];
7393 gPad->PaintPolyLine(2, x, y);
7435 Int_t ic2 = ic1+nbcol;
7436 Int_t ic3 = ic2+nbcol;
7471 Error(
"PaintH3Iso",
"no TView in current pad");
7480 view->
SetView(phideg, thedeg, psideg, irep);
7482 Int_t backcolor =
gPad->GetFrameFillColor();
7498 for (
Int_t col=0;col<nbcol;col++) {
7499 acol =
gROOT->GetColor(col+icol1);
7501 if (acol) acol->
SetRGB(r, g, b);
7516 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
7544 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
7555 if (deltaz == 0) deltaz = 1;
7603 Color_t colormain = -1, colordark = -1;
7607 if (Hoption.
Lego == 13) {
7612 if (Hoption.
Lego == 14) {
7614 drawShadowsInLego1 =
kFALSE;
7640 if (Hoption.
Lego == 11) {
7644 for (
Int_t id=0;
id<=nids;
id++) {
7647 if (colormain == 1) colormain = 17;
7649 else colordark = colormain;
7662 Error(
"PaintLego",
"no TView in current pad");
7669 view->
SetView(phideg, thedeg, psideg, irep);
7677 fLego->TAttFill::Modify();
7679 Int_t backcolor =
gPad->GetFrameFillColor();
7685 fLego->TAttFill::Modify();
7692 if (Hoption.
Lego == 19) {
7700 if (Hoption.
Lego == 11 || Hoption.
Lego == 12) {
7730 if (Hoption.
Lego == 1) {
7737 if (Hoption.
Lego == 1 || Hoption.
Lego == 11) {
7765 Int_t ndivx, ndivy, ndivz, i;
7766 Double_t x1[3], x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
7767 static char chopax[8], chopay[8], chopaz[8];
7768 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
7773 Error(
"PaintLegoAxis",
"no TView in current pad");
7788 gPad->PaintLine(x1[0],x1[1],x2[0],x2[1]);
7798 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
7799 for (i = 1; i <= 8; ++i) {
7800 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
7801 r[i*3 - 2] = av[i*3 - 2]*sina;
7802 r[i*3 - 1] = av[i*3 - 1];
7805 view->
WCtoNDC(&r[ix1*3 - 3], x1);
7806 view->
WCtoNDC(&r[ix2*3 - 3], x2);
7807 view->
WCtoNDC(&r[iy1*3 - 3], y1);
7808 view->
WCtoNDC(&r[iy2*3 - 3], y2);
7809 view->
WCtoNDC(&r[iz1*3 - 3], z1);
7810 view->
WCtoNDC(&r[iz2*3 - 3], z2);
7816 if (!rmin || !rmax)
return;
7819 if (x1[0] > x2[0]) strlcpy(chopax,
"SDH=+",8);
7820 else strlcpy(chopax,
"SDH=-",8);
7821 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
7822 else strlcpy(chopay,
"SDH=-",8);
7823 if (z2[1] > z1[1]) strlcpy(chopaz,
"SDH=+",8);
7824 else strlcpy(chopaz,
"SDH=-",8);
7827 if (Hoption.
Logx) strlcat(chopax,
"G",8);
7828 if (Hoption.
Logy) strlcat(chopay,
"G",8);
7829 if (Hoption.
Logz) strlcat(chopaz,
"G",8);
7838 strlcat(chopax,
"N",8);
7842 strlcat(chopay,
"N",8);
7846 strlcat(chopaz,
"N",8);
7868 strlcat(chopax,
"t",8);
7876 axis->
PaintAxis(x1[0], x1[1], x2[0], x2[1], bmin, bmax, ndivx, chopax);
7886 strlcpy(chopay,
"V=+UN",8);
7901 strlcat(chopay,
"t",8);
7909 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
7924 strlcat(chopaz,
"t",8);
7932 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
7950 delete palette; palette = 0;
7955 delete palette; palette = 0;
7970 if (xmax > x2) xmax =
gPad->PadtoX(
gPad->GetX2()-0.01*xr);
7983 fH->TAttMarker::Modify();
7991 if (zmin == 0 && zmax == 0)
return;
8002 if (zmin == 0 && zmax == 0)
return;
8005 if (ncells > 10000) scale /= 5;
8009 if (dz >=
kNMAX || zmax < 1) {
8010 scale = (
kNMAX-1)/dz;
8011 if (ncells > 10000) scale /= 5;
8018 if (zmin >= 0) zmin = 0;
8019 else zmin -= yMARGIN*(zmax-zmin);
8021 Double_t dzmin = yMARGIN*(zmax-zmin);
8022 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
8031 strlcpy(optscat,opt.
Data(),100);
8032 char *oscat = strstr(optscat,
"scat=");
8033 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
8034 sscanf(oscat+5,
"%lg",&scale);
8048 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
8050 if (z < zmin) z = zmin;
8051 if (z > zmax) z = zmax;
8057 if (z <= 0)
continue;
8061 for (
Int_t loop=0; loop<k; loop++) {
8062 if (k+marker >=
kNMAX) {
8063 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8066 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
8067 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
8069 if (fXbuf[marker] > 0) fXbuf[marker] =
TMath::Log10(fXbuf[marker]);
8076 if (fXbuf[marker] <
gPad->GetUxmin())
break;
8077 if (
fYbuf[marker] <
gPad->GetUymin())
break;
8078 if (fXbuf[marker] >
gPad->GetUxmax())
break;
8079 if (
fYbuf[marker] >
gPad->GetUymax())
break;
8085 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8107 R__TMatrixFBase->
Draw(option);
8113 R__TMatrixDBase->
Draw(option);
8119 R__TVectorF->
Draw(option);
8125 R__TVectorD->
Draw(option);
8142 while ((obj = next())) {
8149 if (stats && dostat) {
8155 if (!dofit) fit = 0;
8156 if (dofit == 1) dofit = 111;
8157 if (dostat == 1) dostat = 1111;
8158 Int_t print_name = dostat%10;
8159 Int_t print_entries = (dostat/10)%10;
8160 Int_t print_mean = (dostat/100)%10;
8161 Int_t print_stddev = (dostat/1000)%10;
8162 Int_t print_under = (dostat/10000)%10;
8163 Int_t print_over = (dostat/100000)%10;
8164 Int_t print_integral= (dostat/1000000)%10;
8165 Int_t print_skew = (dostat/10000000)%10;
8166 Int_t print_kurt = (dostat/100000000)%10;
8167 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8168 print_under + print_over + print_integral +
8169 print_skew + print_kurt;
8170 Int_t print_fval = dofit%10;
8171 Int_t print_ferrors = (dofit/10)%10;
8172 Int_t print_fchi2 = (dofit/100)%10;
8173 Int_t print_fprob = (dofit/1000)%10;
8174 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8177 else nlinesf += fit->
GetNpar();
8183 if (!dostat && !fit) {
8222 if (print_entries) {
8229 if (print_mean == 1) {
8239 if (print_mean == 1) {
8251 if (print_stddev == 1) {
8261 if (print_stddev == 1) {
8282 if (print_integral) {
8283 if (print_integral == 1) {
8293 if (print_skew == 1) {
8304 if (print_kurt == 1) {
8320 if (print_fchi2) stats->
AddText(t);
8326 if (print_fval || print_ferrors) {
8331 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8335 if (print_ferrors) {
8368 while ((obj = next())) {
8374 if (stats && dostat) {
8380 if (dostat == 1) dostat = 1111;
8381 Int_t print_name = dostat%10;
8382 Int_t print_entries = (dostat/10)%10;
8383 Int_t print_mean = (dostat/100)%10;
8384 Int_t print_stddev = (dostat/1000)%10;
8385 Int_t print_under = (dostat/10000)%10;
8386 Int_t print_over = (dostat/100000)%10;
8387 Int_t print_integral= (dostat/1000000)%10;
8388 Int_t print_skew = (dostat/10000000)%10;
8389 Int_t print_kurt = (dostat/100000000)%10;
8390 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8391 if (print_under || print_over) nlines += 3;
8396 if (!dostat && !fit) {
8436 if (print_entries) {
8443 if (print_mean == 1) {
8462 if (print_stddev == 1) {
8480 if (print_integral) {
8486 if (print_skew == 1) {
8505 if (print_kurt == 1) {
8523 if (print_under || print_over) {
8534 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8535 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8536 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8537 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8538 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8539 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8540 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8541 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8542 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8587 while ((obj = next())) {
8593 if (stats && dostat) {
8599 if (dostat == 1) dostat = 1111;
8600 Int_t print_name = dostat%10;
8601 Int_t print_entries = (dostat/10)%10;
8602 Int_t print_mean = (dostat/100)%10;
8603 Int_t print_stddev = (dostat/1000)%10;
8604 Int_t print_under = (dostat/10000)%10;
8605 Int_t print_over = (dostat/100000)%10;
8606 Int_t print_integral= (dostat/1000000)%10;
8607 Int_t print_skew = (dostat/10000000)%10;
8608 Int_t print_kurt = (dostat/100000000)%10;
8609 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
8610 if (print_under || print_over) nlines += 3;
8615 if (!dostat && !fit) {
8653 if (print_entries) {
8660 if (print_mean == 1) {
8686 if (print_stddev == 1) {
8711 if (print_integral) {
8716 if (print_skew == 1) {
8742 if (print_kurt == 1) {
8767 if (print_under || print_over) {
8816 if (deltaz == 0) deltaz = 1;
8887 Error(
"PaintSurface",
"no TView in current pad");
8894 view->
SetView(phideg, thedeg, psideg, irep);
8904 fLego->TAttFill::Modify();
8906 Int_t backcolor =
gPad->GetFrameFillColor();
8912 fLego->TAttFill::Modify();
8918 if (Hoption.
Surf == 13 || Hoption.
Surf == 15) {
8928 Hoption.
Surf = hoption35;
8935 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 14 || Hoption.
Surf == 17) {
8944 if (Hoption.
Surf == 14) {
8950 fmax = fmin + (yligh1+0.1)*(qd+qs);
8955 if (!colref)
return;
8960 for (
Int_t col=0;col<nbcol;col++) {
8961 acol =
gROOT->GetColor(col+icol1);
8963 if (acol) acol->
SetRGB(r,g,b);
8973 }
else if (Hoption.
Surf == 15) {
8977 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 16 || Hoption.
Surf == 17) {
9006 if (Hoption.
Surf == 17) {
9019 if ((!Hoption.
Same) &&
9020 (Hoption.
Surf == 1 || Hoption.
Surf == 13 || Hoption.
Surf == 16)) {
9052 if (!dt && !dtOld)
return;
9061 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
9065 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
9070 if (!rmin || !rmax)
return;
9078 fXbuf[0] = Hparam.
xmin;
9080 fXbuf[1] = Hparam.
ymin;
9082 fXbuf[2] = Hparam.
zmin;
9089 Error(
"PaintTriangles",
"no TView in current pad");
9096 view->
SetView(phideg, thedeg, psideg, irep);
9101 fLego->TAttFill::Modify();
9102 Int_t backcolor =
gPad->GetFrameFillColor();
9107 fLego->TAttFill::Modify();
9128 if (!Hoption.
Axis && !Hoption.
Same) {
9149 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
9156 for (i = 0; i < ndivz; ++i) {
9163 delete [] colorlevel;
9186 if (Hoption.
Func == 2) {
9209 if (Hoption.
Color) {
9227 if (!Hoption.
Lego && !Hoption.
Surf &&
9233 while ((obj = next())) {
9239 if (Hoption.
Same != 1) {
9241 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9261 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9278 while ((obj=next())) {
9281 if (z==0 && Hoption.
Zero)
continue;
9287 g->TAttLine::Modify();
9288 g->TAttMarker::Modify();
9289 g->TAttFill::Modify();
9299 if (fill) g->
Paint(
"F");
9300 if (mark) g->
Paint(
"P");
9310 while ((g = (
TGraph*) nextg())) {
9311 g->TAttLine::Modify();
9312 g->TAttMarker::Modify();
9313 g->TAttFill::Modify();
9323 if (fill) g->
Paint(
"F");
9324 if (mark) g->
Paint(
"P");
9337 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9340 Int_t ncolors, color, theColor;
9371 while ((obj=next())) {
9376 if (z==0 && Hoption.
Zero)
continue;
9381 if (z < zmin)
continue;
9386 if (z < zc)
continue;
9388 for (
Int_t k=0; k<ndiv; k++) {
9397 color =
Int_t(0.01+(z-zmin)*scale);
9400 if (theColor > ncolors-1) theColor = ncolors-1;
9406 g->TAttFill::Modify();
9417 while ((g = (
TGraph*) nextg())) {
9419 g->TAttFill::Modify();
9434 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9437 Int_t k, loop, marker=0;
9438 Double_t z, xk,xstep, yk, ystep, xp, yp;
9452 scale = (
kNMAX-1)/dz;
9466 while ((obj=next())) {
9469 if (
a>maxarea) maxarea =
a;
9474 while ((obj=next())) {
9478 if (z < zmin) z = zmin;
9479 if (z > zmax) z = zmax;
9494 if (k <= 0 || z <= 0)
continue;
9497 if (k+marker >=
kNMAX) {
9498 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9501 xp = (random.
Rndm()*xstep) + xk;
9502 yp = (random.
Rndm()*ystep) + yk;
9510 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9518 if (k <= 0 || z <= 0)
continue;
9521 if (k+marker >=
kNMAX) {
9522 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9525 xp = (random.
Rndm()*xstep) + xk;
9526 yp = (random.
Rndm()*ystep) + yk;
9534 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
9559 if (Hoption.
Text == 1) angle = 0;
9561 text.TAttText::Modify();
9568 while ((obj=next())) {
9585 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9625 if (Hoption.
Text == 1) angle = 90;
9629 text.TAttText::Modify();
9643 if (yt == 0.)
continue;
9653 if (y >=
gPad->GetY2())
continue;
9654 if (y <= gPad->GetY1())
continue;
9661 if (Hoption.
Text == 1) angle = 0;
9663 text.TAttText::Modify();
9680 if (Hoption.
Text>2000) {
9682 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9720 Error(
"PaintTF3",
"no TView in current pad");
9726 view->
SetView(phideg, thedeg, psideg, irep);
9772 if (Hoption.
Same)
return;
9777 TIter next(
gPad->GetListOfPrimitives());
9778 while ((obj = next())) {
9781 if (strcmp(title->GetName(),
"title")) {title = 0;
continue;}
9785 if (title)
delete title;
9791 if (ht <= 0) ht = 0.05;
9806 if (wt > 0) title->SetX2NDC(title->GetX1NDC()+wt);
9812 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
9814 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
9818 if (talh == 2) xpos = xpos-wt/2.;
9819 if (talh == 3) xpos = xpos-wt;
9820 if (talv == 2) ypos = ypos+ht/2.;
9821 if (talv == 1) ypos = ypos+ht;
9839 if(!
gPad->IsEditable())
delete ptitle;
9848 if (!strcmp(mess,
"SetF3")) {
9850 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
9852 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
9946 if (Hoption.
Same)
return;
9954 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
9962 if (xmin > xmin_aid) xmin = xmin_aid;
9963 if (ymin > ymin_aid) ymin = ymin_aid;
9964 if (xmax < xmax_aid) xmax = xmax_aid;
9965 if (ymax < ymax_aid) ymax = ymax_aid;
9966 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9970 if (xmin >xmin_aid) xmin = xmin_aid;
9971 if (xmax <xmax_aid) xmax = xmax_aid;
9973 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9976 if (ymin >ymin_aid) ymin = ymin_aid;
9977 if (ymax <ymax_aid) ymax = ymax_aid;
9979 }
else if ( Hoption.
Proj ==2) {
9980 if (Hparam.
ymin <= -90 || Hparam.
ymax >=90) {
9981 Warning(
"Mercator Projection",
"Latitude out of range %f or %f", Hparam.
ymin, Hparam.
ymax);
9987 }
else if (Hoption.
Proj == 3) {
9993 if (xmin > xmin_aid) xmin = xmin_aid;
9994 if (ymin > ymin_aid) ymin = ymin_aid;
9995 if (xmax < xmax_aid) xmax = xmax_aid;
9996 if (ymax < ymax_aid) ymax = ymax_aid;
9997 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
10000 if (xmin >xmin_aid) xmin = xmin_aid;
10001 if (xmax <xmax_aid) xmax = xmax_aid;
10003 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
10006 if (ymin >ymin_aid) ymin = ymin_aid;
10007 if (ymax <ymax_aid) ymax = ymax_aid;
10009 }
else if (Hoption.
Proj == 4) {
10015 if (xmin > xmin_aid) xmin = xmin_aid;
10016 if (ymin > ymin_aid) ymin = ymin_aid;
10017 if (xmax < xmax_aid) xmax = xmax_aid;
10018 if (ymax < ymax_aid) ymax = ymax_aid;
10019 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
10022 if (xmin >xmin_aid) xmin = xmin_aid;
10023 if (xmax <xmax_aid) xmax = xmax_aid;
10025 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
10028 if (ymin >ymin_aid) ymin = ymin_aid;
10029 if (ymax <ymax_aid) ymax = ymax_aid;
10044 gPad->Range(xmin - dxr*
gPad->GetLeftMargin(),
10045 ymin - dyr*
gPad->GetBottomMargin(),
10046 xmax + dxr*
gPad->GetRightMargin(),
10047 ymax + dyr*
gPad->GetTopMargin());
10048 gPad->RangeAxis(xmin, ymin, xmax, ymax);
10057 if (h == 0)
return;
10071 static const char *where =
"TableInit";
10084 Hparam.
xlast = last;
10092 if (Hoption.
Logx) {
10098 if (Hparam.
xmin <=0 || Hparam.
xmax <=0) {
10099 Error(where,
"cannot set X axis to log scale");
10105 if (Hparam.
xlast > last) Hparam.
xlast = last;
10113 Hparam.
ylast = last;
10122 if (Hoption.
Logy) {
10127 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
10128 Error(where,
"cannot set Y axis to log scale");
10134 if (Hparam.
ylast > last) Hparam.
ylast = last;
10150 if (Hoption.
Error) {
10163 if (Hoption.
Logz && zmax < 0) {
10164 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10166 }
else if (Hoption.
Logz && zmin>=0 && zmax==0) {
10170 if (zmin >= zmax) {
10171 if (Hoption.
Logz) {
10172 if (zmax > 0) zmin = 0.001*zmax;
10174 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10184 if (allchan) factor /= allchan;
10185 if (factor == 0) factor = 1;
10187 zmax = factor*zmax;
10188 zmin = factor*zmin;
10196 if (Hoption.
Logz) {
10214 zmax += yMARGIN*(zmax-zmin);
10222 if (zmin >= 0) zmin = 0;
10223 else zmin -= yMARGIN*(zmax-zmin);
10225 Double_t dzmin = yMARGIN*(zmax-zmin);
10226 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10227 else zmin -= dzmin;
10232 Hparam.
zmin = zmin;
10233 Hparam.
zmax = zmax;
10249 static char ef[20];
10250 char tf[20], tv[64];
10259 int iE = sv.
Index(
"E");
10260 int id = sv.
Index(
".");
10264 if (ie >= 0 || iE >= 0) {
10265 if (sv.
Index(
"+") >= 0) {
10270 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10272 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10277 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10279 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10284 }
else if (
id < 0) {
10305 Int_t projection = 0;
10306 if (opt.
Contains(
"x")) projection = 1;
10307 if (opt.
Contains(
"y")) projection = 2;
10308 if (opt.
Contains(
"z")) projection = 3;
10309 if (opt.
Contains(
"xy")) projection = 4;
10310 if (opt.
Contains(
"yx")) projection = 5;
10312 if (opt.
Contains(
"zx")) projection = 7;
10313 if (opt.
Contains(
"yz")) projection = 8;
10314 if (opt.
Contains(
"zy")) projection = 9;
10318 gROOT->MakeDefCanvas();
10330 gPad->SetDoubleBuffer(0);
10334 static int pyold1 = 0;
10335 static int pyold2 = 0;
10336 float uxmin =
gPad->GetUxmin();
10337 float uxmax =
gPad->GetUxmax();
10339 int pxmax =
gPad->XtoAbsPixel(uxmax);
10342 Int_t biny1 = fH->GetYaxis()->FindBin(y);
10344 Int_t py1 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinLowEdge(biny1));
10345 Int_t py2 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinUpEdge(biny2));
10370 TH1D *hp = ((
TH2*)fH)->ProjectionX(prjName, biny1, biny2);
10375 if (biny1 == biny2) {
10376 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
10377 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny1);
10380 if (fH->GetYaxis()->GetLabels() != NULL) {
10381 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf] %s", biny1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetYaxis()->GetBinLabel(biny1)));
10383 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10386 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
10387 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny2);
10392 if (fH->GetYaxis()->GetLabels() != NULL) {
10393 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)));
10395 hp->SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10398 hp->SetXTitle(fH->GetXaxis()->GetTitle());
10399 hp->SetYTitle(
"Number of Entries");
10413 gPad->SetDoubleBuffer(0);
10417 static int pxold1 = 0;
10418 static int pxold2 = 0;
10419 float uymin =
gPad->GetUymin();
10420 float uymax =
gPad->GetUymax();
10422 int pymax =
gPad->YtoAbsPixel(uymax);
10425 Int_t binx1 = fH->GetXaxis()->FindBin(x);
10427 Int_t px1 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinLowEdge(binx1));
10428 Int_t px2 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinUpEdge(binx2));
10453 TH1D *hp = ((
TH2*)fH)->ProjectionY(prjName, binx1, binx2);
10458 if (binx1 == binx2) {
10459 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
10460 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx1);
10463 if (fH->GetXaxis()->GetLabels() != NULL) {
10464 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf] [%s]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetXaxis()->GetBinLabel(binx1)));
10466 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10469 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
10470 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx2);
10475 if (fH->GetXaxis()->GetLabels() != NULL) {
10476 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)));
10478 hp->SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10481 hp->SetXTitle(fH->GetYaxis()->GetTitle());
10482 hp->SetYTitle(
"Number of Entries");
10501 if (fH->GetDimension() < 3) {
10506 gPad->SetDoubleBuffer(0);
10522 static TPoint endface1[5];
10523 static TPoint endface2[5];
10532 int pxmin =
gPad->XtoAbsPixel(uxmin);
10533 int pxmax =
gPad->XtoAbsPixel(uxmax);
10534 if (pxmin==pxmax)
return;
10535 int pymin =
gPad->YtoAbsPixel(uymin);
10536 int pymax =
gPad->YtoAbsPixel(uymax);
10537 if (pymin==pymax)
return;
10538 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10539 Double_t cy = (pymax-pymin)/(uymax-uymin);
10554 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10558 Int_t lastZ = zaxis->
GetLast();
10559 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10562 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10563 if (nbins>1 && line1[0].GetX()) {
10574 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10575 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10578 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10579 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10586 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10587 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10590 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10591 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10597 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10598 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10601 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10602 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10608 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10609 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10612 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10613 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10615 endface1[0].
SetX(line1[0].GetX());
10616 endface1[0].
SetY(line1[0].GetY());
10617 endface1[1].
SetX(line2[0].GetX());
10618 endface1[1].
SetY(line2[0].GetY());
10619 endface1[2].
SetX(line3[0].GetX());
10620 endface1[2].
SetY(line3[0].GetY());
10621 endface1[3].
SetX(line4[0].GetX());
10622 endface1[3].
SetY(line4[0].GetY());
10623 endface1[4].
SetX(line1[0].GetX());
10624 endface1[4].
SetY(line1[0].GetY());
10626 endface2[0].
SetX(line1[1].GetX());
10627 endface2[0].
SetY(line1[1].GetY());
10628 endface2[1].
SetX(line2[1].GetX());
10629 endface2[1].
SetY(line2[1].GetY());
10630 endface2[2].
SetX(line3[1].GetX());
10631 endface2[2].
SetY(line3[1].GetY());
10632 endface2[3].
SetX(line4[1].GetX());
10633 endface2[3].
SetY(line4[1].GetY());
10634 endface2[4].
SetX(line1[1].GetX());
10635 endface2[4].
SetY(line1[1].GetY());
10657 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10669 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10673 Int_t lastZ = zaxis->
GetLast();
10674 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10677 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10678 if (nbins>1 && line1[0].GetX()) {
10689 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10690 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10693 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10694 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10701 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10702 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10705 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10706 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10712 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10713 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10716 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10717 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10723 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10724 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10727 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10728 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10730 endface1[0].
SetX(line1[0].GetX());
10731 endface1[0].
SetY(line1[0].GetY());
10732 endface1[1].
SetX(line2[0].GetX());
10733 endface1[1].
SetY(line2[0].GetY());
10734 endface1[2].
SetX(line3[0].GetX());
10735 endface1[2].
SetY(line3[0].GetY());
10736 endface1[3].
SetX(line4[0].GetX());
10737 endface1[3].
SetY(line4[0].GetY());
10738 endface1[4].
SetX(line1[0].GetX());
10739 endface1[4].
SetY(line1[0].GetY());
10741 endface2[0].
SetX(line1[1].GetX());
10742 endface2[0].
SetY(line1[1].GetY());
10743 endface2[1].
SetX(line2[1].GetX());
10744 endface2[1].
SetY(line2[1].GetY());
10745 endface2[2].
SetX(line3[1].GetX());
10746 endface2[2].
SetY(line3[1].GetY());
10747 endface2[3].
SetX(line4[1].GetX());
10748 endface2[3].
SetY(line4[1].GetY());
10749 endface2[4].
SetX(line1[1].GetX());
10750 endface2[4].
SetY(line1[1].GetY());
10771 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10783 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10787 Int_t lastY = yaxis->
GetLast();
10788 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
10791 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10792 if (nbins>1 && line1[0].GetX()) {
10803 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10804 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10807 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10808 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10815 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10816 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10819 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10820 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10826 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10827 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10830 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10831 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10837 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10838 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10841 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10842 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10844 endface1[0].
SetX(line1[0].GetX());
10845 endface1[0].
SetY(line1[0].GetY());
10846 endface1[1].
SetX(line2[0].GetX());
10847 endface1[1].
SetY(line2[0].GetY());
10848 endface1[2].
SetX(line3[0].GetX());
10849 endface1[2].
SetY(line3[0].GetY());
10850 endface1[3].
SetX(line4[0].GetX());
10851 endface1[3].
SetY(line4[0].GetY());
10852 endface1[4].
SetX(line1[0].GetX());
10853 endface1[4].
SetY(line1[0].GetY());
10855 endface2[0].
SetX(line1[1].GetX());
10856 endface2[0].
SetY(line1[1].GetY());
10857 endface2[1].
SetX(line2[1].GetX());
10858 endface2[1].
SetY(line2[1].GetY());
10859 endface2[2].
SetX(line3[1].GetX());
10860 endface2[2].
SetY(line3[1].GetY());
10861 endface2[3].
SetX(line4[1].GetX());
10862 endface2[3].
SetY(line4[1].GetY());
10863 endface2[4].
SetX(line1[1].GetX());
10864 endface2[4].
SetY(line1[1].GetY());
10885 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10897 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10900 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10901 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10906 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10907 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10908 rect1[4].
SetX(rect1[0].GetX());
10909 rect1[4].
SetY(rect1[0].GetY());
10912 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10913 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10916 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10917 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10920 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10921 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10928 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10929 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10930 rect2[4].
SetX(rect2[0].GetX());
10931 rect2[4].
SetY(rect2[0].GetY());
10934 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10935 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10938 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10939 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10942 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10943 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10955 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10956 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10968 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10971 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10972 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10977 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10978 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10979 rect1[4].
SetX(rect1[0].GetX());
10980 rect1[4].
SetY(rect1[0].GetY());
10983 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10984 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10987 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10988 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10991 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10992 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10999 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11000 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11001 rect2[4].
SetX(rect2[0].GetX());
11002 rect2[4].
SetY(rect2[0].GetY());
11005 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11006 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11009 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11010 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11013 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11014 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11025 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
11026 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
11038 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
11041 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11042 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11047 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11048 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11049 rect1[4].
SetX(rect1[0].GetX());
11050 rect1[4].
SetY(rect1[0].GetY());
11053 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11054 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11057 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11058 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11061 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11062 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11069 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11070 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11071 rect2[4].
SetX(rect2[0].GetX());
11072 rect2[4].
SetY(rect2[0].GetY());
11075 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11076 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11079 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11080 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11083 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11084 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11095 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
11096 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
11108 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
11111 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11112 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11117 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11118 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11119 rect1[4].
SetX(rect1[0].GetX());
11120 rect1[4].
SetY(rect1[0].GetY());
11123 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11124 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11127 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11128 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11131 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11132 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11139 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11140 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11141 rect2[4].
SetX(rect2[0].GetX());
11142 rect2[4].
SetY(rect2[0].GetY());
11145 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11146 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11149 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11150 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11153 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11154 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11165 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
11166 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
11178 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
11181 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11182 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11187 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11188 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11189 rect1[4].
SetX(rect1[0].GetX());
11190 rect1[4].
SetY(rect1[0].GetY());
11193 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11194 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11197 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11198 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11201 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11202 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11209 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11210 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11211 rect2[4].
SetX(rect2[0].GetX());
11212 rect2[4].
SetY(rect2[0].GetY());
11215 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11216 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11219 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11220 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11223 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11224 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11235 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
11236 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
11248 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
11251 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11252 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11257 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11258 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11259 rect1[4].
SetX(rect1[0].GetX());
11260 rect1[4].
SetY(rect1[0].GetY());
11263 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11264 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11267 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11268 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11271 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11272 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11279 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11280 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11281 rect2[4].
SetX(rect2[0].GetX());
11282 rect2[4].
SetY(rect2[0].GetY());
11285 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11286 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11289 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11290 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11293 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11294 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11305 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
11306 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
void PaintGrapHist(Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt)
Draw the (x,y) as a histogram.
virtual void SetZTitle(const char *title)
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile2D histogram.
virtual const char * GetName() const
Returns name of object.
virtual Double_t GetMaximumStored() const
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
static TString gStringKurtosisX
virtual Float_t GetTickLength() const
void SurfaceProperty(Double_t qqa, Double_t qqd, Double_t qqs, Int_t nnqs, Int_t &irep)
Set surface property coefficients.
int AxisPos
Axis position.
Color_t GetStatColor() const
double dist(Rotation3D const &r1, Rotation3D const &r2)
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual void PaintFrame()
Calculate range and clear pad (canvas).
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
void SetBarWidth(Float_t barwidth=0.5)
virtual void SetAlpha(Float_t a)
static TString gStringUnderflow
void SetOptFit(Int_t fit=1)
Set the fit option.
virtual void PaintArrows(Option_t *option)
Control function to draw a table as an arrow plot
virtual void SetName(const char *name="")
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Int_t FindBin(Double_t x, Double_t y, Double_t z=0)
Returns the bin number of the bin at the given coordinate.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
virtual void SetLogy(Int_t value=1)=0
virtual void PaintStat2(Int_t dostat, TF1 *fit)
Draw the statistics box for 2D histograms.
Int_t yfirst
first bin number along Y
void LegoCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw stack of lego-plots in cartesian coordinates.
static TString gStringMeanX
virtual void PaintContour(Option_t *option)
Control function to draw a 2D histogram as a contour plot.
virtual Int_t GetLogy() const =0
Int_t GetFirst() const
Return first bin on the axis i.e.
Double_t factor
multiplication factor (normalization)
static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual void SetMaximum(Double_t maximum=-1111)
virtual void PaintH3Box(Int_t iopt)
Control function to draw a 3D histogram with boxes.
virtual Int_t GetLogz() const =0
virtual TH1 * Project3D(Option_t *option="x") const
Project a 3-d histogram into 1 or 2-d histograms depending on the option parameter, which may contain a combination of the characters x,y,z,e.
void SetColorDark(Color_t color, Int_t n=0)
Store dark color for stack number n.
int Char
"CHAR" Draw 2D plot with a character set.
Double_t ylowedge
low edge of axis
Color_t GetTitleTextColor() const
virtual Double_t GetBinError(Int_t bin) const
Returns the value of error associated to bin number bin.
Int_t GetNumberContours() const
static TString gStringMean
void PaintGraph(Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt)
Draw the (x,y) as a graph.
Histogram option structure.
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
static TString gStringSkewnessX
virtual Float_t GetLabelOffset() const
static TString gStringSkewnessZ
virtual void PaintTH2PolyColorLevels(Option_t *option)
Control function to draw a TH2Poly as a color plot.
virtual Double_t * GetRmax()=0
virtual Float_t GetBarOffset() const
void SetIsoSurfaceParameters(Double_t fmin, Double_t fmax, Int_t ncolor, Int_t ic1, Int_t ic2, Int_t ic3)
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Int_t GetBinNumber() const
virtual Int_t GetNumberFreeParameters() const
Return the number of free parameters.
int BackBox
= 0 to suppress the back box
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
int Scat
"SCAT" Draw 2D plot a Scatter plot.
THistPainter()
Default constructor.
Double_t GetHistTopMargin() const
virtual Double_t GetMinimumStored() const
virtual Double_t GetNormFactor() const
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
int Proj
1: Aitoff, 2: Mercator, 3: Sinusoidal, 4: Parabolic
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along Y.
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
R__EXTERN TStyle * gStyle
int Axis
"A" Axis are not drawn around the graph.
static const char * GetBestFormat(Double_t v, Double_t e, const char *f)
This function returns the best format to print the error value (e) knowing the parameter value (v) an...
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
int Logy
log scale in Y. Also set by histogram option
virtual void Paint(Option_t *option="")
Paint this crown with its current attributes.
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
static TString gStringIntegralBinWidth
virtual void SetHistogram(TH1 *h)
Set current histogram to h
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
void InitRaster(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Int_t nx, Int_t ny)
Initialize hidden lines removal algorithm (RASTER SCREEN)
void DrawFaceMove3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 3rd variant for "MOVING SCREEN" algorithm (draw level lines only)
void SurfaceFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Service function for Surfaces.
int Pie
"PIE" Draw 1D plot as a pie chart.
TH1D * ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along X.
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual Int_t GetNbinsZ() const
virtual void SetMinimum(Double_t minimum=-1111)
static constexpr double bar
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
Float_t GetEndErrorSize() const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
int ParseOption(char *optin)
Parsing of the option-string.
virtual void PaintTH2PolyBins(Option_t *option)
Control function to draw a TH2Poly bins' contours.
virtual void SetTitle(const char *title="")
Change the title of the axis.
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
Option_t * GetOption() const
void ColorFunction(Int_t nl, Double_t *fl, Int_t *icl, Int_t &irep)
Set correspondance between function and color levels.
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
1-D histogram with a float per channel (see TH1 documentation)}
virtual Int_t PaintInit()
Compute histogram parameters used by the drawing routines.
virtual void Paint2DErrors(Option_t *option)
Draw 2D histograms errors.
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
Short_t Min(Short_t a, Short_t b)
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
void ToLower()
Change string to lower-case.
virtual void SetYTitle(const char *title)
void SetBarOffset(Float_t baroff=0.5)
static void HLStoRGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside one of the graphs 0 otherwise.
static TString gStringStdDevZ
int Text
"TEXT" Draw 2D plot with the content of each cell.
The histogram statistics painter class.
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
user specified contour levels
void SetHistogram(TH1D *proj)
An abstract interface to image processing library.
virtual Float_t GetLabelSize() const
virtual void SetPoint(Int_t point, Double_t x, Double_t y)
Set point number n to (x, y) If n is greater than the current size, the arrays are automatically exte...
virtual void SetMinimum(Double_t minimum=-1111)
Set the minimum value along Y for this function In case the function is already drawn, set also the minimum in the helper histogram.
int Contour
"CONT" Draw 2D plot as a Contour plot.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
void Paint(Option_t *option)
Paint a TGraphDelaunay according to the value of "option":
TObject * At(Int_t idx) const
Double_t zmin
minimum value along Z
Float_t GetTitleY() const
Double_t ymin
minimum value along y
virtual void SetX2(Double_t x2)
virtual std::vector< THistRenderingRegion > ComputeRenderingRegions(TAxis *pAxis, Int_t nPixels, bool isLog)
Returns the rendering regions for an axis to use in the COL2 option.
Double_t zmax
maximum value along Z
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
static constexpr double rad
void InitMoveScreen(Double_t xmin, Double_t xmax)
Initialize "MOVING SCREEN" method.
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
int Logx
log scale in X. Also set by histogram option
don't draw the histogram title
Helper class to represent a bin in the TH2Poly histogram.
const char * GetFitFormat() const
virtual void SetImageQuality(EImageQuality lquality)
Double_t ymax
maximum value along y
static Int_t ProjectMercator2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
static TString gStringMeanZ
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetImage(const Double_t *, UInt_t, UInt_t, TImagePalette *=0)
virtual void PaintColorLevelsFast(Option_t *option)
Rendering scheme for the COL2 and COLZ2 options
Double_t Prob(Double_t chi2, Int_t ndf)
Computation of the probability for a certain Chi-squared (chi2) and number of degrees of freedom (ndf...
void SetOption(CandleOption opt)
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
static constexpr double mg
double beta(double x, double y)
Calculates the beta function.
virtual TObject * FindObject(const char *name) const
Delete a TObjLink object.
Int_t GetOptFit() const
Return the fit option.
virtual void PaintHist(Option_t *option)
Control routine to draw 1D histograms
virtual void PaintTriangles(Option_t *option)
Control function to draw a table using Delaunay triangles.
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
if object in a list can be deleted
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual Style_t GetMarkerStyle() const
Return the marker style.
static void SetF3(TF3 *f3)
Static function Store pointer to current implicit function.
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates).
void DefineGridLevels(Int_t ndivz)
Define the grid levels drawn in the background of surface and lego plots.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void PaintPalette()
Paint the color palette on the right side of the pad.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Int_t GetDimension() const
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in polar coordinates.
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
static struct mg_connection * fc(struct mg_context *ctx)
virtual Int_t GetNDF() const
Return the number of degrees of freedom in the fit the fNDF parameter has been previously computed du...
virtual Double_t GetPsi()=0
Sequenceable collection abstract base class.
static const double x2[5]
Double_t GetYsize()
Return size of the formula along Y in pad coordinates.
virtual void Paint(Option_t *)
Paint a Pie chart in a canvas.
virtual void PaintBoxes(Option_t *option)
Control function to draw a 2D histogram as a box plot
int Surf
"SURF" Draw as a Surface (SURF,Surf=1, SURF1,Surf=11, SURF2,Surf=12)
virtual void Paint(Option_t *chopt="")
Draw this graph with its current attributes.
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile histogram.
void DrawFaceMode3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 3rd option (draw face for stacked lego plot)
Float_t GetTitleFontSize() const
virtual void ProcessMessage(const char *mess, const TObject *obj)
Process message mess.
virtual void PaintCandlePlot(Option_t *option)
Control function to draw a 2D histogram as a candle (box) plot or violin plot
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
void DrawFaceRaster1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "RASTER SCREEN" algorithm (draw face with level lines) ...
static TVirtualPadEditor * GetPadEditor(Bool_t load=kTRUE)
Returns the pad editor dialog. Static method.
const char * GetBinTitle(Int_t bin) const
Returns the bin title.
virtual Bool_t GetTimeDisplay() const
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
const Double_t * GetBuffer() const
int Line
"L" A simple polyline beetwen every point is drawn.
void LightSource(Int_t nl, Double_t yl, Double_t xscr, Double_t yscr, Double_t zscr, Int_t &irep)
Set light source.
void SetCandleWidth(const Double_t width)
void SetHistoWidth(const Double_t width)
virtual void SetStatFormat(const char *format="6.4g")
Change (i.e. set) the format for printing statistics.
void SetMesh(Int_t mesh=1)
virtual void PaintSurface(Option_t *option)
Control function to draw a 2D histogram as a surface plot.
virtual void PaintStat(Int_t dostat, TF1 *fit)
Draw the statistics box for 1D and profile histograms.
To draw Mathematical Formula.
THashList * GetLabels() const
virtual Int_t GetLogx() const =0
virtual const char * GetStatFormat() const
Double_t Log10(Double_t x)
void SetOption(Option_t *option="")
To set axis options.
int Mark
"P" The current Marker is drawn at each point
constexpr Double_t DegToRad()
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
virtual Int_t MakeCuts(char *cutsopt)
Decode string choptin and fill Graphical cuts structure.
void DrawFaceMode2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 2nd option (fill in correspondance with function levels)
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual Int_t MakeChopt(Option_t *option)
Decode string choptin and fill Hoption structure.
virtual void PaintH3(Option_t *option="")
Control function to draw a 3D histograms.
int FrontBox
= 0 to suppress the front box
virtual void AxisVertex(Double_t ang, Double_t *av, Int_t &ix1, Int_t &ix2, Int_t &iy1, Int_t &iy2, Int_t &iz1, Int_t &iz2)=0
virtual Double_t * GetTnorm()=0
virtual TSeqCollection * GetOutline()=0
void SetTimeFormat(const char *tformat)
Change the format used for time plotting.
virtual Size_t GetMarkerSize() const
Return the marker size.
virtual void Clear(Option_t *option="")
Clear all lines in this pavetext.
Base class for several text objects.
virtual void PaintColorLevels(Option_t *option)
Control function to draw a 2D histogram as a color plot.
Double_t GetXMax()
Returns the maximum value for the x coordinates of the bin.
Double_t baroffset
offset of bin for bars or legos [0,1]
virtual Bool_t IsInside(Int_t x, Int_t y)
Return kTRUE if the cell ix, iy is inside one of the graphical cuts.
Float_t GetTitleX() const
Double_t GetYMin()
Returns the minimum value for the y coordinates of the bin.
void ImplicitFunction(Double_t *rmin, Double_t *rmax, Int_t nx, Int_t ny, Int_t nz, const char *chopt)
Draw implicit function FUN(X,Y,Z) = 0 in cartesian coordinates using hidden surface removal algorithm...
void DrawFaceMode1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 1st variant (2 colors: 1st for external surface, 2nd for internal)
Double_t GetYMax()
Returns the maximum value for the y coordinates of the bin.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
Float_t GetBarWidth() const
Int_t xfirst
first bin number along X
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
virtual void PaintLatex(Double_t x, Double_t y, Double_t angle, Double_t size, const char *text)
Main drawing function.
virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py)=0
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual Double_t GetMaximumStored() const
Style_t GetStatStyle() const
void DrawFaceMove1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "MOVING SCREEN" algorithm (draw face with level lines) ...
virtual void PaintTH2PolyScatterPlot(Option_t *option)
Control function to draw a TH2Poly as a scatter plot.
virtual const char * GetTimeFormat() const
int Fill
"F" A fill area is drawn ("CF" draw a smooth fill area).
The 3-D histogram classes derived from the 1-D histogram classes.
virtual void PaintTH2PolyText(Option_t *option)
Control function to draw a TH2Poly as a text plot.
void DrawFaceMove2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "MOVING SCREEN" algorithm (draw face for stacked lego plot) ...
void SetLabelSize(Float_t labelsize)
virtual Double_t GetSkewness(Int_t axis=1) const
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
static TString gStringKurtosisZ
virtual Int_t GetNdivisions() const
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
int Bar
"B" A Bar chart is drawn at each point.
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
virtual Double_t GetBinContent(Int_t bin) const
Returns the content of the input bin For the overflow/underflow/sea bins: -1 | -2 | -3 ---+----+---- ...
virtual void GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
static void RGBtoHLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
virtual const char * GetParName(Int_t ipar) const
TObject * GetPolygon() const
virtual EBinErrorOpt GetBinErrorOption() const
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
Float_t GetErrorX() const
virtual void SetLogx(Int_t value=1)=0
const char * GetPaintTextFormat() const
void SetDrawFace(DrawFaceFunc_t pointer)
Store pointer to current algorithm to draw faces.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
static TString gStringEntries
virtual void Delete(Option_t *option="")
Delete this object.
virtual void SetOutlineToCube()=0
virtual Int_t PaintInitH()
Compute histogram parameters used by the drawing routines for a rotated pad.
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
virtual void PaintImage(Drawable_t, Int_t, Int_t, Int_t=0, Int_t=0, UInt_t=0, UInt_t=0, Option_t *="")
virtual void RecalculateRange()
Recompute the histogram range following graphics operations.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
static TString gStringStdDevY
virtual void PaintAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Double_t &wmin, Double_t &wmax, Int_t &ndiv, Option_t *chopt="", Double_t gridlength=0, Bool_t drawGridOnly=kFALSE)
Control function to draw an axis.
void SetColorMain(Color_t color, Int_t n=0)
Store color for stack number n.
int Spec
TSpectrum graphics.
void IsoSurface(Int_t ns, Double_t *s, Int_t nx, Int_t ny, Int_t nz, Double_t *x, Double_t *y, Double_t *z, const char *chopt)
Draw set of iso-surfaces for a scalar function defined on a grid.
void FrontBox(Double_t ang)
Draw front surfaces of surrounding box & axes.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual void PaintText(Option_t *option)
Control function to draw a 1D/2D histograms with the bin values.
const char * ChooseTimeFormat(Double_t axislength=0)
Choose a reasonable time format from the coordinates in the active pad and the number of divisions in...
virtual Int_t TableInit()
Initialize various options to draw 2D histograms.
Int_t GetLast() const
Return last bin on the axis i.e.
Service class for 2-Dim histogram classes.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Evaluate the distance to the chart in gPad.
Double_t GetXsize()
Return size of the formula along X in pad coordinates.
Class to manage histogram axis.
virtual Double_t GetKurtosis(Int_t axis=1) const
R__EXTERN TSystem * gSystem
Float_t GetTitleH() const
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Double_t ybinsize
bin size in case of equidistant bins
Style_t GetStatFont() const
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
A 3-Dim function with parameters.
virtual void PaintTF3()
Control function to draw a 3D implicit functions.
Double_t GetContent() const
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots spheric coordinates.
virtual Font_t GetTextFont() const
Return the text font.
2-D histogram with a float per channel (see TH1 documentation)}
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Display the histogram info (bin number, contents, integral up to bin corresponding to cursor position...
The candle plot painter class.
void LegoFunction(Int_t ia, Int_t ib, Int_t &nv, Double_t *ab, Double_t *vv, Double_t *t)
Service function for Legos.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
Bool_t GetHistMinimumZero() const
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in cylindrical coordinates.
virtual void PaintStat3(Int_t dostat, TF1 *fit)
Draw the statistics box for 3D histograms.
virtual Float_t GetTitleOffset() const
virtual void Paint(Option_t *option="")
Paint all objects in this collection.
static TImagePalette * CreateCOLPalette(Int_t nContours)
Factory method to creates an image palette for histogram plotting.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
char * Form(const char *fmt,...)
virtual void PaintTable(Option_t *option)
Control function to draw 2D/3D histograms (tables).
virtual void Clear(Option_t *option="")=0
int Arrow
"ARR" Draw 2D plot with Arrows.
virtual ~THistPainter()
Default destructor.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb"...
virtual void PaintH3Iso()
Control function to draw a 3D histogram with Iso Surfaces.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
Double_t xlowedge
low edge of axis
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute the actions corresponding to event.
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual void SetFitFormat(const char *format="5.4g")
Change (i.e. set) the format for printing fit parameters in statistics box.
virtual const char * GetFitFormat() const
int Color
"COL" Draw 2D plot with Colored boxes.
void SetLog(int x, int y, int z)
void SetName(const char *name)
A 2-Dim function with parameters.
virtual void PaintBar(Option_t *option)
Draw a bar-chart in a normal pad.
virtual Double_t GetXmin() const
1-D histogram with a double per channel (see TH1 documentation)}
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
virtual void PaintFunction(Option_t *option)
Paint functions associated to an histogram.
int Error
"E" Draw Errors with current marker type and size.
void DrawLevelLines(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw level lines without hidden line removal.
Int_t ylast
last bin number along Y
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
if object destructor must call RecursiveRemove()
virtual void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="")
Draw this box with new coordinates.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
virtual Double_t * GetRmin()=0
virtual TObjLink * FirstLink() const
int Curve
"C" A smooth Curve is drawn.
virtual void PaintAxis(Bool_t drawGridOnly=kFALSE)
Draw axis (2D case) of an histogram.
virtual void PaintBarH(Option_t *option)
Draw a bar char in a rotated pad (X vertical, Y horizontal)
virtual void FindNormal(Double_t x, Double_t y, Double_t z, Double_t &zn)=0
virtual void Paint(Option_t *option="")
Paint one candle with its current attributes.
Color_t GetTitleFillColor() const
void SetLegoFunction(LegoFunc_t pointer)
Store pointer to current lego function.
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
The histogram painter class.
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetMaximum(Double_t maximum=-1111)
Set the maximum value along Y for this function In case the function is already drawn, set also the maximum in the helper histogram.
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in spheric coordinates.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual void ExecuteEvent(Int_t, Int_t, Int_t)
Execute the mouse events.
virtual void SetY2(Double_t y2)
int Hist
"HIST" Draw only the histogram.
Width_t GetTitleBorderSize() const
Float_t GetTitleW() const
virtual Int_t GetSumw2N() const
Double_t GetChisquare() const
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
long Candle
"CANDLE" Draw a 2D histogram as candle/box plot or violin plot (also with "VIOLIN").
void SetLabelOffset(Float_t labeloffset)
virtual void PaintLegoAxis(TGaxis *axis, Double_t ang)
Draw the axis for legos and surface plots.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Double_t Rndm()
TausWorth generator from L'Ecuyer, uses as seed 3x32bits integers Use a mask of 0xffffffffUL to make ...
static const double x1[5]
Double_t xbinsize
bin size in case of equidistant bins
A Pave (see TPave) with text, lines or/and boxes inside.
static TString gStringSkewness
int Zero
if selected with any LEGO option the empty bins are not drawn.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
TGraph2DPainter * fGraph2DPainter
The Legos and Surfaces painter class.
virtual void ShowProjectionX(Int_t px, Int_t py)
Show projection onto X.
int Box
"BOX" Draw 2D plot with proportional Boxes.
int Func
"FUNC" Draw only the function (for example in case of fit).
Int_t GetOptStat() const
Return the stat option.
virtual void SetRGB(Float_t r, Float_t g, Float_t b)
Initialize this color and its associated colors.
virtual void SetAxisNDC(const Double_t *x1, const Double_t *x2, const Double_t *y1, const Double_t *y2, const Double_t *z1, const Double_t *z2)=0
static void SetF3ClippingBoxOn(Double_t xclip, Double_t yclip, Double_t zclip)
Static function Set the implicit function clipping box "on" and define the clipping box...
virtual Double_t GetXmax() const
virtual Color_t GetFillColor() const
Return the fill area color.
TGraphDelaunay2D generates a Delaunay triangulation of a TGraph2D.
Double_t GetMinimum() const
Returns the minimum value of the histogram.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Int_t xlast
last bin number along X
static constexpr double s
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
virtual Double_t GetEntries() const
Return the current number of entries.
void SetEdgeAtt(Color_t color=1, Style_t style=1, Width_t width=1, Int_t n=0)
Abstract base class used by ROOT graphics editor.
The color creation and management class.
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D
virtual void Paint(Option_t *option="")
Paint this 2-D function with its current attributes.
virtual void PaintTitle()
Draw the histogram title.
TList * GetContourList(Double_t contour)
Returns the X and Y graphs building a contour.
Width_t GetStatBorderSize() const
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
int List
= 1 to generate the TObjArray "contours"
void Spectrum(Int_t nl, Double_t fmin, Double_t fmax, Int_t ic, Int_t idc, Int_t &irep)
Set Spectrum.
A class to define a conversion from pixel values to pixel color.
Profile2D histograms are used to display the mean value of Z and its RMS for each cell in X...
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetShowProjection(const char *option, Int_t nbins)
Set projection.
virtual void PaintLego(Option_t *option)
Control function to draw a 2D histogram as a lego plot.
virtual void ShowProjectionY(Int_t px, Int_t py)
Show projection onto Y.
int Off
"][" With H option, the first and last vertical lines are not drawn.
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
void BackBox(Double_t ang)
Draw back surfaces of surrounding box.
Mother of all ROOT objects.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
you should not use this method at all Int_t Int_t z
constexpr Double_t RadToDeg()
virtual void DrawPanel()
Display a panel with all histogram drawing options.
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
TObject * GetObject() const
Float_t GetStatFontSize() const
static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Int_t GetNpar() const
virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1, Double_t elev2, Int_t icont2, Double_t x2, Double_t y2, Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels)
Fill the matrix xarr and yarr for Contour Plot.
virtual void GetParLimits(Int_t ipar, Double_t &parmin, Double_t &parmax) const
Return limits for parameter ipar.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
void FindVisibleLine(Double_t *p1, Double_t *p2, Int_t ntmax, Int_t &nt, Double_t *t)
Find visible part of a line ("RASTER SCREEN")
virtual void SetXTitle(const char *title)
TList * GetListOfGraphs() const
TPainter3dAlgorithms * fLego
static TString gStringIntegral
virtual void Add(TObject *obj)
Double_t xmin
minimum value along X
static TString gStringStdDevX
static TString gStringKurtosisY
const UInt_t kCannotRotate
virtual Double_t GetParameter(Int_t ipar) const
virtual void ShowProjection3(Int_t px, Int_t py)
Show projection (specified by fShowProjection) of a TH3.
Short_t Max(Short_t a, Short_t b)
int Star
"*" A * is plotted at each point
static void SetF3ClippingBoxOff()
Static function Set the implicit function clipping box "off".
static void PaintSpecialObjects(const TObject *obj, Option_t *option)
Static function to paint special objects like vectors and matrices.
virtual void PaintErrors(Option_t *option)
Draw 1D histograms error bars.
Double_t xmax
maximum value along X
void DrawFaceRaster2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "RASTER SCREEN" algorithm (draw face for stacked lego plot) ...
A Graph is a graphics object made of two arrays X and Y with npoints each.
static TString gStringKurtosis
Double_t GetArea()
Returns the area of the bin.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
RooCmdArg Bins(Int_t nbin)
void SetTickSize(Float_t ticksize)
int System
type of coordinate system(1=car,2=pol,3=cyl,4=sph,5=psr)
Defined by an array on N points in a 2-D space.
THist< 1, double, THistStatContent, THistStatUncertainty > TH1D
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute the distance from the point px,py to a line.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual void PaintScatterPlot(Option_t *option)
Control function to draw a 2D histogram as a scatter plot.
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in polar coordinates.
virtual void Paint(Option_t *option="")
Paint the pave stat.
Float_t GetBarOffset() const
Style_t GetTitleStyle() const
The TGraphDelaunay painting class.
Double_t allchan
integrated sum of contents
void SurfaceCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw surface in cartesian coordinate system.
virtual TList * GetContourList(Double_t contour) const
Get a contour (as a list of TGraphs) using the Delaunay triangulation.
virtual void SetTitle(const char *title)
See GetStatOverflows for more information.
void SetSurfaceFunction(SurfaceFunc_t pointer)
Store pointer to current surface function.
virtual Color_t GetMarkerColor() const
Return the marker color.
def normal(shape, name=None)
virtual Int_t GetNbinsX() const
int Zscale
"Z" to display the Z scale (color palette)
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside the polygon defined by the graph vertices 0 otherwise...
virtual void Paint(Option_t *option="")
Paint the palette.
virtual Style_t GetFillStyle() const
Return the fill area style.
Double_t Sqrt(Double_t x)
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
int Same
"S" Histogram is plotted in the current PAD.
static TImage * Create()
Create an image.
Color_t GetStatTextColor() const
static TString gStringStdDev
static TString gStringSkewnessY
virtual const char * GetName() const
Returns name of object.
virtual Int_t GetSize() const
Histogram parameters structure.
void SetTitleOffset(Float_t titleoffset=1)
void GouraudFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Find part of surface with luminosity in the corners.
Double_t GetXMin()
Returns the minimum value for the x coordinates of the bin.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
TList * GetListOfFunctions() const
The palette painting class.
THist< 2, float, THistStatContent, THistStatUncertainty > TH2F
void SetHistogram(TH1 *h)
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
static TString gStringMeanY
virtual void PadRange(Int_t rback)=0
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
Double_t GetMaximum() const
Returns the maximum value of the histogram.
clip to the frame boundary
constexpr Double_t PiOver2()
virtual Float_t GetBarWidth() const
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Double_t barwidth
width of bin for bars and legos [0,1]
void FillPolygonBorder(Int_t nn, Double_t *xy)
Fill a polygon including border ("RASTER SCREEN")
virtual void PaintH3BoxRaster()
Control function to draw a 3D histogram with boxes.
const TArrayD * GetXbins() const
int Logz
log scale in Z. Also set by histogram option
virtual void SetBorderSize(Int_t bordersize=4)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
TGraphDelaunay generates a Delaunay triangulation of a TGraph2D.
2D Histogram with Polygonal Bins
const char * GetStatFormat() const
static TString gStringOverflow
virtual const char * GetTitle() const
Returns title of object.
virtual void DefineColorLevels(Int_t ndivz)
Define the color levels used to paint legos, surfaces etc..
virtual Int_t GetNbinsY() const
void SetParent(TObject *obj)
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
int Lego
"LEGO" Draw as a Lego plot(LEGO,Lego=1, LEGO1,Lego1=11, LEGO2,Lego=12).
void SetOptStat(Int_t stat=1)
Set the stat option.
Int_t GetOptTitle() const
int Tri
"TRI" Draw 2D plot with Delaunay triangles.
2-D histogram with a double per channel (see TH1 documentation)}
const char * Data() const
void SetAxisPosition(const Double_t candlePos)
static constexpr double g