Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TPaletteAxis.cxx
Go to the documentation of this file.
1// @(#)root/histpainter:$Id$
2// Author: Rene Brun 15/11/2002
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#include "TROOT.h"
13#include "TPaletteAxis.h"
14#include "TVirtualPad.h"
15#include "TVirtualX.h"
16#include "TStyle.h"
17#include "TMath.h"
18#include "TView.h"
19#include "TH1.h"
20#include "TGaxis.h"
21#include "TLatex.h"
22#include "snprintf.h"
23
24#include <iostream>
25
27
28
29////////////////////////////////////////////////////////////////////////////////
30
31/*! \class TPaletteAxis
32 \ingroup Histpainter
33 \brief The palette painting class.
34
35A `TPaletteAxis` object is used to display the color palette when
36drawing 2-d histograms.
37
38The `TPaletteAxis` is automatically created drawn when drawing a 2-D
39histogram when the option "Z" is specified.
40
41A `TPaletteAxis` object is added to the histogram list of functions and
42can be retrieved doing:
43
44 TPaletteAxis *palette = (TPaletteAxis*)h->GetListOfFunctions()->FindObject("palette");
45
46then the pointer `palette` can be used to change the palette attributes.
47
48Because the palette is created at painting time only, one must issue a:
49
50 gPad->Update();
51
52before retrieving the palette pointer in order to create the palette. The following
53macro gives an example.
54
55Begin_Macro(source)
56{
57 auto h2 = new TH2F("h2","Example of a resized palette ",40,-4,4,40,-20,20);
58 Float_t px, py;
59 for (Int_t i = 0; i < 25000; i++) {
60 gRandom->Rannor(px,py);
61 h2->Fill(px,5*py);
62 }
63 gStyle->SetPalette(1);
64 h2->Draw("COLZ");
65 gPad->Update();
66 auto palette = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");
67 palette->SetY2NDC(0.7);
68}
69End_Macro
70
71`TPaletteAxis` inherits from `TBox` and `TPave`. The methods
72allowing to specify the palette position are inherited from these two classes.
73
74The palette can be interactively moved and resized. The context menu
75can be used to set the axis attributes.
76
77It is possible to select a range on the axis to set the min/max in z
78
79As default labels and ticks are drawn by `TGAxis` at equidistant (lin or log)
80points as controlled by SetNdivisions.
81If option "CJUST" is given labels and ticks are justified at the
82color boundaries defined by the contour levels.
83In this case no optimization can be done. It is responsibility of the
84user to adjust minimum, maximum of the histogram and/or the contour levels
85to get a reasonable look of the plot.
86Only overlap of the labels is avoided if too many contour levels are used.
87
88This option is especially useful with user defined contours.
89An example is shown here:
90
91Begin_Macro(source)
92{
93 gStyle->SetOptStat(0);
94 auto c = new TCanvas("c","exa_CJUST",300,10,400,400);
95 auto hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4);
96 // Fill histograms randomly
97 TRandom3 randomNum;
98 Float_t px, py;
99 for (Int_t i = 0; i < 25000; i++) {
100 randomNum.Rannor(px,py);
101 hpxpy->Fill(px,py);
102 }
103 hpxpy->SetMaximum(200);
104 Double_t zcontours[5] = {0, 20, 40, 80, 120};
105 hpxpy->SetContour(5, zcontours);
106 hpxpy->GetZaxis()->SetTickSize(0.01);
107 hpxpy->GetZaxis()->SetLabelOffset(0.01);
108 gPad->SetRightMargin(0.13);
109 hpxpy->SetTitle("User contours, CJUST");
110 hpxpy->Draw("COL Z CJUST");
111}
112End_Macro
113*/
114
115
116////////////////////////////////////////////////////////////////////////////////
117/// Palette default constructor.
118
120{
121 fH = nullptr;
122 SetName("");
123}
124
125
126////////////////////////////////////////////////////////////////////////////////
127/// Palette normal constructor.
128
130 : TPave(x1, y1, x2, y2)
131{
132 fH = h;
133 if (!fH) return;
134 SetName("palette");
135 TAxis *zaxis = fH->GetZaxis();
137 if (gPad->GetView()) SetBit(kHasView);
138}
139
140
141////////////////////////////////////////////////////////////////////////////////
142/// Palette destructor.
143
145{
146}
147
148
149////////////////////////////////////////////////////////////////////////////////
150/// Palette copy constructor.
151
153{
154 palette.TPaletteAxis::Copy(*this);
155}
156
157
158////////////////////////////////////////////////////////////////////////////////
159/// Assignment operator.
160
162{
163 if (this != &orig)
164 orig.TPaletteAxis::Copy(*this);
165 return *this;
166}
167
168
169////////////////////////////////////////////////////////////////////////////////
170/// Copy a palette to a palette.
171
173{
174 TPave::Copy(obj);
175 ((TPaletteAxis&)obj).fH = fH;
176}
177
178
179////////////////////////////////////////////////////////////////////////////////
180/// Check if mouse on the axis region.
181
183{
184 Int_t plxmax = gPad->XtoAbsPixel(fX2);
185 Int_t plymin = gPad->YtoAbsPixel(fY1);
186 Int_t plymax = gPad->YtoAbsPixel(fY2);
187 if (px > plxmax && px < plxmax + 30 && py >= plymax && py <= plymin) return px - plxmax;
188
189 //otherwise check if inside the box
190 return TPave::DistancetoPrimitive(px, py);
191}
192
193
194////////////////////////////////////////////////////////////////////////////////
195/// Check if mouse on the axis region.
196
198{
199 if (!gPad) return;
200
201 static Int_t kmode = 0;
202 Int_t plxmin = gPad->XtoAbsPixel(fX1);
203 Int_t plxmax = gPad->XtoAbsPixel(fX2);
204 if (kmode != 0 || px <= plxmax) {
205 if (event == kButton1Down) kmode = 1;
206 TBox::ExecuteEvent(event, px, py);
207 if (event == kButton1Up) kmode = 0;
208 // In case palette coordinates have been modified, recompute NDC coordinates
209 Double_t dpx = gPad->GetX2() - gPad->GetX1();
210 Double_t dpy = gPad->GetY2() - gPad->GetY1();
211 Double_t xp1 = gPad->GetX1();
212 Double_t yp1 = gPad->GetY1();
213 fX1NDC = (fX1 - xp1) / dpx;
214 fY1NDC = (fY1 - yp1) / dpy;
215 fX2NDC = (fX2 - xp1) / dpx;
216 fY2NDC = (fY2 - yp1) / dpy;
217 return;
218 }
219 gPad->SetCursor(kHand);
220 static Double_t ratio1, ratio2;
221 static Int_t px1old, py1old, px2old, py2old;
222 Double_t temp, xmin, xmax;
223
224 switch (event) {
225
226 case kButton1Down:
227 ratio1 = (gPad->AbsPixeltoY(py) - fY1) / (fY2 - fY1);
228 py1old = gPad->YtoAbsPixel(fY1 + ratio1 * (fY2 - fY1));
229 px1old = plxmin;
230 px2old = plxmax;
231 py2old = py1old;
232 gVirtualX->DrawBox(px1old, py1old, px2old, py2old, TVirtualX::kHollow);
233 gVirtualX->SetLineColor(-1);
234 // No break !!!
235
236 case kButton1Motion:
237 gVirtualX->DrawBox(px1old, py1old, px2old, py2old, TVirtualX::kHollow);
238 ratio2 = (gPad->AbsPixeltoY(py) - fY1) / (fY2 - fY1);
239 py2old = gPad->YtoAbsPixel(fY1 + ratio2 * (fY2 - fY1));
240 gVirtualX->DrawBox(px1old, py1old, px2old, py2old, TVirtualX::kHollow);
241 break;
242
243 case kButton1Up:
244 if (gROOT->IsEscaped()) {
245 gROOT->SetEscape(kFALSE);
246 break;
247 }
248
249 ratio2 = (gPad->AbsPixeltoY(py) - fY1) / (fY2 - fY1);
250 xmin = ratio1;
251 xmax = ratio2;
252 if (xmin > xmax) {
253 temp = xmin;
254 xmin = xmax;
255 xmax = temp;
256 temp = ratio1;
257 ratio1 = ratio2;
258 ratio2 = temp;
259 }
260 if (ratio2 - ratio1 > 0.05) {
261 if (fH) {
262 if (fH->GetDimension() == 2) {
263 Double_t zmin = fH->GetMinimum();
264 Double_t zmax = fH->GetMaximum();
265 if (gPad->GetLogz()) {
266 if (zmin <= 0 && zmax > 0) zmin = TMath::Min((Double_t)1,
267 (Double_t)0.001 * zmax);
268 zmin = TMath::Log10(zmin);
269 zmax = TMath::Log10(zmax);
270 }
271 Double_t newmin = zmin + (zmax - zmin) * ratio1;
272 Double_t newmax = zmin + (zmax - zmin) * ratio2;
273 if (newmin < zmin)newmin = fH->GetBinContent(fH->GetMinimumBin());
274 if (newmax > zmax)newmax = fH->GetBinContent(fH->GetMaximumBin());
275 if (gPad->GetLogz()) {
276 newmin = TMath::Exp(2.302585092994 * newmin);
277 newmax = TMath::Exp(2.302585092994 * newmax);
278 }
279 fH->SetMinimum(newmin);
280 fH->SetMaximum(newmax);
282 }
283 }
284 gPad->Modified(kTRUE);
285 }
286 gVirtualX->SetLineColor(-1);
287 kmode = 0;
288 break;
289 }
290}
291
292
293////////////////////////////////////////////////////////////////////////////////
294/// Returns the color index of the bin (i,j).
295///
296/// This function should be used after an histogram has been plotted with the
297/// option COL or COLZ like in the following example:
298///
299/// h2->Draw("COLZ");
300/// gPad->Update();
301/// TPaletteAxis *palette = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");
302/// Int_t ci = palette->GetBinColor(20,15);
303///
304/// Then it is possible to retrieve the RGB components in the following way:
305///
306/// TColor *c = gROOT->GetColor(ci);
307/// float x,y,z;
308/// c->GetRGB(x,y,z);
309
311{
312 if (!fH) return 0;
313 Double_t zc = fH->GetBinContent(i, j);
314 return GetValueColor(zc);
315}
316
317
318////////////////////////////////////////////////////////////////////////////////
319/// Displays the z value corresponding to cursor position py.
320
321char *TPaletteAxis::GetObjectInfo(Int_t /* px */, Int_t py) const
322{
323 Double_t z;
324 static char info[64];
325
326 Double_t zmin = 0.;
327 Double_t zmax = 0.;
328 if (fH) {
329 zmin = fH->GetMinimum();
330 zmax = fH->GetMaximum();
331 }
332 Int_t y1 = gPad->GetWh() - gPad->VtoPixel(fY1NDC);
333 Int_t y2 = gPad->GetWh() - gPad->VtoPixel(fY2NDC);
334 Int_t y = gPad->GetWh() - py;
335
336 if (gPad->GetLogz()) {
337 if (zmin <= 0 && zmax > 0) zmin = TMath::Min((Double_t)1,
338 (Double_t)0.001 * zmax);
339 Double_t zminl = TMath::Log10(zmin);
340 Double_t zmaxl = TMath::Log10(zmax);
341 Double_t zl = (zmaxl - zminl) * ((Double_t)(y - y1) / (Double_t)(y2 - y1)) + zminl;
342 z = TMath::Power(10., zl);
343 } else {
344 z = (zmax - zmin) * ((Double_t)(y - y1) / (Double_t)(y2 - y1)) + zmin;
345 }
346
347 snprintf(info, 64, "(z=%g)", z);
348 return info;
349}
350
351
352////////////////////////////////////////////////////////////////////////////////
353/// Returns the color index of the given z value
354///
355/// This function should be used after an histogram has been plotted with the
356/// option COL or COLZ like in the following example:
357///
358/// h2->Draw("COLZ");
359/// gPad->Update();
360/// TPaletteAxis *palette = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");
361/// Int_t ci = palette->GetValueColor(30.);
362///
363/// Then it is possible to retrieve the RGB components in the following way:
364///
365/// TColor *c = gROOT->GetColor(ci);
366/// float x,y,z;
367/// c->GetRGB(x,y,z);
368
370{
371 if (!fH) return 0;
372
375 Double_t wlmin = wmin;
376 Double_t wlmax = wmax;
377
378 if (gPad->GetLogz()) {
379 if (wmin <= 0 && wmax > 0) wmin = TMath::Min((Double_t)1,
380 (Double_t)0.001 * wmax);
381 wlmin = TMath::Log10(wmin);
382 wlmax = TMath::Log10(wmax);
383 }
384
385 Int_t ncolors = gStyle->GetNumberOfColors();
386 Int_t ndivz =0;
387 if (fH) ndivz = fH->GetContour();
388 if (ndivz == 0) return 0;
389 ndivz = TMath::Abs(ndivz);
390 Int_t theColor, color;
391 Double_t scale = ndivz / (wlmax - wlmin);
392
393 if (fH->TestBit(TH1::kUserContour) && gPad->GetLogz()) zc = TMath::Log10(zc);
394 if (zc < wlmin) zc = wlmin;
395
396 color = Int_t(0.01 + (zc - wlmin) * scale);
397
398 theColor = Int_t((color + 0.99) * Double_t(ncolors) / Double_t(ndivz));
399 return gStyle->GetColorPalette(theColor);
400}
401
402
403////////////////////////////////////////////////////////////////////////////////
404/// Paint the palette.
405
407{
408
409 if (!fH) return;
410
412
413 SetFillStyle(1001);
414 Double_t ymin = fY1;
415 Double_t ymax = fY2;
416 Double_t xmin = fX1;
417 Double_t xmax = fX2;
420 Double_t wlmin = wmin;
421 Double_t wlmax = wmax;
422 Double_t b1, b2, w1, w2, zc;
423 Bool_t kHorizontal = false;
424
425 if ((wlmax - wlmin) <= 0) {
426 Double_t mz = wlmin * 0.1;
427 if (mz == 0) mz = 0.1;
428 wlmin = wlmin - mz;
429 wlmax = wlmax + mz;
430 wmin = wlmin;
431 wmax = wlmax;
432 }
433
434 if (GetX2NDC()-GetX1NDC() > GetY2NDC()-GetY1NDC()) kHorizontal = true;
435
436 if (gPad->GetLogz()) {
437 if (wmin <= 0 && wmax > 0) wmin = TMath::Min((Double_t)1, (Double_t)0.001 * wmax);
438 wlmin = TMath::Log10(wmin);
439 wlmax = TMath::Log10(wmax);
440 }
441 Double_t ws = wlmax - wlmin;
442 Int_t ncolors = gStyle->GetNumberOfColors();
443 Int_t ndivz = fH->GetContour();
444 if (ndivz == 0) return;
445 ndivz = TMath::Abs(ndivz);
446 Int_t theColor, color;
447 // import Attributes already here since we might need them for CJUST
449 // case option "CJUST": put labels directly at color boundaries
450 TLatex *label = nullptr;
451 TLine *line = nullptr;
452 Double_t prevlab = 0;
453 TString opt(fH->GetDrawOption());
454 if (opt.Contains("CJUST", TString::kIgnoreCase)) {
455 label = new TLatex();
458 if (kHorizontal) label->SetTextAlign(kHAlignCenter+kVAlignTop);
460 line = new TLine();
462 if (kHorizontal) line->PaintLine(xmin, ymin, xmax, ymin);
463 else line->PaintLine(xmax, ymin, xmax, ymax);
464 }
465 Double_t scale = ndivz / (wlmax - wlmin);
466 for (Int_t i = 0; i < ndivz; i++) {
467
468 zc = fH->GetContourLevel(i);
469 if (fH->TestBit(TH1::kUserContour) && gPad->GetLogz())
470 zc = TMath::Log10(zc);
471 w1 = zc;
472 if (w1 < wlmin) w1 = wlmin;
473
474 w2 = wlmax;
475 if (i < ndivz - 1) {
476 zc = fH->GetContourLevel(i + 1);
477 if (fH->TestBit(TH1::kUserContour) && gPad->GetLogz())
478 zc = TMath::Log10(zc);
479 w2 = zc;
480 }
481
482 if (w2 <= wlmin) continue;
483 if (kHorizontal) {
484 b1 = xmin + (w1 - wlmin) * (xmax - xmin) / ws;
485 b2 = xmin + (w2 - wlmin) * (xmax - xmin) / ws;
486 } else {
487 b1 = ymin + (w1 - wlmin) * (ymax - ymin) / ws;
488 b2 = ymin + (w2 - wlmin) * (ymax - ymin) / ws;
489 }
490
492 color = i;
493 } else {
494 color = Int_t(0.01 + (w1 - wlmin) * scale);
495 }
496
497 theColor = Int_t((color + 0.99) * Double_t(ncolors) / Double_t(ndivz));
500 if (kHorizontal) gPad->PaintBox(b1, ymin, b2, ymax);
501 else gPad->PaintBox(xmin, b1, xmax, b2);
502 // case option "CJUST": put labels directly
503 if (label) {
504 Double_t lof = fAxis.GetLabelOffset()*(gPad->GetUxmax()-gPad->GetUxmin());
505 // the following assumes option "S"
506 Double_t tlength = fAxis.GetTickSize() * (gPad->GetUxmax()-gPad->GetUxmin());
507 Double_t lsize = fAxis.GetLabelSize();
508 Double_t lsize_user = lsize*(gPad->GetUymax()-gPad->GetUymin());
509 Double_t zlab = fH->GetContourLevel(i);
510 if (gPad->GetLogz()&& !fH->TestBit(TH1::kUserContour)) {
511 zlab = TMath::Power(10, zlab);
512 }
513 // make sure labels dont overlap
514 if (i == 0 || (b1 - prevlab) > 1.5*lsize_user) {
515 if (kHorizontal) label->PaintLatex(b1, ymin - lof, 0, lsize, Form("%g", zlab));
516 else label->PaintLatex(xmax + lof, b1, 0, lsize, Form("%g", zlab));
517 prevlab = b1;
518 }
519 if (kHorizontal) line->PaintLine(b2, ymin+tlength, b2, ymin);
520 else line->PaintLine(xmax-tlength, b1, xmax, b1);
521 if (i == ndivz-1) {
522 // label + tick at top of axis
523 if ((b2 - prevlab > 1.5*lsize_user)) {
524 if (kHorizontal) label->PaintLatex(b2, ymin - lof, 0, lsize, Form("%g",fH->GetMaximum()));
525 else label->PaintLatex(xmax + lof, b2, 0, lsize, Form("%g",fH->GetMaximum()));
526 }
527 if (kHorizontal) line->PaintLine(b1, ymin+tlength, b1, ymin);
528 else line->PaintLine(xmax-tlength, b2, xmax, b2);
529 }
530 }
531 }
532
533 // Take primary divisions only
534 Int_t ndiv = fH->GetZaxis()->GetNdivisions();
535 Bool_t isOptimized = ndiv>0;
536 Int_t absDiv = abs(ndiv);
537 Int_t maxD = absDiv/1000000;
538 ndiv = absDiv%100 + maxD*1000000;
539 if (!isOptimized) ndiv = -ndiv;
540
541 char chopt[6] = "S ";
542 chopt[1] = 0;
543 strncat(chopt, "+L", 3);
544 if (ndiv < 0) {
545 ndiv = TMath::Abs(ndiv);
546 strncat(chopt, "N", 2);
547 }
548 if (gPad->GetLogz()) {
549 wmin = TMath::Power(10., wlmin);
550 wmax = TMath::Power(10., wlmax);
551 strncat(chopt, "G", 2);
552 }
553 if (label) {
554 // case option "CJUST", cleanup
555 delete label;
556 delete line;
557 } else {
558 // default
559 if (kHorizontal) fAxis.PaintAxis(xmin, ymin, xmax, ymin, wmin, wmax, ndiv, chopt);
560 else fAxis.PaintAxis(xmax, ymin, xmax, ymax, wmin, wmax, ndiv, chopt);
561 }
562}
563
564
565////////////////////////////////////////////////////////////////////////////////
566/// Save primitive as a C++ statement(s) on output stream out.
567
568void TPaletteAxis::SavePrimitive(std::ostream &out, Option_t * /*= ""*/)
569{
570 if (!fH) return;
571
572 char quote = '"';
573
574 out << " " << std::endl;
575 if (gROOT->ClassSaved(TPaletteAxis::Class())) {
576 out << " ";
577 } else {
578 out << " " << ClassName() << " *";
579 }
580 if (fOption.Contains("NDC")) {
581 out << "palette = new " << ClassName() << "(" << fX1NDC << "," << fY1NDC << "," << fX2NDC << "," << fY2NDC
582 << "," << fH->GetName() << ");" << std::endl;
583 } else {
584 out << "palette = new " << ClassName() << "(" << fX1 << "," << fY1 << "," << fX2 << "," << fY2
585 << "," << fH->GetName() << ");" << std::endl;
586 }
587 out << " palette->SetNdivisions(" << fH->GetZaxis()->GetNdivisions() << ");" << std::endl;
588 out << " palette->SetAxisColor(" << fH->GetZaxis()->GetAxisColor() << ");" << std::endl;
589 out << " palette->SetLabelColor(" << fH->GetZaxis()->GetLabelColor() << ");" << std::endl;
590 out << " palette->SetLabelFont(" << fH->GetZaxis()->GetLabelFont() << ");" << std::endl;
591 out << " palette->SetLabelOffset(" << fH->GetZaxis()->GetLabelOffset() << ");" << std::endl;
592 out << " palette->SetLabelSize(" << fH->GetZaxis()->GetLabelSize() << ");" << std::endl;
593 out << " palette->SetMaxDigits(" << fH->GetZaxis()->GetMaxDigits() << ");" << std::endl;
594 out << " palette->SetTickLength(" << fH->GetZaxis()->GetTickLength() << ");" << std::endl;
595 out << " palette->SetTitleOffset(" << fH->GetZaxis()->GetTitleOffset() << ");" << std::endl;
596 out << " palette->SetTitleSize(" << fH->GetZaxis()->GetTitleSize() << ");" << std::endl;
597 out << " palette->SetTitleColor(" << fH->GetZaxis()->GetTitleColor() << ");" << std::endl;
598 out << " palette->SetTitleFont(" << fH->GetZaxis()->GetTitleFont() << ");" << std::endl;
599 out << " palette->SetTitle(" << quote << fH->GetZaxis()->GetTitle() << quote << ");" << std::endl;
600 SaveFillAttributes(out, "palette", -1, -1);
601 SaveLineAttributes(out, "palette", 1, 1, 1);
602}
603
604
605////////////////////////////////////////////////////////////////////////////////
606/// Unzoom the palette
607
609{
610 if (!fH) return;
611 TView *view = gPad ? gPad->GetView() : nullptr;
612 if (view) {
613 delete view;
614 gPad->SetView(nullptr);
615 }
616 fH->GetZaxis()->SetRange(0, 0);
617 if (fH->GetDimension() == 2) {
618 fH->SetMinimum();
619 fH->SetMaximum();
621 }
622}
@ kButton1Motion
Definition Buttons.h:20
@ kButton1Up
Definition Buttons.h:19
@ kButton1Down
Definition Buttons.h:17
@ kHand
Definition GuiTypes.h:374
#define h(i)
Definition RSha256.hxx:106
int Int_t
Definition RtypesCore.h:45
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
double Double_t
Definition RtypesCore.h:59
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
const char Option_t
Definition RtypesCore.h:66
#define ClassImp(name)
Definition Rtypes.h:377
@ kVAlignTop
Definition TAttText.h:54
@ kVAlignCenter
Definition TAttText.h:54
@ kHAlignLeft
Definition TAttText.h:53
@ kHAlignCenter
Definition TAttText.h:53
Option_t Option_t SetFillStyle
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t wmin
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t SetFillColor
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t wmax
Option_t Option_t TPoint TPoint const char y1
float xmin
float ymin
float xmax
float ymax
#define gROOT
Definition TROOT.h:405
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Definition TString.cxx:2467
R__EXTERN TStyle * gStyle
Definition TStyle.h:414
#define gPad
#define gVirtualX
Definition TVirtualX.h:338
#define snprintf
Definition civetweb.c:1540
virtual Color_t GetTitleColor() const
Definition TAttAxis.h:46
virtual Color_t GetLabelColor() const
Definition TAttAxis.h:38
virtual Int_t GetNdivisions() const
Definition TAttAxis.h:36
virtual Color_t GetAxisColor() const
Definition TAttAxis.h:37
virtual Style_t GetTitleFont() const
Definition TAttAxis.h:47
virtual Float_t GetLabelOffset() const
Definition TAttAxis.h:40
virtual Int_t GetMaxDigits() const
Definition TAttAxis.h:42
virtual Style_t GetLabelFont() const
Definition TAttAxis.h:39
virtual Float_t GetTitleSize() const
Definition TAttAxis.h:44
virtual Float_t GetLabelSize() const
Definition TAttAxis.h:41
virtual Float_t GetTickLength() const
Definition TAttAxis.h:45
virtual Float_t GetTitleOffset() const
Definition TAttAxis.h:43
virtual void Modify()
Change current fill area attributes if necessary.
Definition TAttFill.cxx:213
virtual void SaveFillAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
Save fill attributes as C++ statement(s) on output stream out.
Definition TAttFill.cxx:236
virtual Color_t GetLineColor() const
Return the line color.
Definition TAttLine.h:33
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition TAttLine.h:40
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
Definition TAttLine.cxx:273
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
Definition TAttText.h:42
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
Definition TAttText.h:44
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Definition TAttText.h:46
Class to manage histogram axis.
Definition TAxis.h:30
const char * GetTitle() const override
Returns title of object.
Definition TAxis.h:130
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
Definition TAxis.cxx:952
Double_t fX1
X of 1st point.
Definition TBox.h:28
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
Definition TBox.cxx:231
Double_t fY2
Y of 2nd point.
Definition TBox.h:31
Double_t fX2
X of 2nd point.
Definition TBox.h:30
Double_t fY1
Y of 1st point.
Definition TBox.h:29
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.
Definition TGaxis.cxx:1013
Float_t GetLabelOffset() const
Definition TGaxis.h:83
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
Definition TGaxis.cxx:961
Int_t GetLabelFont() const
Definition TGaxis.h:82
Int_t GetLabelColor() const
Definition TGaxis.h:81
Float_t GetTickSize() const
Definition TGaxis.h:94
Float_t GetLabelSize() const
Definition TGaxis.h:84
TH1 is the base class of all histogram classes in ROOT.
Definition TH1.h:58
TAxis * GetZaxis()
Definition TH1.h:324
virtual Int_t GetDimension() const
Definition TH1.h:281
@ kUserContour
User specified contour levels.
Definition TH1.h:164
@ kIsZoomed
Bit set when zooming on Y axis.
Definition TH1.h:167
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...
Definition TH1.cxx:8411
virtual void SetMaximum(Double_t maximum=-1111)
Definition TH1.h:400
virtual void SetMinimum(Double_t minimum=-1111)
Definition TH1.h:401
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
Definition TH1.cxx:8443
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Definition TH1.cxx:5025
virtual Int_t GetContour(Double_t *levels=nullptr)
Return contour values into array levels if pointer levels is non zero.
Definition TH1.cxx:8277
virtual Double_t GetContourLevel(Int_t level) const
Return value of contour number level.
Definition TH1.cxx:8296
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
Definition TH1.cxx:8531
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...
Definition TH1.cxx:8501
To draw Mathematical Formula.
Definition TLatex.h:18
virtual void PaintLatex(Double_t x, Double_t y, Double_t angle, Double_t size, const char *text)
Main drawing function.
Definition TLatex.cxx:2053
Use the TLine constructor to create a simple line.
Definition TLine.h:22
virtual void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
Definition TLine.cxx:397
const char * GetName() const override
Returns name of object.
Definition TNamed.h:47
Mother of all ROOT objects.
Definition TObject.h:41
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition TObject.h:201
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Definition TObject.cxx:207
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Definition TObject.cxx:423
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition TObject.cxx:774
void ResetBit(UInt_t f)
Definition TObject.h:200
The palette painting class.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save primitive as a C++ statement(s) on output stream out.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Check if mouse on the axis region.
void Paint(Option_t *option="") override
Paint the palette.
TGaxis fAxis
Palette axis.
TPaletteAxis & operator=(const TPaletteAxis &)
Assignment operator.
~TPaletteAxis() override
Palette destructor.
char * GetObjectInfo(Int_t px, Int_t py) const override
Displays the z value corresponding to cursor position py.
TPaletteAxis()
Palette default constructor.
Int_t GetBinColor(Int_t i, Int_t j)
Returns the color index of the bin (i,j).
void Copy(TObject &palette) const override
Copy a palette to a palette.
TH1 * fH
! Pointer to parent histogram
virtual void UnZoom()
Unzoom the palette.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Check if mouse on the axis region.
Int_t GetValueColor(Double_t zc)
Returns the color index of the given z value.
static TClass * Class()
A TBox with a bordersize and a shadow option.
Definition TPave.h:19
Double_t GetY2NDC() const
Definition TPave.h:62
virtual void ConvertNDCtoPad()
Convert pave coordinates from NDC to Pad coordinates.
Definition TPave.cxx:139
Double_t GetX2NDC() const
Definition TPave.h:60
void Copy(TObject &pave) const override
Copy this pave to pave.
Definition TPave.cxx:186
virtual void SetName(const char *name="")
Definition TPave.h:75
Double_t fX2NDC
X2 point in NDC coordinates.
Definition TPave.h:24
Double_t GetY1NDC() const
Definition TPave.h:61
TString fOption
Pave style.
Definition TPave.h:30
Double_t fY2NDC
Y2 point in NDC coordinates.
Definition TPave.h:25
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a pave.
Definition TPave.cxx:208
Double_t fX1NDC
X1 point in NDC coordinates.
Definition TPave.h:22
Double_t fY1NDC
Y1 point in NDC coordinates.
Definition TPave.h:23
Double_t GetX1NDC() const
Definition TPave.h:59
Basic string class.
Definition TString.h:139
@ kIgnoreCase
Definition TString.h:279
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Definition TString.h:636
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
Definition TStyle.cxx:1057
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
Definition TStyle.cxx:1123
See TView3D.
Definition TView.h:25
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
TLine * line
Double_t y[n]
Definition legend1.C:17
Double_t Exp(Double_t x)
Returns the base-e exponential function of x, which is e raised to the power x.
Definition TMath.h:707
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
Definition TMath.h:719
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Definition TMathBase.h:198
Double_t Log10(Double_t x)
Returns the common (base-10) logarithm of x.
Definition TMath.h:760
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
Definition TMathBase.h:123