Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
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 
30 
31 class TH1;
32 class TAxis;
33 class TCutG;
34 class TGaxis;
35 class TPainter3dAlgorithms;
36 class TGraph2DPainter;
37 class TPie;
38 const Int_t kMaxCuts = 16;
39 
40 struct THistRenderingRegion
41 {
42  std::pair<Int_t, Int_t> fPixelRange;
43  std::pair<Int_t, Int_t> fBinRange;
44 };
45 
46 
47 class THistPainter : public TVirtualHistPainter {
48 
49 protected:
50  TH1 *fH; //pointer to histogram to paint
51  TAxis *fXaxis; //pointer to X axis
52  TAxis *fYaxis; //pointer to Y axis
53  TAxis *fZaxis; //pointer to Z axis
54  TList *fFunctions; //pointer to histogram list of functions
55  TPainter3dAlgorithms *fLego; //pointer to a TPainter3dAlgorithms object
56  TGraph2DPainter *fGraph2DPainter; //pointer to a TGraph2DPainter object
57  TPie *fPie; //pointer to a TPie in case of option PIE
58  Double_t *fXbuf; //X buffer coordinates
59  Double_t *fYbuf; //Y buffer coordinates
60  Int_t fNcuts; //Number of graphical cuts
61  Int_t fCutsOpt[kMaxCuts]; //sign of each cut
62  TCutG *fCuts[kMaxCuts]; //Pointers to graphical cuts
63  TList *fStack; //Pointer to stack of histograms (if any)
64  Int_t fShowProjection; //True if a projection must be drawn
65  TString fShowOption; //Option to draw the projection
66  Int_t fXHighlightBin; //X highlight bin
67  Int_t fYHighlightBin; //Y highlight bin
68 
69 private:
70  mutable TString fObjectInfo;
71 
72 public:
73  THistPainter();
74  virtual ~THistPainter();
75  virtual void DefineColorLevels(Int_t ndivz);
76  virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
77  virtual void DrawPanel();
78  virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
79  virtual TList *GetContourList(Double_t contour) const;
80  virtual char *GetObjectInfo(Int_t px, Int_t py) const;
81  virtual TList *GetStack() const {return fStack;}
82  virtual Int_t GetXHighlightBin() const { return fXHighlightBin; }
83  virtual Int_t GetYHighlightBin() const { return fYHighlightBin; }
84  virtual void HighlightBin(Int_t px, Int_t py);
85  virtual Bool_t IsInside(Int_t x, Int_t y);
86  virtual Bool_t IsInside(Double_t x, Double_t y);
87  virtual Int_t MakeChopt(Option_t *option);
88  virtual Int_t MakeCuts(char *cutsopt);
89  virtual void Paint(Option_t *option="");
90  virtual void PaintArrows(Option_t *option);
91  virtual void PaintAxis(Bool_t drawGridOnly=kFALSE);
92  virtual void PaintBar(Option_t *option);
93  virtual void PaintBarH(Option_t *option);
94  virtual void PaintBoxes(Option_t *option);
95  virtual void PaintCandlePlot(Option_t *option);
96  virtual void PaintColorLevels(Option_t *option);
97  virtual void PaintColorLevelsFast(Option_t *option);
98  virtual std::vector<THistRenderingRegion> ComputeRenderingRegions(TAxis *pAxis, Int_t nPixels, bool isLog);
99 
100  virtual void PaintTH2PolyBins(Option_t *option);
101  virtual void PaintTH2PolyColorLevels(Option_t *option);
102  virtual void PaintTH2PolyScatterPlot(Option_t *option);
103  virtual void PaintTH2PolyText(Option_t *option);
104  virtual void PaintContour(Option_t *option);
105  virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1,
106  Double_t elev2, Int_t icont2, Double_t x2, Double_t y2,
107  Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels);
108  virtual void PaintErrors(Option_t *option);
109  virtual void Paint2DErrors(Option_t *option);
110  virtual void PaintFrame();
111  virtual void PaintFunction(Option_t *option);
112  virtual void PaintHighlightBin(Option_t *option="");
113  virtual void PaintHist(Option_t *option);
114  virtual void PaintH3(Option_t *option="");
115  virtual void PaintH3Box(Int_t iopt);
116  virtual void PaintH3BoxRaster();
117  virtual void PaintH3Iso();
118  virtual Int_t PaintInit();
119  virtual Int_t PaintInitH();
120  virtual void PaintLego(Option_t *option);
121  virtual void PaintLegoAxis(TGaxis *axis, Double_t ang);
122  virtual void PaintPalette();
123  virtual void PaintScatterPlot(Option_t *option);
124  virtual void PaintStat(Int_t dostat, TF1 *fit);
125  virtual void PaintStat2(Int_t dostat, TF1 *fit);
126  virtual void PaintStat3(Int_t dostat, TF1 *fit);
127  virtual void PaintSurface(Option_t *option);
128  virtual void PaintTriangles(Option_t *option);
129  virtual void PaintTable(Option_t *option);
130  virtual void PaintText(Option_t *option);
131  virtual void PaintTitle();
132  virtual void PaintTF3();
133  virtual void ProcessMessage(const char *mess, const TObject *obj);
134  static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab);
135  static Int_t ProjectMercator2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab);
136  static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab);
137  static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab);
138  virtual void RecalculateRange();
139  virtual void RecursiveRemove(TObject *) {;}
140  virtual void SetHighlight();
141  virtual void SetHistogram(TH1 *h);
142  virtual void SetStack(TList *stack) {fStack = stack;}
143  virtual void SetShowProjection(const char *option,Int_t nbins);
144  virtual void ShowProjectionX(Int_t px, Int_t py);
145  virtual void ShowProjectionY(Int_t px, Int_t py);
146  virtual void ShowProjection3(Int_t px, Int_t py);
147  virtual Int_t TableInit();
148 
149  static const char *GetBestFormat(Double_t v, Double_t e, const char *f);
150  static void PaintSpecialObjects(const TObject *obj, Option_t *option);
151 
152  ClassDef(THistPainter,0) //Helper class to draw histograms
153 };
154 
155 #endif