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 TCanvas *c1 = new TCanvas("c1","c1",600,400);
58 TH2F *h2 = new TH2F("h2","Example of a resized palette ",40,-4,4,40,-20,20);
59 Float_t px, py;
60 for (Int_t i = 0; i < 25000; i++) {
61 gRandom->Rannor(px,py);
62 h2->Fill(px,5*py);
63 }
64 gStyle->SetPalette(1);
65 h2->Draw("COLZ");
66 gPad->Update();
67 TPaletteAxis *palette = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");
68 palette->SetY2NDC(0.7);
69 return c1;
70}
71End_Macro
72
73`TPaletteAxis` inherits from `TBox` and `TPave`. The methods
74allowing to specify the palette position are inherited from these two classes.
75
76The palette can be interactively moved and resized. The context menu
77can be used to set the axis attributes.
78
79It is possible to select a range on the axis to set the min/max in z
80
81As default labels and ticks are drawn by `TGAxis` at equidistant (lin or log)
82points as controlled by SetNdivisions.
83If option "CJUST" is given labels and ticks are justified at the
84color boundaries defined by the contour levels.
85In this case no optimization can be done. It is responsiblity of the
86user to adjust minimum, maximum of the histogram and/or the contour levels
87to get a reasonable look of the plot.
88Only overlap of the labels is avoided if too many contour levels are used.
89
90This option is especially useful with user defined contours.
91An example is shown here:
92Begin_Macro(source)
93{
94 gStyle->SetOptStat(0);
95 TCanvas *c1 = new TCanvas("c1","exa_CJUST",300,10,400,400);
96 TH2F *hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4);
97 // Fill histograms randomly
98 TRandom3 randomNum;
99 Float_t px, py;
100 for (Int_t i = 0; i < 25000; i++) {
101 randomNum.Rannor(px,py);
102 hpxpy->Fill(px,py);
103 }
104 hpxpy->SetMaximum(200);
105 Double_t zcontours[5] = {0, 20, 40, 80, 120};
106 hpxpy->SetContour(5, zcontours);
107 hpxpy->GetZaxis()->SetTickSize(0.01);
108 hpxpy->GetZaxis()->SetLabelOffset(0.01);
109 gPad->SetRightMargin(0.13);
110 hpxpy->SetTitle("User contours, CJUST");
111 hpxpy->Draw("COL Z CJUST");
112}
113End_Macro
114*/
115
116
117////////////////////////////////////////////////////////////////////////////////
118/// Palette default constructor.
119
121{
122 fH = 0;
123 SetName("");
124}
125
126
127////////////////////////////////////////////////////////////////////////////////
128/// Palette normal constructor.
129
131 : TPave(x1, y1, x2, y2)
132{
133 fH = h;
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 ((TPaletteAxis&)palette).Copy(*this);
155}
156
157
158////////////////////////////////////////////////////////////////////////////////
159/// Assignment operator.
160
162{
163 orig.Copy( *this );
164 return *this;
165}
166
167
168////////////////////////////////////////////////////////////////////////////////
169/// Copy a palette to a palette.
170
172{
173 TPave::Copy(obj);
174 ((TPaletteAxis&)obj).fH = fH;
175 ((TPaletteAxis&)obj).fName = fName;
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->GetDimension() == 2) {
262 Double_t zmin = fH->GetMinimum();
263 Double_t zmax = fH->GetMaximum();
264 if (gPad->GetLogz()) {
265 if (zmin <= 0 && zmax > 0) zmin = TMath::Min((Double_t)1,
266 (Double_t)0.001 * zmax);
267 zmin = TMath::Log10(zmin);
268 zmax = TMath::Log10(zmax);
269 }
270 Double_t newmin = zmin + (zmax - zmin) * ratio1;
271 Double_t newmax = zmin + (zmax - zmin) * ratio2;
272 if (newmin < zmin)newmin = fH->GetBinContent(fH->GetMinimumBin());
273 if (newmax > zmax)newmax = fH->GetBinContent(fH->GetMaximumBin());
274 if (gPad->GetLogz()) {
275 newmin = TMath::Exp(2.302585092994 * newmin);
276 newmax = TMath::Exp(2.302585092994 * newmax);
277 }
278 fH->SetMinimum(newmin);
279 fH->SetMaximum(newmax);
281 }
282 gPad->Modified(kTRUE);
283 }
284 gVirtualX->SetLineColor(-1);
285 kmode = 0;
286 break;
287 }
288}
289
290
291////////////////////////////////////////////////////////////////////////////////
292/// Returns the color index of the bin (i,j).
293///
294/// This function should be used after an histogram has been plotted with the
295/// option COL or COLZ like in the following example:
296///
297/// h2->Draw("COLZ");
298/// gPad->Update();
299/// TPaletteAxis *palette = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");
300/// Int_t ci = palette->GetBinColor(20,15);
301///
302/// Then it is possible to retrieve the RGB components in the following way:
303///
304/// TColor *c = gROOT->GetColor(ci);
305/// float x,y,z;
306/// c->GetRGB(x,y,z);
307
309{
310 Double_t zc = fH->GetBinContent(i, j);
311 return GetValueColor(zc);
312}
313
314
315////////////////////////////////////////////////////////////////////////////////
316/// Displays the z value corresponding to cursor position py.
317
318char *TPaletteAxis::GetObjectInfo(Int_t /* px */, Int_t py) const
319{
320 Double_t z;
321 static char info[64];
322
323 Double_t zmin = fH->GetMinimum();
324 Double_t zmax = fH->GetMaximum();
325 Int_t y1 = gPad->GetWh() - gPad->VtoPixel(fY1NDC);
326 Int_t y2 = gPad->GetWh() - gPad->VtoPixel(fY2NDC);
327 Int_t y = gPad->GetWh() - py;
328
329 if (gPad->GetLogz()) {
330 if (zmin <= 0 && zmax > 0) zmin = TMath::Min((Double_t)1,
331 (Double_t)0.001 * zmax);
332 Double_t zminl = TMath::Log10(zmin);
333 Double_t zmaxl = TMath::Log10(zmax);
334 Double_t zl = (zmaxl - zminl) * ((Double_t)(y - y1) / (Double_t)(y2 - y1)) + zminl;
335 z = TMath::Power(10., zl);
336 } else {
337 z = (zmax - zmin) * ((Double_t)(y - y1) / (Double_t)(y2 - y1)) + zmin;
338 }
339
340 snprintf(info, 64, "(z=%g)", z);
341 return info;
342}
343
344
345////////////////////////////////////////////////////////////////////////////////
346/// Returns the color index of the given z value
347///
348/// This function should be used after an histogram has been plotted with the
349/// option COL or COLZ like in the following example:
350///
351/// h2->Draw("COLZ");
352/// gPad->Update();
353/// TPaletteAxis *palette = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");
354/// Int_t ci = palette->GetValueColor(30.);
355///
356/// Then it is possible to retrieve the RGB components in the following way:
357///
358/// TColor *c = gROOT->GetColor(ci);
359/// float x,y,z;
360/// c->GetRGB(x,y,z);
361
363{
364 Double_t wmin = fH->GetMinimum();
365 Double_t wmax = fH->GetMaximum();
366 Double_t wlmin = wmin;
367 Double_t wlmax = wmax;
368
369 if (gPad->GetLogz()) {
370 if (wmin <= 0 && wmax > 0) wmin = TMath::Min((Double_t)1,
371 (Double_t)0.001 * wmax);
372 wlmin = TMath::Log10(wmin);
373 wlmax = TMath::Log10(wmax);
374 }
375
376 Int_t ncolors = gStyle->GetNumberOfColors();
377 Int_t ndivz = fH->GetContour();
378 if (ndivz == 0) return 0;
379 ndivz = TMath::Abs(ndivz);
380 Int_t theColor, color;
381 Double_t scale = ndivz / (wlmax - wlmin);
382
383 if (fH->TestBit(TH1::kUserContour) && gPad->GetLogz()) zc = TMath::Log10(zc);
384 if (zc < wlmin) zc = wlmin;
385
386 color = Int_t(0.01 + (zc - wlmin) * scale);
387
388 theColor = Int_t((color + 0.99) * Double_t(ncolors) / Double_t(ndivz));
389 return gStyle->GetColorPalette(theColor);
390}
391
392
393////////////////////////////////////////////////////////////////////////////////
394/// Paint the palette.
395
397{
399
400 SetFillStyle(1001);
401 Double_t ymin = fY1;
402 Double_t ymax = fY2;
403 Double_t xmin = fX1;
404 Double_t xmax = fX2;
405 Double_t wmin = fH->GetMinimum();
406 Double_t wmax = fH->GetMaximum();
407 Double_t wlmin = wmin;
408 Double_t wlmax = wmax;
409 Double_t y1, y2, w1, w2, zc;
410
411 if ((wlmax - wlmin) <= 0) {
412 Double_t mz = wlmin * 0.1;
413 if (mz == 0) mz = 0.1;
414 wlmin = wlmin - mz;
415 wlmax = wlmax + mz;
416 wmin = wlmin;
417 wmax = wlmax;
418 }
419
420 if (gPad->GetLogz()) {
421 if (wmin <= 0 && wmax > 0) wmin = TMath::Min((Double_t)1,
422 (Double_t)0.001 * wmax);
423 wlmin = TMath::Log10(wmin);
424 wlmax = TMath::Log10(wmax);
425 }
426 Double_t ws = wlmax - wlmin;
427 Int_t ncolors = gStyle->GetNumberOfColors();
428 Int_t ndivz = fH->GetContour();
429 if (ndivz == 0) return;
430 ndivz = TMath::Abs(ndivz);
431 Int_t theColor, color;
432 // import Attributes already here since we might need them for CJUST
434 // case option "CJUST": put labels directly at color boundaries
435 TLatex *label = NULL;
436 TLine *line = NULL;
437 Double_t prevlab = 0;
438 TString opt(fH->GetDrawOption());
439 if (opt.Contains("CJUST", TString::kIgnoreCase)) {
440 label = new TLatex();
444 line = new TLine();
447 }
448 Double_t scale = ndivz / (wlmax - wlmin);
449 for (Int_t i = 0; i < ndivz; i++) {
450
451 zc = fH->GetContourLevel(i);
452 if (fH->TestBit(TH1::kUserContour) && gPad->GetLogz())
453 zc = TMath::Log10(zc);
454 w1 = zc;
455 if (w1 < wlmin) w1 = wlmin;
456
457 w2 = wlmax;
458 if (i < ndivz - 1) {
459 zc = fH->GetContourLevel(i + 1);
460 if (fH->TestBit(TH1::kUserContour) && gPad->GetLogz())
461 zc = TMath::Log10(zc);
462 w2 = zc;
463 }
464
465 if (w2 <= wlmin) continue;
466 y1 = ymin + (w1 - wlmin) * (ymax - ymin) / ws;
467 y2 = ymin + (w2 - wlmin) * (ymax - ymin) / ws;
468
470 color = i;
471 } else {
472 color = Int_t(0.01 + (w1 - wlmin) * scale);
473 }
474
475 theColor = Int_t((color + 0.99) * Double_t(ncolors) / Double_t(ndivz));
478 gPad->PaintBox(xmin, y1, xmax, y2);
479 // case option "CJUST": put labels directly
480 if (label) {
481 Double_t lof = fAxis.GetLabelOffset()*(gPad->GetUxmax()-gPad->GetUxmin());
482 // the following assumes option "S"
483 Double_t tlength = fAxis.GetTickSize() * (gPad->GetUxmax()-gPad->GetUxmin());
484 Double_t lsize = fAxis.GetLabelSize();
485 Double_t lsize_user = lsize*(gPad->GetUymax()-gPad->GetUymin());
486 Double_t zlab = fH->GetContourLevel(i);
487 if (gPad->GetLogz()&& !fH->TestBit(TH1::kUserContour)) {
488 zlab = TMath::Power(10, zlab);
489 }
490 // make sure labels dont overlap
491 if (i == 0 || (y1 - prevlab) > 1.5*lsize_user) {
492 label->PaintLatex(xmax + lof, y1, 0, lsize, Form("%g", zlab));
493 prevlab = y1;
494 }
495 line->PaintLine(xmax-tlength, y1, xmax, y1);
496 if (i == ndivz-1) {
497 // label + tick at top of axis
498 if ((y2 - prevlab > 1.5*lsize_user))
499 label->PaintLatex(xmax + lof, y2, 0, lsize, Form("%g",fH->GetMaximum()));
500 line->PaintLine(xmax-tlength, y2, xmax, y2);
501 }
502 }
503 }
504
505 // Take primary divisions only
506 Int_t ndiv = fH->GetZaxis()->GetNdivisions();
507 Bool_t isOptimized = ndiv>0;
508 Int_t absDiv = abs(ndiv);
509 Int_t maxD = absDiv/1000000;
510 ndiv = absDiv%100 + maxD*1000000;
511 if (!isOptimized) ndiv = -ndiv;
512
513 char chopt[6] = "S ";
514 chopt[1] = 0;
515 strncat(chopt, "+L", 3);
516 if (ndiv < 0) {
517 ndiv = TMath::Abs(ndiv);
518 strncat(chopt, "N", 2);
519 }
520 if (gPad->GetLogz()) {
521 wmin = TMath::Power(10., wlmin);
522 wmax = TMath::Power(10., wlmax);
523 strncat(chopt, "G", 2);
524 }
525 if (label) {
526 // case option "CJUST", cleanup
527 delete label;
528 delete line;
529 } else {
530 // default
531 fAxis.PaintAxis(xmax, ymin, xmax, ymax, wmin, wmax, ndiv, chopt);
532 }
533}
534
535
536////////////////////////////////////////////////////////////////////////////////
537/// Save primitive as a C++ statement(s) on output stream out.
538
539void TPaletteAxis::SavePrimitive(std::ostream &out, Option_t * /*= ""*/)
540{
541 //char quote = '"';
542 out << " " << std::endl;
543 if (gROOT->ClassSaved(TPaletteAxis::Class())) {
544 out << " ";
545 } else {
546 out << " " << ClassName() << " *";
547 }
548 if (fOption.Contains("NDC")) {
549 out << "palette = new " << ClassName() << "(" << fX1NDC << "," << fY1NDC << "," << fX2NDC << "," << fY2NDC
550 << "," << fH->GetName() << ");" << std::endl;
551 } else {
552 out << "palette = new " << ClassName() << "(" << fX1 << "," << fY1 << "," << fX2 << "," << fY2
553 << "," << fH->GetName() << ");" << std::endl;
554 }
555 out << " palette->SetLabelColor(" << fAxis.GetLabelColor() << ");" << std::endl;
556 out << " palette->SetLabelFont(" << fAxis.GetLabelFont() << ");" << std::endl;
557 out << " palette->SetLabelOffset(" << fAxis.GetLabelOffset() << ");" << std::endl;
558 out << " palette->SetLabelSize(" << fAxis.GetLabelSize() << ");" << std::endl;
559 out << " palette->SetTitleOffset(" << fAxis.GetTitleOffset() << ");" << std::endl;
560 out << " palette->SetTitleSize(" << fAxis.GetTitleSize() << ");" << std::endl;
561 SaveFillAttributes(out, "palette", -1, -1);
562 SaveLineAttributes(out, "palette", 1, 1, 1);
563}
564
565
566////////////////////////////////////////////////////////////////////////////////
567/// Unzoom the palette
568
570{
571 TView *view = gPad->GetView();
572 if (view) {
573 delete view;
574 gPad->SetView(0);
575 }
576 fH->GetZaxis()->SetRange(0, 0);
577 if (fH->GetDimension() == 2) {
578 fH->SetMinimum();
579 fH->SetMaximum();
581 }
582}
@ 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
static const double x2[5]
static const double x1[5]
int Int_t
Definition RtypesCore.h:45
const Bool_t kFALSE
Definition RtypesCore.h:92
double Double_t
Definition RtypesCore.h:59
const Bool_t kTRUE
Definition RtypesCore.h:91
const char Option_t
Definition RtypesCore.h:66
#define ClassImp(name)
Definition Rtypes.h:364
@ kVAlignCenter
Definition TAttText.h:53
@ kHAlignLeft
Definition TAttText.h:52
float xmin
float ymin
float xmax
float ymax
#define gROOT
Definition TROOT.h:406
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
Definition TStyle.h:412
#define gPad
#define gVirtualX
Definition TVirtualX.h:338
#define snprintf
Definition civetweb.c:1540
virtual Int_t GetNdivisions() const
Definition TAttAxis.h:36
virtual void Modify()
Change current fill area attributes if necessary.
Definition TAttFill.cxx:211
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition TAttFill.h:37
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Definition TAttFill.h:39
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:234
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:270
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
Definition TAttText.h:41
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
Definition TAttText.h:43
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Definition TAttText.h:45
Class to manage histogram axis.
Definition TAxis.h:30
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
Definition TAxis.cxx:920
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
Definition TBox.cxx:231
Double_t fX1
X of 1st point.
Definition TBox.h:28
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:954
Float_t GetLabelOffset() const
Definition TGaxis.h:80
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
Definition TGaxis.cxx:904
Int_t GetLabelFont() const
Definition TGaxis.h:79
Float_t GetTitleOffset() const
Definition TGaxis.h:82
Float_t GetTitleSize() const
Definition TGaxis.h:83
Int_t GetLabelColor() const
Definition TGaxis.h:78
Float_t GetTickSize() const
Definition TGaxis.h:91
Float_t GetLabelSize() const
Definition TGaxis.h:81
TH1 is the base class of all histogram classes in ROOT.
Definition TH1.h:58
TAxis * GetZaxis()
Definition TH1.h:322
virtual Int_t GetDimension() const
Definition TH1.h:282
@ kUserContour
user specified contour levels
Definition TH1.h:165
@ kIsZoomed
bit set when zooming on Y axis
Definition TH1.h:168
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:8390
virtual void SetMaximum(Double_t maximum=-1111)
Definition TH1.h:398
virtual void SetMinimum(Double_t minimum=-1111)
Definition TH1.h:399
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
Definition TH1.cxx:8420
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Definition TH1.cxx:4993
virtual Double_t GetContourLevel(Int_t level) const
Return value of contour number level.
Definition TH1.cxx:8278
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
Definition TH1.cxx:8505
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:8475
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
Definition TH1.cxx:8259
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:2051
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:384
TString fName
Definition TNamed.h:32
virtual const char * GetName() const
Returns name of object.
Definition TNamed.h:47
Mother of all ROOT objects.
Definition TObject.h:37
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition TObject.h:187
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Definition TObject.cxx:130
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Definition TObject.cxx:343
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition TObject.cxx:696
void ResetBit(UInt_t f)
Definition TObject.h:186
The palette painting class.
void Copy(TObject &palette) const
Copy a palette to a palette.
virtual ~TPaletteAxis()
Palette destructor.
TPaletteAxis & operator=(const TPaletteAxis &)
Assignment operator.
TPaletteAxis()
Palette default constructor.
TString fName
pointer to parent histogram
virtual void SetName(const char *name="")
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Check if mouse on the axis region.
Int_t GetBinColor(Int_t i, Int_t j)
Returns the color index of the bin (i,j).
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Check if mouse on the axis region.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
virtual void Paint(Option_t *option="")
Paint the palette.
virtual void UnZoom()
Unzoom the palette.
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Displays the z value corresponding to cursor position py.
Int_t GetValueColor(Double_t zc)
Returns the color index of the given z value.
A TBox with a bordersize and a shadow option.
Definition TPave.h:19
virtual void ConvertNDCtoPad()
Convert pave coordinates from NDC to Pad coordinates.
Definition TPave.cxx:139
Double_t fX2NDC
X2 point in NDC coordinates.
Definition TPave.h:24
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a pave.
Definition TPave.cxx:208
TString fOption
Pave style.
Definition TPave.h:30
Double_t fY2NDC
Y2 point in NDC coordinates.
Definition TPave.h:25
void Copy(TObject &pave) const
Copy this pave to pave.
Definition TPave.cxx:186
Double_t fX1NDC
X1 point in NDC coordinates.
Definition TPave.h:22
Double_t fY1NDC
Y1 point in NDC coordinates.
Definition TPave.h:23
Basic string class.
Definition TString.h:136
@ kIgnoreCase
Definition TString.h:268
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Definition TString.h:624
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
Definition TStyle.cxx:1056
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
Definition TStyle.cxx:1122
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)
Definition TMath.h:727
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Definition TMath.h:735
Short_t Min(Short_t a, Short_t b)
Definition TMathBase.h:180
Double_t Log10(Double_t x)
Definition TMath.h:764
Short_t Abs(Short_t d)
Definition TMathBase.h:120
void ws()
Definition ws.C:66