3025 gStringEntries =
gEnv->
GetValue(
"Hist.Stats.Entries",
"Entries");
3026 gStringMean =
gEnv->
GetValue(
"Hist.Stats.Mean",
"Mean");
3027 gStringMeanX =
gEnv->
GetValue(
"Hist.Stats.MeanX",
"Mean x");
3028 gStringMeanY =
gEnv->
GetValue(
"Hist.Stats.MeanY",
"Mean y");
3029 gStringMeanZ =
gEnv->
GetValue(
"Hist.Stats.MeanZ",
"Mean z");
3030 gStringStdDev =
gEnv->
GetValue(
"Hist.Stats.StdDev",
"Std Dev");
3031 gStringStdDevX =
gEnv->
GetValue(
"Hist.Stats.StdDevX",
"Std Dev x");
3032 gStringStdDevY =
gEnv->
GetValue(
"Hist.Stats.StdDevY",
"Std Dev y");
3033 gStringStdDevZ =
gEnv->
GetValue(
"Hist.Stats.StdDevZ",
"Std Dev z");
3034 gStringUnderflow =
gEnv->
GetValue(
"Hist.Stats.Underflow",
"Underflow");
3035 gStringOverflow =
gEnv->
GetValue(
"Hist.Stats.Overflow",
"Overflow");
3036 gStringIntegral =
gEnv->
GetValue(
"Hist.Stats.Integral",
"Integral");
3037 gStringIntegralBinWidth =
gEnv->
GetValue(
"Hist.Stats.IntegralBinWidth",
"Integral(w)");
3038 gStringSkewness =
gEnv->
GetValue(
"Hist.Stats.Skewness",
"Skewness");
3039 gStringSkewnessX =
gEnv->
GetValue(
"Hist.Stats.SkewnessX",
"Skewness x");
3040 gStringSkewnessY =
gEnv->
GetValue(
"Hist.Stats.SkewnessY",
"Skewness y");
3041 gStringSkewnessZ =
gEnv->
GetValue(
"Hist.Stats.SkewnessZ",
"Skewness z");
3042 gStringKurtosis =
gEnv->
GetValue(
"Hist.Stats.Kurtosis",
"Kurtosis");
3043 gStringKurtosisX =
gEnv->
GetValue(
"Hist.Stats.KurtosisX",
"Kurtosis x");
3044 gStringKurtosisY =
gEnv->
GetValue(
"Hist.Stats.KurtosisY",
"Kurtosis y");
3045 gStringKurtosisZ =
gEnv->
GetValue(
"Hist.Stats.KurtosisZ",
"Kurtosis z");
3069 const Int_t big = 9999;
3070 const Int_t kMaxDiff = 7;
3081 Int_t curdist = big;
3082 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
3085 if (!PadPointer)
return 0;
3096 if (view && Hoption.
Contour != 14) {
3099 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
3101 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
3103 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
3104 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
3115 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
3124 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
3136 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
3145 if (yxaxis < puymin) yxaxis = puymin;
3146 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
3160 gPad->GetRangeAxis(xmin, ymin, xmax, ymax);
3163 if ((pxu>xmax) || (pxu < xmin) || (pyu>ymax) || (pyu < ymin)) {
3168 if (bin>0) curdist = 1;
3174 if ( px > puxmin + delta2
3175 && px < puxmax - delta2
3176 && py > puymax + delta2
3177 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
3181 if (
gPad->IsVertical()) {
3186 if (binval == 0 && pybin < puymin) pybin = 10000;
3192 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3194 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3195 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3197 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
3198 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
3199 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
3201 if (bin != binsup) {
3203 Int_t pybinsub =
gPad->YtoAbsPixel(
gPad->YtoPad(binsupval));
3204 if (py <=
TMath::Max(pybinsub,pybin) && py >=
TMath::Min(pybinsub,pybin) && pybin != 10000)
return 0;
3214 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
3220 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
3222 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
3223 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
3225 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
3226 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
3227 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
3235 while ((f = (
TObject*) next())) {
3239 if (dist < kMaxDiff) {
gPad->SetSelected(f);
return dist;}
3252 Error(
"DrawPanel",
"need to draw histogram first");
3257 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
3272 static Int_t bin, px1, py1, px2, py2, pyold;
3273 static TBox *zoombox;
3277 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
3280 if (!
gPad->IsEditable())
return;
3307 if (!opaque)
gVirtualX->SetLineColor(-1);
3308 fH->TAttLine::Modify();
3310 if (opaque && dimension ==2) {
3311 zbx1 =
gPad->AbsPixeltoX(px);
3312 zbx2 =
gPad->AbsPixeltoX(px);
3313 zby1 =
gPad->AbsPixeltoY(py);
3314 zby2 =
gPad->AbsPixeltoY(py);
3317 if (
gPad->GetLogx()) {
3321 if (
gPad->GetLogy()) {
3325 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
3342 if (dimension ==1) {
3350 x =
gPad->AbsPixeltoX(px);
3354 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
3355 ylow =
gPad->GetUymin();
3356 px1 =
gPad->XtoAbsPixel(xlow);
3357 px2 =
gPad->XtoAbsPixel(xup);
3358 py1 =
gPad->YtoAbsPixel(ylow);
3368 if (dimension ==1) {
3369 if (
gROOT->GetEditHistograms()) {
3378 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3385 if (opaque && dimension ==2) {
3387 zbx2 =
gPad->AbsPixeltoX(px);
3388 zby2 =
gPad->AbsPixeltoY(py);
3391 zoombox->
SetX2(zbx2);
3392 zoombox->
SetY2(zby2);
3402 if (dimension ==2) {
3407 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3412 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3421 if (dimension == 2) {
3426 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
3431 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
3439 if (dimension ==1) {
3440 if (
gROOT->GetEditHistograms()) {
3441 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
3449 if (opaque && dimension ==2) {
3459 if (x1<x2 && y1<y2) {
3468 if (opaque)
gVirtualX->SetLineColor(-1);
3478 event =
gVirtualX->RequestLocator(1, 1, px, py);
3505 if (!dt && !dtOld)
return nullptr;
3524 if (!
gPad)
return (
char*)
"";
3525 static char info[200];
3534 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
3535 uxmin=
gPad->GetUxmin();
3536 uxmax=
gPad->GetUxmax();
3539 x = xmin +(xmax-
xmin)*(x-uxmin)/(uxmax-uxmin);
3540 uymin=
gPad->GetUymin();
3541 uymax=
gPad->GetUymax();
3544 y = ymin +(ymax-
ymin)*(y-uymin)/(uymax-uymin);
3547 Int_t binx,biny,binmin=0,binx1;
3548 if (
gPad->IsVertical()) {
3550 if (drawOption.
Index(
"same") >= 0) {
3552 TIter next(
gPad->GetListOfPrimitives());
3553 while ((h1 = (
TH1 *)next())) {
3566 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3576 x1 =
gPad->PadtoY(
gPad->AbsPixeltoY(py+1));
3578 if (drawOption.
Index(
"same") >= 0) {
3580 TIter next(
gPad->GetListOfPrimitives());
3581 while ((h1 = (
TH1 *)next())) {
3594 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3607 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, bine=%g, binn=%d)",
3614 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, Sum=%g)",
3621 snprintf(info,200,
"%s (x=%g, y=%g, bin=%d, binc=%g)",
3628 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3633 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g bine=%g)",
3640 snprintf(info,200,
"(x=%g, y=%g)",x,y);
3687 Int_t nch = strlen(choptin);
3688 strlcpy(chopt,choptin,128);
3712 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
3713 if (hdim > 1) Hoption.
Scat = 1;
3714 if (!nch) Hoption.
Hist = 1;
3718 char *l1 = strstr(chopt,
"PFC");
3719 char *l2 = strstr(chopt,
"PLC");
3720 char *l3 = strstr(chopt,
"PMC");
3721 if (l1 || l2 || l3) {
3728 l = strstr(chopt,
"SPEC");
3733 l = strstr(chopt,
"BF(");
3735 if (sscanf(&l[3],
"%d",&bs) > 0) {
3748 l = strstr(chopt,
"GL");
3752 l = strstr(chopt,
"X+");
3757 l = strstr(chopt,
"Y+");
3763 if (Hoption.
AxisPos == 11 && nch == 4) Hoption.
Hist = 1;
3765 l = strstr(chopt,
"SAMES");
3767 if (nch == 5) Hoption.
Hist = 1;
3771 l = strstr(chopt,
"SAME");
3773 if (nch == 4) Hoption.
Hist = 1;
3778 l = strstr(chopt,
"PIE");
3785 l = strstr(chopt,
"CANDLE");
3792 l = strstr(chopt,
"VIOLIN");
3799 l = strstr(chopt,
"LEGO");
3802 Hoption.
Lego = 1; strncpy(l,
" ",4);
3803 if (l[4] ==
'1') { Hoption.
Lego = 11; l[4] =
' '; }
3804 if (l[4] ==
'2') { Hoption.
Lego = 12; l[4] =
' '; }
3805 if (l[4] ==
'3') { Hoption.
Lego = 13; l[4] =
' '; }
3806 if (l[4] ==
'4') { Hoption.
Lego = 14; l[4] =
' '; }
3807 if (l[4] ==
'9') { Hoption.
Lego = 19; l[4] =
' '; }
3808 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3809 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3810 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3813 l = strstr(chopt,
"SURF");
3816 Hoption.
Surf = 1; strncpy(l,
" ",4);
3817 if (l[4] ==
'1') { Hoption.
Surf = 11; l[4] =
' '; }
3818 if (l[4] ==
'2') { Hoption.
Surf = 12; l[4] =
' '; }
3819 if (l[4] ==
'3') { Hoption.
Surf = 13; l[4] =
' '; }
3820 if (l[4] ==
'4') { Hoption.
Surf = 14; l[4] =
' '; }
3821 if (l[4] ==
'5') { Hoption.
Surf = 15; l[4] =
' '; }
3822 if (l[4] ==
'6') { Hoption.
Surf = 16; l[4] =
' '; }
3823 if (l[4] ==
'7') { Hoption.
Surf = 17; l[4] =
' '; }
3824 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3825 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3828 l = strstr(chopt,
"TF3");
3830 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3831 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3834 l = strstr(chopt,
"ISO");
3836 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3837 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3840 l = strstr(chopt,
"LIST");
if (l) { Hoption.
List = 1; strncpy(l,
" ",4);}
3842 l = strstr(chopt,
"CONT");
3848 if (l[4] ==
'1') { Hoption.
Contour = 11; l[4] =
' '; }
3849 if (l[4] ==
'2') { Hoption.
Contour = 12; l[4] =
' '; }
3850 if (l[4] ==
'3') { Hoption.
Contour = 13; l[4] =
' '; }
3851 if (l[4] ==
'4') { Hoption.
Contour = 14; l[4] =
' '; }
3852 if (l[4] ==
'5') { Hoption.
Contour = 15; l[4] =
' '; }
3857 l = strstr(chopt,
"HBAR");
3860 Hoption.
Bar = 20; strncpy(l,
" ",4);
3861 if (l[4] ==
'1') { Hoption.
Bar = 21; l[4] =
' '; }
3862 if (l[4] ==
'2') { Hoption.
Bar = 22; l[4] =
' '; }
3863 if (l[4] ==
'3') { Hoption.
Bar = 23; l[4] =
' '; }
3864 if (l[4] ==
'4') { Hoption.
Bar = 24; l[4] =
' '; }
3866 l = strstr(chopt,
"BAR");
3869 Hoption.
Bar = 10; strncpy(l,
" ",3);
3870 if (l[3] ==
'1') { Hoption.
Bar = 11; l[3] =
' '; }
3871 if (l[3] ==
'2') { Hoption.
Bar = 12; l[3] =
' '; }
3872 if (l[3] ==
'3') { Hoption.
Bar = 13; l[3] =
' '; }
3873 if (l[3] ==
'4') { Hoption.
Bar = 14; l[3] =
' '; }
3876 l = strstr(chopt,
"ARR" );
3886 l = strstr(chopt,
"BOX" );
3892 if (l[3] ==
'1') { Hoption.
Box = 11; l[3] =
' '; }
3893 if (l[3] ==
'2') { Hoption.
Box = 12; l[3] =
' '; }
3894 if (l[3] ==
'3') { Hoption.
Box = 13; l[3] =
' '; }
3899 l = strstr(chopt,
"COLZ");
3906 if (l[4] ==
'2') { Hoption.
Color = 3; l[4] =
' '; }
3907 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3908 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3913 l = strstr(chopt,
"COL" );
3919 if (l[3] ==
'2') { Hoption.
Color = 3; l[3] =
' '; }
3920 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3921 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3926 l = strstr(chopt,
"CHAR");
if (l) { Hoption.
Char = 1; strncpy(l,
" ",4); Hoption.
Scat = 0; }
3927 l = strstr(chopt,
"FUNC");
if (l) { Hoption.
Func = 2; strncpy(l,
" ",4); Hoption.
Hist = 0; }
3928 l = strstr(chopt,
"HIST");
if (l) { Hoption.
Hist = 2; strncpy(l,
" ",4); Hoption.
Func = 0; Hoption.
Error = 0;}
3929 l = strstr(chopt,
"AXIS");
if (l) { Hoption.
Axis = 1; strncpy(l,
" ",4); }
3930 l = strstr(chopt,
"AXIG");
if (l) { Hoption.
Axis = 2; strncpy(l,
" ",4); }
3931 l = strstr(chopt,
"SCAT");
if (l) { Hoption.
Scat = 1; strncpy(l,
" ",4); }
3932 l = strstr(chopt,
"TEXT");
3935 if (sscanf(&l[4],
"%d",&angle) > 0) {
3936 if (angle < 0) angle=0;
3937 if (angle > 90) angle=90;
3938 Hoption.
Text = 1000+angle;
3943 l = strstr(chopt,
"N");
3947 l = strstr(chopt,
"POL");
if (l) { Hoption.
System =
kPOLAR; strncpy(l,
" ",3); }
3949 l = strstr(chopt,
"SPH");
if (l) { Hoption.
System =
kSPHERICAL; strncpy(l,
" ",3); }
3950 l = strstr(chopt,
"PSR");
if (l) { Hoption.
System =
kRAPIDITY; strncpy(l,
" ",3); }
3952 l = strstr(chopt,
"TRI");
3956 Hoption.
Tri = 1; strncpy(l,
" ",3);
3957 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3958 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3959 l = strstr(chopt,
"ERR");
if (l) strncpy(l,
" ",3);
3962 l = strstr(chopt,
"AITOFF");
3964 Hoption.
Proj = 1; strncpy(l,
" ",6);
3966 l = strstr(chopt,
"MERCATOR");
3968 Hoption.
Proj = 2; strncpy(l,
" ",8);
3970 l = strstr(chopt,
"SINUSOIDAL");
3972 Hoption.
Proj = 3; strncpy(l,
" ",10);
3974 l = strstr(chopt,
"PARABOLIC");
3976 Hoption.
Proj = 4; strncpy(l,
" ",9);
3978 if (Hoption.
Proj > 0) {
3983 if (strstr(chopt,
"A")) Hoption.
Axis = -1;
3984 if (strstr(chopt,
"B")) Hoption.
Bar = 1;
3985 if (strstr(chopt,
"C")) { Hoption.
Curve =1; Hoption.
Hist = -1;}
3986 if (strstr(chopt,
"F")) Hoption.
Fill =1;
3987 if (strstr(chopt,
"][")) {Hoption.
Off =1; Hoption.
Hist =1;}
3988 if (strstr(chopt,
"F2")) Hoption.
Fill =2;
3989 if (strstr(chopt,
"L")) { Hoption.
Line =1; Hoption.
Hist = -1;}
3990 if (strstr(chopt,
"P")) { Hoption.
Mark =1; Hoption.
Hist = -1;}
3991 if (strstr(chopt,
"Z")) Hoption.
Zscale =1;
3992 if (strstr(chopt,
"*")) Hoption.
Star =1;
3993 if (strstr(chopt,
"H")) Hoption.
Hist =2;
3994 if (strstr(chopt,
"P0")) Hoption.
Mark =10;
4000 if (strstr(chopt,
"E")) {
4003 if (strstr(chopt,
"E0")) Hoption.
Error = 10;
4004 if (strstr(chopt,
"E1")) Hoption.
Error = 11;
4005 if (strstr(chopt,
"E2")) Hoption.
Error = 12;
4006 if (strstr(chopt,
"E3")) Hoption.
Error = 13;
4007 if (strstr(chopt,
"E4")) Hoption.
Error = 14;
4008 if (strstr(chopt,
"E5")) Hoption.
Error = 15;
4009 if (strstr(chopt,
"E6")) Hoption.
Error = 16;
4010 if (strstr(chopt,
"X0")) {
4012 Hoption.
Error += 10;
4015 Hoption.
Text += 2000;
4019 if (Hoption.
Error == 0) {
4020 Hoption.
Error = 100;
4024 Hoption.
Text += 2000;
4030 if (Hoption.
Surf == 15) {
4033 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
4043 if (Hoption.
Bar == 1) Hoption.
Hist = -1;
4054 char *left = (
char*)strchr(choptin,
'[');
4055 if (!left)
return 0;
4056 char *right = (
char*)strchr(choptin,
']');
4057 if (!right)
return 0;
4058 Int_t nch = right-left;
4059 if (nch < 2)
return 0;
4060 char *cuts = left+1;
4062 char *comma, *minus;
4065 comma = strchr(cuts,
',');
4066 if (comma) *comma = 0;
4067 minus = strchr(cuts,
'-');
4068 if (minus) cuts = minus+1;
4069 while (*cuts ==
' ') cuts++;
4070 Int_t nc = strlen(cuts);
4071 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
4075 while ((obj = next())) {
4077 if (strcmp(obj->
GetName(),cuts))
continue;
4090 for (i=0;i<=nch;i++) left[i] =
' ';
4118 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
4128 Error(
"Paint",
"Option PIE is for 1D histograms only");
4149 gCurrentHist = oldhist;
4155 if (!Hoption.
Lego && !Hoption.
Surf && !Hoption.
Tri) {
4162 Int_t logysav=0, logzsav=0;
4164 logysav = Hoption.
Logy;
4165 logzsav = Hoption.
Logz;
4182 gCurrentHist = oldhist;
4185 Hoption.
Logy = logysav;
4186 Hoption.
Logz = logzsav;
4191 if (Hoption.
Bar >= 20) {
4210 if (Hoption.
Axis > 0) {
4213 if (gridx)
gPad->SetGridx(0);
4214 if (gridy)
gPad->SetGridy(0);
4216 if (gridx)
gPad->SetGridx(1);
4217 if (gridy)
gPad->SetGridy(1);
4219 if (Hoption.
Same ==1) Hoption.
Same = 2;
4225 if (Hoption.
Bar >= 10) {
4230 if (!Hoption.
Error) {
4235 if (Hoption.
Error) {
4252 if (gridx)
gPad->SetGridx(0);
4253 if (gridy)
gPad->SetGridy(0);
4255 if (gridx)
gPad->SetGridx(1);
4256 if (gridy)
gPad->SetGridy(1);
4265 while ((obj = next())) {
4273 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
4277 gCurrentHist = oldhist;
4288 fH->TAttLine::Modify();
4291 Double_t dx, dy, si, co, anr,
x1,
x2, y1, y2, xc, yc, dxn, dyn;
4302 for (
Int_t id=1;
id<=2;
id++) {
4309 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4310 if (i == Hparam.
xfirst) {
4312 }
else if (i == Hparam.
xlast) {
4317 if (j == Hparam.
yfirst) {
4319 }
else if (j == Hparam.
ylast) {
4327 }
else if (
id == 2) {
4341 anr = 0.005*.5*
TMath::Sqrt(2/(dxn*dxn + dyn*dyn));
4342 si = anr*(dxn + dyn);
4343 co = anr*(dxn - dyn);
4377 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
4380 if (Hoption.
Axis == -1)
return;
4381 if (Hoption.
Same && Hoption.
Axis <= 0)
return;
4387 if (Hoption.
Same && Hoption.
Axis) {
4389 TIter next(
gPad->GetListOfPrimitives());
4392 while ((obj = next())) {
4395 TString opt = obj->GetDrawOption();
4398 if (strstr(opt,
"hbar")) {
4402 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4412 static char chopt[10] =
"";
4414 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
4415 Int_t useHparam = 0;
4416 Double_t umin, umax, uminsave, umaxsave;
4429 if (Hoption.
Contour == 14) useHparam = 1;
4432 TIter next(
gPad->GetListOfPrimitives());
4433 while ((obj=next())) {
4444 if (
gPad->PadInSelectionMode())
4448 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
4459 strlcat(chopt,
"SDH",10);
4460 if (ndivx < 0) strlcat(chopt,
"N",10);
4461 if (
gPad->GetGridx()) {
4462 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
4463 strlcat(chopt,
"W",10);
4468 strlcat(chopt,
"G",10);
4490 strlcat(chopt,
"t",10);
4498 if (xAxisPos == 1) {
4514 strlcat(chopt,
"-",10);
4517 if (Hoption.
Same && Hoption.
Axis) {
4523 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4528 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4530 cw=strstr(chopt,
"-");
4533 strlcat(chopt,
"-",10);
4535 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
4536 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4540 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4546 if (
gPad->PadInSelectionMode())
4550 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4555 strlcat(chopt,
"SDH",10);
4556 if (ndivy < 0) strlcat(chopt,
"N",10);
4557 if (
gPad->GetGridy()) {
4558 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4559 strlcat(chopt,
"W",10);
4564 strlcat(chopt,
"G",10);
4586 strlcat(chopt,
"t",10);
4594 if (yAxisPos == 1) {
4610 strlcat(chopt,
"+L",10);
4613 if (Hoption.
Same && Hoption.
Axis) {
4619 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4624 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4625 if (
gPad->GetTicky() < 2) {
4626 strlcat(chopt,
"U",10);
4629 strlcat(chopt,
"+L",10);
4631 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4635 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4658 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4666 ymin =
gPad->GetUymin();
4667 ymax =
gPad->YtoPad(y);
4668 if (ymax < gPad->GetUymin())
continue;
4669 if (ymax >
gPad->GetUymax()) ymax =
gPad->GetUymax();
4670 if (ymin < gPad->GetUymin()) ymin =
gPad->GetUymin();
4673 w = (xmax-
xmin)*width;
4674 xmin += offset*(xmax-
xmin);
4679 umin = xmin + bar*(xmax-
xmin)/10.;
4680 umax = xmax - bar*(xmax-
xmin)/10.;
4704 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4718 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4725 xmin =
gPad->GetUxmin();
4727 if (xmax < gPad->GetUxmin())
continue;
4728 if (xmax >
gPad->GetUxmax()) xmax =
gPad->GetUxmax();
4729 if (xmin < gPad->GetUxmin()) xmin =
gPad->GetUxmin();
4732 w = (ymax-
ymin)*width;
4733 ymin += offset*(ymax-
ymin);
4738 umin = ymin + bar*(ymax-
ymin)/10.;
4739 umax = ymax - bar*(ymax-
ymin)/10.;
4755 while ((obj = next())) {
4776 fH->TAttLine::Modify();
4777 fH->TAttFill::Modify();
4779 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
4790 Double_t zminlin = zmin, zmaxlin = zmax;
4796 TIter next(
gPad->GetListOfPrimitives());
4797 while ((h2 = (
TH2 *)next())) {
4833 if (Hoption.
Box == 11) {
4847 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4854 if (kZminNeg && z==0)
continue;
4857 if (Hoption.
Logz)
continue;
4866 if (dz == 0)
continue;
4868 if (zratio == 0)
continue;
4870 xup = xcent*zratio + xk + xcent;
4871 xlow = 2*(xk + xcent) - xup;
4872 if (xup-xlow < dxmin) xup = xlow+dxmin;
4880 yup = ycent*zratio + yk + ycent;
4881 ylow = 2*(yk + ycent) - yup;
4882 if (yup-ylow < dymin) yup = ylow+dymin;
4895 if (xlow >= xup)
continue;
4896 if (ylow >= yup)
continue;
4898 if (Hoption.
Box == 1) {
4900 fH->TAttFill::Modify();
4901 gPad->PaintBox(xlow, ylow, xup, yup);
4903 gPad->PaintLine(xlow, ylow, xup, yup);
4904 gPad->PaintLine(xlow, yup, xup, ylow);
4906 }
else if (Hoption.
Box == 11) {
4909 fH->TAttFill::Modify();
4910 gPad->PaintBox(xlow, ylow, xup, yup);
4915 x[0] = xlow; y[0] = ylow;
4916 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4917 x[2] = x[1]; y[2] = yup - bwidth*(yup-ylow);
4918 x[3] = xup - bwidth*(xup-xlow); y[3] = y[2];
4919 x[4] = xup; y[4] = yup;
4920 x[5] = xlow; y[5] = yup;
4921 x[6] = xlow; y[6] = ylow;
4924 fH->TAttFill::Modify();
4925 gPad->PaintFillArea(7, x, y);
4928 x[0] = xlow; y[0] = ylow;
4929 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4930 x[2] = xup - bwidth*(xup-xlow); y[2] = y[1];
4931 x[3] = x[2]; y[3] = yup - bwidth*(yup-ylow);
4932 x[4] = xup; y[4] = yup;
4933 x[5] = xup; y[5] = ylow;
4934 x[6] = xlow; y[6] = ylow;
4937 fH->TAttFill::Modify();
4938 gPad->PaintFillArea(7, x, y);
4946 fH->TAttFill::Modify();
4971 const Double_t standardCandleWidth = 0.66;
4972 const Double_t standardHistoWidth = 0.8;
4975 double allMaxIntegral = 0;
4981 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
4991 double myIntegral = hproj->
Integral();
4993 if (candleWidth > 0.999 && candleWidth < 1.001) {
4994 candleWidth = standardCandleWidth;
4995 histoWidth = standardHistoWidth;
4997 if (Hoption.
Logz && myMaxContent > 0) {
5000 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5001 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5014 if (hproj->
Integral() > allMaxIntegral) allMaxIntegral = hproj->
Integral();
5024 double myIntegral = hproj->
Integral();
5026 if (candleWidth > 0.999 && candleWidth < 1.001) {
5027 candleWidth = standardCandleWidth;
5028 histoWidth = standardHistoWidth;
5030 if (Hoption.
Logz && myMaxContent > 0) {
5033 }
else if (myCandle.
IsViolinScaled()) histoWidth *= myMaxContent/allMaxContent;
5034 if (myCandle.
IsCandleScaled()) candleWidth *= myIntegral/allMaxIntegral;
5062 std::vector<THistRenderingRegion>
5065 std::vector<THistRenderingRegion> regions;
5067 enum STRATEGY {
Bins, Pixels } strategy;
5071 if (nBins >= nPixels) {
5083 while (xMin <= 0 && ((pAxis->
GetFirst()+binOffset) != pAxis->
GetLast()) ) {
5093 if (strategy ==
Bins) {
5111 std::make_pair(bin, bin+1)};
5112 regions.push_back(region);
5121 for (
Int_t pixelIndex=0; pixelIndex<(nPixels-1); pixelIndex++) {
5126 std::make_pair(binLow, binHigh)};
5127 regions.push_back(region);
5133 if (strategy ==
Bins) {
5140 Int_t xPx1 = xPx0 + nPixels/nBins;
5143 if (xPx1>= nPixels) xPx1 = nPixels-1;
5146 std::make_pair(bin, bin+1)};
5147 regions.push_back(region);
5151 for (
Int_t pixelIndex=0; pixelIndex<nPixels-1; pixelIndex++) {
5153 Int_t binLow = (nBins*pixelIndex)/nPixels + pAxis->
GetFirst();
5154 Int_t binHigh = binLow + nBins/nPixels;
5156 std::make_pair(binLow, binHigh)};
5157 regions.push_back(region);
5172 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5173 "Only cartesian coordinates supported by 'COL2' option. Using 'COL' option instead.");
5186 if ((zmin == -1111) && (zmax == -1111)) {
5190 }
else if (zmin == -1111) {
5193 }
else if (zmax == -1111) {
5211 Error(
"THistPainter::PaintColorLevelsFast(Option_t*)",
5212 "Cannot plot logz because bin content is less than 0.");
5223 std::vector<Double_t> colorBounds(ndiv);
5224 std::vector<Double_t> contours(ndiv, 0);
5232 for (
Int_t i=0; i<ndiv; ++i) {
5233 colorBounds[i] = step*i;
5236 auto pFrame =
gPad->GetFrame();
5237 Int_t px0 =
gPad->XtoPixel(pFrame->GetX1());
5238 Int_t px1 =
gPad->XtoPixel(pFrame->GetX2());
5239 Int_t py0 =
gPad->YtoPixel(pFrame->GetY1());
5240 Int_t py1 =
gPad->YtoPixel(pFrame->GetY2());
5241 Int_t nXPixels = px1-px0;
5242 Int_t nYPixels = py0-py1;
5244 std::vector<Double_t> buffer(nXPixels*nYPixels, 0);
5248 if (xRegions.size() == 0 || yRegions.size() == 0) {
5249 Error(
"THistPainter::PaintColorLevelFast(Option_t*)",
5250 "Encountered error while computing rendering regions.");
5258 for (
auto& yRegion : yRegions) {
5259 for (
auto& xRegion : xRegions ) {
5261 const auto& xBinRange = xRegion.fBinRange;
5262 const auto& yBinRange = yRegion.fBinRange;
5273 if (z > zmax) z = zmax;
5274 if (z < zmin) z = zmin;
5279 z = colorBounds[index];
5283 index = 0.001 + ((z - zmin)/dz)*ndiv;
5286 if (index == static_cast<Int_t>(colorBounds.size())) {
5294 }
else if (index == static_cast<Int_t>(colorBounds.size()-1)) {
5298 z = colorBounds[index];
5309 const auto& xPixelRange = xRegion.fPixelRange;
5310 const auto& yPixelRange = yRegion.fPixelRange;
5311 for (
Int_t xPx = xPixelRange.first; xPx <= xPixelRange.second; ++xPx) {
5312 for (
Int_t yPx = yPixelRange.first; yPx <= yPixelRange.second; ++yPx) {
5313 Int_t pixel = yPx*nXPixels + xPx;
5324 if (minValue != maxValue) {
5330 buffer[buffer.size()-nXPixels] = 0.95;
5338 pImage->
SetImage(buffer.data(), nXPixels, nYPixels, pPalette);
5342 pImage->
PaintImage(wid, px0, py1, 0, 0, nXPixels, nYPixels);
5359 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
5375 TIter next(
gPad->GetListOfPrimitives());
5376 while ((h2 = (
TH2 *)next())) {
5406 fH->TAttFill::Modify();
5429 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5434 if (binEntries == 0)
5440 if (zmin >= 0 || Hoption.
Logz)
continue;
5441 if (Hoption.
Color == 2)
continue;
5449 if (z < zmin && !Hoption.
Zero)
continue;
5467 if (xup < gPad->GetUxmin())
continue;
5468 if (yup < gPad->GetUymin())
continue;
5469 if (xlow >
gPad->GetUxmax())
continue;
5470 if (ylow >
gPad->GetUymax())
continue;
5471 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
5472 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
5473 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
5474 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
5479 if (z < zc)
continue;
5481 for (
Int_t k=0; k<ndiv; k++) {
5490 color =
Int_t(0.01+(z-zmin)*scale);
5494 if (theColor > ncolors-1) theColor = ncolors-1;
5496 fH->TAttFill::Modify();
5498 gPad->PaintBox(xlow, ylow, xup, yup);
5511 fH->TAttFill::Modify();
5521 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
5522 Int_t itars, mode, ir[4];
5523 Double_t xsave, ysave, thesave,phisave,
x[4],
y[4], zc[4];
5528 thesave =
gPad->GetTheta();
5529 phisave =
gPad->GetPhi();
5531 gPad->SetTheta(90.);
5533 gPad->SetPhi(phisave);
5534 gPad->SetTheta(thesave);
5545 TIter next(
gPad->GetListOfPrimitives());
5546 while ((obj=next())) {
5563 if (!dt && !dtOld)
return;
5583 if (ncontour == 0) {
5587 if (ncontour > kMAXCONTOUR) {
5588 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
5589 kMAXCONTOUR, ncontour);
5590 ncontour = kMAXCONTOUR-1;
5599 fH->TAttLine::Modify();
5609 np =
new Int_t[ncontour];
5610 for (i=0;i<ncontour;i++) np[i] = 0;
5612 for (i=0;i<ncontour;i++) {
5615 if (Hoption.
List == 1) {
5616 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
5618 gROOT->GetListOfSpecials()->Remove(contours);
5620 for (i=0;i<count;i++) {
5621 list = (
TList*)contours->
At(i);
5622 if (list) list->
Delete();
5626 contours->
SetName(
"contours");
5627 gROOT->GetListOfSpecials()->Add(contours);
5628 for (i=0;i<ncontour;i++) {
5630 contours->
Add(list);
5652 else zc[0] = Hparam.
zmin;
5654 else zc[1] = Hparam.
zmin;
5656 else zc[2] = Hparam.
zmin;
5658 else zc[3] = Hparam.
zmin;
5663 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
5668 if (zc[0] <= zc[1]) n = 0;
else n = 1;
5669 if (zc[2] <= zc[3]) m = 2;
else m = 3;
5670 if (zc[n] > zc[m]) n =
m;
5673 for (ix=1;ix<=4;ix++) {
5676 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5681 if (zc[0] <= zc[1]) n = 0;
else n = 1;
5682 if (zc[2] <= zc[3]) m = 2;
else m = 3;
5683 if (zc[n] > zc[m]) n =
m;
5686 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);
5698 for (ix=1; ix<=lj-5; ix +=2) {
5700 while (itarr[ix-1] != itarr[ix]) {
5704 for (jx=ix; jx<=lj-5; jx +=2) {
5705 xarr[jx] = xarr[jx+2];
5706 yarr[jx] = yarr[jx+2];
5707 itarr[jx] = itarr[jx+2];
5711 itarr[lj-3] = itars;
5712 if (count > 100)
break;
5717 if (count > 100)
continue;
5718 for (ix=1; ix<=lj-2; ix +=2) {
5726 if (mode == 0) mode = 5;
5730 fH->TAttLine::Modify();
5731 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
5735 ipoly = itarr[ix-1];
5736 if (ipoly >=0 && ipoly <ncontour) {
5737 poly = polys[ipoly];
5738 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
5739 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
5741 if (npmax < np[ipoly]) npmax = np[ipoly];
5750 Int_t nadd,iminus,iplus;
5754 Int_t *polysort = 0;
5756 if (Hoption.
Contour != 1)
goto theEND;
5762 xmin =
gPad->GetUxmin();
5763 ymin =
gPad->GetUymin();
5766 polysort =
new Int_t[ncontour];
5768 for (ipoly=0;ipoly<ncontour;ipoly++) {
5769 if (levels[ipoly] >= 0) {first = ipoly;
break;}
5773 for (ipoly=first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
5774 for (ipoly=first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
5778 for (k=0;k<ncontour;k++) {
5779 ipoly = polysort[k];
5780 if (np[ipoly] == 0)
continue;
5781 if (Hoption.
List) list = (
TList*)contours->
At(contListNb);
5783 poly = polys[ipoly];
5790 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
5791 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
5792 xx[istart] =
xmin; yy[istart] =
ymin;
5793 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
5796 for (i=2;i<np[ipoly];i+=2) {
5797 if ((iplus < 2*npmax-1) && (xx[i] == xp[iplus]) && (yy[i] == yp[iplus])) {
5799 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
5804 if ((iminus > 0) && (xx[i+1] == xp[iminus]) && (yy[i+1] == yp[iminus])) {
5806 xp[iminus] = xx[i]; yp[iminus] = yy[i];
5812 if (nadd == 0)
break;
5817 fH->TAttFill::Modify();
5818 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5820 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5827 for (i=2;i<np[ipoly];i+=2) {
5828 if (xx[i] != xmin && yy[i] != ymin) {
5833 if (istart == 0)
break;
5837 for (i=0;i<ncontour;i++)
delete polys[i];
5849 if (np)
delete [] np;
5865 Double_t tlen, tdif, elev, diff, pdif, xlen;
5877 tdif = elev2 - elev1;
5883 diff = elev - elev1;
5894 yarr[i] = y1 + xlen;
5899 xarr[i] = x1 + xlen;
5922 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
5924 const Int_t kBASEMARKER=8;
5925 Double_t xp, yp, ex1, ex2, ey1, ey2;
5927 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
5928 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
5935 Int_t drawmarker, errormarker;
5936 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
5940 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
5941 if (
Int_t(Hoption.
Error/10) == 2) {optionEX0 = 1; Hoption.
Error -= 10;}
5942 if (Hoption.
Error == 31) {optionEX0 = 1; Hoption.
Error = 1;}
5943 if (Hoption.
Error == 10) option0 = 1;
5944 if (Hoption.
Error == 11) option1 = 1;
5945 if (Hoption.
Error == 12) option2 = 1;
5946 if (Hoption.
Error == 13) option3 = 1;
5947 if (Hoption.
Error == 14) {option4 = 1; option3 = 1;}
5948 if (Hoption.
Error == 15) {optionI0 = 1; option3 = 1;}
5949 if (Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
5950 if (option2+option3 == 0) optionE = 1;
5951 if (Hoption.
Error == 0) optionE = 0;
5962 if (errormarker == 1) symbolsize = 0.01;
5963 sbase = symbolsize*kBASEMARKER;
5966 fH->TAttLine::Modify();
5967 fH->TAttFill::Modify();
5968 fH->TAttMarker::Modify();
5974 last = Hparam.
xlast;
5975 npoints = last - first +1;
5976 xmin =
gPad->GetUxmin();
5977 xmax =
gPad->GetUxmax();
5978 ymin =
gPad->GetUymin();
5979 ymax =
gPad->GetUymax();
5985 if (!xline || !yline) {
5986 Error(
"PaintErrors",
"too many points, out of memory");
5999 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
6000 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
6016 for (k=first; k<=last; k++) {
6028 if (xp <= 0)
goto L30;
6029 if (xp < logxmin)
goto L30;
6032 if (xp < xmin)
goto L30;
6033 if (xp > xmax)
break;
6036 if (optionI0 && yp==0)
goto L30;
6088 if (!option0 && !option3) {
6089 if (Hoption.
Logy && yp < logymin)
goto L30;
6090 if (yi1 < ymin || yi1 > ymax)
goto L30;
6091 if (Hoption.
Error != 0 && yp == 0 && ey1 <= 0) drawmarker =
kFALSE;
6093 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
6096 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
6109 if (Hoption.
Logy && yp < logymin) drawmarker =
kFALSE;
6110 if (optionE && drawmarker) {
6111 if ((yi3 < yi1 - s2y) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1 - s2y,ymax));
6112 if ((yi1 + s2y < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1 + s2y, ymin),xi4,yi4);
6114 if (Hoption.
Hist != 2) {
6115 if (yi1<ymax && yi1>ymin) {
6116 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
6117 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
6121 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
6122 if ((yi3 < yi1) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1,ymax));
6123 if ((yi1 < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1,ymin),xi4,yi4);
6125 if (Hoption.
Hist != 2) {
6126 if (yi1<ymax && yi1>ymin) {
6127 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
6128 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
6135 if (option1 && drawmarker) {
6136 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
6137 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
6138 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
6139 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
6144 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
6173 if (if2 > npoints) {
6174 for (i=1; i<if1; i++) {
6175 xline[if1-2+i] = xline[if2-1+i];
6176 yline[if1-2+i] = yline[if2-1+i];
6180 if (option4) graph.
PaintGraph(2*npoints,xline,yline,
"FC");
6181 else graph.
PaintGraph(2*npoints,xline,yline,
"F");
6182 gPad->SetLogx(logx);
6183 gPad->SetLogy(logy);
6195 fH->TAttMarker::Modify();
6196 fH->TAttLine::Modify();
6208 Error(
"Paint2DErrors",
"no TView in current pad");
6215 view->
SetView(phideg, thedeg, psideg, irep);
6220 fLego->TAttFill::Modify();
6221 Int_t backcolor =
gPad->GetFrameFillColor();
6226 fLego->TAttFill::Modify();
6242 if (Hoption.
Error == 110) {
6258 else y1 = Hparam.
ymin;
6260 else y2 = Hparam.
ymin;
6267 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6277 else x1 = Hparam.
xmin;
6279 else x2 = Hparam.
xmin;
6294 else z = Hparam.
zmin;
6296 else z1 = Hparam.
zmin;
6298 else z2 = Hparam.
zmin;
6301 if (z <= Hparam.
zmin)
continue;
6302 if (z > Hparam.
zmax) z = Hparam.
zmax;
6310 gPad->PaintLine3D(temp1, temp2);
6317 gPad->PaintLine3D(temp1, temp2);
6324 gPad->PaintLine3D(temp1, temp2);
6328 view->
WCtoNDC(temp1, &temp2[0]);
6329 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
6356 if (Hoption.
Same)
return;
6360 if (Hoption.
Lego || Hoption.
Surf || Hoption.
Tri ||
6363 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
6369 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
6392 f2->
Paint(
"surf same");
6394 obj->
Paint(
"cont3 same");
6401 gPad->PushSelectableObject(obj);
6405 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
6421 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
6424 static char chopth[17];
6426 Int_t htype, oldhtype;
6431 strlcpy(chopth,
" ",17);
6445 last = Hparam.
xlast;
6446 nbins = last - first + 1;
6452 if (fixbin) keepx =
new Double_t[2];
6453 else keepx =
new Double_t[nbins+1];
6460 for (j=first; j<=last;j++) {
6466 if (!Hoption.
Line) {
6470 keepy[j-first] = yb;
6475 if (fixbin) { keepx[0] = Hparam.
xmin; keepx[1] = Hparam.
xmax; }
6486 if (htype == 0 || htype == 1000) htype = 1001;
6493 if (Hoption.
Line) chopth[0] =
'L';
6494 if (Hoption.
Star) chopth[1] =
'*';
6495 if (Hoption.
Mark) chopth[2] =
'P';
6496 if (Hoption.
Mark == 10) chopth[3] =
'0';
6498 if (Hoption.
Curve) chopth[3] =
'C';
6499 if (Hoption.
Hist > 0) chopth[4] =
'H';
6500 else if (Hoption.
Bar) chopth[5] =
'B';
6510 if (!fixbin && strlen(chopth)) {
6514 if (Hoption.
Fill == 2) chopth[13] =
'2';
6566 if (Hoption.
Box || Hoption.
Lego) {
6567 if (Hoption.
Box == 11 || Hoption.
Lego == 11) {
6569 }
else if (Hoption.
Box == 12 || Hoption.
Lego == 12) {
6571 }
else if (Hoption.
Box == 13 || Hoption.
Lego == 13) {
6577 }
else if (strstr(opt,
"iso")) {
6580 }
else if (strstr(opt,
"tf3")) {
6584 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
6587 if (strstr(opt,
"fb")) Hoption.
FrontBox = 0;
6588 if (strstr(opt,
"bb")) Hoption.
BackBox = 0;
6595 view->
SetView(phideg, thedeg, psideg, irep);
6598 gROOT->ProcessLine(cmd);
6600 if (Hoption.
Same)
return;
6629 while ((obj = next())) {
6635 if (Hoption.
Same != 1) {
6652 static const char *where =
"PaintInit";
6665 Hparam.
xlast = last;
6672 if (Hparam.
xmax<=0) {
6673 Error(where,
"cannot set X axis to log scale");
6680 for (i=first; i<=last; i++) {
6692 Error(where,
"cannot set X axis to log scale");
6702 if (Hparam.
xlast > last) Hparam.
xlast = last;
6716 Int_t nonNullErrors = 0;
6718 for (i=first; i<=last;i++) {
6726 if (Hoption.
Error) {
6731 if (e1 > 0) nonNullErrors++;
6744 while ((f = (
TObject*) next())) {
6748 fval = f1->
Eval(xv[0],0,0);
6752 if (c1 > 0 && fval > 0.3*c1) ymin =
TMath::Min(ymin,fval);
6760 if (!nonNullErrors) {
6761 if (Hoption.
Error) {
6770 if (Hoption.
Logy && ymin <= 0) {
6771 if (ymax >= 1) ymin =
TMath::Max(.005,ymax*1
e-10);
6772 else ymin = 0.001*
ymax;
6778 if (Hoption.
Logy && xm < 0) {
6779 Error(where,
"log scale requested with a negative argument (%f)", xm);
6781 }
else if (Hoption.
Logy && xm>=0 && ymax==0) {
6790 if (ymax > 0) ymin = 0.001*
ymax;
6792 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", ymax);
6800 }
else if (ymin < 0) {
6812 ymin = ymin*(1-1
E-14);
6813 ymax = ymax*(1+1
E-14);
6820 if (allchan) factor /= allchan;
6821 if (factor == 0) factor = 1;
6838 if (ymin <=0 || ymax <=0) {
6839 Error(where,
"Cannot set Y axis to log scale");
6846 if (!Hoption.
Same) {
6858 if (ymin >= 0) ymin = 0;
6859 else ymin -= yMARGIN*(ymax-
ymin);
6862 if (ymin >= 0 && (ymin-dymin <= 0)) ymin = 0;
6871 ymax += yMARGIN*(ymax-
ymin);
6885 static const char *where =
"PaintInitH";
6898 Hparam.
xlast = last;
6909 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
6910 Error(where,
"cannot set Y axis to log scale");
6917 if (Hparam.
xlast > last) Hparam.
xlast = last;
6932 for (i=first; i<=last;i++) {
6936 if (Hoption.
Error) {
6943 while ((f = (
TObject*) next())) {
6947 fval = f1->
Eval(xv[0],0,0);
6950 if (fval > 0.3*c1) xmin =
TMath::Min(xmin,fval);
6961 if (Hoption.
Logx && xmin <= 0) {
6963 else xmin = 0.001*
xmax;
6968 if (Hoption.
Logx && xm <= 0) {
6969 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
6975 if (xmax > 0) xmin = 0.001*
xmax;
6977 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", xmax);
6985 }
else if (xmin < 0) {
6999 if (allchan) factor /= allchan;
7000 if (factor == 0) factor = 1;
7010 if (xmin <=0 || xmax <=0) {
7011 Error(where,
"Cannot set Y axis to log scale");
7018 if (!Hoption.
Same) {
7029 if (xmin >= 0) xmin = 0;
7030 else xmin -= yMARGIN*(xmax-
xmin);
7037 xmax += yMARGIN*(xmax-
xmin);
7050 Double_t wxyz[8][3] = { {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7051 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1} };
7052 Int_t iface[6][4] = { {0,3,2,1}, {4,5,6,7},
7053 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7} };
7073 Error(
"PaintH3",
"no TView in current pad");
7080 view->
SetView(phideg, thedeg, psideg, irep);
7082 Int_t backcolor =
gPad->GetFrameFillColor();
7098 Int_t incrx = (tnorm[ 8] < 0.) ? -1 : +1;
7099 Int_t incry = (tnorm[ 9] < 0.) ? -1 : +1;
7100 Int_t incrz = (tnorm[10] < 0.) ? -1 : +1;
7115 fH->TAttFill::Modify();
7116 fH->TAttLine::Modify();
7125 Double_t pmin[3], pmax[3], sxyz[8][3];
7126 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7129 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7132 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7142 if (w < wmin)
continue;
7143 if (w > wmax) w = wmax;
7145 if (scale == 0)
continue;
7146 for (
Int_t i=0; i<3; ++i) {
7149 for (
Int_t k=0; k<8; ++k) {
7150 sxyz[k][i] = wxyz[k][i]*d +
c;
7153 for (
Int_t k=0; k<8; ++k) {
7154 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7157 for (
Int_t k=0; k<6; ++k) {
7158 for (
Int_t i=0; i<4; ++i) {
7159 Int_t iv = iface[k][i];
7163 x[4] = x[0] ; y[4] = y[0];
7165 x[5] = x[2] ; y[5] = y[2];
7166 x[6] = x[3] ; y[6] = y[3];
7167 x[7] = x[1] ; y[7] = y[1];
7172 Double_t z = (x[2]-x[0])*(y[3]-y[1]) - (y[2]-y[0])*(x[3]-x[1]);
7173 if (z <= 0.)
continue;
7175 theColor = ncolors*((w-wmin)/(wmax-wmin)) -1;
7178 if (k == 3 || k == 5) {
7180 }
else if (k == 0 || k == 1) {
7186 fH->TAttFill::Modify();
7187 gPad->PaintFillArea(4, x, y);
7188 if (iopt != 3)
gPad->PaintPolyLine(n, x, y);
7216 fH->TAttFill::Modify();
7226 {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1},
7227 {-1,-1, 1}, {1,-1, 1}, {1,1, 1}, {-1,1, 1}
7229 Int_t iface[6][4] = {
7230 {0,3,2,1}, {4,5,6,7},
7231 {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}
7235 {0,-1,0}, {1,0,0}, {0,1,0}, {-1,0,0}
7256 Error(
"PaintH3",
"no TView in current pad");
7263 view->
SetView(phideg, thedeg, psideg, irep);
7265 Int_t backcolor =
gPad->GetFrameFillColor();
7280 Int_t incrx = (tnorm[ 8] < 0.) ? +1 : -1;
7281 Int_t incry = (tnorm[ 9] < 0.) ? +1 : -1;
7282 Int_t incrz = (tnorm[10] < 0.) ? +1 : -1;
7291 fH->TAttLine::Modify();
7294 const Int_t NTMAX = 100;
7299 Double_t pmin[3], pmax[3], sxyz[8][3], pp[4][2];
7300 for (
Int_t ix = ix1; ix !=ix2+incrx; ix += incrx) {
7303 for (
Int_t iy = iy1; iy != iy2+incry; iy += incry) {
7306 for (
Int_t iz = iz1; iz != iz2+incrz; iz += incrz) {
7315 if (w < wmin)
continue;
7316 if (w > wmax) w = wmax;
7318 if (scale == 0)
continue;
7319 for (
Int_t i=0; i<3; ++i) {
7322 for (
Int_t k=0; k<8; ++k) {
7323 sxyz[k][i] = wxyz[k][i]*d +
c;
7326 for (
Int_t k=0; k<8; ++k) {
7327 view->
WCtoNDC(&sxyz[k][0],&sxyz[k][0]);
7329 for (
Int_t k=0; k<6; ++k) {
7331 view->
FindNormal(normal[k][0], normal[k][1], normal[k][2], zn);
7332 if (zn <= 0)
continue;
7333 for (
Int_t i=0; i<4; ++i) {
7334 Int_t ip = iface[k][i];
7335 pp[i][0] = sxyz[ip][0];
7336 pp[i][1] = sxyz[ip][1];
7338 for (
Int_t i=0; i<4; ++i) {
7340 Int_t i2 = (i == 3) ? 0 : i + 1;
7343 Double_t xdel = pp[i2][0] - pp[i1][0];
7344 Double_t ydel = pp[i2][1] - pp[i1][1];
7346 for (
Int_t it = 0; it < nt; ++it) {
7347 x[0] = pp[i1][0] + xdel*tt[it][0];
7348 y[0] = pp[i1][1] + ydel*tt[it][0];
7349 x[1] = pp[i1][0] + xdel*tt[it][1];
7350 y[1] = pp[i1][1] + ydel*tt[it][1];
7351 gPad->PaintPolyLine(2, x, y);
7359 Double_t xdel = pp[i2][0] - pp[i1][0];
7360 Double_t ydel = pp[i2][1] - pp[i1][1];
7362 for (
Int_t it = 0; it < nt; ++it) {
7363 x[0] = pp[i1][0] + xdel*tt[it][0];
7364 y[0] = pp[i1][1] + ydel*tt[it][0];
7365 x[1] = pp[i1][0] + xdel*tt[it][1];
7366 y[1] = pp[i1][1] + ydel*tt[it][1];
7367 gPad->PaintPolyLine(2, x, y);
7372 xdel = pp[i2][0] - pp[i1][0];
7373 ydel = pp[i2][1] - pp[i1][1];
7374 for (
Int_t it = 0; it < nt; ++it) {
7375 x[0] = pp[i1][0] + xdel*tt[it][0];
7376 y[0] = pp[i1][1] + ydel*tt[it][0];
7377 x[1] = pp[i1][0] + xdel*tt[it][1];
7378 y[1] = pp[i1][1] + ydel*tt[it][1];
7379 gPad->PaintPolyLine(2, x, y);
7421 Int_t ic2 = ic1+nbcol;
7422 Int_t ic3 = ic2+nbcol;
7457 Error(
"PaintH3Iso",
"no TView in current pad");
7466 view->
SetView(phideg, thedeg, psideg, irep);
7468 Int_t backcolor =
gPad->GetFrameFillColor();
7484 for (
Int_t col=0;col<nbcol;col++) {
7485 acol =
gROOT->GetColor(col+icol1);
7487 if (acol) acol->
SetRGB(r, g, b);
7502 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
7530 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
7541 if (deltaz == 0) deltaz = 1;
7589 Color_t colormain = -1, colordark = -1;
7593 if (Hoption.
Lego == 13) {
7598 if (Hoption.
Lego == 14) {
7600 drawShadowsInLego1 =
kFALSE;
7626 if (Hoption.
Lego == 11) {
7630 for (
Int_t id=0;
id<=nids;
id++) {
7633 if (colormain == 1) colormain = 17;
7635 else colordark = colormain;
7648 Error(
"PaintLego",
"no TView in current pad");
7655 view->
SetView(phideg, thedeg, psideg, irep);
7663 fLego->TAttFill::Modify();
7665 Int_t backcolor =
gPad->GetFrameFillColor();
7671 fLego->TAttFill::Modify();
7678 if (Hoption.
Lego == 19) {
7686 if (Hoption.
Lego == 11 || Hoption.
Lego == 12) {
7716 if (Hoption.
Lego == 1) {
7723 if (Hoption.
Lego == 1 || Hoption.
Lego == 11) {
7751 Int_t ndivx, ndivy, ndivz, i;
7752 Double_t x1[3],
x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
7753 static char chopax[8], chopay[8], chopaz[8];
7754 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
7759 Error(
"PaintLegoAxis",
"no TView in current pad");
7774 gPad->PaintLine(x1[0],x1[1],x2[0],x2[1]);
7784 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
7785 for (i = 1; i <= 8; ++i) {
7786 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
7787 r[i*3 - 2] = av[i*3 - 2]*sina;
7788 r[i*3 - 1] = av[i*3 - 1];
7791 view->
WCtoNDC(&r[ix1*3 - 3], x1);
7792 view->
WCtoNDC(&r[ix2*3 - 3], x2);
7793 view->
WCtoNDC(&r[iy1*3 - 3], y1);
7794 view->
WCtoNDC(&r[iy2*3 - 3], y2);
7795 view->
WCtoNDC(&r[iz1*3 - 3], z1);
7796 view->
WCtoNDC(&r[iz2*3 - 3], z2);
7802 if (!rmin || !rmax)
return;
7805 if (x1[0] > x2[0]) strlcpy(chopax,
"SDH=+",8);
7806 else strlcpy(chopax,
"SDH=-",8);
7807 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
7808 else strlcpy(chopay,
"SDH=-",8);
7809 if (z2[1] > z1[1]) strlcpy(chopaz,
"SDH=+",8);
7810 else strlcpy(chopaz,
"SDH=-",8);
7813 if (Hoption.
Logx) strlcat(chopax,
"G",8);
7814 if (Hoption.
Logy) strlcat(chopay,
"G",8);
7815 if (Hoption.
Logz) strlcat(chopaz,
"G",8);
7824 strlcat(chopax,
"N",8);
7828 strlcat(chopay,
"N",8);
7832 strlcat(chopaz,
"N",8);
7854 strlcat(chopax,
"t",8);
7862 axis->
PaintAxis(x1[0], x1[1], x2[0], x2[1], bmin, bmax, ndivx, chopax);
7872 strlcpy(chopay,
"V=+UN",8);
7887 strlcat(chopay,
"t",8);
7895 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
7910 strlcat(chopaz,
"t",8);
7918 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
7936 delete palette; palette = 0;
7941 delete palette; palette = 0;
7956 if (xmax > x2) xmax =
gPad->PadtoX(
gPad->GetX2()-0.01*xr);
7969 fH->TAttMarker::Modify();
7977 if (zmin == 0 && zmax == 0)
return;
7988 if (zmin == 0 && zmax == 0)
return;
7991 if (ncells > 10000) scale /= 5;
7995 if (dz >=
kNMAX || zmax < 1) {
7996 scale = (
kNMAX-1)/dz;
7997 if (ncells > 10000) scale /= 5;
8004 if (zmin >= 0) zmin = 0;
8005 else zmin -= yMARGIN*(zmax-zmin);
8007 Double_t dzmin = yMARGIN*(zmax-zmin);
8008 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
8017 strlcpy(optscat,opt.
Data(),100);
8018 char *oscat = strstr(optscat,
"scat=");
8019 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
8020 sscanf(oscat+5,
"%lg",&scale);
8034 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
8036 if (z < zmin) z = zmin;
8037 if (z > zmax) z = zmax;
8043 if (z <= 0)
continue;
8047 for (
Int_t loop=0; loop<k; loop++) {
8048 if (k+marker >=
kNMAX) {
8052 fXbuf[marker] = (random.
Rndm()*xstep) + xk;
8053 fYbuf[marker] = (random.
Rndm()*ystep) + yk;
8062 if (
fXbuf[marker] <
gPad->GetUxmin())
break;
8063 if (
fYbuf[marker] <
gPad->GetUymin())
break;
8064 if (
fXbuf[marker] >
gPad->GetUxmax())
break;
8065 if (
fYbuf[marker] >
gPad->GetUymax())
break;
8093 R__TMatrixFBase->
Draw(option);
8099 R__TMatrixDBase->
Draw(option);
8105 R__TVectorF->
Draw(option);
8111 R__TVectorD->
Draw(option);
8128 while ((obj = next())) {
8135 if (stats && dostat) {
8141 if (!dofit) fit = 0;
8142 if (dofit == 1) dofit = 111;
8143 if (dostat == 1) dostat = 1111;
8144 Int_t print_name = dostat%10;
8145 Int_t print_entries = (dostat/10)%10;
8146 Int_t print_mean = (dostat/100)%10;
8147 Int_t print_stddev = (dostat/1000)%10;
8148 Int_t print_under = (dostat/10000)%10;
8149 Int_t print_over = (dostat/100000)%10;
8150 Int_t print_integral= (dostat/1000000)%10;
8151 Int_t print_skew = (dostat/10000000)%10;
8152 Int_t print_kurt = (dostat/100000000)%10;
8153 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
8154 print_under + print_over + print_integral +
8155 print_skew + print_kurt;
8156 Int_t print_fval = dofit%10;
8157 Int_t print_ferrors = (dofit/10)%10;
8158 Int_t print_fchi2 = (dofit/100)%10;
8159 Int_t print_fprob = (dofit/1000)%10;
8160 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
8163 else nlinesf += fit->
GetNpar();
8169 if (!dostat && !fit) {
8208 if (print_entries) {
8215 if (print_mean == 1) {
8225 if (print_mean == 1) {
8237 if (print_stddev == 1) {
8247 if (print_stddev == 1) {
8268 if (print_integral) {
8269 if (print_integral == 1) {
8279 if (print_skew == 1) {
8290 if (print_kurt == 1) {
8306 if (print_fchi2) stats->
AddText(t);
8312 if (print_fval || print_ferrors) {
8317 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
8321 if (print_ferrors) {
8354 while ((obj = next())) {
8360 if (stats && dostat) {
8366 if (dostat == 1) dostat = 1111;
8367 Int_t print_name = dostat%10;
8368 Int_t print_entries = (dostat/10)%10;
8369 Int_t print_mean = (dostat/100)%10;
8370 Int_t print_stddev = (dostat/1000)%10;
8371 Int_t print_under = (dostat/10000)%10;
8372 Int_t print_over = (dostat/100000)%10;
8373 Int_t print_integral= (dostat/1000000)%10;
8374 Int_t print_skew = (dostat/10000000)%10;
8375 Int_t print_kurt = (dostat/100000000)%10;
8376 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
8377 if (print_under || print_over) nlines += 3;
8382 if (!dostat && !fit) {
8422 if (print_entries) {
8429 if (print_mean == 1) {
8448 if (print_stddev == 1) {
8466 if (print_integral) {
8472 if (print_skew == 1) {
8491 if (print_kurt == 1) {
8509 if (print_under || print_over) {
8520 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
8521 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
8522 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
8523 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
8524 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
8525 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
8526 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
8527 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
8528 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
8573 while ((obj = next())) {
8579 if (stats && dostat) {
8585 if (dostat == 1) dostat = 1111;
8586 Int_t print_name = dostat%10;
8587 Int_t print_entries = (dostat/10)%10;
8588 Int_t print_mean = (dostat/100)%10;
8589 Int_t print_stddev = (dostat/1000)%10;
8590 Int_t print_under = (dostat/10000)%10;
8591 Int_t print_over = (dostat/100000)%10;
8592 Int_t print_integral= (dostat/1000000)%10;
8593 Int_t print_skew = (dostat/10000000)%10;
8594 Int_t print_kurt = (dostat/100000000)%10;
8595 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
8596 if (print_under || print_over) nlines += 3;
8601 if (!dostat && !fit) {
8639 if (print_entries) {
8646 if (print_mean == 1) {
8672 if (print_stddev == 1) {
8697 if (print_integral) {
8702 if (print_skew == 1) {
8728 if (print_kurt == 1) {
8753 if (print_under || print_over) {
8791 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
8802 if (deltaz == 0) deltaz = 1;
8873 Error(
"PaintSurface",
"no TView in current pad");
8880 view->
SetView(phideg, thedeg, psideg, irep);
8890 fLego->TAttFill::Modify();
8892 Int_t backcolor =
gPad->GetFrameFillColor();
8898 fLego->TAttFill::Modify();
8904 if (Hoption.
Surf == 13 || Hoption.
Surf == 15) {
8914 Hoption.
Surf = hoption35;
8921 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 14 || Hoption.
Surf == 17) {
8930 if (Hoption.
Surf == 14) {
8936 fmax = fmin + (yligh1+0.1)*(qd+qs);
8941 if (!colref)
return;
8946 for (
Int_t col=0;col<nbcol;col++) {
8947 acol =
gROOT->GetColor(col+icol1);
8949 if (acol) acol->
SetRGB(r,g,b);
8959 }
else if (Hoption.
Surf == 15) {
8963 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 16 || Hoption.
Surf == 17) {
8992 if (Hoption.
Surf == 17) {
9005 if ((!Hoption.
Same) &&
9006 (Hoption.
Surf == 1 || Hoption.
Surf == 13 || Hoption.
Surf == 16)) {
9038 if (!dt && !dtOld)
return;
9047 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
9051 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
9056 if (!rmin || !rmax)
return;
9075 Error(
"PaintTriangles",
"no TView in current pad");
9082 view->
SetView(phideg, thedeg, psideg, irep);
9087 fLego->TAttFill::Modify();
9088 Int_t backcolor =
gPad->GetFrameFillColor();
9093 fLego->TAttFill::Modify();
9114 if (!Hoption.
Axis && !Hoption.
Same) {
9135 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
9142 for (i = 0; i < ndivz; ++i) {
9149 delete [] colorlevel;
9172 if (Hoption.
Func == 2) {
9195 if (Hoption.
Color) {
9213 if (!Hoption.
Lego && !Hoption.
Surf &&
9219 while ((obj = next())) {
9225 if (Hoption.
Same != 1) {
9227 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
9247 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
9264 while ((obj=next())) {
9267 if (z==0 && Hoption.
Zero)
continue;
9273 g->TAttLine::Modify();
9274 g->TAttMarker::Modify();
9275 g->TAttFill::Modify();
9285 if (fill) g->
Paint(
"F");
9286 if (mark) g->
Paint(
"P");
9296 while ((g = (
TGraph*) nextg())) {
9297 g->TAttLine::Modify();
9298 g->TAttMarker::Modify();
9299 g->TAttFill::Modify();
9309 if (fill) g->
Paint(
"F");
9310 if (mark) g->
Paint(
"P");
9323 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9326 Int_t ncolors, color, theColor;
9357 while ((obj=next())) {
9362 if (z==0 && Hoption.
Zero)
continue;
9367 if (z < zmin)
continue;
9372 if (z < zc)
continue;
9374 for (
Int_t k=0; k<ndiv; k++) {
9383 color =
Int_t(0.01+(z-zmin)*scale);
9386 if (theColor > ncolors-1) theColor = ncolors-1;
9392 g->TAttFill::Modify();
9403 while ((g = (
TGraph*) nextg())) {
9405 g->TAttFill::Modify();
9420 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
9423 Int_t k, loop, marker=0;
9424 Double_t z, xk,xstep, yk, ystep, xp, yp;
9438 scale = (
kNMAX-1)/dz;
9452 while ((obj=next())) {
9455 if (
a>maxarea) maxarea =
a;
9460 while ((obj=next())) {
9464 if (z < zmin) z = zmin;
9465 if (z > zmax) z = zmax;
9480 if (k <= 0 || z <= 0)
continue;
9483 if (k+marker >=
kNMAX) {
9487 xp = (random.
Rndm()*xstep) + xk;
9488 yp = (random.
Rndm()*ystep) + yk;
9504 if (k <= 0 || z <= 0)
continue;
9507 if (k+marker >=
kNMAX) {
9511 xp = (random.
Rndm()*xstep) + xk;
9512 yp = (random.
Rndm()*ystep) + yk;
9541 if (Hoption.
Text >= 1000) angle = Hoption.
Text%1000;
9545 if (Hoption.
Text == 1) angle = 0;
9547 text.TAttText::Modify();
9554 while ((obj=next())) {
9571 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9600 if (Hoption.
Text >= 1000) angle = Hoption.
Text%1000;
9611 if (Hoption.
Text == 1) angle = 90;
9615 text.TAttText::Modify();
9629 if (yt == 0.)
continue;
9639 if (y >=
gPad->GetY2())
continue;
9640 if (y <= gPad->GetY1())
continue;
9647 if (Hoption.
Text == 1) angle = 0;
9649 text.TAttText::Modify();
9666 if (Hoption.
Text>2000) {
9668 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
9706 Error(
"PaintTF3",
"no TView in current pad");
9712 view->
SetView(phideg, thedeg, psideg, irep);
9758 if (Hoption.
Same)
return;
9763 TIter next(
gPad->GetListOfPrimitives());
9764 while ((obj = next())) {
9767 if (strcmp(title->GetName(),
"title")) {title = 0;
continue;}
9771 if (title)
delete title;
9777 if (ht <= 0) ht = 0.05;
9792 if (wt > 0) title->SetX2NDC(title->GetX1NDC()+wt);
9798 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
9800 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
9804 if (talh == 2) xpos = xpos-wt/2.;
9805 if (talh == 3) xpos = xpos-wt;
9806 if (talv == 2) ypos = ypos+ht/2.;
9807 if (talv == 1) ypos = ypos+ht;
9825 if(!
gPad->IsEditable())
delete ptitle;
9834 if (!strcmp(mess,
"SetF3")) {
9836 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
9838 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
9932 if (Hoption.
Same)
return;
9940 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
9941 if (Hoption.
Proj ==1) {
9948 if (xmin > xmin_aid) xmin = xmin_aid;
9949 if (ymin > ymin_aid) ymin = ymin_aid;
9950 if (xmax < xmax_aid) xmax = xmax_aid;
9951 if (ymax < ymax_aid) ymax = ymax_aid;
9952 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9956 if (xmin >xmin_aid) xmin = xmin_aid;
9957 if (xmax <xmax_aid) xmax = xmax_aid;
9959 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9962 if (ymin >ymin_aid) ymin = ymin_aid;
9963 if (ymax <ymax_aid) ymax = ymax_aid;
9965 }
else if ( Hoption.
Proj ==2) {
9966 if (Hparam.
ymin <= -90 || Hparam.
ymax >=90) {
9967 Warning(
"Mercator Projection",
"Latitude out of range %f or %f", Hparam.
ymin, Hparam.
ymax);
9973 }
else if (Hoption.
Proj == 3) {
9979 if (xmin > xmin_aid) xmin = xmin_aid;
9980 if (ymin > ymin_aid) ymin = ymin_aid;
9981 if (xmax < xmax_aid) xmax = xmax_aid;
9982 if (ymax < ymax_aid) ymax = ymax_aid;
9983 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
9986 if (xmin >xmin_aid) xmin = xmin_aid;
9987 if (xmax <xmax_aid) xmax = xmax_aid;
9989 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
9992 if (ymin >ymin_aid) ymin = ymin_aid;
9993 if (ymax <ymax_aid) ymax = ymax_aid;
9995 }
else if (Hoption.
Proj == 4) {
10001 if (xmin > xmin_aid) xmin = xmin_aid;
10002 if (ymin > ymin_aid) ymin = ymin_aid;
10003 if (xmax < xmax_aid) xmax = xmax_aid;
10004 if (ymax < ymax_aid) ymax = ymax_aid;
10005 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
10008 if (xmin >xmin_aid) xmin = xmin_aid;
10009 if (xmax <xmax_aid) xmax = xmax_aid;
10011 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
10014 if (ymin >ymin_aid) ymin = ymin_aid;
10015 if (ymax <ymax_aid) ymax = ymax_aid;
10030 gPad->Range(xmin - dxr*
gPad->GetLeftMargin(),
10031 ymin - dyr*
gPad->GetBottomMargin(),
10032 xmax + dxr*
gPad->GetRightMargin(),
10033 ymax + dyr*
gPad->GetTopMargin());
10034 gPad->RangeAxis(xmin, ymin, xmax, ymax);
10043 if (h == 0)
return;
10057 static const char *where =
"TableInit";
10070 Hparam.
xlast = last;
10078 if (Hoption.
Logx) {
10084 if (Hparam.
xmin <=0 || Hparam.
xmax <=0) {
10085 Error(where,
"cannot set X axis to log scale");
10091 if (Hparam.
xlast > last) Hparam.
xlast = last;
10099 Hparam.
ylast = last;
10108 if (Hoption.
Logy) {
10113 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
10114 Error(where,
"cannot set Y axis to log scale");
10120 if (Hparam.
ylast > last) Hparam.
ylast = last;
10136 if (Hoption.
Error) {
10149 if (Hoption.
Logz && zmax < 0) {
10150 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10152 }
else if (Hoption.
Logz && zmin>=0 && zmax==0) {
10156 if (zmin >= zmax) {
10157 if (Hoption.
Logz) {
10158 if (zmax > 0) zmin = 0.001*zmax;
10160 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
10170 if (allchan) factor /= allchan;
10171 if (factor == 0) factor = 1;
10173 zmax = factor*zmax;
10174 zmin = factor*zmin;
10182 if (Hoption.
Logz) {
10200 zmax += yMARGIN*(zmax-zmin);
10208 if (zmin >= 0) zmin = 0;
10209 else zmin -= yMARGIN*(zmax-zmin);
10211 Double_t dzmin = yMARGIN*(zmax-zmin);
10212 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
10213 else zmin -= dzmin;
10218 Hparam.
zmin = zmin;
10219 Hparam.
zmax = zmax;
10235 static char ef[20];
10236 char tf[20], tv[64];
10244 int ie = sv.
Index(
"e");
10245 int iE = sv.
Index(
"E");
10246 int id = sv.
Index(
".");
10250 if (ie >= 0 || iE >= 0) {
10251 if (sv.
Index(
"+") >= 0) {
10256 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10258 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10263 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
10265 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
10270 }
else if (
id < 0) {
10291 Int_t projection = 0;
10292 if (opt.
Contains(
"x")) projection = 1;
10293 if (opt.
Contains(
"y")) projection = 2;
10294 if (opt.
Contains(
"z")) projection = 3;
10295 if (opt.
Contains(
"xy")) projection = 4;
10296 if (opt.
Contains(
"yx")) projection = 5;
10297 if (opt.
Contains(
"xz")) projection = 6;
10298 if (opt.
Contains(
"zx")) projection = 7;
10299 if (opt.
Contains(
"yz")) projection = 8;
10300 if (opt.
Contains(
"zy")) projection = 9;
10304 gROOT->MakeDefCanvas();
10316 gPad->SetDoubleBuffer(0);
10320 static int pyold1 = 0;
10321 static int pyold2 = 0;
10322 float uxmin =
gPad->GetUxmin();
10323 float uxmax =
gPad->GetUxmax();
10324 int pxmin =
gPad->XtoAbsPixel(uxmin);
10325 int pxmax =
gPad->XtoAbsPixel(uxmax);
10356 TH1D *hp = ((
TH2*)fH)->ProjectionX(prjName, biny1, biny2);
10361 if (biny1 == biny2) {
10362 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
10363 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny1);
10366 if (fH->GetYaxis()->GetLabels() != NULL) {
10367 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf] %s", biny1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetYaxis()->GetBinLabel(biny1)));
10369 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
10372 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
10373 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny2);
10378 if (fH->GetYaxis()->GetLabels() != NULL) {
10379 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)));
10381 hp->SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
10384 hp->SetXTitle(fH->GetXaxis()->GetTitle());
10385 hp->SetYTitle(
"Number of Entries");
10399 gPad->SetDoubleBuffer(0);
10403 static int pxold1 = 0;
10404 static int pxold2 = 0;
10405 float uymin =
gPad->GetUymin();
10406 float uymax =
gPad->GetUymax();
10407 int pymin =
gPad->YtoAbsPixel(uymin);
10408 int pymax =
gPad->YtoAbsPixel(uymax);
10439 TH1D *hp = ((
TH2*)fH)->ProjectionY(prjName, binx1, binx2);
10444 if (binx1 == binx2) {
10445 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
10446 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx1);
10449 if (fH->GetXaxis()->GetLabels() != NULL) {
10450 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf] [%s]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetXaxis()->GetBinLabel(binx1)));
10452 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
10455 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
10456 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx2);
10461 if (fH->GetXaxis()->GetLabels() != NULL) {
10462 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)));
10464 hp->SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
10467 hp->SetXTitle(fH->GetYaxis()->GetTitle());
10468 hp->SetYTitle(
"Number of Entries");
10492 gPad->SetDoubleBuffer(0);
10508 static TPoint endface1[5];
10509 static TPoint endface2[5];
10518 int pxmin =
gPad->XtoAbsPixel(uxmin);
10519 int pxmax =
gPad->XtoAbsPixel(uxmax);
10520 if (pxmin==pxmax)
return;
10521 int pymin =
gPad->YtoAbsPixel(uymin);
10522 int pymax =
gPad->YtoAbsPixel(uymax);
10523 if (pymin==pymax)
return;
10524 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
10525 Double_t cy = (pymax-pymin)/(uymax-uymin);
10540 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
10544 Int_t lastZ = zaxis->
GetLast();
10545 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10548 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10549 if (nbins>1 && line1[0].GetX()) {
10560 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10561 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10564 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10565 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10572 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10573 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10576 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10577 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10583 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10584 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10587 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10588 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10594 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10595 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10598 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10599 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10601 endface1[0].
SetX(line1[0].GetX());
10602 endface1[0].
SetY(line1[0].GetY());
10603 endface1[1].
SetX(line2[0].GetX());
10604 endface1[1].
SetY(line2[0].GetY());
10605 endface1[2].
SetX(line3[0].GetX());
10606 endface1[2].
SetY(line3[0].GetY());
10607 endface1[3].
SetX(line4[0].GetX());
10608 endface1[3].
SetY(line4[0].GetY());
10609 endface1[4].
SetX(line1[0].GetX());
10610 endface1[4].
SetY(line1[0].GetY());
10612 endface2[0].
SetX(line1[1].GetX());
10613 endface2[0].
SetY(line1[1].GetY());
10614 endface2[1].
SetX(line2[1].GetX());
10615 endface2[1].
SetY(line2[1].GetY());
10616 endface2[2].
SetX(line3[1].GetX());
10617 endface2[2].
SetY(line3[1].GetY());
10618 endface2[3].
SetX(line4[1].GetX());
10619 endface2[3].
SetY(line4[1].GetY());
10620 endface2[4].
SetX(line1[1].GetX());
10621 endface2[4].
SetY(line1[1].GetY());
10643 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10655 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10659 Int_t lastZ = zaxis->
GetLast();
10660 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
10663 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10664 if (nbins>1 && line1[0].GetX()) {
10675 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10676 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10679 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10680 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10687 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10688 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10691 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10692 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10698 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10699 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10702 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10703 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10709 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10710 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10713 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10714 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10716 endface1[0].
SetX(line1[0].GetX());
10717 endface1[0].
SetY(line1[0].GetY());
10718 endface1[1].
SetX(line2[0].GetX());
10719 endface1[1].
SetY(line2[0].GetY());
10720 endface1[2].
SetX(line3[0].GetX());
10721 endface1[2].
SetY(line3[0].GetY());
10722 endface1[3].
SetX(line4[0].GetX());
10723 endface1[3].
SetY(line4[0].GetY());
10724 endface1[4].
SetX(line1[0].GetX());
10725 endface1[4].
SetY(line1[0].GetY());
10727 endface2[0].
SetX(line1[1].GetX());
10728 endface2[0].
SetY(line1[1].GetY());
10729 endface2[1].
SetX(line2[1].GetX());
10730 endface2[1].
SetY(line2[1].GetY());
10731 endface2[2].
SetX(line3[1].GetX());
10732 endface2[2].
SetY(line3[1].GetY());
10733 endface2[3].
SetX(line4[1].GetX());
10734 endface2[3].
SetY(line4[1].GetY());
10735 endface2[4].
SetX(line1[1].GetX());
10736 endface2[4].
SetY(line1[1].GetY());
10757 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10769 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
10773 Int_t lastY = yaxis->
GetLast();
10774 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
10777 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
10778 if (nbins>1 && line1[0].GetX()) {
10789 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10790 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10793 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10794 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10801 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10802 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10805 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10806 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10812 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10813 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10816 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10817 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10823 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10824 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10827 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10828 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10830 endface1[0].
SetX(line1[0].GetX());
10831 endface1[0].
SetY(line1[0].GetY());
10832 endface1[1].
SetX(line2[0].GetX());
10833 endface1[1].
SetY(line2[0].GetY());
10834 endface1[2].
SetX(line3[0].GetX());
10835 endface1[2].
SetY(line3[0].GetY());
10836 endface1[3].
SetX(line4[0].GetX());
10837 endface1[3].
SetY(line4[0].GetY());
10838 endface1[4].
SetX(line1[0].GetX());
10839 endface1[4].
SetY(line1[0].GetY());
10841 endface2[0].
SetX(line1[1].GetX());
10842 endface2[0].
SetY(line1[1].GetY());
10843 endface2[1].
SetX(line2[1].GetX());
10844 endface2[1].
SetY(line2[1].GetY());
10845 endface2[2].
SetX(line3[1].GetX());
10846 endface2[2].
SetY(line3[1].GetY());
10847 endface2[3].
SetX(line4[1].GetX());
10848 endface2[3].
SetY(line4[1].GetY());
10849 endface2[4].
SetX(line1[1].GetX());
10850 endface2[4].
SetY(line1[1].GetY());
10871 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10883 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10886 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10887 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10892 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10893 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10894 rect1[4].
SetX(rect1[0].GetX());
10895 rect1[4].
SetY(rect1[0].GetY());
10898 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10899 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10902 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10903 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10906 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10907 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10914 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10915 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10916 rect2[4].
SetX(rect2[0].GetX());
10917 rect2[4].
SetY(rect2[0].GetY());
10920 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10921 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10924 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10925 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10928 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10929 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10941 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10942 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10954 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10957 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10958 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10963 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10964 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10965 rect1[4].
SetX(rect1[0].GetX());
10966 rect1[4].
SetY(rect1[0].GetY());
10969 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10970 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10973 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10974 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10977 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10978 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10985 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10986 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10987 rect2[4].
SetX(rect2[0].GetX());
10988 rect2[4].
SetY(rect2[0].GetY());
10991 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10992 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10995 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10996 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10999 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11000 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11011 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
11012 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
11024 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
11027 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11028 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11033 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11034 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11035 rect1[4].
SetX(rect1[0].GetX());
11036 rect1[4].
SetY(rect1[0].GetY());
11039 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11040 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11043 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11044 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11047 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11048 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11055 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11056 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11057 rect2[4].
SetX(rect2[0].GetX());
11058 rect2[4].
SetY(rect2[0].GetY());
11061 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11062 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11065 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11066 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11069 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11070 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11081 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
11082 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
11094 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
11097 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11098 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11103 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11104 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11105 rect1[4].
SetX(rect1[0].GetX());
11106 rect1[4].
SetY(rect1[0].GetY());
11109 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11110 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11113 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11114 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11117 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11118 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11125 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11126 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11127 rect2[4].
SetX(rect2[0].GetX());
11128 rect2[4].
SetY(rect2[0].GetY());
11131 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11132 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11135 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11136 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11139 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11140 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11151 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
11152 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
11164 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
11167 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11168 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11173 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11174 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11175 rect1[4].
SetX(rect1[0].GetX());
11176 rect1[4].
SetY(rect1[0].GetY());
11179 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11180 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11183 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11184 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11187 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11188 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11195 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11196 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11197 rect2[4].
SetX(rect2[0].GetX());
11198 rect2[4].
SetY(rect2[0].GetY());
11201 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11202 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11205 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11206 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11209 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11210 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11221 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
11222 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
11234 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
11237 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
11238 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
11243 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11244 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11245 rect1[4].
SetX(rect1[0].GetX());
11246 rect1[4].
SetY(rect1[0].GetY());
11249 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11250 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11253 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11254 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11257 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11258 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11265 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11266 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11267 rect2[4].
SetX(rect2[0].GetX());
11268 rect2[4].
SetY(rect2[0].GetY());
11271 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11272 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11275 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11276 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11279 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
11280 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
11291 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
11292 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.
image html pict1_TGaxis_012 png width
Define new text attributes for the label number "labNum".
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)
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()
Conversion from degree to radian: .
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
constexpr Double_t E()
Base of natural log: .
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.
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()
Conversion from radian to degree: .
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.
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
Return the capacity of the collection, i.e.
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
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
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.
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)
Binary search in an array of n values to locate 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)