2423 TH1 *gCurrentHist = 0;
2475 fGraph2DPainter = 0;
2476 fShowProjection = 0;
2483 gStringEntries =
gEnv->
GetValue(
"Hist.Stats.Entries",
"Entries");
2484 gStringMean =
gEnv->
GetValue(
"Hist.Stats.Mean",
"Mean");
2485 gStringMeanX =
gEnv->
GetValue(
"Hist.Stats.MeanX",
"Mean x");
2486 gStringMeanY =
gEnv->
GetValue(
"Hist.Stats.MeanY",
"Mean y");
2487 gStringMeanZ =
gEnv->
GetValue(
"Hist.Stats.MeanZ",
"Mean z");
2488 gStringStdDev =
gEnv->
GetValue(
"Hist.Stats.StdDev",
"Std Dev");
2489 gStringStdDevX =
gEnv->
GetValue(
"Hist.Stats.StdDevX",
"Std Dev x");
2490 gStringStdDevY =
gEnv->
GetValue(
"Hist.Stats.StdDevY",
"Std Dev y");
2491 gStringStdDevZ =
gEnv->
GetValue(
"Hist.Stats.StdDevZ",
"Std Dev z");
2492 gStringUnderflow =
gEnv->
GetValue(
"Hist.Stats.Underflow",
"Underflow");
2493 gStringOverflow =
gEnv->
GetValue(
"Hist.Stats.Overflow",
"Overflow");
2494 gStringIntegral =
gEnv->
GetValue(
"Hist.Stats.Integral",
"Integral");
2495 gStringIntegralBinWidth =
gEnv->
GetValue(
"Hist.Stats.IntegralBinWidth",
"Integral(w)");
2496 gStringSkewness =
gEnv->
GetValue(
"Hist.Stats.Skewness",
"Skewness");
2497 gStringSkewnessX =
gEnv->
GetValue(
"Hist.Stats.SkewnessX",
"Skewness x");
2498 gStringSkewnessY =
gEnv->
GetValue(
"Hist.Stats.SkewnessY",
"Skewness y");
2499 gStringSkewnessZ =
gEnv->
GetValue(
"Hist.Stats.SkewnessZ",
"Skewness z");
2500 gStringKurtosis =
gEnv->
GetValue(
"Hist.Stats.Kurtosis",
"Kurtosis");
2501 gStringKurtosisX =
gEnv->
GetValue(
"Hist.Stats.KurtosisX",
"Kurtosis x");
2502 gStringKurtosisY =
gEnv->
GetValue(
"Hist.Stats.KurtosisY",
"Kurtosis y");
2503 gStringKurtosisZ =
gEnv->
GetValue(
"Hist.Stats.KurtosisZ",
"Kurtosis z");
2528 const Int_t big = 9999;
2529 const Int_t kMaxDiff = 7;
2540 Int_t curdist = big;
2541 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
2544 if (!PadPointer)
return 0;
2555 if (view && Hoption.
Contour != 14) {
2558 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
2560 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
2562 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
2563 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
2574 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
2583 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
2595 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
2604 if (yxaxis < puymin) yxaxis = puymin;
2605 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
2619 gPad->GetRangeAxis(xmin, ymin, xmax, ymax);
2622 if ((pxu>xmax) || (pxu < xmin) || (pyu>ymax) || (pyu < ymin)) {
2627 if (bin>0) curdist = 1;
2633 if ( px > puxmin + delta2
2634 && px < puxmax - delta2
2635 && py > puymax + delta2
2636 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
2640 if (
gPad->IsVertical()) {
2645 if (binval == 0 && pybin < puymin) pybin = 10000;
2651 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
2653 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
2654 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
2656 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
2657 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
2658 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin = py;
2668 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
2674 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
2676 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
2677 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
2679 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
2680 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
2681 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin = px;
2693 if (dist < kMaxDiff) {
gPad->SetSelected(f);
return dist;}
2707 Error(
"DrawPanel",
"need to draw histogram first");
2712 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
2728 static Int_t bin, px1, py1, px2, py2, pyold;
2733 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
2736 if (!
gPad->IsEditable())
return;
2763 if (!opaque)
gVirtualX->SetLineColor(-1);
2764 fH->TAttLine::Modify();
2766 if (opaque && dimension ==2) {
2767 zbx1 =
gPad->AbsPixeltoX(px);
2768 zbx2 =
gPad->AbsPixeltoX(px);
2769 zby1 =
gPad->AbsPixeltoY(py);
2770 zby2 =
gPad->AbsPixeltoY(py);
2773 if (
gPad->GetLogx()) {
2777 if (
gPad->GetLogy()) {
2781 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2798 if (dimension ==1) {
2806 x =
gPad->AbsPixeltoX(px);
2810 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
2811 ylow =
gPad->GetUymin();
2812 px1 =
gPad->XtoAbsPixel(xlow);
2813 px2 =
gPad->XtoAbsPixel(xup);
2814 py1 =
gPad->YtoAbsPixel(ylow);
2824 if (dimension ==1) {
2825 if (
gROOT->GetEditHistograms()) {
2834 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
2841 if (opaque && dimension ==2) {
2843 zbx2 =
gPad->AbsPixeltoX(px);
2844 zby2 =
gPad->AbsPixeltoY(py);
2847 zoombox->
SetX2(zbx2);
2848 zoombox->
SetY2(zby2);
2858 if (dimension ==2) {
2863 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
2868 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
2877 if (dimension == 2) {
2882 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
2887 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
2895 if (dimension ==1) {
2896 if (
gROOT->GetEditHistograms()) {
2897 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
2905 if (opaque && dimension ==2) {
2915 if (x1<x2 && y1<y2) {
2924 if (opaque)
gVirtualX->SetLineColor(-1);
2934 event =
gVirtualX->RequestLocator(1, 1, px, py);
2962 if (!dt && !dtOld)
return nullptr;
2982 if (!
gPad)
return (
char*)
"";
2983 static char info[200];
2992 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
2993 uxmin=
gPad->GetUxmin();
2994 uxmax=
gPad->GetUxmax();
2997 x = xmin +(xmax-
xmin)*(x-uxmin)/(uxmax-uxmin);
2998 uymin=
gPad->GetUymin();
2999 uymax=
gPad->GetUymax();
3002 y = ymin +(ymax-
ymin)*(y-uymin)/(uymax-uymin);
3005 Int_t binx,biny,binmin=0,binx1;
3006 if (
gPad->IsVertical()) {
3008 if (drawOption.
Index(
"same") >= 0) {
3011 while ((h1 = (
TH1 *)
next())) {
3024 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3034 x1 =
gPad->PadtoY(
gPad->AbsPixeltoY(py+1));
3036 if (drawOption.
Index(
"same") >= 0) {
3039 while ((h1 = (
TH1 *)
next())) {
3052 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3065 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, bine=%g, binn=%d)",
3072 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, Sum=%g)",
3079 snprintf(info,200,
"%s (x=%g, y=%g, bin=%d, binc=%g)",
3086 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3091 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g bine=%g)",
3098 snprintf(info,200,
"(x=%g, y=%g)",x,y);
3148 Int_t nch = strlen(choptin);
3149 strlcpy(chopt,choptin,128);
3173 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
3174 if (hdim > 1) Hoption.
Scat = 1;
3175 if (!nch) Hoption.
Hist = 1;
3179 l = strstr(chopt,
"SPEC");
3184 l = strstr(chopt,
"BF(");
3186 if (sscanf(&l[3],
"%d",&bs) > 0) {
3199 l = strstr(chopt,
"GL");
3203 l = strstr(chopt,
"X+");
3208 l = strstr(chopt,
"Y+");
3214 if (Hoption.
AxisPos == 11 && nch == 4) Hoption.
Hist = 1;
3216 l = strstr(chopt,
"SAMES");
3218 if (nch == 5) Hoption.
Hist = 1;
3222 l = strstr(chopt,
"SAME");
3224 if (nch == 4) Hoption.
Hist = 1;
3229 l = strstr(chopt,
"PIE");
3235 l = strstr(chopt,
"CANDLE");
3240 if (l[6] ==
'X') { Hoption.
Candle = 1; l[6] =
' '; }
3241 if (l[6] ==
'Y') { Hoption.
Candle = 2; l[6] =
' '; }
3244 l = strstr(chopt,
"VIOLIN");
3249 if (l[6] ==
'X') { Hoption.
Violin = 1; l[6] =
' '; }
3250 if (l[6] ==
'Y') { Hoption.
Violin = 2; l[6] =
' '; }
3253 l = strstr(chopt,
"LEGO");
3256 Hoption.
Lego = 1; strncpy(l,
" ",4);
3257 if (l[4] ==
'1') { Hoption.
Lego = 11; l[4] =
' '; }
3258 if (l[4] ==
'2') { Hoption.
Lego = 12; l[4] =
' '; }
3259 if (l[4] ==
'3') { Hoption.
Lego = 13; l[4] =
' '; }
3260 if (l[4] ==
'4') { Hoption.
Lego = 14; l[4] =
' '; }
3261 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3262 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3263 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3266 l = strstr(chopt,
"SURF");
3269 Hoption.
Surf = 1; strncpy(l,
" ",4);
3270 if (l[4] ==
'1') { Hoption.
Surf = 11; l[4] =
' '; }
3271 if (l[4] ==
'2') { Hoption.
Surf = 12; l[4] =
' '; }
3272 if (l[4] ==
'3') { Hoption.
Surf = 13; l[4] =
' '; }
3273 if (l[4] ==
'4') { Hoption.
Surf = 14; l[4] =
' '; }
3274 if (l[4] ==
'5') { Hoption.
Surf = 15; l[4] =
' '; }
3275 if (l[4] ==
'6') { Hoption.
Surf = 16; l[4] =
' '; }
3276 if (l[4] ==
'7') { Hoption.
Surf = 17; l[4] =
' '; }
3277 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3278 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3281 l = strstr(chopt,
"TF3");
3283 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3284 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3287 l = strstr(chopt,
"ISO");
3289 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3290 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3293 l = strstr(chopt,
"LIST");
if (l) { Hoption.
List = 1; strncpy(l,
" ",4);}
3295 l = strstr(chopt,
"CONT");
3301 if (l[4] ==
'1') { Hoption.
Contour = 11; l[4] =
' '; }
3302 if (l[4] ==
'2') { Hoption.
Contour = 12; l[4] =
' '; }
3303 if (l[4] ==
'3') { Hoption.
Contour = 13; l[4] =
' '; }
3304 if (l[4] ==
'4') { Hoption.
Contour = 14; l[4] =
' '; }
3305 if (l[4] ==
'5') { Hoption.
Contour = 15; l[4] =
' '; }
3310 l = strstr(chopt,
"HBAR");
3313 Hoption.
Bar = 20; strncpy(l,
" ",4);
3314 if (l[4] ==
'1') { Hoption.
Bar = 21; l[4] =
' '; }
3315 if (l[4] ==
'2') { Hoption.
Bar = 22; l[4] =
' '; }
3316 if (l[4] ==
'3') { Hoption.
Bar = 23; l[4] =
' '; }
3317 if (l[4] ==
'4') { Hoption.
Bar = 24; l[4] =
' '; }
3319 l = strstr(chopt,
"BAR");
3322 Hoption.
Bar = 10; strncpy(l,
" ",3);
3323 if (l[3] ==
'1') { Hoption.
Bar = 11; l[3] =
' '; }
3324 if (l[3] ==
'2') { Hoption.
Bar = 12; l[3] =
' '; }
3325 if (l[3] ==
'3') { Hoption.
Bar = 13; l[3] =
' '; }
3326 if (l[3] ==
'4') { Hoption.
Bar = 14; l[3] =
' '; }
3329 l = strstr(chopt,
"ARR" );
3339 l = strstr(chopt,
"BOX" );
3345 if (l[3] ==
'1') { Hoption.
Box = 11; l[3] =
' '; }
3350 l = strstr(chopt,
"COLZ");
3357 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3358 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3363 l = strstr(chopt,
"COL" );
3369 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3370 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3375 l = strstr(chopt,
"CHAR");
if (l) { Hoption.
Char = 1; strncpy(l,
" ",4); Hoption.
Scat = 0; }
3376 l = strstr(chopt,
"FUNC");
if (l) { Hoption.
Func = 2; strncpy(l,
" ",4); Hoption.
Hist = 0; }
3377 l = strstr(chopt,
"HIST");
if (l) { Hoption.
Hist = 2; strncpy(l,
" ",4); Hoption.
Func = 0; Hoption.
Error = 0;}
3378 l = strstr(chopt,
"AXIS");
if (l) { Hoption.
Axis = 1; strncpy(l,
" ",4); }
3379 l = strstr(chopt,
"AXIG");
if (l) { Hoption.
Axis = 2; strncpy(l,
" ",4); }
3380 l = strstr(chopt,
"SCAT");
if (l) { Hoption.
Scat = 1; strncpy(l,
" ",4); }
3381 l = strstr(chopt,
"TEXT");
3384 if (sscanf(&l[4],
"%d",&angle) > 0) {
3385 if (angle < 0) angle=0;
3386 if (angle > 90) angle=90;
3387 Hoption.
Text = 1000+angle;
3392 l = strstr(chopt,
"N");
3396 l = strstr(chopt,
"POL");
if (l) { Hoption.
System =
kPOLAR; strncpy(l,
" ",3); }
3398 l = strstr(chopt,
"SPH");
if (l) { Hoption.
System =
kSPHERICAL; strncpy(l,
" ",3); }
3399 l = strstr(chopt,
"PSR");
if (l) { Hoption.
System =
kRAPIDITY; strncpy(l,
" ",3); }
3401 l = strstr(chopt,
"TRI");
3405 Hoption.
Tri = 1; strncpy(l,
" ",3);
3406 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3407 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3408 l = strstr(chopt,
"ERR");
if (l) strncpy(l,
" ",3);
3411 l = strstr(chopt,
"AITOFF");
3413 Hoption.
Proj = 1; strncpy(l,
" ",6);
3415 l = strstr(chopt,
"MERCATOR");
3417 Hoption.
Proj = 2; strncpy(l,
" ",8);
3419 l = strstr(chopt,
"SINUSOIDAL");
3421 Hoption.
Proj = 3; strncpy(l,
" ",10);
3423 l = strstr(chopt,
"PARABOLIC");
3425 Hoption.
Proj = 4; strncpy(l,
" ",9);
3427 if (Hoption.
Proj > 0) {
3432 if (strstr(chopt,
"A")) Hoption.
Axis = -1;
3433 if (strstr(chopt,
"B")) Hoption.
Bar = 1;
3434 if (strstr(chopt,
"C")) { Hoption.
Curve =1; Hoption.
Hist = -1;}
3435 if (strstr(chopt,
"F")) Hoption.
Fill =1;
3436 if (strstr(chopt,
"][")) {Hoption.
Off =1; Hoption.
Hist =1;}
3437 if (strstr(chopt,
"F2")) Hoption.
Fill =2;
3438 if (strstr(chopt,
"L")) { Hoption.
Line =1; Hoption.
Hist = -1;}
3439 if (strstr(chopt,
"P")) { Hoption.
Mark =1; Hoption.
Hist = -1;}
3440 if (strstr(chopt,
"Z")) Hoption.
Zscale =1;
3441 if (strstr(chopt,
"*")) Hoption.
Star =1;
3442 if (strstr(chopt,
"H")) Hoption.
Hist =2;
3443 if (strstr(chopt,
"P0")) Hoption.
Mark =10;
3449 if (strstr(chopt,
"E")) {
3452 if (strstr(chopt,
"E0")) Hoption.
Error = 10;
3453 if (strstr(chopt,
"E1")) Hoption.
Error = 11;
3454 if (strstr(chopt,
"E2")) Hoption.
Error = 12;
3455 if (strstr(chopt,
"E3")) Hoption.
Error = 13;
3456 if (strstr(chopt,
"E4")) Hoption.
Error = 14;
3457 if (strstr(chopt,
"E5")) Hoption.
Error = 15;
3458 if (strstr(chopt,
"E6")) Hoption.
Error = 16;
3459 if (strstr(chopt,
"X0")) {
3461 Hoption.
Error += 10;
3464 Hoption.
Text += 2000;
3468 if (Hoption.
Error == 0) {
3469 Hoption.
Error = 100;
3473 Hoption.
Text += 2000;
3479 if (Hoption.
Surf == 15) {
3482 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
3492 if (Hoption.
Bar == 1) Hoption.
Hist = -1;
3504 char *left = (
char*)strchr(choptin,
'[');
3505 if (!left)
return 0;
3506 char *right = (
char*)strchr(choptin,
']');
3507 if (!right)
return 0;
3508 Int_t nch = right-left;
3509 if (nch < 2)
return 0;
3510 char *cuts = left+1;
3512 char *comma, *minus;
3515 comma = strchr(cuts,
',');
3516 if (comma) *comma = 0;
3517 minus = strchr(cuts,
'-');
3518 if (minus) cuts = minus+1;
3519 while (*cuts ==
' ') cuts++;
3520 Int_t nc = strlen(cuts);
3521 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
3525 while ((obj =
next())) {
3527 if (strcmp(obj->
GetName(),cuts))
continue;
3540 for (i=0;i<=nch;i++) left[i] =
' ';
3569 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
3579 Error(
"Paint",
"Option PIE is for 1D histograms only");
3600 gCurrentHist = oldhist;
3606 if (!Hoption.
Lego && !Hoption.
Surf && !Hoption.
Tri) {
3613 Int_t logysav=0, logzsav=0;
3615 logysav = Hoption.
Logy;
3616 logzsav = Hoption.
Logz;
3633 gCurrentHist = oldhist;
3636 Hoption.
Logy = logysav;
3637 Hoption.
Logz = logzsav;
3660 if (Hoption.
Axis > 0) {
3663 if (gridx)
gPad->SetGridx(0);
3664 if (gridy)
gPad->SetGridy(0);
3666 if (gridx)
gPad->SetGridx(1);
3667 if (gridy)
gPad->SetGridy(1);
3669 if (Hoption.
Same ==1) Hoption.
Same = 2;
3675 if (Hoption.
Bar >= 10) {
3680 if (!Hoption.
Error) {
3685 if (Hoption.
Error) {
3702 if (gridx)
gPad->SetGridx(0);
3703 if (gridy)
gPad->SetGridy(0);
3705 if (gridx)
gPad->SetGridx(1);
3706 if (gridy)
gPad->SetGridy(1);
3715 while ((obj =
next())) {
3723 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
3727 gCurrentHist = oldhist;
3744 fH->TAttLine::Modify();
3747 Double_t dx, dy,
si, co, anr,
x1,
x2, y1, y2, xc, yc, dxn, dyn;
3758 for (
Int_t id=1;
id<=2;
id++) {
3765 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
3766 if (i == Hparam.
xfirst) {
3768 }
else if (i == Hparam.
xlast) {
3773 if (j == Hparam.
yfirst) {
3775 }
else if (j == Hparam.
ylast) {
3783 }
else if (
id == 2) {
3797 anr = 0.005*.5*
TMath::Sqrt(2/(dxn*dxn + dyn*dyn));
3798 si = anr*(dxn + dyn);
3799 co = anr*(dxn - dyn);
3820 fH->TAttLine::Modify();
3837 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
3840 if (Hoption.
Axis == -1)
return;
3841 if (Hoption.
Same && Hoption.
Axis <= 0)
return;
3847 if (Hoption.
Same && Hoption.
Axis) {
3852 while ((obj =
next())) {
3855 TString opt = obj->GetDrawOption();
3858 if (strstr(opt,
"hbar")) {
3862 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
3872 static char chopt[10] =
"";
3874 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
3875 Int_t useHparam = 0;
3876 Double_t umin, umax, uminsave, umaxsave;
3889 if (Hoption.
Contour == 14) useHparam = 1;
3893 while ((obj=
next())) {
3904 if (
gPad->PadInSelectionMode())
3908 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
3919 strlcat(chopt,
"SDH",10);
3920 if (ndivx < 0) strlcat(chopt,
"N",10);
3921 if (
gPad->GetGridx()) {
3922 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
3923 strlcat(chopt,
"W",10);
3928 strlcat(chopt,
"G",10);
3950 strlcat(chopt,
"t",10);
3958 if (xAxisPos == 1) {
3974 strlcat(chopt,
"-",10);
3977 if (Hoption.
Same && Hoption.
Axis) {
3983 umin, umax, ndiv, chopt, gridl, drawGridOnly);
3988 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
3990 cw=strstr(chopt,
"-");
3993 strlcat(chopt,
"-",10);
3995 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
3996 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4000 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4006 if (
gPad->PadInSelectionMode())
4010 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4015 strlcat(chopt,
"SDH",10);
4016 if (ndivy < 0) strlcat(chopt,
"N",10);
4017 if (
gPad->GetGridy()) {
4018 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4019 strlcat(chopt,
"W",10);
4024 strlcat(chopt,
"G",10);
4046 strlcat(chopt,
"t",10);
4054 if (yAxisPos == 1) {
4070 strlcat(chopt,
"+L",10);
4073 if (Hoption.
Same && Hoption.
Axis) {
4079 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4084 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4085 if (
gPad->GetTicky() < 2) {
4086 strlcat(chopt,
"U",10);
4089 strlcat(chopt,
"+L",10);
4091 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4095 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4119 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4127 ymin =
gPad->GetUymin();
4128 ymax =
gPad->YtoPad(y);
4129 if (ymax < gPad->GetUymin())
continue;
4130 if (ymax >
gPad->GetUymax()) ymax =
gPad->GetUymax();
4131 if (ymin < gPad->GetUymin()) ymin =
gPad->GetUymin();
4134 w = (xmax-
xmin)*width;
4135 xmin += offset*(xmax-
xmin);
4140 umin = xmin + bar*(xmax-
xmin)/10.;
4141 umax = xmax - bar*(xmax-
xmin)/10.;
4166 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4179 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4186 xmin =
gPad->GetUxmin();
4188 if (xmax < gPad->GetUxmin())
continue;
4189 if (xmax >
gPad->GetUxmax()) xmax =
gPad->GetUxmax();
4190 if (xmin < gPad->GetUxmin()) xmin =
gPad->GetUxmin();
4193 w = (ymax-
ymin)*width;
4194 ymin += offset*(ymax-
ymin);
4199 umin = ymin + bar*(ymax-
ymin)/10.;
4200 umax = ymax - bar*(ymax-
ymin)/10.;
4215 while ((obj =
next())) {
4238 fH->TAttLine::Modify();
4239 fH->TAttFill::Modify();
4241 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
4258 while ((h2 = (
TH2 *)
next())) {
4290 if (Hoption.
Box == 11) {
4304 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4309 if (z < zmin)
continue;
4310 if (z > zmax) z = zmax;
4313 if (Hoption.
Logz)
continue;
4322 if (dz == 0)
continue;
4324 if (zratio == 0)
continue;
4326 xup = xcent*zratio + xk + xcent;
4327 xlow = 2*(xk + xcent) - xup;
4328 if (xup-xlow < dxmin) xup = xlow+dxmin;
4336 yup = ycent*zratio + yk + ycent;
4337 ylow = 2*(yk + ycent) - yup;
4338 if (yup-ylow < dymin) yup = ylow+dymin;
4351 if (xlow >= xup)
continue;
4352 if (ylow >= yup)
continue;
4354 if (Hoption.
Box == 1) {
4356 fH->TAttFill::Modify();
4357 gPad->PaintBox(xlow, ylow, xup, yup);
4359 gPad->PaintLine(xlow, ylow, xup, yup);
4360 gPad->PaintLine(xlow, yup, xup, ylow);
4362 }
else if (Hoption.
Box == 11) {
4365 fH->TAttFill::Modify();
4366 gPad->PaintBox(xlow, ylow, xup, yup);
4371 x[0] = xlow; y[0] = ylow;
4372 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4373 x[2] = x[1]; y[2] = yup - bwidth*(yup-ylow);
4374 x[3] = xup - bwidth*(xup-xlow); y[3] = y[2];
4375 x[4] = xup; y[4] = yup;
4376 x[5] = xlow; y[5] = yup;
4377 x[6] = xlow; y[6] = ylow;
4380 fH->TAttFill::Modify();
4381 gPad->PaintFillArea(7, x, y);
4384 x[0] = xlow; y[0] = ylow;
4385 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4386 x[2] = xup - bwidth*(xup-xlow); y[2] = y[1];
4387 x[3] = x[2]; y[3] = yup - bwidth*(yup-ylow);
4388 x[4] = xup; y[4] = yup;
4389 x[5] = xup; y[5] = ylow;
4390 x[6] = xlow; y[6] = ylow;
4393 fH->TAttFill::Modify();
4394 gPad->PaintFillArea(7, x, y);
4402 fH->TAttFill::Modify();
4422 quantiles[0]=0.; quantiles[1]=0.; quantiles[2] = 0.; quantiles[3] = 0.; quantiles[4] = 0.;
4424 prob[0]=1
E-15; prob[1]=0.25; prob[2]=0.5; prob[3]=0.75; prob[4]=1-1
E-15;
4435 h2->TAttLine::Modify();
4436 h2->TAttFill::Modify();
4437 h2->TAttMarker::Modify();
4440 Double_t xb1,xb2,yb1,yb2,xl1,xl2,yl1,yl2,xl3,yl3,xp1,yp1;
4441 if (Hoption.
Candle == 1) {
4476 h2->TAttLine::Modify();
4477 gPad->PaintBox (xb1, yb1, xb2, yb2);
4478 gPad->PaintLine(xl1, yl1, xl2, yl1);
4479 gPad->PaintLine(xl1, yl2, xl2, yl2);
4481 h2->TAttLine::Modify();
4482 gPad->PaintLine(xb1, yl3, xb2, yl3);
4484 h2->TAttLine::Modify();
4487 h2->TAttLine::Modify();
4488 gPad->PaintLine(xp1, yb2, xp1, yl2);
4489 gPad->PaintLine(xp1, yl1, xp1, yb1);
4492 gPad->PaintPolyMarker(1,xpm,ypm);
4531 h2->TAttLine::Modify();
4533 gPad->PaintBox (xb1, yb1, xb2, yb2);
4534 gPad->PaintLine(xl1, yl1, xl1, yl2);
4535 gPad->PaintLine(xl2, yl1, xl2, yl2);
4538 h2->TAttLine::Modify();
4539 gPad->PaintLine(xl3, yb1, xl3, yb2);
4542 h2->TAttLine::Modify();
4545 h2->TAttLine::Modify();
4546 gPad->PaintLine(xb2, yp1, xl2, yp1);
4547 gPad->PaintLine(xl1, yp1, xb1, yp1);
4550 gPad->PaintPolyMarker(1,xpm,ypm);
4560 h2->TAttFill::Modify();
4561 h2->TAttLine::Modify();
4562 h2->TAttMarker::Modify();
4565 delete [] quantiles;
4584 quantiles[0]=0.; quantiles[1]=0.; quantiles[2] = 0.; quantiles[3] = 0.; quantiles[4] = 0.;
4586 prob[0]=1
E-15; prob[1]=0.25; prob[2]=0.5; prob[3]=0.75; prob[4]=1-1
E-15;
4597 h2->TAttLine::Modify();
4598 h2->TAttFill::Modify();
4599 h2->TAttMarker::Modify();
4602 if (Hoption.
Violin == 1) {
4618 gPad->PaintBox(x-0.5*bcon, bcen-0.5*bw, x+0.5*bcon, bcen+0.5*bw);
4622 h2->TAttLine::Modify();
4625 h2->TAttLine::Modify();
4626 gPad->PaintLine(x, quantiles[3], x, quantiles[4]);
4627 gPad->PaintLine(x, quantiles[0], x, quantiles[1]);
4630 gPad->PaintPolyMarker(1,xpm,ypm);
4646 h2->TAttLine::Modify();
4652 gPad->PaintBox(bcen-0.5*bw, y-0.5*bcon, bcen+0.5*bw, y+0.5*bcon);
4660 h2->TAttLine::Modify();
4661 gPad->PaintLine(quantiles[3], y, quantiles[4], y);
4662 gPad->PaintLine(quantiles[0], y, quantiles[1], y);
4665 gPad->PaintPolyMarker(1,xpm,ypm);
4675 h2->TAttFill::Modify();
4676 h2->TAttLine::Modify();
4677 h2->TAttMarker::Modify();
4680 delete [] quantiles;
4691 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
4716 fH->TAttFill::Modify();
4739 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4744 if (binEntries == 0)
4750 if (zmin >= 0 || Hoption.
Logz)
continue;
4751 if (Hoption.
Color == 2)
continue;
4759 if (z < zmin && !Hoption.
Zero)
continue;
4777 if (xup < gPad->GetUxmin())
continue;
4778 if (yup < gPad->GetUymin())
continue;
4779 if (xlow >
gPad->GetUxmax())
continue;
4780 if (ylow >
gPad->GetUymax())
continue;
4781 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
4782 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
4783 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
4784 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
4789 if (z < zc)
continue;
4791 for (
Int_t k=0; k<ndiv; k++) {
4800 color =
Int_t(0.01+(z-zmin)*scale);
4804 if (theColor > ncolors-1) theColor = ncolors-1;
4806 fH->TAttFill::Modify();
4808 gPad->PaintBox(xlow, ylow, xup, yup);
4821 fH->TAttFill::Modify();
4832 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
4833 Int_t itars, mode, ir[4];
4834 Double_t xsave, ysave, thesave,phisave,x[4], y[4], zc[4];
4839 thesave =
gPad->GetTheta();
4840 phisave =
gPad->GetPhi();
4842 gPad->SetTheta(90.);
4844 gPad->SetPhi(phisave);
4845 gPad->SetTheta(thesave);
4857 while ((obj=
next())) {
4874 if (!dt && !dtOld)
return;
4894 if (ncontour == 0) {
4898 if (ncontour > kMAXCONTOUR) {
4899 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
4900 kMAXCONTOUR, ncontour);
4901 ncontour = kMAXCONTOUR-1;
4912 fH->TAttLine::Modify();
4922 np =
new Int_t[ncontour];
4923 for (i=0;i<ncontour;i++) np[i] = 0;
4925 for (i=0;i<ncontour;i++) {
4928 if (Hoption.
List == 1) {
4929 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
4931 gROOT->GetListOfSpecials()->Remove(contours);
4933 for (i=0;i<count;i++) {
4934 list = (
TList*)contours->
At(i);
4935 if (list) list->
Delete();
4939 contours->
SetName(
"contours");
4940 gROOT->GetListOfSpecials()->Add(contours);
4941 for (i=0;i<ncontour;i++) {
4943 contours->
Add(list);
4965 else zc[0] = Hparam.
zmin;
4967 else zc[1] = Hparam.
zmin;
4969 else zc[2] = Hparam.
zmin;
4971 else zc[3] = Hparam.
zmin;
4976 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
4981 if (zc[0] <= zc[1]) n = 0;
else n = 1;
4982 if (zc[2] <= zc[3]) m = 2;
else m = 3;
4983 if (zc[n] > zc[m]) n =
m;
4986 for (ix=1;ix<=4;ix++) {
4989 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
4994 if (zc[0] <= zc[1]) n = 0;
else n = 1;
4995 if (zc[2] <= zc[3]) m = 2;
else m = 3;
4996 if (zc[n] > zc[m]) n =
m;
4999 for (ix=1;ix<=4;ix++) {
5003 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5011 for (ix=1; ix<=lj-5; ix +=2) {
5013 while (itarr[ix-1] != itarr[ix]) {
5017 for (jx=ix; jx<=lj-5; jx +=2) {
5018 xarr[jx] = xarr[jx+2];
5019 yarr[jx] = yarr[jx+2];
5020 itarr[jx] = itarr[jx+2];
5024 itarr[lj-3] = itars;
5025 if (count > 100)
break;
5030 if (count > 100)
continue;
5031 for (ix=1; ix<=lj-2; ix +=2) {
5039 if (mode == 0) mode = 5;
5043 fH->TAttLine::Modify();
5044 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
5048 ipoly = itarr[ix-1];
5049 if (ipoly >=0 && ipoly <ncontour) {
5050 poly = polys[ipoly];
5051 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
5052 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
5054 if (npmax < np[ipoly]) npmax = np[ipoly];
5063 Int_t nadd,iminus,iplus;
5066 Int_t first = ncontour;
5067 Int_t *polysort = 0;
5069 if (Hoption.
Contour != 1)
goto theEND;
5075 xmin =
gPad->GetUxmin();
5076 ymin =
gPad->GetUymin();
5079 polysort =
new Int_t[ncontour];
5081 for (ipoly=0;ipoly<ncontour;ipoly++) {
5082 if (levels[ipoly] >= 0) {first = ipoly;
break;}
5086 for (ipoly=first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
5087 for (ipoly=first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
5091 for (k=0;k<ncontour;k++) {
5092 ipoly = polysort[k];
5093 if (np[ipoly] == 0)
continue;
5094 if (Hoption.
List) list = (
TList*)contours->
At(contListNb);
5096 poly = polys[ipoly];
5103 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
5104 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
5105 xx[istart] =
xmin; yy[istart] =
ymin;
5106 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
5109 for (i=2;i<np[ipoly];i+=2) {
5110 if (xx[i] == xp[iplus] && yy[i] == yp[iplus]) {
5112 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
5117 if (xx[i+1] == xp[iminus] && yy[i+1] == yp[iminus]) {
5119 xp[iminus] = xx[i]; yp[iminus] = yy[i];
5125 if (nadd == 0)
break;
5130 fH->TAttFill::Modify();
5131 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5133 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5140 for (i=2;i<np[ipoly];i+=2) {
5141 if (xx[i] != xmin && yy[i] != ymin) {
5146 if (istart == 0)
break;
5150 for (i=0;i<ncontour;i++)
delete polys[i];
5162 if (np)
delete [] np;
5191 tdif = elev2 - elev1;
5194 while (n <= icont2 && i <= kMAXCONTOUR/2 -3) {
5197 diff = elev - elev1;
5208 yarr[i] = y1 + xlen;
5213 xarr[i] = x1 + xlen;
5237 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
5239 const Int_t kBASEMARKER=8;
5240 Double_t xp, yp, ex1, ex2, ey1, ey2;
5242 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
5243 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
5247 Int_t i, k, npoints, first, last, fixbin;
5250 Int_t drawmarker, errormarker;
5251 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
5255 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
5256 if (
Int_t(Hoption.
Error/10) == 2) {optionEX0 = 1; Hoption.
Error -= 10;}
5257 if (Hoption.
Error == 31) {optionEX0 = 1; Hoption.
Error = 1;}
5258 if (Hoption.
Error == 10) option0 = 1;
5259 if (Hoption.
Error == 11) option1 = 1;
5260 if (Hoption.
Error == 12) option2 = 1;
5261 if (Hoption.
Error == 13) option3 = 1;
5262 if (Hoption.
Error == 14) {option4 = 1; option3 = 1;}
5263 if (Hoption.
Error == 15) {optionI0 = 1; option3 = 1;}
5264 if (Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
5265 if (option2+option3 == 0) optionE = 1;
5266 if (Hoption.
Error == 0) optionE = 0;
5277 if (errormarker == 1) symbolsize = 0.01;
5278 sbase = symbolsize*kBASEMARKER;
5281 fH->TAttLine::Modify();
5282 fH->TAttFill::Modify();
5283 fH->TAttMarker::Modify();
5289 last = Hparam.
xlast;
5290 npoints = last - first +1;
5291 xmin =
gPad->GetUxmin();
5292 xmax =
gPad->GetUxmax();
5293 ymin =
gPad->GetUymin();
5294 ymax =
gPad->GetUymax();
5300 if (!xline || !yline) {
5301 Error(
"PaintErrors",
"too many points, out of memory");
5314 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
5315 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
5331 for (k=first; k<=last; k++) {
5343 if (xp <= 0)
goto L30;
5344 if (xp < logxmin)
goto L30;
5347 if (xp < xmin)
goto L30;
5348 if (xp > xmax)
break;
5351 if (optionI0 && yp==0)
goto L30;
5403 if (!option0 && !option3) {
5404 if (Hoption.
Logy && yp < logymin)
goto L30;
5405 if (yi1 < ymin || yi1 > ymax)
goto L30;
5406 if (Hoption.
Error != 0 && yp == 0 && ey1 <= 0) drawmarker =
kFALSE;
5408 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
5411 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
5424 if (Hoption.
Logy && yp < logymin) drawmarker =
kFALSE;
5425 if (optionE && drawmarker) {
5426 if ((yi3 < yi1 - s2y) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1 - s2y,ymax));
5427 if ((yi1 + s2y < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1 + s2y, ymin),xi4,yi4);
5429 if (Hoption.
Hist != 2) {
5430 if (yi1<ymax && yi1>ymin) {
5431 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
5432 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
5436 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
5437 if ((yi3 < yi1) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1,ymax));
5438 if ((yi1 < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1,ymin),xi4,yi4);
5440 if (Hoption.
Hist != 2) {
5441 if (yi1<ymax && yi1>ymin) {
5442 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
5443 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
5450 if (option1 && drawmarker) {
5451 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
5452 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
5453 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
5454 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
5459 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
5488 if (if2 > npoints) {
5489 for (i=1; i<if1; i++) {
5490 xline[if1-2+i] = xline[if2-1+i];
5491 yline[if1-2+i] = yline[if2-1+i];
5495 if (option4) graph.
PaintGraph(2*npoints,xline,yline,
"FC");
5496 else graph.
PaintGraph(2*npoints,xline,yline,
"F");
5497 gPad->SetLogx(logx);
5498 gPad->SetLogy(logy);
5511 fH->TAttMarker::Modify();
5512 fH->TAttLine::Modify();
5524 Error(
"Paint2DErrors",
"no TView in current pad");
5531 view->
SetView(phideg, thedeg, psideg, irep);
5536 fLego->TAttFill::Modify();
5537 Int_t backcolor =
gPad->GetFrameFillColor();
5542 fLego->TAttFill::Modify();
5558 if (Hoption.
Error == 110) {
5574 else y1 = Hparam.
ymin;
5576 else y2 = Hparam.
ymin;
5583 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5593 else x1 = Hparam.
xmin;
5595 else x2 = Hparam.
xmin;
5610 else z = Hparam.
zmin;
5612 else z1 = Hparam.
zmin;
5614 else z2 = Hparam.
zmin;
5617 if (z <= Hparam.
zmin)
continue;
5618 if (z > Hparam.
zmax) z = Hparam.
zmax;
5626 gPad->PaintLine3D(temp1, temp2);
5633 gPad->PaintLine3D(temp1, temp2);
5640 gPad->PaintLine3D(temp1, temp2);
5644 view->
WCtoNDC(temp1, &temp2[0]);
5645 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
5673 if (Hoption.
Same)
return;
5677 if (Hoption.
Lego || Hoption.
Surf || Hoption.
Tri ||
5680 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
5686 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
5705 if (Hoption.
Lego || Hoption.
Surf) {
5710 f2->
Paint(
"surf same");
5712 obj->
Paint(
"cont3 same");
5719 gPad->PushSelectableObject(obj);
5723 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
5740 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
5743 static char chopth[17];
5745 Int_t htype, oldhtype;
5750 strlcpy(chopth,
" ",17);
5764 last = Hparam.
xlast;
5765 nbins = last - first + 1;
5771 if (fixbin) keepx =
new Double_t[2];
5772 else keepx =
new Double_t[nbins+1];
5779 for (j=first; j<=last;j++) {
5785 if (!Hoption.
Line) {
5789 keepy[j-first] = yb;
5794 if (fixbin) { keepx[0] = Hparam.
xmin; keepx[1] = Hparam.
xmax; }
5805 if (htype == 0 || htype == 1000) htype = 1001;
5812 if (Hoption.
Line) chopth[0] =
'L';
5813 if (Hoption.
Star) chopth[1] =
'*';
5814 if (Hoption.
Mark) chopth[2] =
'P';
5815 if (Hoption.
Mark == 10) chopth[3] =
'0';
5817 if (Hoption.
Curve) chopth[3] =
'C';
5818 if (Hoption.
Hist > 0) chopth[4] =
'H';
5819 else if (Hoption.
Bar) chopth[5] =
'B';
5829 if (!fixbin && strlen(chopth)) {
5833 if (Hoption.
Fill == 2) chopth[13] =
'2';
5886 if (
fH->
GetDrawOption() && (strstr(opt,
"box") || strstr(opt,
"lego"))) {
5887 cmd =
Form(
"TMarker3DBox::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
5891 }
else if (strstr(option,
"tf3")) {
5895 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
5898 if (strstr(opt,
"fb")) Hoption.
FrontBox = 0;
5899 if (strstr(opt,
"bb")) Hoption.
BackBox = 0;
5906 view->
SetView(phideg, thedeg, psideg, irep);
5909 gROOT->ProcessLine(cmd);
5911 if (Hoption.
Same)
return;
5940 while ((obj =
next())) {
5946 if (Hoption.
Same != 1) {
5964 static const char *where =
"PaintInit";
5977 Hparam.
xlast = last;
5984 if (Hparam.
xmax<=0) {
5985 Error(where,
"cannot set X axis to log scale");
5992 for (i=first; i<=last; i++) {
6004 Error(where,
"cannot set X axis to log scale");
6014 if (Hparam.
xlast > last) Hparam.
xlast = last;
6028 Int_t nonNullErrors = 0;
6030 for (i=first; i<=last;i++) {
6038 if (Hoption.
Error) {
6043 if (e1 > 0) nonNullErrors++;
6060 fval = f1->
Eval(xv[0],0,0);
6064 if (c1 > 0 && fval > 0.3*c1) ymin =
TMath::Min(ymin,fval);
6072 if (!nonNullErrors) {
6073 if (Hoption.
Error) {
6082 if (Hoption.
Logy && ymin <= 0) {
6083 if (ymax >= 1) ymin =
TMath::Max(.005,ymax*1e-10);
6084 else ymin = 0.001*
ymax;
6090 if (Hoption.
Logy && xm < 0) {
6091 Error(where,
"log scale requested with a negative argument (%f)", xm);
6093 }
else if (Hoption.
Logy && xm>=0 && ymax==0) {
6102 if (ymax > 0) ymin = 0.001*
ymax;
6104 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", ymax);
6112 }
else if (ymin < 0) {
6124 ymin = ymin*(1-1
E-14);
6125 ymax = ymax*(1+1
E-14);
6132 if (allchan) factor /= allchan;
6133 if (factor == 0) factor = 1;
6150 if (ymin <=0 || ymax <=0) {
6151 Error(where,
"Cannot set Y axis to log scale");
6158 if (!Hoption.
Same) {
6170 if (ymin >= 0) ymin = 0;
6171 else ymin -= yMARGIN*(ymax-
ymin);
6174 if (ymin >= 0 && (ymin-dymin <= 0)) ymin = 0;
6183 ymax += yMARGIN*(ymax-
ymin);
6198 static const char *where =
"PaintInitH";
6211 Hparam.
xlast = last;
6222 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
6223 Error(where,
"cannot set Y axis to log scale");
6230 if (Hparam.
xlast > last) Hparam.
xlast = last;
6245 for (i=first; i<=last;i++) {
6249 if (Hoption.
Error) {
6260 fval = f1->
Eval(xv[0],0,0);
6263 if (fval > 0.3*c1) xmin =
TMath::Min(xmin,fval);
6274 if (Hoption.
Logx && xmin <= 0) {
6275 if (xmax >= 1) xmin =
TMath::Max(.5,xmax*1e-10);
6276 else xmin = 0.001*
xmax;
6281 if (Hoption.
Logx && xm <= 0) {
6282 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
6288 if (xmax > 0) xmin = 0.001*
xmax;
6290 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", xmax);
6298 }
else if (xmin < 0) {
6312 if (allchan) factor /= allchan;
6313 if (factor == 0) factor = 1;
6323 if (xmin <=0 || xmax <=0) {
6324 Error(where,
"Cannot set Y axis to log scale");
6331 if (!Hoption.
Same) {
6342 if (xmin >= 0) xmin = 0;
6343 else xmin -= yMARGIN*(xmax-
xmin);
6350 xmax += yMARGIN*(xmax-
xmin);
6374 Int_t ic2 = ic1+nbcol;
6375 Int_t ic3 = ic2+nbcol;
6410 Error(
"PaintH3Iso",
"no TView in current pad");
6419 view->
SetView(phideg, thedeg, psideg, irep);
6421 Int_t backcolor =
gPad->GetFrameFillColor();
6437 for (
Int_t col=0;col<nbcol;col++) {
6438 acol =
gROOT->GetColor(col+icol1);
6440 if (acol) acol->
SetRGB(r, g, b);
6455 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
6484 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
6495 if (deltaz == 0) deltaz = 1;
6543 Color_t colormain = -1, colordark = -1;
6547 if (Hoption.
Lego == 13) {
6552 if (Hoption.
Lego == 14) {
6554 drawShadowsInLego1 =
kFALSE;
6580 if (Hoption.
Lego == 11) {
6584 for (
Int_t id=0;
id<=nids;
id++) {
6587 if (colormain == 1) colormain = 17;
6589 else colordark = colormain;
6602 Error(
"PaintLego",
"no TView in current pad");
6609 view->
SetView(phideg, thedeg, psideg, irep);
6617 fLego->TAttFill::Modify();
6619 Int_t backcolor =
gPad->GetFrameFillColor();
6625 fLego->TAttFill::Modify();
6632 if (Hoption.
Lego == 11 || Hoption.
Lego == 12) {
6662 if (Hoption.
Lego == 1) {
6669 if (Hoption.
Lego == 1 || Hoption.
Lego == 11) {
6698 Int_t ndivx, ndivy, ndivz, i;
6699 Double_t x1[3], x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
6700 static char chopax[8], chopay[8], chopaz[8];
6701 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
6706 Error(
"PaintLegoAxis",
"no TView in current pad");
6721 gPad->PaintLine(x1[0],x1[1],x2[0],x2[1]);
6731 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
6732 for (i = 1; i <= 8; ++i) {
6733 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
6734 r[i*3 - 2] = av[i*3 - 2]*sina;
6735 r[i*3 - 1] = av[i*3 - 1];
6738 view->
WCtoNDC(&r[ix1*3 - 3], x1);
6739 view->
WCtoNDC(&r[ix2*3 - 3], x2);
6740 view->
WCtoNDC(&r[iy1*3 - 3], y1);
6741 view->
WCtoNDC(&r[iy2*3 - 3], y2);
6742 view->
WCtoNDC(&r[iz1*3 - 3], z1);
6743 view->
WCtoNDC(&r[iz2*3 - 3], z2);
6749 if (!rmin || !rmax)
return;
6752 if (x1[0] > x2[0]) strlcpy(chopax,
"SDH=+",8);
6753 else strlcpy(chopax,
"SDH=-",8);
6754 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
6755 else strlcpy(chopay,
"SDH=-",8);
6756 strlcpy(chopaz,
"SDH+=",8);
6759 if (Hoption.
Logx) strlcat(chopax,
"G",8);
6760 if (Hoption.
Logy) strlcat(chopay,
"G",8);
6761 if (Hoption.
Logz) strlcat(chopaz,
"G",8);
6770 strlcat(chopax,
"N",8);
6774 strlcat(chopay,
"N",8);
6778 strlcat(chopaz,
"N",8);
6800 strlcat(chopax,
"t",8);
6808 axis->
PaintAxis(x1[0], x1[1], x2[0], x2[1], bmin, bmax, ndivx, chopax);
6817 strlcpy(chopay,
"V=+UN",8);
6832 strlcat(chopay,
"t",8);
6840 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
6855 strlcat(chopaz,
"t",8);
6863 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
6882 delete palette; palette = 0;
6887 delete palette; palette = 0;
6900 if (xmax > x2) xmax =
gPad->PadtoX(
gPad->GetX2()-0.01*xr);
6914 fH->TAttMarker::Modify();
6922 if (zmin == 0 && zmax == 0)
return;
6933 if (zmin == 0 && zmax == 0)
return;
6936 if (ncells > 10000) scale /= 5;
6940 if (dz >=
kNMAX || zmax < 1) {
6941 scale = (
kNMAX-1)/dz;
6942 if (ncells > 10000) scale /= 5;
6949 if (zmin >= 0) zmin = 0;
6950 else zmin -= yMARGIN*(zmax-zmin);
6952 Double_t dzmin = yMARGIN*(zmax-zmin);
6953 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
6962 strlcpy(optscat,opt.
Data(),100);
6963 char *oscat = strstr(optscat,
"scat=");
6964 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
6965 sscanf(oscat+5,
"%lg",&scale);
6979 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6981 if (z < zmin) z = zmin;
6982 if (z > zmax) z = zmax;
6988 if (z <= 0)
continue;
6992 for (
Int_t loop=0; loop<k; loop++) {
6993 if (k+marker >=
kNMAX) {
6994 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
6997 fXbuf[marker] = (random.
Rndm(loop)*xstep) + xk;
6998 fYbuf[marker] = (random.
Rndm(loop)*ystep) + yk;
7000 if (fXbuf[marker] > 0) fXbuf[marker] =
TMath::Log10(fXbuf[marker]);
7007 if (fXbuf[marker] <
gPad->GetUxmin())
break;
7008 if (
fYbuf[marker] <
gPad->GetUymin())
break;
7009 if (fXbuf[marker] >
gPad->GetUxmax())
break;
7010 if (
fYbuf[marker] >
gPad->GetUymax())
break;
7016 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
7039 R__TMatrixFBase->
Draw(option);
7045 R__TMatrixDBase->
Draw(option);
7051 R__TVectorF->
Draw(option);
7057 R__TVectorD->
Draw(option);
7075 while ((obj =
next())) {
7082 if (stats && dostat) {
7088 if (!dofit) fit = 0;
7089 if (dofit == 1) dofit = 111;
7090 if (dostat == 1) dostat = 1111;
7091 Int_t print_name = dostat%10;
7092 Int_t print_entries = (dostat/10)%10;
7093 Int_t print_mean = (dostat/100)%10;
7094 Int_t print_stddev = (dostat/1000)%10;
7095 Int_t print_under = (dostat/10000)%10;
7096 Int_t print_over = (dostat/100000)%10;
7097 Int_t print_integral= (dostat/1000000)%10;
7098 Int_t print_skew = (dostat/10000000)%10;
7099 Int_t print_kurt = (dostat/100000000)%10;
7100 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
7101 print_under + print_over + print_integral +
7102 print_skew + print_kurt;
7103 Int_t print_fval = dofit%10;
7104 Int_t print_ferrors = (dofit/10)%10;
7105 Int_t print_fchi2 = (dofit/100)%10;
7106 Int_t print_fprob = (dofit/1000)%10;
7107 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
7110 else nlinesf += fit->
GetNpar();
7116 if (!dostat && !fit) {
7155 if (print_entries) {
7162 if (print_mean == 1) {
7163 snprintf(textstats,50,
"%s = %s%s",gStringMean.
Data(),
"%",stats->
GetStatFormat());
7164 snprintf(t,100,textstats,
fH->
GetMean(1));
7166 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMean.
Data(),
"%",stats->
GetStatFormat()
7172 if (print_mean == 1) {
7173 snprintf(textstats,50,
"%s = %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat());
7174 snprintf(t,100,textstats,
fH->
GetMean(2));
7176 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat()
7184 if (print_stddev == 1) {
7185 snprintf(textstats,50,
"%s = %s%s",gStringStdDev.
Data(),
"%",stats->
GetStatFormat());
7188 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDev.
Data(),
"%",stats->
GetStatFormat()
7194 if (print_stddev == 1) {
7195 snprintf(textstats,50,
"%s = %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat());
7198 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat()
7206 snprintf(textstats,50,
"%s = %s%s",gStringUnderflow.
Data(),
"%",stats->
GetStatFormat());
7211 snprintf(textstats,50,
"%s = %s%s",gStringOverflow.
Data(),
"%",stats->
GetStatFormat());
7215 if (print_integral) {
7216 if (print_integral == 1) {
7217 snprintf(textstats,50,
"%s = %s%s",gStringIntegral.
Data(),
"%",stats->
GetStatFormat());
7220 snprintf(textstats,50,
"%s = %s%s",gStringIntegralBinWidth.
Data(),
"%",stats->
GetStatFormat());
7221 snprintf(t,100,textstats,
fH->
Integral(
"width"));
7226 if (print_skew == 1) {
7227 snprintf(textstats,50,
"%s = %s%s",gStringSkewness.
Data(),
"%",stats->
GetStatFormat());
7230 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewness.
Data(),
"%",stats->
GetStatFormat()
7237 if (print_kurt == 1) {
7238 snprintf(textstats,50,
"%s = %s%s",gStringKurtosis.
Data(),
"%",stats->
GetStatFormat());
7241 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosis.
Data(),
"%",stats->
GetStatFormat()
7251 snprintf(textstats,50,
"#chi^{2} / ndf = %s%s / %d",
"%",stats->
GetFitFormat(),ndf);
7253 if (print_fchi2) stats->
AddText(t);
7255 snprintf(textstats,50,
"Prob = %s%s",
"%",stats->
GetFitFormat());
7259 if (print_fval || print_ferrors) {
7264 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
7265 snprintf(t,100,
"%-8s ",fit->
GetParName(ipar));
7268 if (print_ferrors) {
7269 snprintf(textstats,50,
"= %s%s #pm %s ",
"%",stats->
GetFitFormat(),
7274 snprintf(textstats,50,
"= %s%s ",
"%",stats->
GetFitFormat());
7302 while ((obj =
next())) {
7308 if (stats && dostat) {
7314 if (dostat == 1) dostat = 1111;
7315 Int_t print_name = dostat%10;
7316 Int_t print_entries = (dostat/10)%10;
7317 Int_t print_mean = (dostat/100)%10;
7318 Int_t print_stddev = (dostat/1000)%10;
7319 Int_t print_under = (dostat/10000)%10;
7320 Int_t print_over = (dostat/100000)%10;
7321 Int_t print_integral= (dostat/1000000)%10;
7322 Int_t print_skew = (dostat/10000000)%10;
7323 Int_t print_kurt = (dostat/100000000)%10;
7324 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
7325 if (print_under || print_over) nlines += 3;
7330 if (!dostat && !fit) {
7370 if (print_entries) {
7377 if (print_mean == 1) {
7378 snprintf(textstats,50,
"%s = %s%s",gStringMeanX.
Data(),
"%",stats->
GetStatFormat());
7379 snprintf(t,50,textstats,h2->
GetMean(1));
7381 snprintf(textstats,50,
"%s = %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat());
7382 snprintf(t,100,textstats,h2->
GetMean(2));
7385 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanX.
Data(),
"%",stats->
GetStatFormat()
7389 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat()
7396 if (print_stddev == 1) {
7397 snprintf(textstats,50,
"%s = %s%s",gStringStdDevX.
Data(),
"%",stats->
GetStatFormat());
7398 snprintf(t,100,textstats,h2->
GetStdDev(1));
7400 snprintf(textstats,50,
"%s = %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat());
7401 snprintf(t,100,textstats,h2->
GetStdDev(2));
7404 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevX.
Data(),
"%",stats->
GetStatFormat()
7408 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat()
7414 if (print_integral) {
7415 snprintf(textstats,50,
"%s = %s%s",gStringIntegral.
Data(),
"%",stats->
GetStatFormat());
7420 if (print_skew == 1) {
7421 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessX.
Data(),
"%",stats->
GetStatFormat());
7424 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessY.
Data(),
"%",stats->
GetStatFormat());
7428 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessX.
Data(),
"%",stats->
GetStatFormat()
7432 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessY.
Data(),
"%",stats->
GetStatFormat()
7439 if (print_kurt == 1) {
7440 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisX.
Data(),
"%",stats->
GetStatFormat());
7443 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisY.
Data(),
"%",stats->
GetStatFormat());
7447 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisX.
Data(),
"%",stats->
GetStatFormat()
7451 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisY.
Data(),
"%",stats->
GetStatFormat()
7457 if (print_under || print_over) {
7468 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
7469 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
7470 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
7471 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
7472 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
7473 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
7474 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
7475 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
7476 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
7478 snprintf(t, 100,
" %7d|%7d|%7d\n", (
Int_t)unov[0], (
Int_t)unov[1], (
Int_t)unov[2]);
7481 snprintf(t, 100,
" %7d|%7d|%7d\n", (
Int_t)unov[3], (
Int_t)unov[4], (
Int_t)unov[5]);
7483 snprintf(t, 100," %7d|%14.7g|%7d\n", (
Int_t)unov[3], (
Float_t)unov[4], (
Int_t)unov[5]);
7485 snprintf(t, 100," %7d|%7d|%7d\n", (
Int_t)unov[6], (
Int_t)unov[7], (
Int_t)unov[8]);
7491 Int_t ndf = fit->GetNDF();
7492 snprintf(t,100,
"#chi^{2} / ndf = %6.4g / %d",(
Float_t)fit->GetChisquare(),ndf);
7494 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
7495 snprintf(t,100,
"%-8s = %5.4g #pm %5.4g ",fit->GetParName(ipar)
7496 ,(
Float_t)fit->GetParameter(ipar)
7497 ,(
Float_t)fit->GetParError(ipar));
7522 while ((obj =
next())) {
7528 if (stats && dostat) {
7534 if (dostat == 1) dostat = 1111;
7535 Int_t print_name = dostat%10;
7536 Int_t print_entries = (dostat/10)%10;
7537 Int_t print_mean = (dostat/100)%10;
7538 Int_t print_stddev = (dostat/1000)%10;
7539 Int_t print_under = (dostat/10000)%10;
7540 Int_t print_over = (dostat/100000)%10;
7541 Int_t print_integral= (dostat/1000000)%10;
7542 Int_t print_skew = (dostat/10000000)%10;
7543 Int_t print_kurt = (dostat/100000000)%10;
7544 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
7545 if (print_under || print_over) nlines += 3;
7550 if (!dostat && !fit) {
7588 if (print_entries) {
7595 if (print_mean == 1) {
7596 snprintf(textstats,50,
"%s = %s%s",gStringMeanX.
Data(),
"%",stats->
GetStatFormat());
7597 snprintf(t,100,textstats,h3->
GetMean(1));
7599 snprintf(textstats,50,
"%s = %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat());
7600 snprintf(t,100,textstats,h3->
GetMean(2));
7602 snprintf(textstats,50,
"%s = %s%s",gStringMeanZ.
Data(),
"%",stats->
GetStatFormat());
7603 snprintf(t,100,textstats,h3->
GetMean(3));
7606 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanX.
Data(),
"%",stats->
GetStatFormat()
7610 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat()
7614 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanZ.
Data(),
"%",stats->
GetStatFormat()
7621 if (print_stddev == 1) {
7622 snprintf(textstats,50,
"%s = %s%s",gStringStdDevX.
Data(),
"%",stats->
GetStatFormat());
7623 snprintf(t,100,textstats,h3->
GetStdDev(1));
7625 snprintf(textstats,50,
"%s = %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat());
7626 snprintf(t,100,textstats,h3->
GetStdDev(2));
7628 snprintf(textstats,50,
"%s = %s%s",gStringStdDevZ.
Data(),
"%",stats->
GetStatFormat());
7629 snprintf(t,100,textstats,h3->
GetStdDev(3));
7632 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevX.
Data(),
"%",stats->
GetStatFormat()
7636 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat()
7640 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevZ.
Data(),
"%",stats->
GetStatFormat()
7646 if (print_integral) {
7647 snprintf(t,100,
"%s = %6.4g",gStringIntegral.
Data(),h3->
Integral());
7651 if (print_skew == 1) {
7652 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessX.
Data(),
"%",stats->
GetStatFormat());
7655 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessY.
Data(),
"%",stats->
GetStatFormat());
7658 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessZ.
Data(),
"%",stats->
GetStatFormat());
7662 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessX.
Data(),
"%",stats->
GetStatFormat()
7666 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessY.
Data(),
"%",stats->
GetStatFormat()
7670 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessZ.
Data(),
"%",stats->
GetStatFormat()
7677 if (print_kurt == 1) {
7678 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisX.
Data(),
"%",stats->
GetStatFormat());
7681 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisY.
Data(),
"%",stats->
GetStatFormat());
7684 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisZ.
Data(),
"%",stats->
GetStatFormat());
7688 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisX.
Data(),
"%",stats->
GetStatFormat()
7692 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisY.
Data(),
"%",stats->
GetStatFormat()
7696 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisZ.
Data(),
"%",stats->
GetStatFormat()
7702 if (print_under || print_over) {
7735 snprintf(t,100,
"%-8s = %5.4g #pm %5.4g ",fit->
GetParName(ipar)
7763 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
7774 if (deltaz == 0) deltaz = 1;
7845 Error(
"PaintSurface",
"no TView in current pad");
7852 view->
SetView(phideg, thedeg, psideg, irep);
7862 fLego->TAttFill::Modify();
7864 Int_t backcolor =
gPad->GetFrameFillColor();
7870 fLego->TAttFill::Modify();
7876 if (Hoption.
Surf == 13 || Hoption.
Surf == 15) {
7886 Hoption.
Surf = hoption35;
7893 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 14 || Hoption.
Surf == 17) {
7902 if (Hoption.
Surf == 14) {
7908 fmax = fmin + (yligh1+0.1)*(qd+qs);
7913 if (!colref)
return;
7918 for (
Int_t col=0;col<nbcol;col++) {
7919 acol =
gROOT->GetColor(col+icol1);
7921 if (acol) acol->
SetRGB(r,g,b);
7931 }
else if (Hoption.
Surf == 15) {
7935 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 16 || Hoption.
Surf == 17) {
7964 if (Hoption.
Surf == 17) {
7977 if ((!Hoption.
Same) &&
7978 (Hoption.
Surf == 1 || Hoption.
Surf == 13 || Hoption.
Surf == 16)) {
8011 if (!dt && !dtOld)
return;
8020 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
8024 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
8029 if (!rmin || !rmax)
return;
8037 fXbuf[0] = Hparam.
xmin;
8039 fXbuf[1] = Hparam.
ymin;
8041 fXbuf[2] = Hparam.
zmin;
8048 Error(
"PaintTriangles",
"no TView in current pad");
8055 view->
SetView(phideg, thedeg, psideg, irep);
8060 fLego->TAttFill::Modify();
8061 Int_t backcolor =
gPad->GetFrameFillColor();
8066 fLego->TAttFill::Modify();
8087 if (!Hoption.
Axis && !Hoption.
Same) {
8109 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
8116 for (i = 0; i < ndivz; ++i) {
8123 delete [] colorlevel;
8147 if (Hoption.
Func == 2) {
8186 if (!Hoption.
Lego && !Hoption.
Surf &&
8192 while ((obj =
next())) {
8198 if (Hoption.
Same != 1) {
8200 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
8221 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
8237 while ((obj=
next())) {
8244 g->TAttLine::Modify();
8245 g->TAttMarker::Modify();
8246 g->TAttFill::Modify();
8247 if (line) g->
Paint(
"L");
8248 if (fill) g->
Paint(
"F");
8249 if (mark) g->
Paint(
"P");
8259 while ((g = (
TGraph*) nextg())) {
8260 g->TAttLine::Modify();
8261 g->TAttMarker::Modify();
8262 g->TAttFill::Modify();
8263 if (line) g->
Paint(
"L");
8264 if (fill) g->
Paint(
"F");
8265 if (mark) g->
Paint(
"P");
8279 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
8282 Int_t ncolors, color, theColor;
8313 while ((obj=
next())) {
8322 if (z < zmin)
continue;
8327 if (z < zc)
continue;
8329 for (
Int_t k=0; k<ndiv; k++) {
8338 color =
Int_t(0.01+(z-zmin)*scale);
8341 if (theColor > ncolors-1) theColor = ncolors-1;
8347 g->TAttFill::Modify();
8358 while ((g = (
TGraph*) nextg())) {
8360 g->TAttFill::Modify();
8376 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
8379 Int_t k, loop, marker=0;
8380 Double_t z, xk,xstep, yk, ystep, xp, yp;
8394 scale = (
kNMAX-1)/dz;
8408 while ((obj=
next())) {
8411 if (a>maxarea) maxarea =
a;
8416 while ((obj=
next())) {
8420 if (z < zmin) z = zmin;
8421 if (z > zmax) z = zmax;
8436 if (k <= 0 || z <= 0)
continue;
8439 if (k+marker >=
kNMAX) {
8440 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8443 xp = (random.
Rndm(loop)*xstep) + xk;
8444 yp = (random.
Rndm(loop)*ystep) + yk;
8452 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8460 if (k <= 0 || z <= 0)
continue;
8463 if (k+marker >=
kNMAX) {
8464 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8467 xp = (random.
Rndm(loop)*xstep) + xk;
8468 yp = (random.
Rndm(loop)*ystep) + yk;
8476 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8498 if (Hoption.
Text >= 1000) angle = Hoption.
Text%1000;
8502 if (Hoption.
Text == 1) angle = 0;
8504 text.TAttText::Modify();
8511 while ((obj=
next())) {
8528 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
8531 snprintf(value,50,format,z,e);
8533 snprintf(value,50,format,z);
8558 if (Hoption.
Text >= 1000) angle = Hoption.
Text%1000;
8569 if (Hoption.
Text == 1) angle = 90;
8573 text.TAttText::Modify();
8587 if (yt == 0.)
continue;
8588 snprintf(value,50,format,yt);
8597 if (y >=
gPad->GetY2())
continue;
8598 if (y <= gPad->GetY1())
continue;
8605 if (Hoption.
Text == 1) angle = 0;
8607 text.TAttText::Modify();
8624 if (Hoption.
Text>2000) {
8626 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
8629 snprintf(value,50,format,z,e);
8631 snprintf(value,50,format,z);
8664 Error(
"PaintTF3",
"no TView in current pad");
8670 view->
SetView(phideg, thedeg, psideg, irep);
8717 if (Hoption.
Same)
return;
8723 while ((obj =
next())) {
8726 if (strcmp(title->
GetName(),
"title")) {title = 0;
continue;}
8730 if (title)
delete title;
8736 if (ht <= 0) ht = 0.05;
8757 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
8759 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
8763 if (talh == 2) xpos = xpos-wt/2.;
8764 if (talh == 3) xpos = xpos-wt;
8765 if (talv == 2) ypos = ypos+ht/2.;
8766 if (talv == 1) ypos = ypos+ht;
8784 if(!
gPad->IsEditable())
delete ptitle;
8794 if (!strcmp(mess,
"SetF3")) {
8796 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
8798 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
8897 if (Hoption.
Same)
return;
8905 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
8906 if (Hoption.
Proj ==1) {
8913 if (xmin > xmin_aid) xmin = xmin_aid;
8914 if (ymin > ymin_aid) ymin = ymin_aid;
8915 if (xmax < xmax_aid) xmax = xmax_aid;
8916 if (ymax < ymax_aid) ymax = ymax_aid;
8917 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
8921 if (xmin >xmin_aid) xmin = xmin_aid;
8922 if (xmax <xmax_aid) xmax = xmax_aid;
8924 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
8927 if (ymin >ymin_aid) ymin = ymin_aid;
8928 if (ymax <ymax_aid) ymax = ymax_aid;
8930 }
else if ( Hoption.
Proj ==2) {
8931 if (Hparam.
ymin <= -90 || Hparam.
ymax >=90) {
8932 Warning(
"Mercator Projection",
"Latitude out of range %f or %f", Hparam.
ymin, Hparam.
ymax);
8938 }
else if (Hoption.
Proj == 3) {
8944 if (xmin > xmin_aid) xmin = xmin_aid;
8945 if (ymin > ymin_aid) ymin = ymin_aid;
8946 if (xmax < xmax_aid) xmax = xmax_aid;
8947 if (ymax < ymax_aid) ymax = ymax_aid;
8948 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
8951 if (xmin >xmin_aid) xmin = xmin_aid;
8952 if (xmax <xmax_aid) xmax = xmax_aid;
8954 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
8957 if (ymin >ymin_aid) ymin = ymin_aid;
8958 if (ymax <ymax_aid) ymax = ymax_aid;
8960 }
else if (Hoption.
Proj == 4) {
8966 if (xmin > xmin_aid) xmin = xmin_aid;
8967 if (ymin > ymin_aid) ymin = ymin_aid;
8968 if (xmax < xmax_aid) xmax = xmax_aid;
8969 if (ymax < ymax_aid) ymax = ymax_aid;
8970 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
8973 if (xmin >xmin_aid) xmin = xmin_aid;
8974 if (xmax <xmax_aid) xmax = xmax_aid;
8976 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
8979 if (ymin >ymin_aid) ymin = ymin_aid;
8980 if (ymax <ymax_aid) ymax = ymax_aid;
8995 gPad->Range(xmin - dxr*
gPad->GetLeftMargin(),
8996 ymin - dyr*
gPad->GetBottomMargin(),
8997 xmax + dxr*
gPad->GetRightMargin(),
8998 ymax + dyr*
gPad->GetTopMargin());
8999 gPad->RangeAxis(xmin, ymin, xmax, ymax);
9024 static const char *where =
"TableInit";
9037 Hparam.
xlast = last;
9051 if (Hparam.
xmin <=0 || Hparam.
xmax <=0) {
9052 Error(where,
"cannot set X axis to log scale");
9058 if (Hparam.
xlast > last) Hparam.
xlast = last;
9066 Hparam.
ylast = last;
9080 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
9081 Error(where,
"cannot set Y axis to log scale");
9087 if (Hparam.
ylast > last) Hparam.
ylast = last;
9103 if (Hoption.
Error) {
9116 if (Hoption.
Logz && zmax < 0) {
9117 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
9119 }
else if (Hoption.
Logz && zmin>=0 && zmax==0) {
9125 if (zmax > 0) zmin = 0.001*zmax;
9127 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
9137 if (allchan) factor /= allchan;
9138 if (factor == 0) factor = 1;
9167 zmax += yMARGIN*(zmax-zmin);
9175 if (zmin >= 0) zmin = 0;
9176 else zmin -= yMARGIN*(zmax-zmin);
9178 Double_t dzmin = yMARGIN*(zmax-zmin);
9179 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
9204 char tf[20], tv[64];
9207 snprintf(tf,20,
"%s%s",
"%",f);
9208 snprintf(tv,64,tf,v);
9212 int ie = sv.
Index(
"e");
9213 int iE = sv.
Index(
"E");
9214 int id = sv.
Index(
".");
9218 if (ie >= 0 || iE >= 0) {
9219 if (sv.
Index(
"+") >= 0) {
9221 snprintf(ef,20,
"%s.1f",
"%");
9224 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
9226 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
9231 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
9233 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
9238 }
else if (
id < 0) {
9239 snprintf(ef,20,
"%s.1f",
"%");
9244 snprintf(ef,20,
"%s.%df",
"%",sv.
Length()-
id-1);
9261 if (opt.
Contains(
"x")) projection = 1;
9262 if (opt.
Contains(
"y")) projection = 2;
9263 if (opt.
Contains(
"z")) projection = 3;
9264 if (opt.
Contains(
"xy")) projection = 4;
9265 if (opt.
Contains(
"yx")) projection = 5;
9266 if (opt.
Contains(
"xz")) projection = 6;
9267 if (opt.
Contains(
"zx")) projection = 7;
9268 if (opt.
Contains(
"yz")) projection = 8;
9269 if (opt.
Contains(
"zy")) projection = 9;
9273 gROOT->MakeDefCanvas();
9286 gPad->SetDoubleBuffer(0);
9290 static int pyold1 = 0;
9291 static int pyold2 = 0;
9292 float uxmin =
gPad->GetUxmin();
9293 float uxmax =
gPad->GetUxmax();
9294 int pxmin =
gPad->XtoAbsPixel(uxmin);
9295 int pxmax =
gPad->XtoAbsPixel(uxmax);
9298 Int_t biny1 = fH->GetYaxis()->FindBin(y);
9300 Int_t py1 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinLowEdge(biny1));
9301 Int_t py2 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinUpEdge(biny2));
9326 TH1D *hp = ((
TH2*)fH)->ProjectionX(prjName, biny1, biny2);
9330 if (biny1 == biny2) {
9331 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
9332 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny1);
9335 if (fH->GetYaxis()->GetLabels() !=
NULL) {
9336 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf] %s", biny1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetYaxis()->GetBinLabel(biny1)));
9338 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
9341 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
9342 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny2);
9347 if (fH->GetYaxis()->GetLabels() !=
NULL) {
9348 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)));
9350 hp->SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
9353 hp->SetXTitle(fH->GetXaxis()->GetTitle());
9354 hp->SetYTitle(
"Number of Entries");
9369 gPad->SetDoubleBuffer(0);
9373 static int pxold1 = 0;
9374 static int pxold2 = 0;
9375 float uymin =
gPad->GetUymin();
9376 float uymax =
gPad->GetUymax();
9377 int pymin =
gPad->YtoAbsPixel(uymin);
9378 int pymax =
gPad->YtoAbsPixel(uymax);
9381 Int_t binx1 = fH->GetXaxis()->FindBin(x);
9383 Int_t px1 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinLowEdge(binx1));
9384 Int_t px2 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinUpEdge(binx2));
9409 TH1D *hp = ((
TH2*)fH)->ProjectionY(prjName, binx1, binx2);
9413 if (binx1 == binx2) {
9414 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
9415 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx1);
9418 if (fH->GetXaxis()->GetLabels() !=
NULL) {
9419 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf] [%s]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetXaxis()->GetBinLabel(binx1)));
9421 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
9424 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
9425 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx2);
9430 if (fH->GetXaxis()->GetLabels() !=
NULL) {
9431 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)));
9433 hp->SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
9436 hp->SetXTitle(fH->GetYaxis()->GetTitle());
9437 hp->SetYTitle(
"Number of Entries");
9457 if (fH->GetDimension() < 3) {
9462 gPad->SetDoubleBuffer(0);
9478 static TPoint endface1[5];
9479 static TPoint endface2[5];
9488 int pxmin =
gPad->XtoAbsPixel(uxmin);
9489 int pxmax =
gPad->XtoAbsPixel(uxmax);
9490 if (pxmin==pxmax)
return;
9491 int pymin =
gPad->YtoAbsPixel(uymin);
9492 int pymax =
gPad->YtoAbsPixel(uymax);
9493 if (pymin==pymax)
return;
9494 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
9495 Double_t cy = (pymax-pymin)/(uymax-uymin);
9510 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
9515 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
9518 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
9519 if (nbins>1 && line1[0].GetX()) {
9530 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9531 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9534 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9535 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9542 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9543 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9546 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9547 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9553 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9554 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9557 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9558 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9564 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9565 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9568 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9569 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9571 endface1[0].
SetX(line1[0].GetX());
9572 endface1[0].
SetY(line1[0].GetY());
9573 endface1[1].
SetX(line2[0].GetX());
9574 endface1[1].
SetY(line2[0].GetY());
9575 endface1[2].
SetX(line3[0].GetX());
9576 endface1[2].
SetY(line3[0].GetY());
9577 endface1[3].
SetX(line4[0].GetX());
9578 endface1[3].
SetY(line4[0].GetY());
9579 endface1[4].
SetX(line1[0].GetX());
9580 endface1[4].
SetY(line1[0].GetY());
9582 endface2[0].
SetX(line1[1].GetX());
9583 endface2[0].
SetY(line1[1].GetY());
9584 endface2[1].
SetX(line2[1].GetX());
9585 endface2[1].
SetY(line2[1].GetY());
9586 endface2[2].
SetX(line3[1].GetX());
9587 endface2[2].
SetY(line3[1].GetY());
9588 endface2[3].
SetX(line4[1].GetX());
9589 endface2[3].
SetY(line4[1].GetY());
9590 endface2[4].
SetX(line1[1].GetX());
9591 endface2[4].
SetY(line1[1].GetY());
9613 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
9625 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
9630 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
9633 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
9634 if (nbins>1 && line1[0].GetX()) {
9645 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9646 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9649 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9650 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9657 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9658 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9661 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9662 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9668 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9669 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9672 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9673 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9679 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9680 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9683 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9684 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9686 endface1[0].
SetX(line1[0].GetX());
9687 endface1[0].
SetY(line1[0].GetY());
9688 endface1[1].
SetX(line2[0].GetX());
9689 endface1[1].
SetY(line2[0].GetY());
9690 endface1[2].
SetX(line3[0].GetX());
9691 endface1[2].
SetY(line3[0].GetY());
9692 endface1[3].
SetX(line4[0].GetX());
9693 endface1[3].
SetY(line4[0].GetY());
9694 endface1[4].
SetX(line1[0].GetX());
9695 endface1[4].
SetY(line1[0].GetY());
9697 endface2[0].
SetX(line1[1].GetX());
9698 endface2[0].
SetY(line1[1].GetY());
9699 endface2[1].
SetX(line2[1].GetX());
9700 endface2[1].
SetY(line2[1].GetY());
9701 endface2[2].
SetX(line3[1].GetX());
9702 endface2[2].
SetY(line3[1].GetY());
9703 endface2[3].
SetX(line4[1].GetX());
9704 endface2[3].
SetY(line4[1].GetY());
9705 endface2[4].
SetX(line1[1].GetX());
9706 endface2[4].
SetY(line1[1].GetY());
9727 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
9739 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
9744 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
9747 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
9748 if (nbins>1 && line1[0].GetX()) {
9759 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9760 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9763 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9764 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9771 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9772 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9775 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9776 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9782 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9783 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9786 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9787 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9793 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9794 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9797 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9798 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9800 endface1[0].
SetX(line1[0].GetX());
9801 endface1[0].
SetY(line1[0].GetY());
9802 endface1[1].
SetX(line2[0].GetX());
9803 endface1[1].
SetY(line2[0].GetY());
9804 endface1[2].
SetX(line3[0].GetX());
9805 endface1[2].
SetY(line3[0].GetY());
9806 endface1[3].
SetX(line4[0].GetX());
9807 endface1[3].
SetY(line4[0].GetY());
9808 endface1[4].
SetX(line1[0].GetX());
9809 endface1[4].
SetY(line1[0].GetY());
9811 endface2[0].
SetX(line1[1].GetX());
9812 endface2[0].
SetY(line1[1].GetY());
9813 endface2[1].
SetX(line2[1].GetX());
9814 endface2[1].
SetY(line2[1].GetY());
9815 endface2[2].
SetX(line3[1].GetX());
9816 endface2[2].
SetY(line3[1].GetY());
9817 endface2[3].
SetX(line4[1].GetX());
9818 endface2[3].
SetY(line4[1].GetY());
9819 endface2[4].
SetX(line1[1].GetX());
9820 endface2[4].
SetY(line1[1].GetY());
9841 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
9853 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
9856 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
9857 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
9862 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9863 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9864 rect1[4].
SetX(rect1[0].GetX());
9865 rect1[4].
SetY(rect1[0].GetY());
9868 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9869 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9872 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9873 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9876 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9877 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9884 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9885 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9886 rect2[4].
SetX(rect2[0].GetX());
9887 rect2[4].
SetY(rect2[0].GetY());
9890 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9891 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9894 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9895 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9898 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9899 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9911 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
9912 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
9924 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
9927 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
9928 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
9933 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9934 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9935 rect1[4].
SetX(rect1[0].GetX());
9936 rect1[4].
SetY(rect1[0].GetY());
9939 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9940 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9943 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9944 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9947 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9948 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9955 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9956 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9957 rect2[4].
SetX(rect2[0].GetX());
9958 rect2[4].
SetY(rect2[0].GetY());
9961 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9962 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9965 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9966 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9969 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9970 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9981 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
9982 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
9994 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
9997 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
9998 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10003 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10004 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10005 rect1[4].
SetX(rect1[0].GetX());
10006 rect1[4].
SetY(rect1[0].GetY());
10009 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10010 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10013 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10014 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10017 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10018 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10025 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10026 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10027 rect2[4].
SetX(rect2[0].GetX());
10028 rect2[4].
SetY(rect2[0].GetY());
10031 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10032 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10035 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10036 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10039 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10040 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10051 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10052 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10064 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10067 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10068 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10073 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10074 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10075 rect1[4].
SetX(rect1[0].GetX());
10076 rect1[4].
SetY(rect1[0].GetY());
10079 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10080 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10083 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10084 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10087 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10088 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10095 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10096 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10097 rect2[4].
SetX(rect2[0].GetX());
10098 rect2[4].
SetY(rect2[0].GetY());
10101 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10102 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10105 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10106 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10109 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10110 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10121 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10122 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
10134 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
10137 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10138 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10143 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10144 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10145 rect1[4].
SetX(rect1[0].GetX());
10146 rect1[4].
SetY(rect1[0].GetY());
10149 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10150 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10153 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10154 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10157 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10158 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10165 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10166 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10167 rect2[4].
SetX(rect2[0].GetX());
10168 rect2[4].
SetY(rect2[0].GetY());
10171 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10172 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10175 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10176 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10179 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10180 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10191 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10192 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
10204 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
10207 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10208 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10213 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10214 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10215 rect1[4].
SetX(rect1[0].GetX());
10216 rect1[4].
SetY(rect1[0].GetY());
10219 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10220 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10223 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10224 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10227 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10228 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10235 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10236 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10237 rect2[4].
SetX(rect2[0].GetX());
10238 rect2[4].
SetY(rect2[0].GetY());
10241 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10242 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10245 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10246 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10249 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10250 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10261 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10262 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
Int_t GetFirst() const
Return first bin on the axis i.e.
void PaintGrapHist(Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt)
Draw the (x,y) as a histogram.
virtual void SetZTitle(const char *title)
virtual const char * GetTitle() const
Returns title of object.
virtual Style_t GetLineStyle() const
virtual Style_t GetFillStyle() const
virtual void SetLineWidth(Width_t lwidth)
Option_t * GetOption() const
Float_t GetEndErrorSize() const
static TString gStringKurtosisX
void SurfaceProperty(Double_t qqa, Double_t qqd, Double_t qqs, Int_t nnqs, Int_t &irep)
Set surface property coefficients.
int AxisPos
Axis position.
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
TList * GetListOfFunctions() const
double dist(Rotation3D const &r1, Rotation3D const &r2)
virtual void PaintFrame()
Calculate range and clear pad (canvas).
void SetBarWidth(Float_t barwidth=0.5)
virtual void SetAlpha(Float_t a)
static TString gStringUnderflow
void SetOptFit(Int_t fit=1)
Set the fit option.
virtual void PaintArrows(Option_t *option)
Control function to draw a table as an arrow plot
virtual void SetName(const char *name="")
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Int_t FindBin(Double_t x, Double_t y, Double_t z=0)
Returns the bin number of the bin at the given coordinate.
static Vc_ALWAYS_INLINE int_v min(const int_v &x, const int_v &y)
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
Float_t GetTitleW() const
virtual void SetLogy(Int_t value=1)=0
virtual void PaintStat2(Int_t dostat, TF1 *fit)
Draw the statistics box for 2D histograms.
Int_t yfirst
first bin number along Y
Double_t GetBinContent(Int_t bin) const
Returns the content of the input bin For the overflow/underflow/sea bins: -1 | -2 | -3 ---+----+---- ...
void LegoCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw stack of lego-plots in cartesian coordinates.
static TString gStringMeanX
virtual void PaintContour(Option_t *option)
Control function to draw a 2D histogram as a contour plot.
virtual Int_t GetLogy() const =0
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Double_t factor
multiplication factor (normalization)
static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function.
virtual Int_t GetLogz() const =0
virtual Font_t GetTextFont() const
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile2D histogram.
void SetColorDark(Color_t color, Int_t n=0)
Store dark color for stack number n.
int Char
"CHAR" Draw 2D plot with a character set.
Double_t ylowedge
low edge of axis
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile histogram.
static TString gStringMean
void PaintGraph(Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt)
Draw the (x,y) as a graph.
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
virtual const char * GetFitFormat() const
Histogram option structure.
TList * GetListOfGraphs() const
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
static TString gStringSkewnessX
virtual Int_t GetNumberFreeParameters() const
Return the number of free parameters.
static TString gStringSkewnessZ
virtual void PaintTH2PolyColorLevels(Option_t *option)
Control function to draw a TH2Poly as a color plot.
virtual Double_t * GetRmax()=0
virtual void SetX2NDC(Double_t x2)
void SetIsoSurfaceParameters(Double_t fmin, Double_t fmax, Int_t ncolor, Int_t ic1, Int_t ic2, Int_t ic3)
int BackBox
= 0 to suppress the back box
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
int Scat
"SCAT" Draw 2D plot a Scatter plot.
virtual const char * GetParName(Int_t ipar) const
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
int Proj
1: Aitoff, 2: Mercator, 3: Sinusoidal, 4: Parabolic
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
R__EXTERN TStyle * gStyle
virtual Int_t GetDimension() const
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside the polygon defined by the graph vertices 0 otherwise...
virtual void PaintViolinPlot(Option_t *option)
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...
Color_t GetTitleFillColor() const
int Logy
log scale in Y. Also set by histogram option
static TString gStringIntegralBinWidth
virtual void SetHistogram(TH1 *h)
Set current histogram to h
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual Bool_t GetTimeDisplay() const
virtual Int_t GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum=0)
Compute Quantiles for this histogram Quantile x_q of a probability distribution Function F is defined...
virtual Double_t Rndm(Int_t i=0)
TausWorth generator from L'Ecuyer, uses as seed 3x32bits integers Use a mask of 0xffffffffUL to make ...
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)
Double_t GetX1NDC() const
void SurfaceFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Service function for Surfaces.
Int_t GetNumberContours() const
int Pie
"PIE" Draw 1D plot as a pie chart.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
virtual void SetMinimum(Double_t minimum=-1111)
virtual void PaintTH2PolyBins(Option_t *option)
Control function to draw a TH2Poly bins' contours.
virtual void SetTitle(const char *title="")
Change the title of the axis.
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
void ColorFunction(Int_t nl, Double_t *fl, Int_t *icl, Int_t &irep)
Set correspondance between function and color levels.
Float_t GetTitleX() const
static Bool_t AddDirectoryStatus()
static function: cannot be inlined on Windows/NT
1-D histogram with a float per channel (see TH1 documentation)}
virtual Int_t PaintInit()
Compute histogram parameters used by the drawing routines.
virtual Double_t GetNormFactor() const
virtual void Paint2DErrors(Option_t *option)
Draw 2D histograms errors.
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
Float_t GetTitleFontSize() const
Short_t Min(Short_t a, Short_t b)
void ToLower()
Change string to lower-case.
virtual void SetYTitle(const char *title)
void SetBarOffset(Float_t baroff=0.5)
static void HLStoRGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual void SetFillStyle(Style_t fstyle)
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
static TString gStringStdDevZ
int Text
"TEXT" Draw 2D plot with the content of each cell.
The histogram statistics painter class.
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
virtual Int_t GetNbinsX() const
virtual void SetPoint(Int_t point, Double_t x, Double_t y)
Set point number n to (x, y) If n is greater than the current size, the arrays are automatically exte...
virtual void SetMinimum(Double_t minimum=-1111)
Set the minimum value along Y for this function In case the function is already drawn, set also the minimum in the helper histogram.
int Contour
"CONT" Draw 2D plot as a Contour plot.
void Paint(Option_t *option)
Paint a TGraphDelaunay according to the value of "option":
static std::string format(double x, double y, int digits, int width)
Double_t zmin
minimum value along Z
Double_t ymin
minimum value along y
virtual void SetX2(Double_t x2)
Double_t zmax
maximum value along Z
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
virtual Double_t GetEntries() const
return the current number of entries
void InitMoveScreen(Double_t xmin, Double_t xmax)
Initialize "MOVING SCREEN" method.
virtual Int_t GetNDF() const
Return the number of degrees of freedom in the fit the fNDF parameter has been previously computed du...
int Logx
log scale in X. Also set by histogram option
Helper class to represent a bin in the TH2Poly histogram.
virtual Double_t GetXmin() const
Bool_t GetHistMinimumZero() const
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
Double_t ymax
maximum value along y
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
TH1 * Project3D(Option_t *option="x") const
Project a 3-d histogram into 1 or 2-d histograms depending on the option parameter option may contain...
Double_t Prob(Double_t chi2, Int_t ndf)
Computation of the probability for a certain Chi-squared (chi2) and number of degrees of freedom (ndf...
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Width_t GetTitleBorderSize() const
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.
Style_t GetStatFont() const
static void SetF3(TF3 *f3)
Static function Store pointer to current implicit function.
virtual Double_t GetBinWidth(Int_t bin) const
return bin width for 1D historam Better to use h1.GetXaxis().GetBinWidth(bin)
const char * Data() const
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates).
void DefineGridLevels(Int_t ndivz)
Define the grid levels drawn in the background of surface and lego plots.
virtual Double_t GetSkewness(Int_t axis=1) const
For axis = 1, 2 or 3 returns skewness of the histogram along x, y or z axis.
virtual void SetTextFont(Font_t tfont=62)
virtual void PaintPalette()
Paint the color palette on the right side of the pad.
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in polar coordinates.
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
virtual Double_t GetPsi()=0
virtual Double_t GetMaximumStored() const
Sequenceable collection abstract base class.
static const double x2[5]
Double_t GetYsize()
Return size of the formula along Y in pad coordinates.
virtual void Paint(Option_t *)
Paint a Pie chart in a canvas.
virtual void PaintBoxes(Option_t *option)
Control function to draw a 2D histogram as a box plot
int Surf
"SURF" Draw as a Surface (SURF,Surf=1, SURF1,Surf=11, SURF2,Surf=12)
virtual void Paint(Option_t *chopt="")
Draw this graph with its current attributes.
void DrawFaceMode3(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 3rd option (draw face for stacked lego plot)
virtual void ProcessMessage(const char *mess, const TObject *obj)
Process message mess.
virtual void PaintCandlePlot(Option_t *option)
Control function to draw a 2D histogram as a candle (box) plot.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
void DrawFaceRaster1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "RASTER SCREEN" algorithm (draw face with level lines) ...
static TVirtualPadEditor * GetPadEditor(Bool_t load=kTRUE)
Returns the pad editor dialog. Static method.
Double_t GetChisquare() const
virtual Double_t GetBinLowEdge(Int_t bin) const
return bin lower edge for 1D historam Better to use h1.GetXaxis().GetBinLowEdge(bin) ...
Float_t GetBarOffset() const
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Color_t GetTitleTextColor() const
int Line
"L" A simple polyline beetwen every point is drawn.
void LightSource(Int_t nl, Double_t yl, Double_t xscr, Double_t yscr, Double_t zscr, Int_t &irep)
Set light source.
virtual Double_t GetMaximumStored() const
virtual void SetStatFormat(const char *format="6.4g")
Change (i.e. set) the format for printing statistics.
virtual EBinErrorOpt GetBinErrorOption() const
void SetMesh(Int_t mesh=1)
Width_t GetStatBorderSize() const
virtual void PaintSurface(Option_t *option)
Control function to draw a 2D histogram as a surface plot.
virtual void PaintStat(Int_t dostat, TF1 *fit)
Draw the statistics box for 1D and profile histograms.
To draw Mathematical Formula.
virtual Int_t GetLogx() const =0
Double_t Log10(Double_t x)
void SetOption(Option_t *option="")
To set axis options.
int Mark
"P" The current Marker is drawn at each point
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)
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.
if(pyself &&pyself!=Py_None)
virtual Int_t MakeChopt(Option_t *option)
Decode string choptin and fill Hoption structure.
TH1D * ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along X.
virtual void PaintH3(Option_t *option="")
Control function to draw a 3D histograms.
int FrontBox
= 0 to suppress the front box
virtual void AxisVertex(Double_t ang, Double_t *av, Int_t &ix1, Int_t &ix2, Int_t &iy1, Int_t &iy2, Int_t &iz1, Int_t &iz2)=0
Color_t GetStatColor() const
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
virtual TSeqCollection * GetOutline()=0
void SetTimeFormat(const char *tformat)
Change the format used for time plotting.
virtual void Clear(Option_t *option="")
Clear all lines in this pavetext.
Base class for several text objects.
virtual void PaintColorLevels(Option_t *option)
Double_t GetXMax()
Returns the maximum value for the x coordinates of the bin.
Double_t baroffset
offset of bin for bars or legos [0,1]
virtual Bool_t IsInside(Int_t x, Int_t y)
Return kTRUE if the cell ix, iy is inside one of the graphical cuts.
Double_t GetYMin()
Returns the minimum value for the y coordinates of the bin.
void ImplicitFunction(Double_t *rmin, Double_t *rmax, Int_t nx, Int_t ny, Int_t nz, const char *chopt)
Draw implicit function FUN(X,Y,Z) = 0 in cartesian coordinates using hidden surface removal algorithm...
Float_t GetBarWidth() const
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along Y.
void DrawFaceMode1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 1st variant (2 colors: 1st for external surface, 2nd for internal)
Double_t GetYMax()
Returns the maximum value for the y coordinates of the bin.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
Int_t xfirst
first bin number along X
virtual void PaintLatex(Double_t x, Double_t y, Double_t angle, Double_t size, const char *text)
Main drawing function.
virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py)=0
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void DrawFaceMove1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "MOVING SCREEN" algorithm (draw face with level lines) ...
virtual void PaintTH2PolyScatterPlot(Option_t *option)
Control function to draw a TH2Poly as a scatter plot.
virtual Double_t GetXmax() const
int Fill
"F" A fill area is drawn ("CF" draw a smooth fill area).
The 3-D histogram classes derived from the 1-D histogram classes.
virtual void PaintTH2PolyText(Option_t *option)
Control function to draw a TH2Poly as a text plot.
void DrawFaceMove2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "MOVING SCREEN" algorithm (draw face for stacked lego plot) ...
void SetLabelSize(Float_t labelsize)
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
static TString gStringKurtosisZ
virtual void SetTextAlign(Short_t align=11)
int Bar
"B" A Bar chart is drawn at each point.
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
virtual void GetParLimits(Int_t ipar, Double_t &parmin, Double_t &parmax) const
Return limits for parameter ipar.
static void RGBtoHLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
virtual const char * GetTimeFormat() const
Int_t GetOptTitle() const
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
virtual void SetLogx(Int_t value=1)=0
void SetDrawFace(DrawFaceFunc_t pointer)
Store pointer to current algorithm to draw faces.
virtual void SetLineColor(Color_t lcolor)
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 RecalculateRange()
Recompute the histogram range following graphics operations.
virtual TText * GetLine(Int_t number) const
Get Pointer to line number in this pavetext.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
virtual Size_t GetMarkerSize() const
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 isosurfaces for a scalar function defined on a grid.
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
void FrontBox(Double_t ang)
Draw forward faces of surrounding box & axes.
virtual void PaintText(Option_t *option)
Control function to draw a 1D/2D histograms with the bin values.
const char * ChooseTimeFormat(Double_t axislength=0)
Choose a reasonable time format from the coordinates in the active pad and the number of divisions in...
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual Int_t TableInit()
Initialize various options to draw 2D histograms.
Service class for 2-Dim histogram classes.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Evaluate the distance to the chart in gPad.
Double_t GetXsize()
Return size of the formula along X in pad coordinates.
Class to manage histogram axis.
R__EXTERN TSystem * gSystem
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Double_t ybinsize
bin size in case of equidistant bins
virtual Double_t GetMinimumStored() const
virtual void SetFillColor(Color_t fcolor)
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
A 3-Dim function with parameters.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual void PaintTF3()
Control function to draw a 3D implicit functions.
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots spheric coordinates.
2-D histogram with a float per channel (see TH1 documentation)}
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
void LegoFunction(Int_t ia, Int_t ib, Int_t &nv, Double_t *ab, Double_t *vv, Double_t *t)
Service function for Legos.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms
virtual void SetTextAngle(Float_t tangle=0)
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
virtual Color_t GetFillColor() const
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in cylindrical coordinates.
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
TObject * GetObject() const
virtual void PaintStat3(Int_t dostat, TF1 *fit)
Draw the statistics box for 3D histograms.
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual void Paint(Option_t *option="")
Paint all objects in this collection.
Bool_t TestBit(UInt_t f) const
const char * GetPaintTextFormat() const
char * Form(const char *fmt,...)
virtual void PaintTable(Option_t *option)
Control function to draw 2D/3D histograms (tables).
const char * GetBinTitle(Int_t bin) const
Returns the bin title.
virtual void Clear(Option_t *option="")=0
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual Int_t GetNbinsZ() const
int Arrow
"ARR" Draw 2D plot with Arrows.
virtual ~THistPainter()
Default destructor.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb"...
virtual void PaintH3Iso()
Control function to draw a 3D histogram with Iso Surfaces.
virtual const char * GetName() const
Returns name of object.
virtual Int_t GetSumw2N() const
virtual void SetMarkerStyle(Style_t mstyle=1)
virtual Double_t GetKurtosis(Int_t axis=1) const
For axis =1, 2 or 3 returns kurtosis of the histogram along x, y or z axis.
Double_t xlowedge
low edge of axis
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute the actions corresponding to event.
virtual void SetFitFormat(const char *format="5.4g")
Change (i.e. set) the format for printing fit parameters in statistics box.
int Color
"COL" Draw 2D plot with Colored boxes.
virtual TObjLink * FirstLink() const
void SetName(const char *name)
A 2-Dim function with parameters.
Option_t * GetName() const
Returns name of object.
TObject * GetPolygon() const
Style_t GetTitleStyle() const
virtual void PaintBar(Option_t *option)
Draw a bar-chart in a normal pad.
virtual Color_t GetLineColor() const
1-D histogram with a double per channel (see TH1 documentation)}
Double_t GetContent() const
virtual void PaintFunction(Option_t *option)
Paint functions associated to an histogram.
int Error
"E" Draw Errors with current marker type and size.
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
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)
Float_t GetErrorX() const
virtual const char * GetStatFormat() const
virtual Double_t * GetRmin()=0
const Double_t * GetBuffer() const
int Curve
"C" A smooth Curve is drawn.
virtual void PaintAxis(Bool_t drawGridOnly=kFALSE)
Draw axis (2D case) of an histogram.
virtual void PaintBarH(Option_t *option)
Draw a bar char in a rotated pad (X vertical, Y horizontal)
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
void SetLegoFunction(LegoFunc_t pointer)
Store pointer to current lego function.
The histogram painter class.
virtual void SetMaximum(Double_t maximum=-1111)
Set the maximum value along Y for this function In case the function is already drawn, set also the maximum in the helper histogram.
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in spheric coordinates.
virtual void ExecuteEvent(Int_t, Int_t, Int_t)
Execute the mouse events.
virtual void SetY2(Double_t y2)
int Hist
"HIST" Draw only the histogram.
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Display the histogram info (bin number, contents, integral up to bin corresponding to cursor position...
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
void SetLabelOffset(Float_t labeloffset)
virtual void PaintLegoAxis(TGaxis *axis, Double_t ang)
Draw the axis for legos and surface plots.
virtual Int_t GetSize() const
static const double x1[5]
Double_t xbinsize
bin size in case of equidistant bins
A Pave (see TPave) with text, lines or/and boxes inside.
static TString gStringSkewness
int Zero
if selected with any LEGO option the empty bins are not drawn.
virtual const char * GetName() const
Returns name of object.
Float_t GetStatFontSize() const
TGraph2DPainter * fGraph2DPainter
The Legos and Surfaces painter class.
virtual void ShowProjectionX(Int_t px, Int_t py)
Show projection onto X.
int Candle
"CANDLE" Draw a 2D histogram as candle/box plot.
int Box
"BOX" Draw 2D plot with proportional Boxes.
int Func
"FUNC" Draw only the function (for example in case of fit).
virtual Int_t GetNdivisions() const
virtual void SetRGB(Float_t r, Float_t g, Float_t b)
Initialize this color and its associated colors.
virtual void SetAxisNDC(const Double_t *x1, const Double_t *x2, const Double_t *y1, const Double_t *y2, const Double_t *z1, const Double_t *z2)=0
static void SetF3ClippingBoxOn(Double_t xclip, Double_t yclip, Double_t zclip)
Static function Set the implicit function clipping box "on" and define the clipping box...
Style_t GetStatStyle() const
Int_t xlast
last bin number along X
ClassImp(THistPainter) THistPainter
Default constructor.
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.
virtual void Paint(Option_t *option="")
Paint this 2-D function with its current attributes.
virtual void PaintTitle()
Draw the histogram title.
TList * GetContourList(Double_t contour)
Returns the X and Y graphs building a contour.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
int List
= 1 to generate the TObjArray "contours"
void Spectrum(Int_t nl, Double_t fmin, Double_t fmax, Int_t ic, Int_t idc, Int_t &irep)
Set Spectrum.
Profile2D histograms are used to display the mean value of Z and its RMS for each cell in X...
virtual void SetLineStyle(Style_t lstyle)
virtual void SetShowProjection(const char *option, Int_t nbins)
Set projection.
static Vc_ALWAYS_INLINE int_v max(const int_v &x, const int_v &y)
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 Violin
"VIOLIN" Draw a 2D histogram as violin plot.
int Off
"][" With H option, the first and last vertical lines are not drawn.
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
virtual Double_t GetParameter(Int_t ipar) const
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
void BackBox(Double_t ang)
Draw back surfaces of surrounding box.
Mother of all ROOT objects.
virtual TList * GetContourList(Double_t contour) const
Get a contour (as a list of TGraphs) using the Delaunay triangulation.
virtual void DrawPanel()
Display a panel with all histogram drawing options.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual Float_t GetLabelSize() const
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Int_t GetNbinsY() const
static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Static function code from Ernst-Jan Buis.
virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1, Double_t elev2, Int_t icont2, Double_t x2, Double_t y2, Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels)
Fill the matrix xarr and yarr for Contour Plot.
THashList * GetLabels() const
virtual Color_t GetMarkerColor() const
virtual void SetXTitle(const char *title)
Double_t GetHistTopMargin() const
TPainter3dAlgorithms * fLego
const char * GetFitFormat() const
static TString gStringIntegral
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
virtual void Add(TObject *obj)
Double_t xmin
minimum value along X
Int_t GetOptStat() const
Return the stat option.
static TString gStringStdDevX
double f2(const double *x)
static TString gStringKurtosisY
const UInt_t kCannotRotate
virtual void ShowProjection3(Int_t px, Int_t py)
Show projection (specified by fShowProjection) of a TH3.
Float_t GetTitleY() const
Short_t Max(Short_t a, Short_t b)
int Star
"*" A * is plotted at each point
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
static void SetF3ClippingBoxOff()
Static function Set the implicit function clipping box "off".
static void PaintSpecialObjects(const TObject *obj, Option_t *option)
Static function to paint special objects like vectors and matrices.
virtual void PaintErrors(Option_t *option)
Draw 1D histograms error bars.
Double_t xmax
maximum value along X
void DrawFaceRaster2(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 2nd variant for "RASTER SCREEN" algorithm (draw face for stacked lego plot) ...
A Graph is a graphics object made of two arrays X and Y with npoints each.
static TString gStringKurtosis
Double_t GetArea()
Returns the area of the bin.
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
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.
Int_t GetBinNumber() const
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute the distance from the point px,py to a line.
virtual void SetTextColor(Color_t tcolor=1)
ClassImp(TSlaveInfo) Int_t TSlaveInfo const TSlaveInfo * si
Used to sort slaveinfos by ordinal.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual void PaintScatterPlot(Option_t *option)
Control function to draw a 2D histogram as a scatter plot.
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw surface in polar coordinates.
virtual void Paint(Option_t *option="")
Paint the pave stat.
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
const TArrayD * GetXbins() const
The TGraphDelaunay painting class.
Double_t allchan
integrated sum of contents
void SurfaceCartesian(Double_t ang, Int_t nx, Int_t ny, const char *chopt)
Draw surface in cartesian coordinate system.
virtual void SetTitle(const char *title)
Change (i.e.
void SetSurfaceFunction(SurfaceFunc_t pointer)
Store pointer to current surface function.
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
Color_t GetStatTextColor() const
int Zscale
"Z" to display the Z scale (color palette)
virtual void Paint(Option_t *option="")
Paint the palette.
Double_t Sqrt(Double_t x)
virtual void SetTextSize(Float_t tsize=1)
TObject * At(Int_t idx) const
int Same
"S" Histogram is plotted in the current PAD.
static TString gStringStdDev
static TString gStringSkewnessY
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Histogram parameters structure.
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Style_t GetMarkerStyle() const
void GouraudFunction(Int_t ia, Int_t ib, Double_t *f, Double_t *t)
Find part of surface with luminosity in the corners.
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual Width_t GetLineWidth() const
Double_t GetXMin()
Returns the minimum value for the x coordinates of the bin.
virtual Float_t GetTickLength() const
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
The palette painting class.
virtual Float_t GetBarWidth() const
Int_t GetOptFit() const
Return the fit option.
static TString gStringMeanY
virtual void PadRange(Int_t rback)=0
virtual Int_t IsInside(Double_t x, Double_t y) const
Return 1 if the point (x,y) is inside one of the graphs 0 otherwise.
virtual Int_t GetNpar() const
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Double_t barwidth
width of bin for bars and legos [0,1]
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
unsigned int r2[N_CITIES]
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates ie: if the Pad is in log scale along Z ...
int Logz
log scale in Z. Also set by histogram option
virtual void SetBorderSize(Int_t bordersize=4)
virtual Float_t GetBarOffset() const
TGraphDelaunay generates a Delaunay triangulation of a TGraph2D.
Float_t GetTitleH() const
2D Histogram with Polygonal Bins
static TString gStringOverflow
virtual void DefineColorLevels(Int_t ndivz)
Define the color levels used to paint legos, surfaces etc..
void SetParent(TObject *obj)
const char * GetStatFormat() const
int Lego
"LEGO" Draw as a Lego plot(LEGO,Lego=1, LEGO1,Lego1=11, LEGO2,Lego=12).
void SetOptStat(Int_t stat=1)
Set the stat option.
int Tri
"TRI" Draw 2D plot with Delaunay triangles.
virtual Float_t GetLabelOffset() const
2-D histogram with a double per channel (see TH1 documentation)}
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.