2421 TH1 *gCurrentHist = 0;
2473 fGraph2DPainter = 0;
2474 fShowProjection = 0;
2481 gStringEntries =
gEnv->
GetValue(
"Hist.Stats.Entries",
"Entries");
2482 gStringMean =
gEnv->
GetValue(
"Hist.Stats.Mean",
"Mean");
2483 gStringMeanX =
gEnv->
GetValue(
"Hist.Stats.MeanX",
"Mean x");
2484 gStringMeanY =
gEnv->
GetValue(
"Hist.Stats.MeanY",
"Mean y");
2485 gStringMeanZ =
gEnv->
GetValue(
"Hist.Stats.MeanZ",
"Mean z");
2486 gStringStdDev =
gEnv->
GetValue(
"Hist.Stats.StdDev",
"Std Dev");
2487 gStringStdDevX =
gEnv->
GetValue(
"Hist.Stats.StdDevX",
"Std Dev x");
2488 gStringStdDevY =
gEnv->
GetValue(
"Hist.Stats.StdDevY",
"Std Dev y");
2489 gStringStdDevZ =
gEnv->
GetValue(
"Hist.Stats.StdDevZ",
"Std Dev z");
2490 gStringUnderflow =
gEnv->
GetValue(
"Hist.Stats.Underflow",
"Underflow");
2491 gStringOverflow =
gEnv->
GetValue(
"Hist.Stats.Overflow",
"Overflow");
2492 gStringIntegral =
gEnv->
GetValue(
"Hist.Stats.Integral",
"Integral");
2493 gStringIntegralBinWidth =
gEnv->
GetValue(
"Hist.Stats.IntegralBinWidth",
"Integral(w)");
2494 gStringSkewness =
gEnv->
GetValue(
"Hist.Stats.Skewness",
"Skewness");
2495 gStringSkewnessX =
gEnv->
GetValue(
"Hist.Stats.SkewnessX",
"Skewness x");
2496 gStringSkewnessY =
gEnv->
GetValue(
"Hist.Stats.SkewnessY",
"Skewness y");
2497 gStringSkewnessZ =
gEnv->
GetValue(
"Hist.Stats.SkewnessZ",
"Skewness z");
2498 gStringKurtosis =
gEnv->
GetValue(
"Hist.Stats.Kurtosis",
"Kurtosis");
2499 gStringKurtosisX =
gEnv->
GetValue(
"Hist.Stats.KurtosisX",
"Kurtosis x");
2500 gStringKurtosisY =
gEnv->
GetValue(
"Hist.Stats.KurtosisY",
"Kurtosis y");
2501 gStringKurtosisZ =
gEnv->
GetValue(
"Hist.Stats.KurtosisZ",
"Kurtosis z");
2526 const Int_t big = 9999;
2527 const Int_t kMaxDiff = 7;
2538 Int_t curdist = big;
2539 Int_t yxaxis, dyaxis,xyaxis, dxaxis;
2542 if (!PadPointer)
return 0;
2553 if (view && Hoption.
Contour != 14) {
2556 if (d3 <= kMaxDiff) {
gPad->SetSelected(
fZaxis);
return 0;}
2558 if (d1 <= kMaxDiff) {
gPad->SetSelected(
fXaxis);
return 0;}
2560 if (d2 <= kMaxDiff) {
gPad->SetSelected(
fYaxis);
return 0;}
2561 if ( px > puxmin && px < puxmax && py > puymax && py < puymin) curdist = 1;
2572 if (px <= xyaxis+dyaxis && px >= xyaxis && py >puymax && py < puymin) {
2581 if (px >= xyaxis-dyaxis && px <= xyaxis && py >puymax && py < puymin) {
2593 if (py >= yxaxis-dxaxis && py <= yxaxis && px <puxmax && px > puxmin) {
2602 if (yxaxis < puymin) yxaxis = puymin;
2603 if (py <= yxaxis+dxaxis && py >= yxaxis && px <puxmax && px > puxmin) {
2617 gPad->GetRangeAxis(xmin, ymin, xmax, ymax);
2620 if ((pxu>xmax) || (pxu < xmin) || (pyu>ymax) || (pyu < ymin)) {
2625 if (bin>0) curdist = 1;
2631 if ( px > puxmin + delta2
2632 && px < puxmax - delta2
2633 && py > puymax + delta2
2634 && py < puymin - delta2) {curdist =1;
goto FUNCTIONS;}
2638 if (
gPad->IsVertical()) {
2643 if (binval == 0 && pybin < puymin) pybin = 10000;
2649 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
2651 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
2652 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
2654 Int_t pybinmin =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmax));
2655 Int_t pybinmax =
gPad->YtoAbsPixel(
gPad->YtoPad(binvalmin));
2656 if (py<pybinmax+kMaxDiff/2 && py>pybinmin-kMaxDiff/2) pybin =
py;
2666 if (binval == 0 && pxbin > puxmin) pxbin = 10000;
2672 for (
Int_t ibin=bin+1; ibin<binsup; ibin++) {
2674 if (binvalmin>binvaltmp) binvalmin=binvaltmp;
2675 if (binvalmax<binvaltmp) binvalmax=binvaltmp;
2677 Int_t pxbinmin =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmax));
2678 Int_t pxbinmax =
gPad->XtoAbsPixel(
gPad->XtoPad(binvalmin));
2679 if (px<pxbinmax+kMaxDiff/2 && px>pxbinmin-kMaxDiff/2) pxbin =
px;
2691 if (dist < kMaxDiff) {
gPad->SetSelected(f);
return dist;}
2705 Error(
"DrawPanel",
"need to draw histogram first");
2710 gROOT->ProcessLine(
Form(
"((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
2726 static Int_t bin, px1, py1, px2, py2, pyold;
2731 Double_t xlow, xup, ylow, binval,
x, baroffset, barwidth, binwidth;
2734 if (!
gPad->IsEditable())
return;
2761 if (!opaque)
gVirtualX->SetLineColor(-1);
2762 fH->TAttLine::Modify();
2764 if (opaque && dimension ==2) {
2765 zbx1 =
gPad->AbsPixeltoX(px);
2766 zbx2 =
gPad->AbsPixeltoX(px);
2767 zby1 =
gPad->AbsPixeltoY(py);
2768 zby2 =
gPad->AbsPixeltoY(py);
2771 if (
gPad->GetLogx()) {
2775 if (
gPad->GetLogy()) {
2779 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2796 if (dimension ==1) {
2804 x =
gPad->AbsPixeltoX(px);
2808 xup =
gPad->XtoPad(xlow + barwidth*binwidth);
2809 ylow =
gPad->GetUymin();
2810 px1 =
gPad->XtoAbsPixel(xlow);
2811 px2 =
gPad->XtoAbsPixel(xup);
2812 py1 =
gPad->YtoAbsPixel(ylow);
2822 if (dimension ==1) {
2823 if (
gROOT->GetEditHistograms()) {
2832 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
2839 if (opaque && dimension ==2) {
2841 zbx2 =
gPad->AbsPixeltoX(px);
2842 zby2 =
gPad->AbsPixeltoY(py);
2845 zoombox->
SetX2(zbx2);
2846 zoombox->
SetY2(zby2);
2856 if (dimension ==2) {
2861 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
2866 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
2875 if (dimension == 2) {
2880 if (bin2>bin1) xaxis->
SetRange(bin1,bin2);
2885 if (bin2>bin1) yaxis->
SetRange(bin1,bin2);
2893 if (dimension ==1) {
2894 if (
gROOT->GetEditHistograms()) {
2895 binval =
gPad->PadtoY(
gPad->AbsPixeltoY(py2))/factor;
2903 if (opaque && dimension ==2) {
2913 if (x1<x2 && y1<y2) {
2922 if (opaque)
gVirtualX->SetLineColor(-1);
2932 event =
gVirtualX->RequestLocator(1, 1, px, py);
2960 if (!dt && !dtOld)
return nullptr;
2980 if (!
gPad)
return (
char*)
"";
2981 static char info[200];
2990 if (
gPad->GetView() || drawOption.
Index(
"cont") >= 0) {
2991 uxmin=
gPad->GetUxmin();
2992 uxmax=
gPad->GetUxmax();
2995 x = xmin +(xmax-
xmin)*(x-uxmin)/(uxmax-uxmin);
2996 uymin=
gPad->GetUymin();
2997 uymax=
gPad->GetUymax();
3000 y = ymin +(ymax-
ymin)*(y-uymin)/(uymax-uymin);
3003 Int_t binx,biny,binmin=0,binx1;
3004 if (
gPad->IsVertical()) {
3006 if (drawOption.
Index(
"same") >= 0) {
3009 while ((h1 = (
TH1 *)
next())) {
3022 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3032 x1 =
gPad->PadtoY(
gPad->AbsPixeltoY(py+1));
3034 if (drawOption.
Index(
"same") >= 0) {
3037 while ((h1 = (
TH1 *)
next())) {
3050 for (
Int_t ibin=binx+1; ibin<binx1; ibin++) {
3063 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, bine=%g, binn=%d)",
3070 snprintf(info,200,
"(x=%g, y=%g, binx=%d, binc=%g, Sum=%g)",
3077 snprintf(info,200,
"%s (x=%g, y=%g, bin=%d, binc=%g)",
3084 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g, bine=%g, binn=%d)",
3089 snprintf(info,200,
"(x=%g, y=%g, binx=%d, biny=%d, binc=%g bine=%g)",
3096 snprintf(info,200,
"(x=%g, y=%g)",x,y);
3146 Int_t nch = strlen(choptin);
3147 strlcpy(chopt,choptin,128);
3171 for (
Int_t i=0;i<nch;i++) chopt[i] = toupper(chopt[i]);
3172 if (hdim > 1) Hoption.
Scat = 1;
3173 if (!nch) Hoption.
Hist = 1;
3177 l = strstr(chopt,
"SPEC");
3182 l = strstr(chopt,
"BF(");
3184 if (sscanf(&l[3],
"%d",&bs) > 0) {
3197 l = strstr(chopt,
"GL");
3201 l = strstr(chopt,
"X+");
3206 l = strstr(chopt,
"Y+");
3212 if (Hoption.
AxisPos == 11 && nch == 4) Hoption.
Hist = 1;
3214 l = strstr(chopt,
"SAMES");
3216 if (nch == 5) Hoption.
Hist = 1;
3220 l = strstr(chopt,
"SAME");
3222 if (nch == 4) Hoption.
Hist = 1;
3227 l = strstr(chopt,
"PIE");
3233 l = strstr(chopt,
"CANDLE");
3238 if (l[6] ==
'X') { Hoption.
Candle = 1; l[6] =
' '; }
3239 if (l[6] ==
'Y') { Hoption.
Candle = 2; l[6] =
' '; }
3242 l = strstr(chopt,
"VIOLIN");
3247 if (l[6] ==
'X') { Hoption.
Violin = 1; l[6] =
' '; }
3248 if (l[6] ==
'Y') { Hoption.
Violin = 2; l[6] =
' '; }
3251 l = strstr(chopt,
"LEGO");
3254 Hoption.
Lego = 1; strncpy(l,
" ",4);
3255 if (l[4] ==
'1') { Hoption.
Lego = 11; l[4] =
' '; }
3256 if (l[4] ==
'2') { Hoption.
Lego = 12; l[4] =
' '; }
3257 if (l[4] ==
'3') { Hoption.
Lego = 13; l[4] =
' '; }
3258 if (l[4] ==
'4') { Hoption.
Lego = 14; l[4] =
' '; }
3259 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3260 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3261 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3264 l = strstr(chopt,
"SURF");
3267 Hoption.
Surf = 1; strncpy(l,
" ",4);
3268 if (l[4] ==
'1') { Hoption.
Surf = 11; l[4] =
' '; }
3269 if (l[4] ==
'2') { Hoption.
Surf = 12; l[4] =
' '; }
3270 if (l[4] ==
'3') { Hoption.
Surf = 13; l[4] =
' '; }
3271 if (l[4] ==
'4') { Hoption.
Surf = 14; l[4] =
' '; }
3272 if (l[4] ==
'5') { Hoption.
Surf = 15; l[4] =
' '; }
3273 if (l[4] ==
'6') { Hoption.
Surf = 16; l[4] =
' '; }
3274 if (l[4] ==
'7') { Hoption.
Surf = 17; l[4] =
' '; }
3275 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3276 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3279 l = strstr(chopt,
"TF3");
3281 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3282 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3285 l = strstr(chopt,
"ISO");
3287 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3288 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3291 l = strstr(chopt,
"LIST");
if (l) { Hoption.
List = 1; strncpy(l,
" ",4);}
3293 l = strstr(chopt,
"CONT");
3299 if (l[4] ==
'1') { Hoption.
Contour = 11; l[4] =
' '; }
3300 if (l[4] ==
'2') { Hoption.
Contour = 12; l[4] =
' '; }
3301 if (l[4] ==
'3') { Hoption.
Contour = 13; l[4] =
' '; }
3302 if (l[4] ==
'4') { Hoption.
Contour = 14; l[4] =
' '; }
3303 if (l[4] ==
'5') { Hoption.
Contour = 15; l[4] =
' '; }
3308 l = strstr(chopt,
"HBAR");
3311 Hoption.
Bar = 20; strncpy(l,
" ",4);
3312 if (l[4] ==
'1') { Hoption.
Bar = 21; l[4] =
' '; }
3313 if (l[4] ==
'2') { Hoption.
Bar = 22; l[4] =
' '; }
3314 if (l[4] ==
'3') { Hoption.
Bar = 23; l[4] =
' '; }
3315 if (l[4] ==
'4') { Hoption.
Bar = 24; l[4] =
' '; }
3317 l = strstr(chopt,
"BAR");
3320 Hoption.
Bar = 10; strncpy(l,
" ",3);
3321 if (l[3] ==
'1') { Hoption.
Bar = 11; l[3] =
' '; }
3322 if (l[3] ==
'2') { Hoption.
Bar = 12; l[3] =
' '; }
3323 if (l[3] ==
'3') { Hoption.
Bar = 13; l[3] =
' '; }
3324 if (l[3] ==
'4') { Hoption.
Bar = 14; l[3] =
' '; }
3327 l = strstr(chopt,
"ARR" );
3337 l = strstr(chopt,
"BOX" );
3343 if (l[3] ==
'1') { Hoption.
Box = 11; l[3] =
' '; }
3348 l = strstr(chopt,
"COLZ");
3355 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3356 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3361 l = strstr(chopt,
"COL" );
3367 l = strstr(chopt,
"0");
if (l) { Hoption.
Zero = 1; strncpy(l,
" ",1); }
3368 l = strstr(chopt,
"1");
if (l) { Hoption.
Color = 2; strncpy(l,
" ",1); }
3373 l = strstr(chopt,
"CHAR");
if (l) { Hoption.
Char = 1; strncpy(l,
" ",4); Hoption.
Scat = 0; }
3374 l = strstr(chopt,
"FUNC");
if (l) { Hoption.
Func = 2; strncpy(l,
" ",4); Hoption.
Hist = 0; }
3375 l = strstr(chopt,
"HIST");
if (l) { Hoption.
Hist = 2; strncpy(l,
" ",4); Hoption.
Func = 0; Hoption.
Error = 0;}
3376 l = strstr(chopt,
"AXIS");
if (l) { Hoption.
Axis = 1; strncpy(l,
" ",4); }
3377 l = strstr(chopt,
"AXIG");
if (l) { Hoption.
Axis = 2; strncpy(l,
" ",4); }
3378 l = strstr(chopt,
"SCAT");
if (l) { Hoption.
Scat = 1; strncpy(l,
" ",4); }
3379 l = strstr(chopt,
"TEXT");
3382 if (sscanf(&l[4],
"%d",&angle) > 0) {
3383 if (angle < 0) angle=0;
3384 if (angle > 90) angle=90;
3385 Hoption.
Text = 1000+angle;
3390 l = strstr(chopt,
"N");
3394 l = strstr(chopt,
"POL");
if (l) { Hoption.
System =
kPOLAR; strncpy(l,
" ",3); }
3396 l = strstr(chopt,
"SPH");
if (l) { Hoption.
System =
kSPHERICAL; strncpy(l,
" ",3); }
3397 l = strstr(chopt,
"PSR");
if (l) { Hoption.
System =
kRAPIDITY; strncpy(l,
" ",3); }
3399 l = strstr(chopt,
"TRI");
3403 Hoption.
Tri = 1; strncpy(l,
" ",3);
3404 l = strstr(chopt,
"FB");
if (l) { Hoption.
FrontBox = 0; strncpy(l,
" ",2); }
3405 l = strstr(chopt,
"BB");
if (l) { Hoption.
BackBox = 0; strncpy(l,
" ",2); }
3406 l = strstr(chopt,
"ERR");
if (l) strncpy(l,
" ",3);
3409 l = strstr(chopt,
"AITOFF");
3411 Hoption.
Proj = 1; strncpy(l,
" ",6);
3413 l = strstr(chopt,
"MERCATOR");
3415 Hoption.
Proj = 2; strncpy(l,
" ",8);
3417 l = strstr(chopt,
"SINUSOIDAL");
3419 Hoption.
Proj = 3; strncpy(l,
" ",10);
3421 l = strstr(chopt,
"PARABOLIC");
3423 Hoption.
Proj = 4; strncpy(l,
" ",9);
3425 if (Hoption.
Proj > 0) {
3430 if (strstr(chopt,
"A")) Hoption.
Axis = -1;
3431 if (strstr(chopt,
"B")) Hoption.
Bar = 1;
3432 if (strstr(chopt,
"C")) { Hoption.
Curve =1; Hoption.
Hist = -1;}
3433 if (strstr(chopt,
"F")) Hoption.
Fill =1;
3434 if (strstr(chopt,
"][")) {Hoption.
Off =1; Hoption.
Hist =1;}
3435 if (strstr(chopt,
"F2")) Hoption.
Fill =2;
3436 if (strstr(chopt,
"L")) { Hoption.
Line =1; Hoption.
Hist = -1;}
3437 if (strstr(chopt,
"P")) { Hoption.
Mark =1; Hoption.
Hist = -1;}
3438 if (strstr(chopt,
"Z")) Hoption.
Zscale =1;
3439 if (strstr(chopt,
"*")) Hoption.
Star =1;
3440 if (strstr(chopt,
"H")) Hoption.
Hist =2;
3441 if (strstr(chopt,
"P0")) Hoption.
Mark =10;
3447 if (strstr(chopt,
"E")) {
3450 if (strstr(chopt,
"E0")) Hoption.
Error = 10;
3451 if (strstr(chopt,
"E1")) Hoption.
Error = 11;
3452 if (strstr(chopt,
"E2")) Hoption.
Error = 12;
3453 if (strstr(chopt,
"E3")) Hoption.
Error = 13;
3454 if (strstr(chopt,
"E4")) Hoption.
Error = 14;
3455 if (strstr(chopt,
"E5")) Hoption.
Error = 15;
3456 if (strstr(chopt,
"E6")) Hoption.
Error = 16;
3457 if (strstr(chopt,
"X0")) {
3459 Hoption.
Error += 10;
3462 Hoption.
Text += 2000;
3466 if (Hoption.
Error == 0) {
3467 Hoption.
Error = 100;
3471 Hoption.
Text += 2000;
3477 if (Hoption.
Surf == 15) {
3480 Warning(
"MakeChopt",
"option SURF5 is not supported in Cartesian and Polar modes");
3490 if (Hoption.
Bar == 1) Hoption.
Hist = -1;
3502 char *left = (
char*)strchr(choptin,
'[');
3503 if (!left)
return 0;
3504 char *right = (
char*)strchr(choptin,
']');
3505 if (!right)
return 0;
3506 Int_t nch = right-left;
3507 if (nch < 2)
return 0;
3508 char *cuts = left+1;
3510 char *comma, *minus;
3513 comma = strchr(cuts,
',');
3514 if (comma) *comma = 0;
3515 minus = strchr(cuts,
'-');
3516 if (minus) cuts = minus+1;
3517 while (*cuts ==
' ') cuts++;
3518 Int_t nc = strlen(cuts);
3519 while (cuts[nc-1] ==
' ') {cuts[nc-1] = 0; nc--;}
3523 while ((obj =
next())) {
3525 if (strcmp(obj->
GetName(),cuts))
continue;
3538 for (i=0;i<=nch;i++) left[i] =
' ';
3567 gROOT->ProcessLineFast(
Form(
"TSpectrum2Painter::PaintSpectrum((TH2F*)0x%lx,\"%s\",%d)",
3577 Error(
"Paint",
"Option PIE is for 1D histograms only");
3598 gCurrentHist = oldhist;
3604 if (!Hoption.
Lego && !Hoption.
Surf && !Hoption.
Tri) {
3611 Int_t logysav=0, logzsav=0;
3613 logysav = Hoption.
Logy;
3614 logzsav = Hoption.
Logz;
3631 gCurrentHist = oldhist;
3634 Hoption.
Logy = logysav;
3635 Hoption.
Logz = logzsav;
3658 if (Hoption.
Axis > 0) {
3661 if (gridx)
gPad->SetGridx(0);
3662 if (gridy)
gPad->SetGridy(0);
3664 if (gridx)
gPad->SetGridx(1);
3665 if (gridy)
gPad->SetGridy(1);
3667 if (Hoption.
Same ==1) Hoption.
Same = 2;
3673 if (Hoption.
Bar >= 10) {
3678 if (!Hoption.
Error) {
3683 if (Hoption.
Error) {
3700 if (gridx)
gPad->SetGridx(0);
3701 if (gridy)
gPad->SetGridy(0);
3703 if (gridx)
gPad->SetGridx(1);
3704 if (gridy)
gPad->SetGridy(1);
3713 while ((obj =
next())) {
3721 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
3725 gCurrentHist = oldhist;
3742 fH->TAttLine::Modify();
3745 Double_t dx, dy,
si, co, anr,
x1,
x2, y1, y2, xc, yc, dxn, dyn;
3756 for (
Int_t id=1;
id<=2;
id++) {
3763 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
3764 if (i == Hparam.
xfirst) {
3766 }
else if (i == Hparam.
xlast) {
3771 if (j == Hparam.
yfirst) {
3773 }
else if (j == Hparam.
ylast) {
3781 }
else if (
id == 2) {
3795 anr = 0.005*.5*
TMath::Sqrt(2/(dxn*dxn + dyn*dyn));
3796 si = anr*(dxn + dyn);
3797 co = anr*(dxn - dyn);
3818 fH->TAttLine::Modify();
3835 if (drawGridOnly && (
gPad->PadInHighlightMode() ||
gPad->PadInSelectionMode()))
3838 if (Hoption.
Axis == -1)
return;
3839 if (Hoption.
Same && Hoption.
Axis <= 0)
return;
3845 if (Hoption.
Same && Hoption.
Axis) {
3850 while ((obj =
next())) {
3853 TString opt = obj->GetDrawOption();
3856 if (strstr(opt,
"hbar")) {
3860 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
3870 static char chopt[10] =
"";
3872 Int_t ndiv, ndivx, ndivy, nx1, nx2, ndivsave;
3873 Int_t useHparam = 0;
3874 Double_t umin, umax, uminsave, umaxsave;
3887 if (Hoption.
Contour == 14) useHparam = 1;
3891 while ((obj=
next())) {
3902 if (
gPad->PadInSelectionMode())
3906 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fXaxis)) {
3917 strlcat(chopt,
"SDH",10);
3918 if (ndivx < 0) strlcat(chopt,
"N",10);
3919 if (
gPad->GetGridx()) {
3920 gridl = (aymax-aymin)/(
gPad->GetY2() -
gPad->GetY1());
3921 strlcat(chopt,
"W",10);
3926 strlcat(chopt,
"G",10);
3948 strlcat(chopt,
"t",10);
3956 if (xAxisPos == 1) {
3972 strlcat(chopt,
"-",10);
3975 if (Hoption.
Same && Hoption.
Axis) {
3981 umin, umax, ndiv, chopt, gridl, drawGridOnly);
3986 if (
gPad->GetTickx() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
3988 cw=strstr(chopt,
"-");
3991 strlcat(chopt,
"-",10);
3993 if (
gPad->GetTickx() < 2) strlcat(chopt,
"U",10);
3994 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
3998 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4004 if (
gPad->PadInSelectionMode())
4008 if (
gPad->PadInSelectionMode() || !
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() &&
gPad->GetSelected() ==
fYaxis)) {
4013 strlcat(chopt,
"SDH",10);
4014 if (ndivy < 0) strlcat(chopt,
"N",10);
4015 if (
gPad->GetGridy()) {
4016 gridl = (axmax-axmin)/(
gPad->GetX2() -
gPad->GetX1());
4017 strlcat(chopt,
"W",10);
4022 strlcat(chopt,
"G",10);
4044 strlcat(chopt,
"t",10);
4052 if (yAxisPos == 1) {
4068 strlcat(chopt,
"+L",10);
4071 if (Hoption.
Same && Hoption.
Axis) {
4077 umin, umax, ndiv, chopt, gridl, drawGridOnly);
4082 if (
gPad->GetTicky() && !
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
4083 if (
gPad->GetTicky() < 2) {
4084 strlcat(chopt,
"U",10);
4087 strlcat(chopt,
"+L",10);
4089 if ((cw=strstr(chopt,
"W"))) *cw=
'z';
4093 uminsave, umaxsave, ndivsave, chopt, gridl, drawGridOnly);
4117 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4125 ymin =
gPad->GetUymin();
4126 ymax =
gPad->YtoPad(y);
4127 if (ymax < gPad->GetUymin())
continue;
4128 if (ymax >
gPad->GetUymax()) ymax =
gPad->GetUymax();
4129 if (ymin < gPad->GetUymin()) ymin =
gPad->GetUymin();
4132 w = (xmax-
xmin)*width;
4133 xmin += offset*(xmax-
xmin);
4138 umin = xmin + bar*(xmax-
xmin)/10.;
4139 umax = xmax - bar*(xmax-
xmin)/10.;
4164 if (!strcmp(xaxis->
GetName(),
"xaxis")) {
4177 if (hcolor ==
gPad->GetFrameFillColor()) ++hcolor;
4184 xmin =
gPad->GetUxmin();
4186 if (xmax < gPad->GetUxmin())
continue;
4187 if (xmax >
gPad->GetUxmax()) xmax =
gPad->GetUxmax();
4188 if (xmin < gPad->GetUxmin()) xmin =
gPad->GetUxmin();
4191 w = (ymax-
ymin)*width;
4192 ymin += offset*(ymax-
ymin);
4197 umin = ymin + bar*(ymax-
ymin)/10.;
4198 umax = ymax - bar*(ymax-
ymin)/10.;
4213 while ((obj =
next())) {
4236 fH->TAttLine::Modify();
4237 fH->TAttFill::Modify();
4239 Double_t z, xk,xstep, yk, ystep, xcent, ycent, xlow, xup, ylow, yup;
4256 while ((h2 = (
TH2 *)
next())) {
4288 if (Hoption.
Box == 11) {
4302 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4307 if (z < zmin)
continue;
4308 if (z > zmax) z = zmax;
4311 if (Hoption.
Logz)
continue;
4320 if (dz == 0)
continue;
4322 if (zratio == 0)
continue;
4324 xup = xcent*zratio + xk + xcent;
4325 xlow = 2*(xk + xcent) - xup;
4326 if (xup-xlow < dxmin) xup = xlow+dxmin;
4334 yup = ycent*zratio + yk + ycent;
4335 ylow = 2*(yk + ycent) - yup;
4336 if (yup-ylow < dymin) yup = ylow+dymin;
4349 if (xlow >= xup)
continue;
4350 if (ylow >= yup)
continue;
4352 if (Hoption.
Box == 1) {
4354 fH->TAttFill::Modify();
4355 gPad->PaintBox(xlow, ylow, xup, yup);
4357 gPad->PaintLine(xlow, ylow, xup, yup);
4358 gPad->PaintLine(xlow, yup, xup, ylow);
4360 }
else if (Hoption.
Box == 11) {
4363 fH->TAttFill::Modify();
4364 gPad->PaintBox(xlow, ylow, xup, yup);
4369 x[0] = xlow; y[0] = ylow;
4370 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4371 x[2] = x[1]; y[2] = yup - bwidth*(yup-ylow);
4372 x[3] = xup - bwidth*(xup-xlow); y[3] = y[2];
4373 x[4] = xup; y[4] = yup;
4374 x[5] = xlow; y[5] = yup;
4375 x[6] = xlow; y[6] = ylow;
4378 fH->TAttFill::Modify();
4379 gPad->PaintFillArea(7, x, y);
4382 x[0] = xlow; y[0] = ylow;
4383 x[1] = xlow + bwidth*(xup-xlow); y[1] = ylow + bwidth*(yup-ylow);
4384 x[2] = xup - bwidth*(xup-xlow); y[2] = y[1];
4385 x[3] = x[2]; y[3] = yup - bwidth*(yup-ylow);
4386 x[4] = xup; y[4] = yup;
4387 x[5] = xup; y[5] = ylow;
4388 x[6] = xlow; y[6] = ylow;
4391 fH->TAttFill::Modify();
4392 gPad->PaintFillArea(7, x, y);
4400 fH->TAttFill::Modify();
4417 quantiles[0]=0.; quantiles[1]=0.; quantiles[2] = 0.; quantiles[3] = 0.; quantiles[4] = 0.;
4419 prob[0]=1
E-15; prob[1]=0.25; prob[2]=0.5; prob[3]=0.75; prob[4]=1-1
E-15;
4430 h2->TAttLine::Modify();
4431 h2->TAttFill::Modify();
4432 h2->TAttMarker::Modify();
4435 Double_t xb1,xb2,yb1,yb2,xl1,xl2,yl1,yl2,xl3,yl3,xp1,yp1;
4436 if (Hoption.
Candle == 1) {
4471 h2->TAttLine::Modify();
4472 gPad->PaintBox (xb1, yb1, xb2, yb2);
4473 gPad->PaintLine(xl1, yl1, xl2, yl1);
4474 gPad->PaintLine(xl1, yl2, xl2, yl2);
4476 h2->TAttLine::Modify();
4477 gPad->PaintLine(xb1, yl3, xb2, yl3);
4479 h2->TAttLine::Modify();
4482 h2->TAttLine::Modify();
4483 gPad->PaintLine(xp1, yb2, xp1, yl2);
4484 gPad->PaintLine(xp1, yl1, xp1, yb1);
4487 gPad->PaintPolyMarker(1,xpm,ypm);
4526 h2->TAttLine::Modify();
4528 gPad->PaintBox (xb1, yb1, xb2, yb2);
4529 gPad->PaintLine(xl1, yl1, xl1, yl2);
4530 gPad->PaintLine(xl2, yl1, xl2, yl2);
4533 h2->TAttLine::Modify();
4534 gPad->PaintLine(xl3, yb1, xl3, yb2);
4537 h2->TAttLine::Modify();
4540 h2->TAttLine::Modify();
4541 gPad->PaintLine(xb2, yp1, xl2, yp1);
4542 gPad->PaintLine(xl1, yp1, xb1, yp1);
4545 gPad->PaintPolyMarker(1,xpm,ypm);
4555 h2->TAttFill::Modify();
4556 h2->TAttLine::Modify();
4557 h2->TAttMarker::Modify();
4560 delete [] quantiles;
4576 quantiles[0]=0.; quantiles[1]=0.; quantiles[2] = 0.; quantiles[3] = 0.; quantiles[4] = 0.;
4578 prob[0]=1
E-15; prob[1]=0.25; prob[2]=0.5; prob[3]=0.75; prob[4]=1-1
E-15;
4589 h2->TAttLine::Modify();
4590 h2->TAttFill::Modify();
4591 h2->TAttMarker::Modify();
4594 if (Hoption.
Violin == 1) {
4610 gPad->PaintBox(x-0.5*bcon, bcen-0.5*bw, x+0.5*bcon, bcen+0.5*bw);
4614 h2->TAttLine::Modify();
4617 h2->TAttLine::Modify();
4618 gPad->PaintLine(x, quantiles[3], x, quantiles[4]);
4619 gPad->PaintLine(x, quantiles[0], x, quantiles[1]);
4622 gPad->PaintPolyMarker(1,xpm,ypm);
4638 h2->TAttLine::Modify();
4644 gPad->PaintBox(bcen-0.5*bw, y-0.5*bcon, bcen+0.5*bw, y+0.5*bcon);
4652 h2->TAttLine::Modify();
4653 gPad->PaintLine(quantiles[3], y, quantiles[4], y);
4654 gPad->PaintLine(quantiles[0], y, quantiles[1], y);
4657 gPad->PaintPolyMarker(1,xpm,ypm);
4667 h2->TAttFill::Modify();
4668 h2->TAttLine::Modify();
4669 h2->TAttMarker::Modify();
4672 delete [] quantiles;
4680 Double_t z, zc, xk, xstep, yk, ystep, xlow, xup, ylow, yup;
4705 fH->TAttFill::Modify();
4728 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
4733 if (binEntries == 0)
4739 if (zmin >= 0 || Hoption.
Logz)
continue;
4740 if (Hoption.
Color == 2)
continue;
4748 if (z < zmin && !Hoption.
Zero)
continue;
4766 if (xup < gPad->GetUxmin())
continue;
4767 if (yup < gPad->GetUymin())
continue;
4768 if (xlow >
gPad->GetUxmax())
continue;
4769 if (ylow >
gPad->GetUymax())
continue;
4770 if (xlow < gPad->GetUxmin()) xlow =
gPad->GetUxmin();
4771 if (ylow < gPad->GetUymin()) ylow =
gPad->GetUymin();
4772 if (xup >
gPad->GetUxmax()) xup =
gPad->GetUxmax();
4773 if (yup >
gPad->GetUymax()) yup =
gPad->GetUymax();
4778 if (z < zc)
continue;
4780 for (
Int_t k=0; k<ndiv; k++) {
4789 color =
Int_t(0.01+(z-zmin)*scale);
4793 if (theColor > ncolors-1) theColor = ncolors-1;
4795 fH->TAttFill::Modify();
4797 gPad->PaintBox(xlow, ylow, xup, yup);
4810 fH->TAttFill::Modify();
4821 Int_t i, j, count, ncontour, icol,
n, lj,
m, ix, jx, ljfill;
4822 Int_t itars, mode, ir[4];
4823 Double_t xsave, ysave, thesave,phisave,x[4], y[4], zc[4];
4828 thesave =
gPad->GetTheta();
4829 phisave =
gPad->GetPhi();
4831 gPad->SetTheta(90.);
4833 gPad->SetPhi(phisave);
4834 gPad->SetTheta(thesave);
4846 while ((obj=
next())) {
4863 if (!dt && !dtOld)
return;
4883 if (ncontour == 0) {
4887 if (ncontour > kMAXCONTOUR) {
4888 Warning(
"PaintContour",
"maximum number of contours is %d, asked for %d",
4889 kMAXCONTOUR, ncontour);
4890 ncontour = kMAXCONTOUR-1;
4901 fH->TAttLine::Modify();
4911 np =
new Int_t[ncontour];
4912 for (i=0;i<ncontour;i++) np[i] = 0;
4914 for (i=0;i<ncontour;i++) {
4917 if (Hoption.
List == 1) {
4918 contours = (
TObjArray*)
gROOT->GetListOfSpecials()->FindObject(
"contours");
4920 gROOT->GetListOfSpecials()->Remove(contours);
4922 for (i=0;i<count;i++) {
4923 list = (
TList*)contours->
At(i);
4924 if (list) list->
Delete();
4928 contours->
SetName(
"contours");
4929 gROOT->GetListOfSpecials()->Add(contours);
4930 for (i=0;i<ncontour;i++) {
4932 contours->
Add(list);
4954 else zc[0] = Hparam.
zmin;
4956 else zc[1] = Hparam.
zmin;
4958 else zc[2] = Hparam.
zmin;
4960 else zc[3] = Hparam.
zmin;
4965 if (ir[0] != ir[1] || ir[1] != ir[2] || ir[2] != ir[3] || ir[3] != ir[0]) {
4970 if (zc[0] <= zc[1]) n = 0;
else n = 1;
4971 if (zc[2] <= zc[3]) m = 2;
else m = 3;
4972 if (zc[n] > zc[m]) n =
m;
4975 for (ix=1;ix<=4;ix++) {
4978 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
4983 if (zc[0] <= zc[1]) n = 0;
else n = 1;
4984 if (zc[2] <= zc[3]) m = 2;
else m = 3;
4985 if (zc[n] > zc[m]) n =
m;
4988 for (ix=1;ix<=4;ix++) {
4992 ir[m-1],x[m-1],y[m-1],&xarr[lj-1],&yarr[lj-1],&itarr[lj-1], levels);
5000 for (ix=1; ix<=lj-5; ix +=2) {
5002 while (itarr[ix-1] != itarr[ix]) {
5006 for (jx=ix; jx<=lj-5; jx +=2) {
5007 xarr[jx] = xarr[jx+2];
5008 yarr[jx] = yarr[jx+2];
5009 itarr[jx] = itarr[jx+2];
5013 itarr[lj-3] = itars;
5014 if (count > 100)
break;
5019 if (count > 100)
continue;
5020 for (ix=1; ix<=lj-2; ix +=2) {
5028 if (mode == 0) mode = 5;
5032 fH->TAttLine::Modify();
5033 gPad->PaintPolyLine(2,&xarr[ix-1],&yarr[ix-1]);
5037 ipoly = itarr[ix-1];
5038 if (ipoly >=0 && ipoly <ncontour) {
5039 poly = polys[ipoly];
5040 poly->
SetPoint(np[ipoly] ,xarr[ix-1],yarr[ix-1]);
5041 poly->
SetPoint(np[ipoly]+1,xarr[ix], yarr[ix]);
5043 if (npmax < np[ipoly]) npmax = np[ipoly];
5052 Int_t nadd,iminus,iplus;
5056 Int_t *polysort = 0;
5058 if (Hoption.
Contour != 1)
goto theEND;
5064 xmin =
gPad->GetUxmin();
5065 ymin =
gPad->GetUymin();
5068 polysort =
new Int_t[ncontour];
5070 for (ipoly=0;ipoly<ncontour;ipoly++) {
5071 if (levels[ipoly] >= 0) {first = ipoly;
break;}
5075 for (ipoly=first-1;ipoly>=0;ipoly--) {polysort[k] = ipoly; k++;}
5076 for (ipoly=first;ipoly<ncontour;ipoly++) {polysort[k] = ipoly; k++;}
5080 for (k=0;k<ncontour;k++) {
5081 ipoly = polysort[k];
5082 if (np[ipoly] == 0)
continue;
5083 if (Hoption.
List) list = (
TList*)contours->
At(contListNb);
5085 poly = polys[ipoly];
5092 xp[iminus]= xx[istart]; yp[iminus] = yy[istart];
5093 xp[iplus] = xx[istart+1]; yp[iplus] = yy[istart+1];
5094 xx[istart] =
xmin; yy[istart] =
ymin;
5095 xx[istart+1] =
xmin; yy[istart+1] =
ymin;
5098 for (i=2;i<np[ipoly];i+=2) {
5099 if (xx[i] == xp[iplus] && yy[i] == yp[iplus]) {
5101 xp[iplus] = xx[i+1]; yp[iplus] = yy[i+1];
5106 if (xx[i+1] == xp[iminus] && yy[i+1] == yp[iminus]) {
5108 xp[iminus] = xx[i]; yp[iminus] = yy[i];
5114 if (nadd == 0)
break;
5119 fH->TAttFill::Modify();
5120 gPad->PaintFillArea(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5122 graph =
new TGraph(iplus-iminus+1,&xp[iminus],&yp[iminus]);
5129 for (i=2;i<np[ipoly];i+=2) {
5130 if (xx[i] != xmin && yy[i] != ymin) {
5135 if (istart == 0)
break;
5139 for (i=0;i<ncontour;i++)
delete polys[i];
5151 if (np)
delete []
np;
5180 tdif = elev2 - elev1;
5183 while (n <= icont2 && i <= kMAXCONTOUR/2 -3) {
5186 diff = elev - elev1;
5197 yarr[i] = y1 + xlen;
5202 xarr[i] = x1 + xlen;
5226 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
5228 const Int_t kBASEMARKER=8;
5229 Double_t xp, yp, ex1, ex2, ey1, ey2;
5231 Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase;
5232 Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4;
5239 Int_t drawmarker, errormarker;
5240 Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0;
5244 option0 = option1 = option2 = option3 = option4 = optionE = optionEX0 = optionI0 = 0;
5245 if (
Int_t(Hoption.
Error/10) == 2) {optionEX0 = 1; Hoption.
Error -= 10;}
5246 if (Hoption.
Error == 31) {optionEX0 = 1; Hoption.
Error = 1;}
5247 if (Hoption.
Error == 10) option0 = 1;
5248 if (Hoption.
Error == 11) option1 = 1;
5249 if (Hoption.
Error == 12) option2 = 1;
5250 if (Hoption.
Error == 13) option3 = 1;
5251 if (Hoption.
Error == 14) {option4 = 1; option3 = 1;}
5252 if (Hoption.
Error == 15) {optionI0 = 1; option3 = 1;}
5253 if (Hoption.
Error == 16) {optionI0 = 1; option4 = 1; option3 = 1;}
5254 if (option2+option3 == 0) optionE = 1;
5255 if (Hoption.
Error == 0) optionE = 0;
5266 if (errormarker == 1) symbolsize = 0.01;
5267 sbase = symbolsize*kBASEMARKER;
5270 fH->TAttLine::Modify();
5271 fH->TAttFill::Modify();
5272 fH->TAttMarker::Modify();
5278 last = Hparam.
xlast;
5279 npoints = last - first +1;
5280 xmin =
gPad->GetUxmin();
5281 xmax =
gPad->GetUxmax();
5282 ymin =
gPad->GetUymin();
5283 ymax =
gPad->GetUymax();
5289 if (!xline || !yline) {
5290 Error(
"PaintErrors",
"too many points, out of memory");
5303 bxsize =
gPad->PixeltoX(dxend) -
gPad->PixeltoX(0);
5304 bysize =-
gPad->PixeltoY(dxend) +
gPad->PixeltoY(0);
5320 for (k=first; k<=last; k++) {
5332 if (xp <= 0)
goto L30;
5333 if (xp < logxmin)
goto L30;
5336 if (xp < xmin)
goto L30;
5337 if (xp > xmax)
break;
5340 if (optionI0 && yp==0)
goto L30;
5392 if (!option0 && !option3) {
5393 if (Hoption.
Logy && yp < logymin)
goto L30;
5394 if (yi1 < ymin || yi1 > ymax)
goto L30;
5395 if (Hoption.
Error != 0 && yp == 0 && ey1 <= 0) drawmarker =
kFALSE;
5397 if (!symbolsize || !errormarker) drawmarker =
kFALSE;
5400 if (option2)
gPad->PaintBox(xi1,yi3,xi2,yi4);
5413 if (Hoption.
Logy && yp < logymin) drawmarker =
kFALSE;
5414 if (optionE && drawmarker) {
5415 if ((yi3 < yi1 - s2y) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1 - s2y,ymax));
5416 if ((yi1 + s2y < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1 + s2y, ymin),xi4,yi4);
5418 if (Hoption.
Hist != 2) {
5419 if (yi1<ymax && yi1>ymin) {
5420 if (xi1 < xi3 - s2x)
gPad->PaintLine(xi1,yi1,xi3 - s2x,yi2);
5421 if (xi3 + s2x < xi2)
gPad->PaintLine(xi3 + s2x,yi1,xi2,yi2);
5425 if (optionE && !drawmarker && (ey1 != 0 || ey2 !=0)) {
5426 if ((yi3 < yi1) && (yi3 < ymax))
gPad->PaintLine(xi3,yi3,xi4,
TMath::Min(yi1,ymax));
5427 if ((yi1 < yi4) && (yi4 > ymin))
gPad->PaintLine(xi3,
TMath::Max(yi1,ymin),xi4,yi4);
5429 if (Hoption.
Hist != 2) {
5430 if (yi1<ymax && yi1>ymin) {
5431 if (xi1 < xi3)
gPad->PaintLine(xi1,yi1,xi3,yi2);
5432 if (xi3 < xi2)
gPad->PaintLine(xi3,yi1,xi2,yi2);
5439 if (option1 && drawmarker) {
5440 if (yi3 < yi1-s2y)
gPad->PaintLine(xi3 - bxsize,yi3,xi3 + bxsize,yi3);
5441 if (yi4 > yi1+s2y)
gPad->PaintLine(xi3 - bxsize,yi4,xi3 + bxsize,yi4);
5442 if (xi1 < xi3-s2x)
gPad->PaintLine(xi1,yi1 - bysize,xi1,yi1 + bysize);
5443 if (xi2 > xi3+s2x)
gPad->PaintLine(xi2,yi1 - bysize,xi2,yi1 + bysize);
5448 if (drawmarker)
gPad->PaintPolyMarker(1, &xi3, &yi1);
5477 if (if2 > npoints) {
5478 for (i=1; i<if1; i++) {
5479 xline[if1-2+i] = xline[if2-1+i];
5480 yline[if1-2+i] = yline[if2-1+i];
5484 if (option4) graph.
PaintGraph(2*npoints,xline,yline,
"FC");
5485 else graph.
PaintGraph(2*npoints,xline,yline,
"F");
5486 gPad->SetLogx(logx);
5487 gPad->SetLogy(logy);
5500 fH->TAttMarker::Modify();
5501 fH->TAttLine::Modify();
5513 Error(
"Paint2DErrors",
"no TView in current pad");
5520 view->
SetView(phideg, thedeg, psideg, irep);
5525 fLego->TAttFill::Modify();
5526 Int_t backcolor =
gPad->GetFrameFillColor();
5531 fLego->TAttFill::Modify();
5547 if (Hoption.
Error == 110) {
5563 else y1 = Hparam.
ymin;
5565 else y2 = Hparam.
ymin;
5572 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
5582 else x1 = Hparam.
xmin;
5584 else x2 = Hparam.
xmin;
5599 else z = Hparam.
zmin;
5601 else z1 = Hparam.
zmin;
5603 else z2 = Hparam.
zmin;
5606 if (z <= Hparam.
zmin)
continue;
5607 if (z > Hparam.
zmax) z = Hparam.
zmax;
5615 gPad->PaintLine3D(temp1, temp2);
5622 gPad->PaintLine3D(temp1, temp2);
5629 gPad->PaintLine3D(temp1, temp2);
5633 view->
WCtoNDC(temp1, &temp2[0]);
5634 gPad->PaintPolyMarker(1, &temp2[0], &temp2[1]);
5662 if (Hoption.
Same)
return;
5666 if (Hoption.
Lego || Hoption.
Surf || Hoption.
Tri ||
5669 if (frame)
gPad->GetListOfPrimitives()->Remove(frame);
5675 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode())
5694 if (Hoption.
Lego || Hoption.
Surf) {
5699 f2->
Paint(
"surf same");
5701 obj->
Paint(
"cont3 same");
5708 gPad->PushSelectableObject(obj);
5712 if (!
gPad->PadInHighlightMode() || (
gPad->PadInHighlightMode() && obj ==
gPad->GetSelected()))
5729 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
5732 static char chopth[17];
5734 Int_t htype, oldhtype;
5739 strlcpy(chopth,
" ",17);
5753 last = Hparam.
xlast;
5754 nbins = last - first + 1;
5760 if (fixbin) keepx =
new Double_t[2];
5761 else keepx =
new Double_t[nbins+1];
5768 for (j=first; j<=last;j++) {
5774 if (!Hoption.
Line) {
5778 keepy[j-
first] = yb;
5783 if (fixbin) { keepx[0] = Hparam.
xmin; keepx[1] = Hparam.
xmax; }
5794 if (htype == 0 || htype == 1000) htype = 1001;
5801 if (Hoption.
Line) chopth[0] =
'L';
5802 if (Hoption.
Star) chopth[1] =
'*';
5803 if (Hoption.
Mark) chopth[2] =
'P';
5804 if (Hoption.
Mark == 10) chopth[3] =
'0';
5806 if (Hoption.
Curve) chopth[3] =
'C';
5807 if (Hoption.
Hist > 0) chopth[4] =
'H';
5808 else if (Hoption.
Bar) chopth[5] =
'B';
5818 if (!fixbin && strlen(chopth)) {
5822 if (Hoption.
Fill == 2) chopth[13] =
'2';
5875 if (
fH->
GetDrawOption() && (strstr(opt,
"box") || strstr(opt,
"lego"))) {
5876 cmd =
Form(
"TMarker3DBox::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
5880 }
else if (strstr(option,
"tf3")) {
5884 cmd =
Form(
"TPolyMarker3D::PaintH3((TH1 *)0x%lx,\"%s\");",(
Long_t)
fH,option);
5887 if (strstr(opt,
"fb")) Hoption.
FrontBox = 0;
5888 if (strstr(opt,
"bb")) Hoption.
BackBox = 0;
5895 view->
SetView(phideg, thedeg, psideg, irep);
5898 gROOT->ProcessLine(cmd);
5900 if (Hoption.
Same)
return;
5929 while ((obj =
next())) {
5935 if (Hoption.
Same != 1) {
5953 static const char *where =
"PaintInit";
5966 Hparam.
xlast = last;
5973 if (Hparam.
xmax<=0) {
5974 Error(where,
"cannot set X axis to log scale");
5981 for (i=first; i<=last; i++) {
5993 Error(where,
"cannot set X axis to log scale");
6003 if (Hparam.
xlast > last) Hparam.
xlast = last;
6017 Int_t nonNullErrors = 0;
6019 for (i=first; i<=last;i++) {
6027 if (Hoption.
Error) {
6032 if (e1 > 0) nonNullErrors++;
6049 fval = f1->
Eval(xv[0],0,0);
6053 if (c1 > 0 && fval > 0.3*c1) ymin =
TMath::Min(ymin,fval);
6061 if (!nonNullErrors) {
6062 if (Hoption.
Error) {
6071 if (Hoption.
Logy && ymin <= 0) {
6072 if (ymax >= 1) ymin =
TMath::Max(.005,ymax*1e-10);
6073 else ymin = 0.001*
ymax;
6079 if (Hoption.
Logy && xm < 0) {
6080 Error(where,
"log scale requested with a negative argument (%f)", xm);
6082 }
else if (Hoption.
Logy && xm>=0 && ymax==0) {
6091 if (ymax > 0) ymin = 0.001*
ymax;
6093 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", ymax);
6101 }
else if (ymin < 0) {
6113 ymin = ymin*(1-1
E-14);
6114 ymax = ymax*(1+1
E-14);
6121 if (allchan) factor /= allchan;
6122 if (factor == 0) factor = 1;
6139 if (ymin <=0 || ymax <=0) {
6140 Error(where,
"Cannot set Y axis to log scale");
6147 if (!Hoption.
Same) {
6159 if (ymin >= 0) ymin = 0;
6160 else ymin -= yMARGIN*(ymax-
ymin);
6163 if (ymin >= 0 && (ymin-dymin <= 0)) ymin = 0;
6172 ymax += yMARGIN*(ymax-
ymin);
6187 static const char *where =
"PaintInitH";
6200 Hparam.
xlast = last;
6211 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
6212 Error(where,
"cannot set Y axis to log scale");
6219 if (Hparam.
xlast > last) Hparam.
xlast = last;
6234 for (i=first; i<=last;i++) {
6238 if (Hoption.
Error) {
6249 fval = f1->
Eval(xv[0],0,0);
6252 if (fval > 0.3*c1) xmin =
TMath::Min(xmin,fval);
6263 if (Hoption.
Logx && xmin <= 0) {
6264 if (xmax >= 1) xmin =
TMath::Max(.5,xmax*1e-10);
6265 else xmin = 0.001*
xmax;
6270 if (Hoption.
Logx && xm <= 0) {
6271 Error(where,
"log scale requested with zero or negative argument (%f)", xm);
6277 if (xmax > 0) xmin = 0.001*
xmax;
6279 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", xmax);
6287 }
else if (xmin < 0) {
6301 if (allchan) factor /= allchan;
6302 if (factor == 0) factor = 1;
6312 if (xmin <=0 || xmax <=0) {
6313 Error(where,
"Cannot set Y axis to log scale");
6320 if (!Hoption.
Same) {
6331 if (xmin >= 0) xmin = 0;
6332 else xmin -= yMARGIN*(xmax-
xmin);
6339 xmax += yMARGIN*(xmax-
xmin);
6363 Int_t ic2 = ic1+nbcol;
6364 Int_t ic3 = ic2+nbcol;
6399 Error(
"PaintH3Iso",
"no TView in current pad");
6408 view->
SetView(phideg, thedeg, psideg, irep);
6410 Int_t backcolor =
gPad->GetFrameFillColor();
6426 for (
Int_t col=0;col<nbcol;col++) {
6427 acol =
gROOT->GetColor(col+icol1);
6429 if (acol) acol->
SetRGB(r, g, b);
6444 fmax = ydiff*qa + (yligh1+0.1)*(qd+qs);
6473 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
6484 if (deltaz == 0) deltaz = 1;
6532 Color_t colormain = -1, colordark = -1;
6536 if (Hoption.
Lego == 13) {
6541 if (Hoption.
Lego == 14) {
6543 drawShadowsInLego1 =
kFALSE;
6569 if (Hoption.
Lego == 11) {
6573 for (
Int_t id=0;
id<=nids;
id++) {
6576 if (colormain == 1) colormain = 17;
6578 else colordark = colormain;
6591 Error(
"PaintLego",
"no TView in current pad");
6598 view->
SetView(phideg, thedeg, psideg, irep);
6606 fLego->TAttFill::Modify();
6608 Int_t backcolor =
gPad->GetFrameFillColor();
6614 fLego->TAttFill::Modify();
6621 if (Hoption.
Lego == 11 || Hoption.
Lego == 12) {
6651 if (Hoption.
Lego == 1) {
6658 if (Hoption.
Lego == 1 || Hoption.
Lego == 11) {
6687 Int_t ndivx, ndivy, ndivz, i;
6688 Double_t x1[3], x2[3], y1[3], y2[3], z1[3], z2[3], av[24] ;
6689 static char chopax[8], chopay[8], chopaz[8];
6690 Int_t ix1, ix2, iy1, iy2, iz1, iz2;
6695 Error(
"PaintLegoAxis",
"no TView in current pad");
6710 gPad->PaintLine(x1[0],x1[1],x2[0],x2[1]);
6720 view->
AxisVertex(ang, av, ix1, ix2, iy1, iy2, iz1, iz2);
6721 for (i = 1; i <= 8; ++i) {
6722 r[i*3 - 3] = av[i*3 - 3] + av[i*3 - 2]*cosa;
6723 r[i*3 - 2] = av[i*3 - 2]*sina;
6724 r[i*3 - 1] = av[i*3 - 1];
6727 view->
WCtoNDC(&r[ix1*3 - 3], x1);
6728 view->
WCtoNDC(&r[ix2*3 - 3], x2);
6729 view->
WCtoNDC(&r[iy1*3 - 3], y1);
6730 view->
WCtoNDC(&r[iy2*3 - 3], y2);
6731 view->
WCtoNDC(&r[iz1*3 - 3], z1);
6732 view->
WCtoNDC(&r[iz2*3 - 3], z2);
6738 if (!rmin || !rmax)
return;
6741 if (x1[0] > x2[0]) strlcpy(chopax,
"SDH=+",8);
6742 else strlcpy(chopax,
"SDH=-",8);
6743 if (y1[0] > y2[0]) strlcpy(chopay,
"SDH=+",8);
6744 else strlcpy(chopay,
"SDH=-",8);
6745 strlcpy(chopaz,
"SDH+=",8);
6748 if (Hoption.
Logx) strlcat(chopax,
"G",8);
6749 if (Hoption.
Logy) strlcat(chopay,
"G",8);
6750 if (Hoption.
Logz) strlcat(chopaz,
"G",8);
6759 strlcat(chopax,
"N",8);
6763 strlcat(chopay,
"N",8);
6767 strlcat(chopaz,
"N",8);
6789 strlcat(chopax,
"t",8);
6797 axis->
PaintAxis(x1[0], x1[1], x2[0], x2[1], bmin, bmax, ndivx, chopax);
6806 strlcpy(chopay,
"V=+UN",8);
6821 strlcat(chopay,
"t",8);
6829 axis->
PaintAxis(y1[0], y1[1], y2[0], y2[1], bmin, bmax, ndivy, chopay);
6844 strlcat(chopaz,
"t",8);
6852 axis->
PaintAxis(z1[0], z1[1], z2[0], z2[1], bmin, bmax, ndivz, chopaz);
6871 delete palette; palette = 0;
6876 delete palette; palette = 0;
6889 if (xmax > x2) xmax =
gPad->PadtoX(
gPad->GetX2()-0.01*xr);
6903 fH->TAttMarker::Modify();
6911 if (zmin == 0 && zmax == 0)
return;
6922 if (zmin == 0 && zmax == 0)
return;
6925 if (ncells > 10000) scale /= 5;
6929 if (dz >=
kNMAX || zmax < 1) {
6930 scale = (
kNMAX-1)/dz;
6931 if (ncells > 10000) scale /= 5;
6938 if (zmin >= 0) zmin = 0;
6939 else zmin -= yMARGIN*(zmax-zmin);
6941 Double_t dzmin = yMARGIN*(zmax-zmin);
6942 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
6951 strlcpy(optscat,opt.
Data(),100);
6952 char *oscat = strstr(optscat,
"scat=");
6953 char *blank = strstr(oscat,
" ");
if (blank) *blank = 0;
6954 sscanf(oscat+5,
"%lg",&scale);
6968 if (!
IsInside(xk+0.5*xstep,yk+0.5*ystep))
continue;
6970 if (z < zmin) z = zmin;
6971 if (z > zmax) z = zmax;
6977 if (z <= 0)
continue;
6981 for (
Int_t loop=0; loop<k; loop++) {
6982 if (k+marker >=
kNMAX) {
6983 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
6986 fXbuf[marker] = (random.
Rndm(loop)*xstep) + xk;
6987 fYbuf[marker] = (random.
Rndm(loop)*ystep) + yk;
6989 if (fXbuf[marker] > 0) fXbuf[marker] =
TMath::Log10(fXbuf[marker]);
6996 if (fXbuf[marker] <
gPad->GetUxmin())
break;
6997 if (
fYbuf[marker] <
gPad->GetUymin())
break;
6998 if (fXbuf[marker] >
gPad->GetUxmax())
break;
6999 if (
fYbuf[marker] >
gPad->GetUymax())
break;
7005 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
7028 R__TMatrixFBase->
Draw(option);
7034 R__TMatrixDBase->
Draw(option);
7040 R__TVectorF->
Draw(option);
7046 R__TVectorD->
Draw(option);
7064 while ((obj =
next())) {
7071 if (stats && dostat) {
7077 if (!dofit) fit = 0;
7078 if (dofit == 1) dofit = 111;
7079 if (dostat == 1) dostat = 1111;
7080 Int_t print_name = dostat%10;
7081 Int_t print_entries = (dostat/10)%10;
7082 Int_t print_mean = (dostat/100)%10;
7083 Int_t print_stddev = (dostat/1000)%10;
7084 Int_t print_under = (dostat/10000)%10;
7085 Int_t print_over = (dostat/100000)%10;
7086 Int_t print_integral= (dostat/1000000)%10;
7087 Int_t print_skew = (dostat/10000000)%10;
7088 Int_t print_kurt = (dostat/100000000)%10;
7089 Int_t nlines = print_name + print_entries + print_mean + print_stddev +
7090 print_under + print_over + print_integral +
7091 print_skew + print_kurt;
7092 Int_t print_fval = dofit%10;
7093 Int_t print_ferrors = (dofit/10)%10;
7094 Int_t print_fchi2 = (dofit/100)%10;
7095 Int_t print_fprob = (dofit/1000)%10;
7096 Int_t nlinesf = print_fval + print_fchi2 + print_fprob;
7099 else nlinesf += fit->
GetNpar();
7105 if (!dostat && !fit) {
7144 if (print_entries) {
7151 if (print_mean == 1) {
7152 snprintf(textstats,50,
"%s = %s%s",gStringMean.
Data(),
"%",stats->
GetStatFormat());
7153 snprintf(t,100,textstats,
fH->
GetMean(1));
7155 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMean.
Data(),
"%",stats->
GetStatFormat()
7161 if (print_mean == 1) {
7162 snprintf(textstats,50,
"%s = %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat());
7163 snprintf(t,100,textstats,
fH->
GetMean(2));
7165 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat()
7173 if (print_stddev == 1) {
7174 snprintf(textstats,50,
"%s = %s%s",gStringStdDev.
Data(),
"%",stats->
GetStatFormat());
7177 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDev.
Data(),
"%",stats->
GetStatFormat()
7183 if (print_stddev == 1) {
7184 snprintf(textstats,50,
"%s = %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat());
7187 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat()
7195 snprintf(textstats,50,
"%s = %s%s",gStringUnderflow.
Data(),
"%",stats->
GetStatFormat());
7200 snprintf(textstats,50,
"%s = %s%s",gStringOverflow.
Data(),
"%",stats->
GetStatFormat());
7204 if (print_integral) {
7205 if (print_integral == 1) {
7206 snprintf(textstats,50,
"%s = %s%s",gStringIntegral.
Data(),
"%",stats->
GetStatFormat());
7209 snprintf(textstats,50,
"%s = %s%s",gStringIntegralBinWidth.
Data(),
"%",stats->
GetStatFormat());
7210 snprintf(t,100,textstats,
fH->
Integral(
"width"));
7215 if (print_skew == 1) {
7216 snprintf(textstats,50,
"%s = %s%s",gStringSkewness.
Data(),
"%",stats->
GetStatFormat());
7219 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewness.
Data(),
"%",stats->
GetStatFormat()
7226 if (print_kurt == 1) {
7227 snprintf(textstats,50,
"%s = %s%s",gStringKurtosis.
Data(),
"%",stats->
GetStatFormat());
7230 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosis.
Data(),
"%",stats->
GetStatFormat()
7240 snprintf(textstats,50,
"#chi^{2} / ndf = %s%s / %d",
"%",stats->
GetFitFormat(),ndf);
7242 if (print_fchi2) stats->
AddText(t);
7244 snprintf(textstats,50,
"Prob = %s%s",
"%",stats->
GetFitFormat());
7248 if (print_fval || print_ferrors) {
7253 if (print_fval < 2 && parmin*parmax != 0 && parmin >= parmax)
continue;
7254 snprintf(t,100,
"%-8s ",fit->
GetParName(ipar));
7257 if (print_ferrors) {
7258 snprintf(textstats,50,
"= %s%s #pm %s ",
"%",stats->
GetFitFormat(),
7263 snprintf(textstats,50,
"= %s%s ",
"%",stats->
GetFitFormat());
7291 while ((obj =
next())) {
7297 if (stats && dostat) {
7303 if (dostat == 1) dostat = 1111;
7304 Int_t print_name = dostat%10;
7305 Int_t print_entries = (dostat/10)%10;
7306 Int_t print_mean = (dostat/100)%10;
7307 Int_t print_stddev = (dostat/1000)%10;
7308 Int_t print_under = (dostat/10000)%10;
7309 Int_t print_over = (dostat/100000)%10;
7310 Int_t print_integral= (dostat/1000000)%10;
7311 Int_t print_skew = (dostat/10000000)%10;
7312 Int_t print_kurt = (dostat/100000000)%10;
7313 Int_t nlines = print_name + print_entries + 2*print_mean + 2*print_stddev + print_integral;
7314 if (print_under || print_over) nlines += 3;
7319 if (!dostat && !fit) {
7359 if (print_entries) {
7366 if (print_mean == 1) {
7367 snprintf(textstats,50,
"%s = %s%s",gStringMeanX.
Data(),
"%",stats->
GetStatFormat());
7368 snprintf(t,50,textstats,h2->
GetMean(1));
7370 snprintf(textstats,50,
"%s = %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat());
7371 snprintf(t,100,textstats,h2->
GetMean(2));
7374 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanX.
Data(),
"%",stats->
GetStatFormat()
7378 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat()
7385 if (print_stddev == 1) {
7386 snprintf(textstats,50,
"%s = %s%s",gStringStdDevX.
Data(),
"%",stats->
GetStatFormat());
7387 snprintf(t,100,textstats,h2->
GetStdDev(1));
7389 snprintf(textstats,50,
"%s = %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat());
7390 snprintf(t,100,textstats,h2->
GetStdDev(2));
7393 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevX.
Data(),
"%",stats->
GetStatFormat()
7397 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat()
7403 if (print_integral) {
7404 snprintf(textstats,50,
"%s = %s%s",gStringIntegral.
Data(),
"%",stats->
GetStatFormat());
7409 if (print_skew == 1) {
7410 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessX.
Data(),
"%",stats->
GetStatFormat());
7413 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessY.
Data(),
"%",stats->
GetStatFormat());
7417 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessX.
Data(),
"%",stats->
GetStatFormat()
7421 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessY.
Data(),
"%",stats->
GetStatFormat()
7428 if (print_kurt == 1) {
7429 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisX.
Data(),
"%",stats->
GetStatFormat());
7432 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisY.
Data(),
"%",stats->
GetStatFormat());
7436 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisX.
Data(),
"%",stats->
GetStatFormat()
7440 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisY.
Data(),
"%",stats->
GetStatFormat()
7446 if (print_under || print_over) {
7457 unov[0] = h2->
Integral( 0, firstX-1, lastY+1, cellsY );
7458 unov[1] = h2->
Integral(firstX , lastX , lastY+1, cellsY );
7459 unov[2] = h2->
Integral(lastX+1, cellsX , lastY+1, cellsY );
7460 unov[3] = h2->
Integral( 0, firstX-1, firstY , lastY );
7461 unov[4] = h2->
Integral(firstX , lastX , firstY , lastY );
7462 unov[5] = h2->
Integral(lastX+1, cellsX , firstY , lastY );
7463 unov[6] = h2->
Integral( 0, firstX-1, 0, firstY-1);
7464 unov[7] = h2->
Integral(firstX, lastX, 0, firstY-1);
7465 unov[8] = h2->
Integral(lastX+1, cellsX , 0, firstY-1);
7467 snprintf(t, 100,
" %7d|%7d|%7d\n", (
Int_t)unov[0], (
Int_t)unov[1], (
Int_t)unov[2]);
7470 snprintf(t, 100,
" %7d|%7d|%7d\n", (
Int_t)unov[3], (
Int_t)unov[4], (
Int_t)unov[5]);
7480 Int_t ndf = fit->GetNDF();
7481 snprintf(t,100,
"#chi^{2} / ndf = %6.4g / %d",(
Float_t)fit->GetChisquare(),ndf);
7483 for (
Int_t ipar=0;ipar<fit->GetNpar();ipar++) {
7484 snprintf(t,100,
"%-8s = %5.4g #pm %5.4g ",fit->GetParName(ipar)
7485 ,(
Float_t)fit->GetParameter(ipar)
7486 ,(
Float_t)fit->GetParError(ipar));
7511 while ((obj =
next())) {
7517 if (stats && dostat) {
7523 if (dostat == 1) dostat = 1111;
7524 Int_t print_name = dostat%10;
7525 Int_t print_entries = (dostat/10)%10;
7526 Int_t print_mean = (dostat/100)%10;
7527 Int_t print_stddev = (dostat/1000)%10;
7528 Int_t print_under = (dostat/10000)%10;
7529 Int_t print_over = (dostat/100000)%10;
7530 Int_t print_integral= (dostat/1000000)%10;
7531 Int_t print_skew = (dostat/10000000)%10;
7532 Int_t print_kurt = (dostat/100000000)%10;
7533 Int_t nlines = print_name + print_entries + 3*print_mean + 3*print_stddev + print_integral;
7534 if (print_under || print_over) nlines += 3;
7539 if (!dostat && !fit) {
7577 if (print_entries) {
7584 if (print_mean == 1) {
7585 snprintf(textstats,50,
"%s = %s%s",gStringMeanX.
Data(),
"%",stats->
GetStatFormat());
7586 snprintf(t,100,textstats,h3->
GetMean(1));
7588 snprintf(textstats,50,
"%s = %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat());
7589 snprintf(t,100,textstats,h3->
GetMean(2));
7591 snprintf(textstats,50,
"%s = %s%s",gStringMeanZ.
Data(),
"%",stats->
GetStatFormat());
7592 snprintf(t,100,textstats,h3->
GetMean(3));
7595 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanX.
Data(),
"%",stats->
GetStatFormat()
7599 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanY.
Data(),
"%",stats->
GetStatFormat()
7603 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringMeanZ.
Data(),
"%",stats->
GetStatFormat()
7610 if (print_stddev == 1) {
7611 snprintf(textstats,50,
"%s = %s%s",gStringStdDevX.
Data(),
"%",stats->
GetStatFormat());
7612 snprintf(t,100,textstats,h3->
GetStdDev(1));
7614 snprintf(textstats,50,
"%s = %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat());
7615 snprintf(t,100,textstats,h3->
GetStdDev(2));
7617 snprintf(textstats,50,
"%s = %s%s",gStringStdDevZ.
Data(),
"%",stats->
GetStatFormat());
7618 snprintf(t,100,textstats,h3->
GetStdDev(3));
7621 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevX.
Data(),
"%",stats->
GetStatFormat()
7625 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevY.
Data(),
"%",stats->
GetStatFormat()
7629 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringStdDevZ.
Data(),
"%",stats->
GetStatFormat()
7635 if (print_integral) {
7636 snprintf(t,100,
"%s = %6.4g",gStringIntegral.
Data(),h3->
Integral());
7640 if (print_skew == 1) {
7641 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessX.
Data(),
"%",stats->
GetStatFormat());
7644 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessY.
Data(),
"%",stats->
GetStatFormat());
7647 snprintf(textstats,50,
"%s = %s%s",gStringSkewnessZ.
Data(),
"%",stats->
GetStatFormat());
7651 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessX.
Data(),
"%",stats->
GetStatFormat()
7655 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessY.
Data(),
"%",stats->
GetStatFormat()
7659 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringSkewnessZ.
Data(),
"%",stats->
GetStatFormat()
7666 if (print_kurt == 1) {
7667 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisX.
Data(),
"%",stats->
GetStatFormat());
7670 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisY.
Data(),
"%",stats->
GetStatFormat());
7673 snprintf(textstats,50,
"%s = %s%s",gStringKurtosisZ.
Data(),
"%",stats->
GetStatFormat());
7677 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisX.
Data(),
"%",stats->
GetStatFormat()
7681 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisY.
Data(),
"%",stats->
GetStatFormat()
7685 snprintf(textstats,50,
"%s = %s%s #pm %s%s",gStringKurtosisZ.
Data(),
"%",stats->
GetStatFormat()
7691 if (print_under || print_over) {
7724 snprintf(t,100,
"%-8s = %5.4g #pm %5.4g ",fit->
GetParName(ipar)
7752 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
7763 if (deltaz == 0) deltaz = 1;
7834 Error(
"PaintSurface",
"no TView in current pad");
7841 view->
SetView(phideg, thedeg, psideg, irep);
7851 fLego->TAttFill::Modify();
7853 Int_t backcolor =
gPad->GetFrameFillColor();
7859 fLego->TAttFill::Modify();
7865 if (Hoption.
Surf == 13 || Hoption.
Surf == 15) {
7875 Hoption.
Surf = hoption35;
7882 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 14 || Hoption.
Surf == 17) {
7891 if (Hoption.
Surf == 14) {
7897 fmax = fmin + (yligh1+0.1)*(qd+qs);
7902 if (!colref)
return;
7907 for (
Int_t col=0;col<nbcol;col++) {
7908 acol =
gROOT->GetColor(col+icol1);
7910 if (acol) acol->
SetRGB(r,g,b);
7920 }
else if (Hoption.
Surf == 15) {
7924 if (Hoption.
Surf == 11 || Hoption.
Surf == 12 || Hoption.
Surf == 16 || Hoption.
Surf == 17) {
7953 if (Hoption.
Surf == 17) {
7966 if ((!Hoption.
Same) &&
7967 (Hoption.
Surf == 1 || Hoption.
Surf == 13 || Hoption.
Surf == 16)) {
8000 if (!dt && !dtOld)
return;
8009 if (Hparam.
zmin == 0 && Hparam.
zmax == 0) {Hparam.
zmin = -1; Hparam.
zmax = 1;}
8013 Error(
"PaintTriangles",
"no TView in current pad, do not use option SAME");
8018 if (!rmin || !rmax)
return;
8026 fXbuf[0] = Hparam.
xmin;
8028 fXbuf[1] = Hparam.
ymin;
8030 fXbuf[2] = Hparam.
zmin;
8037 Error(
"PaintTriangles",
"no TView in current pad");
8044 view->
SetView(phideg, thedeg, psideg, irep);
8049 fLego->TAttFill::Modify();
8050 Int_t backcolor =
gPad->GetFrameFillColor();
8055 fLego->TAttFill::Modify();
8076 if (!Hoption.
Axis && !Hoption.
Same) {
8098 Warning(
"PaintSurface",
"too many color levels, %d, reset to 8", ndivz);
8105 for (i = 0; i < ndivz; ++i) {
8112 delete [] colorlevel;
8136 if (Hoption.
Func == 2) {
8175 if (!Hoption.
Lego && !Hoption.
Surf &&
8181 while ((obj =
next())) {
8187 if (Hoption.
Same != 1) {
8189 if (!
gPad->PadInSelectionMode() && !
gPad->PadInHighlightMode()) {
8210 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
return;
8226 while ((obj=
next())) {
8233 g->TAttLine::Modify();
8234 g->TAttMarker::Modify();
8235 g->TAttFill::Modify();
8236 if (line) g->
Paint(
"L");
8237 if (fill) g->
Paint(
"F");
8238 if (mark) g->
Paint(
"P");
8248 while ((g = (
TGraph*) nextg())) {
8249 g->TAttLine::Modify();
8250 g->TAttMarker::Modify();
8251 g->TAttFill::Modify();
8252 if (line) g->
Paint(
"L");
8253 if (fill) g->
Paint(
"F");
8254 if (mark) g->
Paint(
"P");
8268 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
8271 Int_t ncolors, color, theColor;
8302 while ((obj=
next())) {
8311 if (z < zmin)
continue;
8316 if (z < zc)
continue;
8318 for (
Int_t k=0; k<ndiv; k++) {
8327 color =
Int_t(0.01+(z-zmin)*scale);
8330 if (theColor > ncolors-1) theColor = ncolors-1;
8336 g->TAttFill::Modify();
8347 while ((g = (
TGraph*) nextg())) {
8349 g->TAttFill::Modify();
8365 if (
gPad->PadInHighlightMode() &&
gPad->GetSelected() !=
fH)
8368 Int_t k, loop, marker=0;
8369 Double_t z, xk,xstep, yk, ystep, xp, yp;
8383 scale = (
kNMAX-1)/dz;
8397 while ((obj=
next())) {
8400 if (a>maxarea) maxarea =
a;
8405 while ((obj=
next())) {
8409 if (z < zmin) z = zmin;
8410 if (z > zmax) z = zmax;
8425 if (k <= 0 || z <= 0)
continue;
8428 if (k+marker >=
kNMAX) {
8429 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8432 xp = (random.
Rndm(loop)*xstep) + xk;
8433 yp = (random.
Rndm(loop)*ystep) + yk;
8441 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8449 if (k <= 0 || z <= 0)
continue;
8452 if (k+marker >=
kNMAX) {
8453 gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8456 xp = (random.
Rndm(loop)*xstep) + xk;
8457 yp = (random.
Rndm(loop)*ystep) + yk;
8465 if (marker > 0)
gPad->PaintPolyMarker(marker, fXbuf,
fYbuf);
8487 if (Hoption.
Text >= 1000) angle = Hoption.
Text%1000;
8491 if (Hoption.
Text == 1) angle = 0;
8493 text.TAttText::Modify();
8500 while ((obj=
next())) {
8517 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
8520 snprintf(value,50,format,z,e);
8522 snprintf(value,50,format,z);
8547 if (Hoption.
Text >= 1000) angle = Hoption.
Text%1000;
8558 if (Hoption.
Text == 1) angle = 90;
8562 text.TAttText::Modify();
8576 if (yt == 0.)
continue;
8577 snprintf(value,50,format,yt);
8586 if (y >=
gPad->GetY2())
continue;
8587 if (y <= gPad->GetY1())
continue;
8594 if (Hoption.
Text == 1) angle = 0;
8596 text.TAttText::Modify();
8613 if (Hoption.
Text>2000) {
8615 snprintf(format,32,
"#splitline{%s%s}{#pm %s%s}",
8618 snprintf(value,50,format,z,e);
8620 snprintf(value,50,format,z);
8653 Error(
"PaintTF3",
"no TView in current pad");
8659 view->
SetView(phideg, thedeg, psideg, irep);
8706 if (Hoption.
Same)
return;
8712 while ((obj =
next())) {
8715 if (strcmp(title->
GetName(),
"title")) {title = 0;
continue;}
8719 if (title)
delete title;
8725 if (ht <= 0) ht = 0.05;
8746 if (talh < 1) talh = 1;
if (talh > 3) talh = 3;
8748 if (talv < 1) talv = 1;
if (talv > 3) talv = 3;
8752 if (talh == 2) xpos = xpos-wt/2.;
8753 if (talh == 3) xpos = xpos-wt;
8754 if (talv == 2) ypos = ypos+ht/2.;
8755 if (talv == 1) ypos = ypos+ht;
8773 if(!
gPad->IsEditable())
delete ptitle;
8783 if (!strcmp(mess,
"SetF3")) {
8785 }
else if (!strcmp(mess,
"SetF3ClippingBoxOff")) {
8787 }
else if (!strcmp(mess,
"SetF3ClippingBoxOn")) {
8886 if (Hoption.
Same)
return;
8894 Double_t xmin_aid, ymin_aid, xmax_aid, ymax_aid;
8895 if (Hoption.
Proj ==1) {
8902 if (xmin > xmin_aid) xmin = xmin_aid;
8903 if (ymin > ymin_aid) ymin = ymin_aid;
8904 if (xmax < xmax_aid) xmax = xmax_aid;
8905 if (ymax < ymax_aid) ymax = ymax_aid;
8906 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
8910 if (xmin >xmin_aid) xmin = xmin_aid;
8911 if (xmax <xmax_aid) xmax = xmax_aid;
8913 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
8916 if (ymin >ymin_aid) ymin = ymin_aid;
8917 if (ymax <ymax_aid) ymax = ymax_aid;
8919 }
else if ( Hoption.
Proj ==2) {
8920 if (Hparam.
ymin <= -90 || Hparam.
ymax >=90) {
8921 Warning(
"Mercator Projection",
"Latitude out of range %f or %f", Hparam.
ymin, Hparam.
ymax);
8927 }
else if (Hoption.
Proj == 3) {
8933 if (xmin > xmin_aid) xmin = xmin_aid;
8934 if (ymin > ymin_aid) ymin = ymin_aid;
8935 if (xmax < xmax_aid) xmax = xmax_aid;
8936 if (ymax < ymax_aid) ymax = ymax_aid;
8937 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
8940 if (xmin >xmin_aid) xmin = xmin_aid;
8941 if (xmax <xmax_aid) xmax = xmax_aid;
8943 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
8946 if (ymin >ymin_aid) ymin = ymin_aid;
8947 if (ymax <ymax_aid) ymax = ymax_aid;
8949 }
else if (Hoption.
Proj == 4) {
8955 if (xmin > xmin_aid) xmin = xmin_aid;
8956 if (ymin > ymin_aid) ymin = ymin_aid;
8957 if (xmax < xmax_aid) xmax = xmax_aid;
8958 if (ymax < ymax_aid) ymax = ymax_aid;
8959 if (Hparam.
ymin<0 && Hparam.
ymax>0) {
8962 if (xmin >xmin_aid) xmin = xmin_aid;
8963 if (xmax <xmax_aid) xmax = xmax_aid;
8965 if (Hparam.
xmin<0 && Hparam.
xmax>0) {
8968 if (ymin >ymin_aid) ymin = ymin_aid;
8969 if (ymax <ymax_aid) ymax = ymax_aid;
8984 gPad->Range(xmin - dxr*
gPad->GetLeftMargin(),
8985 ymin - dyr*
gPad->GetBottomMargin(),
8986 xmax + dxr*
gPad->GetRightMargin(),
8987 ymax + dyr*
gPad->GetTopMargin());
8988 gPad->RangeAxis(xmin, ymin, xmax, ymax);
9013 static const char *where =
"TableInit";
9026 Hparam.
xlast = last;
9040 if (Hparam.
xmin <=0 || Hparam.
xmax <=0) {
9041 Error(where,
"cannot set X axis to log scale");
9047 if (Hparam.
xlast > last) Hparam.
xlast = last;
9055 Hparam.
ylast = last;
9069 if (Hparam.
ymin <=0 || Hparam.
ymax <=0) {
9070 Error(where,
"cannot set Y axis to log scale");
9076 if (Hparam.
ylast > last) Hparam.
ylast = last;
9092 if (Hoption.
Error) {
9105 if (Hoption.
Logz && zmax < 0) {
9106 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
9108 }
else if (Hoption.
Logz && zmin>=0 && zmax==0) {
9114 if (zmax > 0) zmin = 0.001*zmax;
9116 if (!Hoption.
Same)
Error(where,
"log scale is requested but maximum is less or equal 0 (%f)", zmax);
9126 if (allchan) factor /= allchan;
9127 if (factor == 0) factor = 1;
9156 zmax += yMARGIN*(zmax-zmin);
9164 if (zmin >= 0) zmin = 0;
9165 else zmin -= yMARGIN*(zmax-zmin);
9167 Double_t dzmin = yMARGIN*(zmax-zmin);
9168 if (zmin >= 0 && (zmin-dzmin <= 0)) zmin = 0;
9193 char tf[20], tv[64];
9196 snprintf(tf,20,
"%s%s",
"%",f);
9197 snprintf(tv,64,tf,v);
9201 int ie = sv.
Index(
"e");
9202 int iE = sv.
Index(
"E");
9203 int id = sv.
Index(
".");
9207 if (ie >= 0 || iE >= 0) {
9208 if (sv.
Index(
"+") >= 0) {
9210 snprintf(ef,20,
"%s.1f",
"%");
9213 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
9215 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
9220 snprintf(ef,20,
"%s.%de",
"%",ie-
id-1);
9222 snprintf(ef,20,
"%s.%dE",
"%",iE-
id-1);
9227 }
else if (
id < 0) {
9228 snprintf(ef,20,
"%s.1f",
"%");
9233 snprintf(ef,20,
"%s.%df",
"%",sv.
Length()-
id-1);
9250 if (opt.
Contains(
"x")) projection = 1;
9251 if (opt.
Contains(
"y")) projection = 2;
9252 if (opt.
Contains(
"z")) projection = 3;
9253 if (opt.
Contains(
"xy")) projection = 4;
9254 if (opt.
Contains(
"yx")) projection = 5;
9255 if (opt.
Contains(
"xz")) projection = 6;
9256 if (opt.
Contains(
"zx")) projection = 7;
9257 if (opt.
Contains(
"yz")) projection = 8;
9258 if (opt.
Contains(
"zy")) projection = 9;
9262 gROOT->MakeDefCanvas();
9275 gPad->SetDoubleBuffer(0);
9279 static int pyold1 = 0;
9280 static int pyold2 = 0;
9281 float uxmin =
gPad->GetUxmin();
9282 float uxmax =
gPad->GetUxmax();
9283 int pxmin =
gPad->XtoAbsPixel(uxmin);
9284 int pxmax =
gPad->XtoAbsPixel(uxmax);
9287 Int_t biny1 = fH->GetYaxis()->FindBin(y);
9289 Int_t py1 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinLowEdge(biny1));
9290 Int_t py2 =
gPad->YtoAbsPixel(fH->GetYaxis()->GetBinUpEdge(biny2));
9315 TH1D *hp = ((
TH2*)fH)->ProjectionX(prjName, biny1, biny2);
9319 if (biny1 == biny2) {
9320 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
9321 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny1);
9324 if (fH->GetYaxis()->GetLabels() !=
NULL) {
9325 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf] %s", biny1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetYaxis()->GetBinLabel(biny1)));
9327 hp->SetTitle(
TString::Format(
"ProjectionX of biny=%d [y=%.*lf..%.*lf]", biny1, valuePrecision, valueFrom, valuePrecision, valueTo));
9330 Double_t valueFrom = fH->GetYaxis()->GetBinLowEdge(biny1);
9331 Double_t valueTo = fH->GetYaxis()->GetBinUpEdge(biny2);
9336 if (fH->GetYaxis()->GetLabels() !=
NULL) {
9337 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)));
9339 hp->SetTitle(
TString::Format(
"ProjectionX of biny=[%d,%d] [y=%.*lf..%.*lf]", biny1, biny2, valuePrecision, valueFrom, valuePrecision, valueTo));
9342 hp->SetXTitle(fH->GetXaxis()->GetTitle());
9343 hp->SetYTitle(
"Number of Entries");
9358 gPad->SetDoubleBuffer(0);
9362 static int pxold1 = 0;
9363 static int pxold2 = 0;
9364 float uymin =
gPad->GetUymin();
9365 float uymax =
gPad->GetUymax();
9366 int pymin =
gPad->YtoAbsPixel(uymin);
9367 int pymax =
gPad->YtoAbsPixel(uymax);
9370 Int_t binx1 = fH->GetXaxis()->FindBin(x);
9372 Int_t px1 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinLowEdge(binx1));
9373 Int_t px2 =
gPad->XtoAbsPixel(fH->GetXaxis()->GetBinUpEdge(binx2));
9398 TH1D *hp = ((
TH2*)fH)->ProjectionY(prjName, binx1, binx2);
9402 if (binx1 == binx2) {
9403 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
9404 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx1);
9407 if (fH->GetXaxis()->GetLabels() !=
NULL) {
9408 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf] [%s]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo, fH->GetXaxis()->GetBinLabel(binx1)));
9410 hp->SetTitle(
TString::Format(
"ProjectionY of binx=%d [x=%.*lf..%.*lf]", binx1, valuePrecision, valueFrom, valuePrecision, valueTo));
9413 Double_t valueFrom = fH->GetXaxis()->GetBinLowEdge(binx1);
9414 Double_t valueTo = fH->GetXaxis()->GetBinUpEdge(binx2);
9419 if (fH->GetXaxis()->GetLabels() !=
NULL) {
9420 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)));
9422 hp->SetTitle(
TString::Format(
"ProjectionY of binx=[%d,%d] [x=%.*lf..%.*lf]", binx1, binx2, valuePrecision, valueFrom, valuePrecision, valueTo));
9425 hp->SetXTitle(fH->GetYaxis()->GetTitle());
9426 hp->SetYTitle(
"Number of Entries");
9446 if (fH->GetDimension() < 3) {
9451 gPad->SetDoubleBuffer(0);
9467 static TPoint endface1[5];
9468 static TPoint endface2[5];
9477 int pxmin =
gPad->XtoAbsPixel(uxmin);
9478 int pxmax =
gPad->XtoAbsPixel(uxmax);
9479 if (pxmin==pxmax)
return;
9480 int pymin =
gPad->YtoAbsPixel(uymin);
9481 int pymax =
gPad->YtoAbsPixel(uymax);
9482 if (pymin==pymax)
return;
9483 Double_t cx = (pxmax-pxmin)/(uxmax-uxmin);
9484 Double_t cy = (pymax-pymin)/(uymax-uymin);
9499 Int_t biny = firstY +
Int_t((lastY-firstY)*(px-pxmin)/(pxmax-pxmin));
9504 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
9507 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
9508 if (nbins>1 && line1[0].GetX()) {
9519 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9520 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9523 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9524 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9531 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9532 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9535 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9536 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9542 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9543 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9546 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9547 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9553 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9554 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9557 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9558 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9560 endface1[0].
SetX(line1[0].GetX());
9561 endface1[0].
SetY(line1[0].GetY());
9562 endface1[1].
SetX(line2[0].GetX());
9563 endface1[1].
SetY(line2[0].GetY());
9564 endface1[2].
SetX(line3[0].GetX());
9565 endface1[2].
SetY(line3[0].GetY());
9566 endface1[3].
SetX(line4[0].GetX());
9567 endface1[3].
SetY(line4[0].GetY());
9568 endface1[4].
SetX(line1[0].GetX());
9569 endface1[4].
SetY(line1[0].GetY());
9571 endface2[0].
SetX(line1[1].GetX());
9572 endface2[0].
SetY(line1[1].GetY());
9573 endface2[1].
SetX(line2[1].GetX());
9574 endface2[1].
SetY(line2[1].GetY());
9575 endface2[2].
SetX(line3[1].GetX());
9576 endface2[2].
SetY(line3[1].GetY());
9577 endface2[3].
SetX(line4[1].GetX());
9578 endface2[3].
SetY(line4[1].GetY());
9579 endface2[4].
SetX(line1[1].GetX());
9580 endface2[4].
SetY(line1[1].GetY());
9602 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
9614 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
9619 Int_t binz = firstZ +
Int_t((lastZ-firstZ)*(py-pymin)/(pymax-pymin));
9622 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
9623 if (nbins>1 && line1[0].GetX()) {
9634 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9635 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9638 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9639 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9646 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9647 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9650 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9651 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9657 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9658 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9661 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9662 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9668 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9669 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9672 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9673 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9675 endface1[0].
SetX(line1[0].GetX());
9676 endface1[0].
SetY(line1[0].GetY());
9677 endface1[1].
SetX(line2[0].GetX());
9678 endface1[1].
SetY(line2[0].GetY());
9679 endface1[2].
SetX(line3[0].GetX());
9680 endface1[2].
SetY(line3[0].GetY());
9681 endface1[3].
SetX(line4[0].GetX());
9682 endface1[3].
SetY(line4[0].GetY());
9683 endface1[4].
SetX(line1[0].GetX());
9684 endface1[4].
SetY(line1[0].GetY());
9686 endface2[0].
SetX(line1[1].GetX());
9687 endface2[0].
SetY(line1[1].GetY());
9688 endface2[1].
SetX(line2[1].GetX());
9689 endface2[1].
SetY(line2[1].GetY());
9690 endface2[2].
SetX(line3[1].GetX());
9691 endface2[2].
SetY(line3[1].GetY());
9692 endface2[3].
SetX(line4[1].GetX());
9693 endface2[3].
SetY(line4[1].GetY());
9694 endface2[4].
SetX(line1[1].GetX());
9695 endface2[4].
SetY(line1[1].GetY());
9716 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
9728 Int_t binx = firstX +
Int_t((lastX-firstX)*(px-pxmin)/(pxmax-pxmin));
9733 Int_t biny = firstY +
Int_t((lastY-firstY)*(py-pymin)/(pymax-pymin));
9736 if (line1[0].GetX())
gVirtualX->DrawPolyLine(2,line1);
9737 if (nbins>1 && line1[0].GetX()) {
9748 line1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9749 line1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9752 line1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9753 line1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9760 line2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9761 line2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9764 line2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9765 line2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9771 line3[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9772 line3[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9775 line3[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9776 line3[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9782 line4[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9783 line4[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9786 line4[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9787 line4[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9789 endface1[0].
SetX(line1[0].GetX());
9790 endface1[0].
SetY(line1[0].GetY());
9791 endface1[1].
SetX(line2[0].GetX());
9792 endface1[1].
SetY(line2[0].GetY());
9793 endface1[2].
SetX(line3[0].GetX());
9794 endface1[2].
SetY(line3[0].GetY());
9795 endface1[3].
SetX(line4[0].GetX());
9796 endface1[3].
SetY(line4[0].GetY());
9797 endface1[4].
SetX(line1[0].GetX());
9798 endface1[4].
SetY(line1[0].GetY());
9800 endface2[0].
SetX(line1[1].GetX());
9801 endface2[0].
SetY(line1[1].GetY());
9802 endface2[1].
SetX(line2[1].GetX());
9803 endface2[1].
SetY(line2[1].GetY());
9804 endface2[2].
SetX(line3[1].GetX());
9805 endface2[2].
SetY(line3[1].GetY());
9806 endface2[3].
SetX(line4[1].GetX());
9807 endface2[3].
SetY(line4[1].GetY());
9808 endface2[4].
SetX(line1[1].GetX());
9809 endface2[4].
SetY(line1[1].GetY());
9830 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
9842 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
9845 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
9846 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
9851 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9852 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9853 rect1[4].
SetX(rect1[0].GetX());
9854 rect1[4].
SetY(rect1[0].GetY());
9857 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9858 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9861 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9862 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9865 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9866 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9873 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9874 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9875 rect2[4].
SetX(rect2[0].GetX());
9876 rect2[4].
SetY(rect2[0].GetY());
9879 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9880 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9883 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9884 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9887 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9888 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9900 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
9901 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
9913 Int_t binz = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
9916 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
9917 if (nbins>1 && rect2[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
9922 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9923 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9924 rect1[4].
SetX(rect1[0].GetX());
9925 rect1[4].
SetY(rect1[0].GetY());
9928 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9929 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9932 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9933 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9936 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9937 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9944 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9945 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9946 rect2[4].
SetX(rect2[0].GetX());
9947 rect2[4].
SetY(rect2[0].GetY());
9950 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9951 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9954 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9955 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9958 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9959 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9970 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
9971 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
9983 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
9986 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
9987 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
9992 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9993 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
9994 rect1[4].
SetX(rect1[0].GetX());
9995 rect1[4].
SetY(rect1[0].GetY());
9998 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
9999 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10002 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10003 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10006 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10007 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10014 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10015 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10016 rect2[4].
SetX(rect2[0].GetX());
10017 rect2[4].
SetY(rect2[0].GetY());
10020 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10021 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10024 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10025 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10028 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10029 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10040 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10041 hp->
SetYTitle(fH->GetXaxis()->GetTitle());
10053 Int_t biny = first +
Int_t((last-first)*(py-pymin)/(pymax-pymin));
10056 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10057 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10062 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10063 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10064 rect1[4].
SetX(rect1[0].GetX());
10065 rect1[4].
SetY(rect1[0].GetY());
10068 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10069 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10072 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10073 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10076 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10077 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10084 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10085 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10086 rect2[4].
SetX(rect2[0].GetX());
10087 rect2[4].
SetY(rect2[0].GetY());
10090 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10091 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10094 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10095 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10098 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10099 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10110 hp->
SetXTitle(fH->GetXaxis()->GetTitle());
10111 hp->
SetYTitle(fH->GetZaxis()->GetTitle());
10123 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
10126 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10127 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10132 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10133 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10134 rect1[4].
SetX(rect1[0].GetX());
10135 rect1[4].
SetY(rect1[0].GetY());
10138 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10139 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10142 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10143 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10146 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10147 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10154 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10155 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10156 rect2[4].
SetX(rect2[0].GetX());
10157 rect2[4].
SetY(rect2[0].GetY());
10160 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10161 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10164 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10165 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10168 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10169 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10180 hp->
SetXTitle(fH->GetZaxis()->GetTitle());
10181 hp->
SetYTitle(fH->GetYaxis()->GetTitle());
10193 Int_t binx = first +
Int_t((last-first)*(px-pxmin)/(pxmax-pxmin));
10196 if (rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect1);
10197 if (nbins>1 && rect1[0].GetX())
gVirtualX->DrawPolyLine(5,rect2);
10202 rect1[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10203 rect1[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10204 rect1[4].
SetX(rect1[0].GetX());
10205 rect1[4].
SetY(rect1[0].GetY());
10208 rect1[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10209 rect1[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10212 rect1[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10213 rect1[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10216 rect1[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10217 rect1[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10224 rect2[0].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10225 rect2[0].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10226 rect2[4].
SetX(rect2[0].GetX());
10227 rect2[4].
SetY(rect2[0].GetY());
10230 rect2[1].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10231 rect2[1].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10234 rect2[2].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10235 rect2[2].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10238 rect2[3].
SetX(pxmin +
Int_t((u[0]-uxmin)*cx));
10239 rect2[3].
SetY(pymin +
Int_t((u[1]-uymin)*cy));
10250 hp->
SetXTitle(fH->GetYaxis()->GetTitle());
10251 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
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.
static TString gStringSkewness
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
TList * GetListOfFunctions() const
static TString gStringSkewnessZ
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)
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.
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.
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.
virtual Int_t GetNumberFreeParameters() const
Return the number of free parameters.
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)
Control function to draw a 2D histogram as a violin plot
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
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
static TString gStringUnderflow
virtual void Paint2DErrors(Option_t *option)
Draw 2D histograms errors.
ClassImp(THistPainter) THistPainter
Default constructor.
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.
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.
static TString gStringMeanZ
static TString gStringKurtosisY
static TString gStringMeanY
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.
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.
static TString gStringKurtosisX
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
const UInt_t kCannotRotate
static TString gStringStdDevY
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)
Control function to draw a 2D histogram as a color plot.
Double_t GetXMax()
Returns the maximum value for the x coordinates of the bin.
Double_t baroffset
offset of bin for bars or legos [0,1]
virtual Bool_t IsInside(Int_t x, Int_t y)
Return kTRUE if the cell ix, iy is inside one of the graphical cuts.
Double_t GetYMin()
Returns the minimum value for the y coordinates of the bin.
void ImplicitFunction(Double_t *rmin, Double_t *rmax, Int_t nx, Int_t ny, Int_t nz, const char *chopt)
Draw implicit function FUN(X,Y,Z) = 0 in cartesian coordinates using hidden surface removal algorithm...
Float_t GetBarWidth() const
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along Y.
void DrawFaceMode1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *t)
Draw face - 1st variant (2 colors: 1st for external surface, 2nd for internal)
Double_t GetYMax()
Returns the maximum value for the y coordinates of the bin.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, const char *chopt)
Draw stack of lego-plots in cylindrical coordinates.
Int_t xfirst
first bin number along X
virtual void PaintLatex(Double_t x, Double_t y, Double_t angle, Double_t size, const char *text)
Main drawing function.
virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py)=0
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void DrawFaceMove1(Int_t *icodes, Double_t *xyz, Int_t np, Int_t *iface, Double_t *tt)
Draw face - 1st variant for "MOVING SCREEN" algorithm (draw face with level lines) ...
virtual void PaintTH2PolyScatterPlot(Option_t *option)
Control function to draw a TH2Poly as a scatter plot.
virtual Double_t GetXmax() const
static TString gStringKurtosis
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
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)
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
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
TPaveLabel title(3, 27.1, 15, 28.7,"ROOT Environment and Tools")
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
static TString gStringStdDevX
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.
void AddText(TPaveText *pave, const char *datamember, Double_t value, const char *comment)
static TString gStringKurtosisZ
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.
int Zero
if selected with any LEGO option the empty bins are not drawn.
virtual const char * GetName() const
Returns name of object.
static TString gStringEntries
static TString gStringSkewnessX
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...
TGraphDelaunay2D generates a Delaunay triangulation of a TGraph2D.
Style_t GetStatStyle() const
Int_t xlast
last bin number along X
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...
static TString gStringIntegralBinWidth
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.
static TString gStringOverflow
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
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.
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.
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.
static TString gStringIntegral
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.
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.
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...
static TString gStringMean
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 ...
static TString gStringStdDev
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
static TString gStringSkewnessY
2D Histogram with Polygonal Bins
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)}
static TString gStringMeanX
static TString gStringStdDevZ
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.