Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
THistPainter.h
Go to the documentation of this file.
1// @(#)root/histpainter:$Id$
2// Author: Rene Brun, Olivier Couet
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#ifndef ROOT_THistPainter
12#define ROOT_THistPainter
13
14
15//////////////////////////////////////////////////////////////////////////
16// //
17// THistPainter //
18// //
19// helper class to draw histograms //
20// //
21//////////////////////////////////////////////////////////////////////////
22
23
24#include "TVirtualHistPainter.h"
25#include "TString.h"
26
27#include <vector>
28#include <utility>
29#include <memory>
30
31
32class TH1;
33class TAxis;
34class TCutG;
35class TGaxis;
37class TGraph2DPainter;
38class TPie;
39class TF3;
40
41const Int_t kMaxCuts = 16;
42
44{
45 std::pair<Int_t, Int_t> fPixelRange;
46 std::pair<Int_t, Int_t> fBinRange;
47};
48
49
51
52protected:
53 TH1 *fH; ///< Pointer to histogram to paint
54 TAxis *fXaxis; ///< Pointer to X axis
55 TAxis *fYaxis; ///< Pointer to Y axis
56 TAxis *fZaxis; ///< Pointer to Z axis
57 TList *fFunctions; ///< Pointer to histogram list of functions
58 std::unique_ptr<TPainter3dAlgorithms> fLego; ///< Pointer to a TPainter3dAlgorithms object
59 std::unique_ptr<TGraph2DPainter> fGraph2DPainter; ///< Pointer to a TGraph2DPainter object
60 std::unique_ptr<TPie> fPie; ///< Pointer to a TPie in case of option PIE
61 std::vector<Double_t> fXbuf; ///< X buffer coordinates
62 std::vector<Double_t> fYbuf; ///< Y buffer coordinates
63 Int_t fNcuts; ///< Number of graphical cuts
64 Int_t fCutsOpt[kMaxCuts]; ///< Sign of each cut
65 TCutG *fCuts[kMaxCuts]; ///< Pointers to graphical cuts
66 TList *fStack; ///< Pointer to stack of histograms (if any)
67 Int_t fShowProjection; ///< True if a projection must be drawn
68 Int_t fShowProjection2; ///< True if a second projection must be drawn (when calling SetShowProjectionXY on a TH2)
69 TString fShowOption; ///< Option to draw the projection
70 Int_t fXHighlightBin; ///< X highlight bin
71 Int_t fYHighlightBin; ///< Y highlight bin
72 TF3 *fCurrentF3; ///< Current TF3 function
73
74private:
76
77public:
79 ~THistPainter() override;
80 virtual void DefineColorLevels(Int_t ndivz);
82 void DrawPanel() override;
83 void ExecuteEvent(Int_t event, Int_t px, Int_t py) override;
84 TList *GetContourList(Double_t contour) const override;
85 char *GetObjectInfo(Int_t px, Int_t py) const override;
86 TList *GetStack() const override {return fStack;}
87 virtual Int_t GetXHighlightBin() const { return fXHighlightBin; }
88 virtual Int_t GetYHighlightBin() const { return fYHighlightBin; }
89 virtual void HighlightBin(Int_t px, Int_t py);
92 virtual Int_t MakeChopt(Option_t *option);
93 Int_t MakeCuts(char *cutsopt) override;
94 void Paint(Option_t *option="") override;
95 virtual void PaintArrows(Option_t *option);
96 virtual void PaintAxis(Bool_t drawGridOnly=kFALSE);
97 virtual void PaintBar(Option_t *option);
98 virtual void PaintBarH(Option_t *option);
99 virtual void PaintBoxes(Option_t *option);
100 virtual void PaintCandlePlot(Option_t *option);
101 virtual void PaintColorLevels(Option_t *option);
102 virtual void PaintColorLevelsFast(Option_t *option);
103 virtual std::vector<THistRenderingRegion> ComputeRenderingRegions(TAxis *pAxis, Int_t nPixels, bool isLog);
104
105 virtual void PaintTH2PolyBins(Option_t *option);
106 virtual void PaintTH2PolyColorLevels(Option_t *option);
107 virtual void PaintTH2PolyScatterPlot(Option_t *option);
108 virtual void PaintTH2PolyText(Option_t *option);
109 virtual void PaintContour(Option_t *option);
110 virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1,
111 Double_t elev2, Int_t icont2, Double_t x2, Double_t y2,
112 Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels);
113 virtual void PaintErrors(Option_t *option);
114 virtual void Paint2DErrors(Option_t *option);
115 virtual void PaintFrame();
116 virtual void PaintFunction(Option_t *option);
117 virtual void PaintHighlightBin(Option_t *option="");
118 virtual void PaintHist(Option_t *option);
119 virtual void PaintH3(Option_t *option="");
120 virtual void PaintH3Box(Int_t iopt);
121 virtual void PaintH3BoxRaster();
122 virtual void PaintH3Iso();
123 virtual Int_t PaintInit();
124 virtual Int_t PaintInitH();
125 virtual void PaintLego(Option_t *option);
126 virtual void PaintLegoAxis(TGaxis *axis, Double_t ang);
127 virtual void PaintPalette();
128 virtual void PaintScatterPlot(Option_t *option);
129 void PaintStat(Int_t dostat, TF1 *fit) override;
130 virtual void PaintStat2(Int_t dostat, TF1 *fit);
131 virtual void PaintStat3(Int_t dostat, TF1 *fit);
132 virtual void PaintSurface(Option_t *option);
133 virtual void PaintTriangles(Option_t *option);
134 virtual void PaintTable(Option_t *option);
135 virtual void PaintText(Option_t *option);
136 virtual void PaintTitle();
137 virtual void PaintTF3();
138 void ProcessMessage(const char *mess, const TObject *obj) override;
144 virtual void RecalculateRange();
145 void RecursiveRemove(TObject *) override {}
146 void SetHighlight() override;
147 void SetHistogram(TH1 *h) override;
148 void SetStack(TList *stack) override {fStack = stack;}
149 void SetShowProjection(const char *option,Int_t nbins) override;
150 void SetShowProjectionXY(const char *option,Int_t nbinsY,Int_t nbinsX) override;
151 virtual void ShowProjectionX(Int_t px, Int_t py);
152 virtual void ShowProjectionY(Int_t px, Int_t py);
153 virtual void ShowProjection3(Int_t px, Int_t py);
154 virtual Int_t TableInit();
155
156 static const char *GetBestFormat(Double_t v, Double_t e, const char *f);
157 static void PaintSpecialObjects(const TObject *obj, Option_t *option);
158
159 ClassDefOverride(THistPainter,0) //Helper class to draw histograms
160};
161
162#endif
#define b(i)
Definition RSha256.hxx:100
#define f(i)
Definition RSha256.hxx:104
#define h(i)
Definition RSha256.hxx:106
#define e(i)
Definition RSha256.hxx:103
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
bool Bool_t
Boolean (0=false, 1=true) (bool).
Definition RtypesCore.h:77
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
double Double_t
Double 8 bytes.
Definition RtypesCore.h:73
const char Option_t
Option string (const char).
Definition RtypesCore.h:80
#define ClassDefOverride(name, id)
Definition Rtypes.h:348
const Int_t kMaxCuts
Class to manage histogram axis.
Definition TAxis.h:32
Graphical cut class.
Definition TCutG.h:20
Definition TF1.h:182
Definition TF3.h:28
The TGraphDelaunay painting class.
TH1 is the base class of all histogram classes in ROOT.
Definition TH1.h:109
void Paint(Option_t *option="") override
This method must be overridden if a class wants to paint itself.
TAxis * fYaxis
Pointer to Y axis.
virtual Int_t MakeChopt(Option_t *option)
std::unique_ptr< TPainter3dAlgorithms > fLego
Pointer to a TPainter3dAlgorithms object.
std::vector< Double_t > fXbuf
X buffer coordinates.
Int_t fXHighlightBin
X highlight bin.
TF3 * fCurrentF3
Current TF3 function.
virtual void PaintContour(Option_t *option)
virtual Int_t PaintInit()
~THistPainter() override
virtual void ShowProjectionX(Int_t px, Int_t py)
virtual void PaintText(Option_t *option)
Int_t fShowProjection2
True if a second projection must be drawn (when calling SetShowProjectionXY on a TH2).
static const char * GetBestFormat(Double_t v, Double_t e, const char *f)
virtual void PaintAxis(Bool_t drawGridOnly=kFALSE)
virtual void PaintHist(Option_t *option)
virtual void PaintBoxes(Option_t *option)
virtual void PaintScatterPlot(Option_t *option)
virtual void PaintSurface(Option_t *option)
virtual void PaintLego(Option_t *option)
virtual void PaintBar(Option_t *option)
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Computes distance from point (px,py) to the object.
Int_t fYHighlightBin
Y highlight bin.
virtual void PaintH3(Option_t *option="")
void SetShowProjectionXY(const char *option, Int_t nbinsY, Int_t nbinsX) override
virtual void PaintTF3()
Int_t fNcuts
Number of graphical cuts.
TString fShowOption
Option to draw the projection.
static Int_t ProjectMercator2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
Int_t fShowProjection
True if a projection must be drawn.
virtual void PaintColorLevelsFast(Option_t *option)
virtual void PaintLegoAxis(TGaxis *axis, Double_t ang)
static Int_t ProjectMollweide2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
virtual void PaintArrows(Option_t *option)
virtual void PaintErrors(Option_t *option)
Int_t MakeCuts(char *cutsopt) override
virtual void PaintStat3(Int_t dostat, TF1 *fit)
virtual void DefineColorLevels(Int_t ndivz)
virtual void PaintTitle()
TList * fFunctions
Pointer to histogram list of functions.
void DrawPanel() override
virtual void PaintFunction(Option_t *option)
std::unique_ptr< TPie > fPie
Pointer to a TPie in case of option PIE.
virtual void PaintH3Box(Int_t iopt)
virtual void PaintColorLevels(Option_t *option)
virtual Int_t TableInit()
virtual void HighlightBin(Int_t px, Int_t py)
virtual void PaintTriangles(Option_t *option)
TList * GetStack() const override
TAxis * fXaxis
Pointer to X axis.
void PaintStat(Int_t dostat, TF1 *fit) override
virtual void PaintFrame()
virtual void RecalculateRange()
static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
std::unique_ptr< TGraph2DPainter > fGraph2DPainter
Pointer to a TGraph2DPainter object.
virtual void PaintTable(Option_t *option)
virtual std::vector< THistRenderingRegion > ComputeRenderingRegions(TAxis *pAxis, Int_t nPixels, bool isLog)
static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
TList * fStack
Pointer to stack of histograms (if any).
virtual void ShowProjectionY(Int_t px, Int_t py)
virtual void PaintTH2PolyColorLevels(Option_t *option)
void SetStack(TList *stack) override
virtual void PaintTH2PolyScatterPlot(Option_t *option)
TH1 * fH
Pointer to histogram to paint.
Bool_t IsInside(Double_t x, Double_t y) override
TAxis * fZaxis
Pointer to Z axis.
void RecursiveRemove(TObject *) override
Recursively remove this object from a list.
virtual void PaintBarH(Option_t *option)
void SetHistogram(TH1 *h) override
virtual void PaintTH2PolyText(Option_t *option)
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)
char * GetObjectInfo(Int_t px, Int_t py) const override
Returns string containing info about the object at position (px,py).
TList * GetContourList(Double_t contour) const override
void ProcessMessage(const char *mess, const TObject *obj) override
void SetShowProjection(const char *option, Int_t nbins) override
virtual void PaintH3BoxRaster()
virtual void PaintPalette()
virtual void PaintH3Iso()
TCutG * fCuts[kMaxCuts]
Pointers to graphical cuts.
virtual void ShowProjection3(Int_t px, Int_t py)
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to an event at (px,py).
virtual Int_t PaintInitH()
Int_t fCutsOpt[kMaxCuts]
Sign of each cut.
virtual Int_t GetYHighlightBin() const
virtual void PaintHighlightBin(Option_t *option="")
virtual void PaintStat2(Int_t dostat, TF1 *fit)
static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab)
std::vector< Double_t > fYbuf
Y buffer coordinates.
void SetHighlight() override
TString fObjectInfo
static void PaintSpecialObjects(const TObject *obj, Option_t *option)
virtual void PaintTH2PolyBins(Option_t *option)
virtual void PaintCandlePlot(Option_t *option)
virtual Int_t GetXHighlightBin() const
virtual void Paint2DErrors(Option_t *option)
Bool_t IsInside(Int_t x, Int_t y) override
A doubly linked list.
Definition TList.h:38
TObject()
TObject constructor.
Definition TObject.h:259
The Legos and Surfaces painter class.
Definition TPie.h:23
Basic string class.
Definition TString.h:138
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
std::pair< Int_t, Int_t > fBinRange
std::pair< Int_t, Int_t > fPixelRange
TLine l
Definition textangle.C:4