Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGraphPolargram.h
Go to the documentation of this file.
1 // @(#)root/graf:$Id$
2 // Author: Sebastian Boser, 02/02/06
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 #ifndef ROOT_TGraphPolargram
13 #define ROOT_TGraphPolargram
14 
15 #include "TAttText.h"
16 #include "TAttLine.h"
17 #include "TNamed.h"
18 
19 
20 class TGraphPolargram: public TNamed, public TAttText, public TAttLine {
21 
22 private:
23  Bool_t fRadian;
24  Bool_t fDegree;
25  Bool_t fGrad;
26 
27  Color_t fPolarLabelColor; ///< Set color of the angular labels
28  Color_t fRadialLabelColor; ///< Set color of the radial labels
29 
30  Double_t fAxisAngle; ///< Set angle of the radial axis
31  Double_t fPolarOffset; ///< Offset for Polar labels
32  Double_t fPolarTextSize; ///< Set Polar text size
33  Double_t fRadialOffset; ///< Offset for radial labels
34  Double_t fRadialTextSize;
35  Double_t fRwrmin; ///< Minimal radial value (real world)
36  Double_t fRwrmax; ///< Maximal radial value (real world)
37  Double_t fRwtmin; ///< Minimal angular value (real world)
38  Double_t fRwtmax; ///< Minimal angular value (real world)
39  Double_t fTickpolarSize; ///< Set size of Tickmarks
40 
41  Font_t fPolarLabelFont; ///< Set font of angular labels
42  Font_t fRadialLabelFont; ///< Set font of radial labels
43 
44  Int_t fCutRadial; ///< if fCutRadial = 0, circles are cut by radial axis
45  ///< if fCutRadial = 1, circles are not cut
46  Int_t fNdivRad; ///< Number of radial divisions
47  Int_t fNdivPol; ///< Number of polar divisions
48 
49  TString* fPolarLabels; ///<! [fNdivPol] Specified polar labels
50 
51  void Paint(Option_t* options="");
52  void PaintRadialDivisions(Bool_t drawaxis);
53  void PaintPolarDivisions(Bool_t noLabels);
54  void ReduceFraction(Int_t Num, Int_t Denom, Int_t &rnum, Int_t &rden);
55  void Init();
56  Int_t FindAlign(Double_t angle);
57  Double_t FindTextAngle(Double_t theta);
58 
59 public:
60  // TGraphPolarGram status bits
61  enum { kLabelOrtho = BIT(14)
62  };
63 
64  TGraphPolargram(const char* name, Double_t rmin, Double_t rmax,
65  Double_t tmin, Double_t tmax);
66  TGraphPolargram(const char* name="");
67  virtual ~TGraphPolargram();
68 
69  Color_t GetPolarColorLabel (){ return fPolarLabelColor;};
70  Color_t GetRadialColorLabel (){ return fRadialLabelColor;};
71 
72  Double_t GetAngle() { return fAxisAngle;};
73  Double_t GetPolarLabelSize() {return fPolarTextSize;};
74  Double_t GetPolarOffset() { return fPolarOffset; };
75  Double_t GetRadialLabelSize() {return fRadialTextSize;};
76  Double_t GetRadialOffset() { return fRadialOffset; };
77  Double_t GetRMin() { return fRwrmin;};
78  Double_t GetRMax() { return fRwrmax;};
79  Double_t GetTickpolarSize() {return fTickpolarSize;};
80  Double_t GetTMin() { return fRwtmin;};
81  Double_t GetTMax() { return fRwtmax;};
82 
83  Font_t GetPolarLabelFont() { return fPolarLabelFont;};
84  Font_t GetRadialLabelFont() { return fRadialLabelFont;};
85 
86  Int_t DistancetoPrimitive(Int_t px, Int_t py);
87  Int_t GetNdivPolar() { return fNdivPol;};
88  Int_t GetNdivRadial() { return fNdivRad;};
89 
90  Bool_t IsDegree() {return fDegree;};
91  Bool_t IsRadian() {return fRadian;};
92  Bool_t IsGrad() {return fGrad;};
93 
94  void ChangeRangePolar(Double_t tmin, Double_t tmax);
95  void Draw(Option_t* options="");
96  void ExecuteEvent(Int_t event, Int_t px, Int_t py);
97  void PaintCircle(Double_t x, Double_t y, Double_t r,
98  Double_t phimin, Double_t phimax, Double_t theta);
99  void SetAxisAngle(Double_t angle = 0); //*MENU*
100  void SetNdivPolar(Int_t Ndiv = 508); //*MENU*
101  void SetNdivRadial(Int_t Ndiv = 508); //*MENU*
102  void SetPolarLabel(Int_t div, const TString & label);
103  void SetPolarLabelSize(Double_t angularsize = 0.04); //*MENU*
104  void SetPolarLabelColor(Color_t tcolorangular = 1); //*MENU*
105  void SetPolarLabelFont(Font_t tfontangular = 62); //*MENU*
106  void SetPolarOffset(Double_t PolarOffset=0.04); //*MENU*
107  void SetRadialOffset(Double_t RadialOffset=0.025); //*MENU*
108  void SetRadialLabelSize (Double_t radialsize = 0.035); //*MENU*
109  void SetRadialLabelColor(Color_t tcolorradial = 1); //*MENU*
110  void SetRadialLabelFont(Font_t tfontradial = 62); //*MENU*
111  void SetRangePolar(Double_t tmin, Double_t tmax); //*MENU*
112  void SetRangeRadial(Double_t rmin, Double_t rmax); //*MENU*
113  void SetTickpolarSize(Double_t tickpolarsize = 0.02); //*MENU*
114  void SetToDegree(); //*MENU*
115  void SetToGrad(); //*MENU*
116  void SetToRadian(); //*MENU*
117  void SetTwoPi();
118 
119  ClassDef(TGraphPolargram,1); // Polar axis
120 };
121 
122 #endif