ROOT logo
// @(#)root/graf:$Id: TGraphPolargram.cxx 31712 2009-12-09 09:57:53Z couet $
// Author: Sebastian Boser, Mathieu Demaret 02/02/06

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//______________________________________________________________________________
/* Begin_Html
<center><h2>TGraphPolargram : to draw polar axis</h2></center>
TGraphPolargram draw the polar axis of the TGraphPolar.
<p>
Example:
End_Html
Begin_Macro(source)
{
   TCanvas * CPol = new TCanvas("CPol","TGraphPolar Examples",500,500);

   Double_t rmin=0;
   Double_t rmax=TMath::Pi()*2;
   Double_t r[1000];
   Double_t theta[1000];

   TF1 * fp1 = new TF1("fplot","cos(x)",rmin,rmax);
   for (Int_t ipt = 0; ipt < 1000; ipt++) {
      r[ipt] = ipt*(rmax-rmin)/1000+rmin;
      theta[ipt] = fp1->Eval(r[ipt]);
   }
   TGraphPolar * grP1 = new TGraphPolar(1000,r,theta);
   grP1->SetLineColor(2);
   grP1->Draw("AOL");

   return CPol;
}
End_Macro */


#include "TGraphPolar.h"
#include "TGraphPolargram.h"
#include "TGaxis.h"
#include "THLimitsFinder.h"
#include "TVirtualPad.h"
#include "TROOT.h"
#include "TLatex.h"
#include "TEllipse.h"
#include "TMath.h"


ClassImp(TGraphPolargram);

//______________________________________________________________________________
TGraphPolargram::TGraphPolargram(const char* name, Double_t rmin, Double_t rmax,
                                 Double_t tmin, Double_t tmax):
                                 TNamed(name,"Polargram")
{
   // TGraphPolargram Constructor.
   Init();
   fNdivRad          = 508;
   fNdivPol          = 508;
   fPolarLabels      = NULL;
   fRwrmax           = rmax;
   fRwrmin           = rmin;
   fRwtmin           = tmin;
   fRwtmax           = tmax;
}


//______________________________________________________________________________
TGraphPolargram::TGraphPolargram(const char* name):
                                 TNamed(name,"Polargram")
{
   // Short constructor used in the case of a spider plot.

   Init();
   fNdivRad     = 0;
   fNdivPol     = 0;
   fPolarLabels = NULL;
   fRwrmax      = 1;
   fRwrmin      = 0;
   fRwtmax      = 0;
   fRwtmin      = 0;
}


//______________________________________________________________________________
TGraphPolargram::~TGraphPolargram()
{
   // TGraphPolargram destructor.

   if (fPolarLabels != NULL) delete [] fPolarLabels;
}


//______________________________________________________________________________
void TGraphPolargram::ChangeRangePolar(Double_t tmin, Double_t tmax)
{
   // Set the Polar range.
   // tmin is the start number.
   // tmax is the end number.

   if (tmin < tmax) {
      fRwtmin = tmin;
      fRwtmax = tmax;
   }
   if (gPad) gPad->Modified();
}


//______________________________________________________________________________
Int_t TGraphPolargram::DistancetoPrimitive(Int_t px, Int_t py)
{
   // Everything within the circle belongs to the TGraphPolargram.

   Int_t i;
   Double_t x = gPad->AbsPixeltoX(px);
   Double_t y = gPad->AbsPixeltoY(py);

   // Check if close to a (major) radial line.
   Double_t rad = TMath::Sqrt(x*x+y*y);
   Int_t div    = (Int_t)rad*(fNdivRad%100);
   Double_t dr  = TMath::Min(TMath::Abs(rad-div*1./(fNdivRad%100)),
                             TMath::Abs(rad-(div+1)*1./(fNdivRad%100)));
   Int_t drad   = gPad->XtoPixel(dr)-gPad->XtoPixel(0);

   // Check if close to a (major) Polar line.
   // This is not a proper calculation, but rather fast.
   Int_t dt = kMaxPixel;
   for (i=0; i<(fNdivPol%100); i++) {
      Double_t theta = i*2*TMath::Pi()/(fNdivPol%100);

      // Attention: px,py in pixel units, line given in user coordinates.
      Int_t dthis = DistancetoLine(px,py,0.,0.,TMath::Cos(theta),
                                               TMath::Sin(theta));

      // Fails if we are outside box discribed by the line.
      // (i.e for all hor/vert lines)
      if (dthis==9999) {

         // Outside -> Get distance to endpoint of line.
         if (rad>1) {
            dthis = (Int_t)TMath::Sqrt(
                    TMath::Power(px-gPad->XtoPixel(TMath::Cos(theta)),2)+
                    TMath::Power(py-gPad->YtoPixel(TMath::Sin(theta)),2));
         } else {

            // Check for horizontal line.
            if (((TMath::Abs(theta-TMath::Pi())<0.1) &&
                ((px-gPad->XtoPixel(0))<0))          ||
                ((TMath::Abs(theta)<0.1)             &&
                ((px-gPad->XtoPixel(0))>0))) {
               dthis = TMath::Abs(py-gPad->YtoPixel(0.));
            }

            //Check for vertical line.
            if (((TMath::Abs(theta-TMath::PiOver2())<0.1)   &&
               ((py-gPad->YtoPixel(0))>0))                 ||
                ((TMath::Abs(theta-3*TMath::PiOver2())<0.1) &&
                                  (py-gPad->YtoPixel(0))<0)) {
               dthis = TMath::Abs(px-gPad->XtoPixel(0.));
            }
            if (dthis==9999) {

               // Inside, but out of box for nonorthogonal line ->
               // get distance to start point.
               dthis = (Int_t)TMath::Sqrt(
                       TMath::Power(px-gPad->XtoPixel(0.),2)+
                       TMath::Power(py-gPad->YtoPixel(0.),2));
            }
         }
      }

      // Take distance to closes line.
      dt = TMath::Min(dthis,dt);
   }
   return TMath::Min(drad, dt);
}


//______________________________________________________________________________
void TGraphPolargram::Draw(Option_t* options)
{
   // Draw Polargram.

   Paint(options);
   AppendPad(options);
}


//______________________________________________________________________________
void TGraphPolargram::ExecuteEvent(Int_t event, Int_t px, Int_t py)
{
   // Indicate that there is something to click here.

   Int_t kMaxDiff = 20;
   static Int_t d1, d2, d3, px1, py1, px3, py3, px4, py4;
   static Bool_t p1, p2, p3, p4, p5, p6, p7, p8;
   Double_t px2, py2;
   p2 = p3 = p4 = p5 = p6 = p7 = p8 = kFALSE;
   if (!gPad->IsEditable()) return;
   switch (event) {
      case kMouseMotion:
         px1 = gPad->XtoAbsPixel(TMath::Cos(GetAngle()));
         py1 = gPad->YtoAbsPixel(TMath::Sin(GetAngle()));
         d1  = TMath::Abs(px1 - px) + TMath::Abs(py1-py); //simply take sum of pixels differences
         p1  = kFALSE;
         px2 = gPad->XtoAbsPixel(-1);
         py2 = gPad->YtoAbsPixel(1);
         d2  = (Int_t)(TMath::Abs(px2 - px) + TMath::Abs(py2 - py)) ;
         px3 = gPad->XtoAbsPixel(-1);
         py3 = gPad->YtoAbsPixel(-1);
         d3  = TMath::Abs(px3 - px) + TMath::Abs(py3 - py) ; //simply take sum of pixels differences
         // check if point is close to the radial axis
         if (d1 < kMaxDiff) {
            gPad->SetCursor(kMove);
            p1 = kTRUE;
         }
         // check if point is close to the left high axis
         if ( d2 < kMaxDiff) {
            gPad->SetCursor(kHand);
            p7 = kTRUE;
         }
         // check if point is close to the left down axis
         if ( d3 < kMaxDiff) {
            gPad->SetCursor(kHand);
            p8 = kTRUE;
         }
         // check if point is close to a main circle
         if (!p1 && !p7 ) {
            p6 = kTRUE;
            gPad->SetCursor(kHand);
         }
         break;

      case kButton1Down:
         // Record initial coordinates
         px4 = px;
         py4 = py;

      case kButton1Motion:
         if (p1) {
            px2 = gPad->AbsPixeltoX(px);
            py2 = gPad->AbsPixeltoY(py);
            if ( px2 < 0 && py2 < 0)  {p2 = kTRUE;};
            if ( px2 < 0 && py2 > 0 ) {p3 = kTRUE;};
            if ( px2 > 0 && py2 > 0 ) {p4 = kTRUE;};
            if ( px2 > 0 && py2 < 0 ) {p5 = kTRUE;};
            px2 = TMath::ACos(TMath::Abs(px2));
            py2 = TMath::ASin(TMath::Abs(py2));
            if (p2) {
               fAxisAngle = TMath::Pi()+(px2+py2)/2;
               p2 = kFALSE;
            };
            if (p3) {
               fAxisAngle = TMath::Pi()-(px2+py2)/2;
               p3 = kFALSE;
            };
            if (p4) {
               fAxisAngle = (px2+py2)/2;
               p4 = kFALSE;
            };
            if (p5) {
               fAxisAngle = -(px2+py2)/2;
               p5 = kFALSE;
            };
         }
         break;

      case kButton1Up:
         Paint();
   }
}


//______________________________________________________________________________
Int_t TGraphPolargram::FindAlign(Double_t angle)
{
   // Find the alignement rule to apply for TText::SetTextAlign(Short_t).

   Double_t pi = TMath::Pi();

   while(angle < 0 || angle > 2*pi){
      if(angle < 0) angle+=2*pi;
      if(angle > 2*pi) angle-=2*pi;
   }
   if(!TestBit(TGraphPolargram::kLabelOrtho)){
      if(angle > 0 && angle < pi/2) return 11;
      else if(angle > pi/2 && angle < pi) return 31;
      else if(angle > pi && angle < 3*pi/2) return 33;
      else if(angle > 3*pi/2 && angle < 2*pi) return 13;
      else if(angle == 0 || angle == 2*pi) return 12;
      else if(angle == pi/2) return 21;
      else if(angle == pi) return 32;
      else if(angle == 3*pi/2) return 23;
      else return 0;
   }
   else{
      if(angle >= 0 && angle <= pi/2) return 12;
      else if((angle > pi/2 && angle <= pi) || (angle > pi && angle <= 3*pi/2)) return 32;
      else if(angle > 3*pi/2 && angle <= 2*pi) return 12;
      else return 0;
   }
}


//______________________________________________________________________________
Double_t TGraphPolargram::FindTextAngle(Double_t angle)
{
   // Determine the orientation of the polar labels according to their angle.

   Double_t pi = TMath::Pi();
   Double_t convraddeg = 180.0/pi;

   while(angle < 0 || angle > 2*pi){
      if(angle < 0) angle+=2*pi;
      if(angle > 2*pi) angle-=2*pi;
   }

   if(angle >= 0 && angle <= pi/2) return angle*convraddeg;
   else if(angle > pi/2 && angle <= pi) return (angle + pi)*convraddeg;
   else if(angle > pi && angle <= 3*pi/2) return (angle - pi)*convraddeg;
   else if(angle > 3*pi/2 && angle <= 2*pi) return angle*convraddeg;
   else return 0;
}


//______________________________________________________________________________
void TGraphPolargram::Init()
{
   // Initiallize some of the fields of TGraphPolargram.

   fAxisAngle        = 0;
   fCutRadial        = 0;
   fDegree           = kFALSE;
   fGrad             = kFALSE;
   fLineStyle        = 3;
   fPolarLabelColor  = 1;
   fPolarLabelFont   = 62;
   fPolarOffset      = 0.04;
   fPolarTextSize    = 0.04;
   fRadialOffset     = 0.025;
   fRadian           = kTRUE;
   fRadialLabelColor = 1;
   fRadialLabelFont  = 62;
   fRadialTextSize   = 0.035;
   fTickpolarSize    = 0.02;
}


//______________________________________________________________________________
void TGraphPolargram::Paint(Option_t * chopt)
{
   // Paint TGraphPolargram.

   Int_t optionpoldiv, optionraddiv;
   Bool_t optionLabels = kTRUE;

   TString opt = chopt;
   opt.ToUpper();

   if(opt.Contains('P')) optionpoldiv=1; else optionpoldiv=0;
   if(opt.Contains('R')) optionraddiv=1; else optionraddiv=0;
   if(opt.Contains('O')) SetBit(TGraphPolargram::kLabelOrtho);
   else ResetBit(TGraphPolargram::kLabelOrtho);
   if(!opt.Contains('P') && !opt.Contains('R')) optionpoldiv=optionraddiv=1;
   if(opt.Contains('N')) optionLabels = kFALSE;

   if(optionraddiv) PaintRadialDivisions(kTRUE);
   else PaintRadialDivisions(kFALSE);
   if(optionpoldiv) PaintPolarDivisions(optionLabels);
}


//______________________________________________________________________________
void TGraphPolargram::PaintCircle(Double_t x1, Double_t y1, Double_t r,
                            Double_t phimin, Double_t phimax, Double_t theta)
{
   // This is simplifed from TEllipse::PaintEllipse.
   // Draw this ellipse with new coordinates.

   Int_t i;
   const Int_t np = 200; // Number of point to draw circle
   static Double_t x[np+3], y[np+3];

   // Set number of points approximatively proportional to the ellipse
   // circumference.

   Double_t circ = TMath::Pi()*2*r*(phimax-phimin)/36;
   Int_t n = (Int_t)(np*circ/((gPad->GetX2()-gPad->GetX1())+
                              (gPad->GetY2()-gPad->GetY1())));
   if (n < 8) n  = 8;
   if (n > np) n = np;
   Double_t angle,dx,dy;
   Double_t dphi = (phimax-phimin)*TMath::Pi()/(180*n);
   Double_t ct   = TMath::Cos(TMath::Pi()*theta/180);
   Double_t st   = TMath::Sin(TMath::Pi()*theta/180);
   for (i=0; i<=n; i++) {
      angle = phimin*TMath::Pi()/180 + Double_t(i)*dphi;
      dx    = r*TMath::Cos(angle);
      dy    = r*TMath::Sin(angle);
      x[i]  =  x1 + dx*ct - dy*st;
      y[i]  =  y1 + dx*st + dy*ct;
   }
   gPad->PaintPolyLine(n+1,x,y);
}


//______________________________________________________________________________
void TGraphPolargram::PaintPolarDivisions(Bool_t optionLabels)
{
   // Draw Polar divisions.
   // Check for editable pad or create default.

   Int_t i, j, rnum, rden, first, last;
   if (!gPad) return ;

   gPad->RangeAxis(-1,-1,1,1);
   gPad->Range(-1.25,-1.25,1.25,1.25);
   Int_t ndivMajor = fNdivPol%100;
   Int_t ndivMinor = fNdivPol/100;

   if (!gPad->GetLogy()) {
      for (i=0; i<ndivMajor; i++) {
         Double_t txtval    = fRwtmin + i*(fRwtmax-fRwtmin)/ndivMajor;
         Double_t theta     = i*2*TMath::Pi()/ndivMajor;
         Double_t costheta  = TMath::Cos(theta);
         Double_t sintheta  = TMath::Sin(theta);
         Double_t tantheta  = TMath::Tan(theta);
         Double_t costhetas = (1+fPolarOffset)*costheta;
         Double_t sinthetas = (1+fPolarOffset)*sintheta;
         Double_t corr = 0.01;

         TLatex *textangular = new TLatex();
         textangular->SetTextColor(GetPolarColorLabel());
         textangular->SetTextFont(GetPolarLabelFont());

         const char* form = (char *)" ";
         TGaxis axis;
         if (TestBit(TGraphPolargram::kLabelOrtho)) {
            // Polar numbers are aligned with their axis.
            if(fPolarLabels == NULL && optionLabels){;
               if (fRadian) {
                  // Radian case.
                  ReduceFraction(2*i, ndivMajor, rnum, rden); // Reduces the fraction.
                  if (rnum == 0)                       form = Form("%d",rnum);
                  if (rnum == 1 && rden == 1)          form = Form("#pi");
                  if (rnum == 1 && rden != 1)          form = Form("#frac{#pi}{%d}",rden);
                  if (rnum != 1 && rden == 1 && i !=0) form= Form("%d#pi",rnum);
                  if (rnum != 1 && rden != 1)          form = Form("#frac{%d#pi}{%d}",rnum,rden);
                  textangular->SetTextAlign(FindAlign(theta));
                  textangular->PaintLatex(costhetas,
                                          sinthetas, FindTextAngle(theta),
                                          GetPolarLabelSize(), form);
               } else {
                  // Any other cases: numbers are aligned with their axis.
                  form = Form("%5.3g",txtval);
                  axis.LabelsLimits(form,first,last);
                  TString s = Form("%s",form);
                  if (first != 0) s.Remove(0, first);
                  textangular->SetTextAlign(FindAlign(theta));
                  textangular->PaintLatex(costhetas,
                                          sinthetas, FindTextAngle(theta),
                                          GetPolarLabelSize(), s);
               }
            } else if (fPolarLabels){
               // print the specified polar labels
               textangular->SetTextAlign(FindAlign(theta));
               textangular->PaintLatex(costhetas,sinthetas,FindTextAngle(theta),
                                       GetPolarLabelSize(), fPolarLabels[i]);
            }
         } else {
            // Polar numbers are shown horizontaly.
            if(fPolarLabels == NULL && optionLabels){
               if (fRadian) {
               // Radian case
                  ReduceFraction(2*i, ndivMajor, rnum, rden);
                  if (rnum == 0) form = Form("%d",rnum);
                  if (rnum == 1 && rden == 1)          form = Form("#pi");
                  if (rnum == 1 && rden != 1)          form = Form("#frac{#pi}{%d}",rden);
                  if (rnum != 1 && rden == 1 && i !=0) form = Form("%d#pi",rnum);
                  if (rnum != 1 && rden != 1)          form = Form("#frac{%d#pi}{%d}",rnum,rden);
                  if(theta >= 3*TMath::Pi()/12.0 && theta < 2*TMath::Pi()/3.0) corr=0.04;
                  textangular->SetTextAlign(FindAlign(theta));
                  textangular->PaintLatex(costhetas,corr+sinthetas,0,
                                          GetPolarLabelSize(),form);
               } else {
               // Any other cases where numbers are shown horizontaly.
                  form = Form("%5.3g",txtval);
                  axis.LabelsLimits(form,first,last);
                  TString s = Form("%s",form);
                  if (first != 0) s.Remove(0, first);
                  if(theta >= 3*TMath::Pi()/12.0 && theta < 2*TMath::Pi()/3.0) corr=0.04;
                  textangular->SetTextAlign(FindAlign(theta));
                  textangular->PaintLatex(costhetas, //j'ai efface des offset la
                                          corr+sinthetas,0,GetPolarLabelSize(),s);
               }
            } else if (fPolarLabels) {
               // print the specified polar labels
               textangular->SetTextAlign(FindAlign(theta));
               textangular->PaintText(costhetas,sinthetas,fPolarLabels[i]);
            }
         }
         TAttLine::Modify();
       //Check if SetTickpolar is actived, and draw Tickmarcks
         Bool_t issettickpolar = gPad->GetTicky();

         if (issettickpolar) {
            if (theta != 0 && theta !=TMath::Pi()) {
               gPad->PaintLine((sintheta-GetTickpolarSize())/tantheta,sintheta-GetTickpolarSize(),
               (sintheta+GetTickpolarSize())/tantheta,sintheta+GetTickpolarSize());
            }
            if (theta == 0 || theta ==TMath::Pi()) {
               gPad->PaintLine(1-GetTickpolarSize(),0,1+GetTickpolarSize(),0);
               gPad->PaintLine(-1+GetTickpolarSize(),0,-1-GetTickpolarSize(),0);
            }
         }
         TAttLine::SetLineStyle(1);
         TAttLine::Modify();
         gPad->PaintLine(0.,0.,costheta,sintheta);
         delete textangular;
       // Add minor lines w/o text.
         Int_t oldLineStyle = GetLineStyle();
         TAttLine::SetLineStyle(2);  //Minor lines always in this style.
         TAttLine::Modify();  //Changes line attributes apart from style.
         for (j=1; j<ndivMinor; j++) {
            Double_t thetamin = theta+j*2*TMath::Pi()/(ndivMajor*ndivMinor);
            gPad->PaintLine(0.,0.,TMath::Cos(thetamin),TMath::Sin(thetamin));
         }
         TAttLine::SetLineStyle(oldLineStyle);
         TAttLine::Modify();
      }
   } else {
         Int_t big = (Int_t)fRwtmax;
         Int_t test= 1;
         while (big >= 10) {
            big = big/10;
            test++;
         }
         for (i=1; i<=test; i++) {
         Double_t txtval    = pow((double)10,(double)(i-1));
         Double_t theta     = (i-1)*2*TMath::Pi()/(double)(test);
         Double_t costheta  = TMath::Cos(theta);
         Double_t sintheta  = TMath::Sin(theta);
         Double_t tantheta  = TMath::Tan(theta);
         Double_t costhetas = (1+fPolarOffset)*costheta;
         Double_t sinthetas = (1+fPolarOffset)*sintheta;
         Double_t corr      = 0.01;

         TLatex *textangular = new TLatex();
         textangular->SetTextColor(GetPolarColorLabel());
         textangular->SetTextFont(GetPolarLabelFont());

         const char* form = (char *)" ";
         TGaxis axis;

         if (TestBit(TGraphPolargram::kLabelOrtho)) {
            if(fPolarLabels==NULL && optionLabels){
            // Polar numbers are aligned with their axis.
               form = Form("%5.3g",txtval);
               axis.LabelsLimits(form,first,last);
               TString s = Form("%s",form);
               if (first != 0) s.Remove(0, first);
               textangular->SetTextAlign(FindAlign(theta));
               textangular->PaintLatex(costhetas,
                                       sinthetas, FindTextAngle(theta), GetPolarLabelSize(), s);
            }
            else if (fPolarLabels){
               // print the specified polar labels
               textangular->SetTextAlign(FindAlign(theta));
               textangular->PaintText(costhetas,sinthetas,fPolarLabels[i]);
            }

         } else {
            if(fPolarLabels==NULL && optionLabels){
            // Polar numbers are shown horizontaly.
               form = Form("%5.3g",txtval);
               axis.LabelsLimits(form,first,last);
               TString s = Form("%s",form);
               if (first != 0) s.Remove(0, first);
               if(theta >= 3*TMath::Pi()/12.0 && theta < 2*TMath::Pi()/3.0) corr=0.04;
               textangular->SetTextAlign(FindAlign(theta));
               textangular->PaintLatex(costhetas,
                                       corr+sinthetas,0,GetPolarLabelSize(),s);
            } else if (fPolarLabels){
               // print the specified polar labels
               textangular->SetTextAlign(FindAlign(theta));
               textangular->PaintText(costhetas,sinthetas,fPolarLabels[i]);
            }
         }

         TAttLine::Modify();
         //Check if SetTickpolar is actived, and draw Tickmarcks
         Bool_t issettickpolar = gPad->GetTicky();
         if (issettickpolar) {
            if (theta != 0 && theta !=TMath::Pi()) {
               gPad->PaintLine((sintheta-GetTickpolarSize())/tantheta,sintheta-GetTickpolarSize(),
               (sintheta+GetTickpolarSize())/tantheta,sintheta+GetTickpolarSize());
            }
            if (theta == 0 || theta ==TMath::Pi()) {
               gPad->PaintLine(1-GetTickpolarSize(),0,1+GetTickpolarSize(),0);
               gPad->PaintLine(-1+GetTickpolarSize(),0,-1-GetTickpolarSize(),0);
            }
         }
         TAttLine::SetLineStyle(1);
         TAttLine::Modify();
         gPad->PaintLine(0.,0.,costheta,sintheta);
         delete textangular;
         // Add minor lines w/o text.
         Int_t oldLineStyle = GetLineStyle();
         TAttLine::SetLineStyle(2);  //Minor lines always in this style.
         TAttLine::Modify();  //Changes line attributes apart from style.
         Double_t a=0;
         Double_t b,c,d;
         b = TMath::Log(10)*test;
         d= 2*TMath::Pi()/(double)test;
         for (j=1; j<9; j++) {
            a=TMath::Log(j+1)-TMath::Log(j)+a;
            c=a/b*6.28+d*(i-1);
            gPad->PaintLine(0.,0.,TMath::Cos(c),TMath::Sin(c));
         }
         TAttLine::SetLineStyle(oldLineStyle);
         TAttLine::Modify();
      }
   }
}


//______________________________________________________________________________
void TGraphPolargram::PaintRadialDivisions(Bool_t drawaxis)
{
   // Paint radial divisions.
   // Check for editable pad or create default.

   static char chopt[8] = "";
   Int_t i,j;
   Int_t ndiv      = TMath::Abs(fNdivRad);
   Int_t ndivMajor = ndiv%100;
   Int_t ndivMinor = ndiv/100;
   Int_t ndivmajor = 0;
   Double_t frwrmin = 0., frwrmax = 0., binWidth = 0;

   THLimitsFinder::Optimize(fRwrmin,fRwrmax,ndivMajor,frwrmin,
                               frwrmax, ndivmajor,binWidth,"");

   if (!gPad) return ;
   if (!gPad->GetLogx()) {
      gPad->RangeAxis(-1,-1,1,1);
      gPad->Range(-1.25,-1.25,1.25,1.25);
      Double_t umin  = fRwrmin;
      Double_t umax  = fRwrmax;
      Double_t rmajmin  = (frwrmin-fRwrmin)/(fRwrmax-fRwrmin);
      Double_t rmajmax  = (frwrmax-fRwrmin)/(fRwrmax-fRwrmin);
      Double_t dist  = (rmajmax-rmajmin)/ndivmajor;
      Int_t ndivminor = 0;

      chopt[0] = 0;
      strcat(chopt, "SDH");
      if (fNdivRad < 0) strcat(chopt, "N");
      if(drawaxis){
      // Paint axis.
         TGaxis axis;
         axis.SetLabelSize(GetRadialLabelSize());
         axis.SetLabelColor(GetRadialColorLabel());
         axis.SetLabelFont(GetRadialLabelFont());
         axis.SetLabelOffset(GetRadialOffset());
         axis.PaintAxis(0, 0, TMath::Cos(GetAngle()), TMath::Sin(GetAngle()),
                                        umin, umax,  ndiv, chopt, 0., kFALSE);
      }

      // Paint Circles.
      // First paint main circle.
      PaintCircle(0.,0.,1,0.,360,0);
      // Optimised case.
      if (fNdivRad>0 ) {
         Double_t frwrmini = 0., frwrmaxi = 0., binWidth2 =0;
         THLimitsFinder::Optimize(frwrmin,frwrmin+binWidth,ndivMinor,frwrmini,
                                    frwrmaxi, ndivminor,binWidth2,"");
         Double_t dist2 = dist/(ndivminor);
         // Paint major circles.
         for (i=1; i<=ndivmajor+2; i++) {
            TAttLine::SetLineStyle(1);
            TAttLine::Modify();
            PaintCircle(0.,0.,rmajmin,0.,360,0);

            //Paint minor circles.
            TAttLine::SetLineStyle(2);
            TAttLine::Modify();
            for (j=1; j<ndivminor+1; j++) {
               if (rmajmin+j*dist2<=1) PaintCircle(0.,0.,rmajmin+j*dist2,0.,360,0);
            }
            rmajmin = (frwrmin-fRwrmin)/(fRwrmax-fRwrmin)+(i-1)*dist;
         }
      // Non-optimized case.
      } else {

         // Paint major circles.
         for (i=1; i<=ndivMajor; i++) {
            TAttLine::SetLineStyle(1);
            TAttLine::Modify();
            Double_t rmaj = i*1./ndivMajor;
            PaintCircle(0.,0.,rmaj,0.,360,0);

            // Paint minor circles.
            for (j=1; j<ndivMinor; j++) {
               TAttLine::SetLineStyle(2);
               TAttLine::Modify();
               PaintCircle(0.,0.,rmaj- j*1./(ndivMajor*ndivMinor),0.,360,0);
            }
         }
      }
   } else {
   // Draw Log scale on radial axis if option activated.
      Int_t big = (Int_t)fRwrmax;
      Int_t test= 0;
      while (big >= 10) {
         big = big/10;
         test++;
      }
      for (i=1; i<=test; i++) {
         TAttLine::SetLineStyle(1);
         TAttLine::Modify();
         Double_t ecart;
         ecart = ((double) i)/ ((double) test);
         PaintCircle(0.,0.,ecart,0,360,0);
         TAttLine::SetLineStyle(GetLineStyle());
         TAttLine::Modify();
         Double_t a=0;
         Double_t b,c,d;
         b = TMath::Log(10)*test;
         d = 1/(double)test;
         for (j=1; j<9; j++) {
            a = TMath::Log(j+1)-TMath::Log(j)+a;
            c = a/b+d*(i-1);
            PaintCircle(0,0.,c,0.,360,0);
         }
      }
   }
   TAttLine::SetLineStyle(1);
   TAttLine::Modify();
}


//______________________________________________________________________________
void TGraphPolargram::ReduceFraction(Int_t num, Int_t den, Int_t &rnum, Int_t &rden)
{
   // Reduce fractions.

   Int_t a = 0;
   Int_t b = 0;
   Int_t i = 0;
   Int_t j = 0;
   a = den;
   b = num;
   if (b > a) {
      j = b;
   } else {
      j = a;
   }
   for (i=j; i > 1; i--) {
      if ((a % i == 0) && (b % i == 0)) {
         a = a/i;
         b = b/i;
      }
   }
   rden = a;
   rnum = b;
}


//______________________________________________________________________________
void TGraphPolargram::SetAxisAngle(Double_t angle)
{
   // Set axis angle.

   fAxisAngle = angle/180*TMath::Pi();
}


//______________________________________________________________________________
void TGraphPolargram::SetNdivPolar(Int_t ndiv)
{
   // Set the number of Polar divisions: enter a number ij with 0<i<99
   //                                                           0<j<99
   // i sets the major Polar divisions.
   // j sets the minor Polar divisions.

   if (ndiv > 0)
      fNdivPol = ndiv;
   if (gPad) gPad->Modified();
}


//_____________________________________________________________________________
void TGraphPolargram::SetNdivRadial(Int_t ndiv)
{
  // Set the number of radial divisions: enter a number ij with 0<i<99
  //                                                            0<j<99
  // i sets the major radial divisions.
  // j sets the minor radial divisions.

   fNdivRad = ndiv;
   if (gPad) gPad->Modified();
}


//_____________________________________________________________________________
void TGraphPolargram::SetPolarLabel(Int_t div, const TString & label)
{
   // Set some specified polar labels, used in the case of a spider plot.
   if(fPolarLabels == NULL)
      fPolarLabels = new TString[fNdivPol];
   fPolarLabels[div]=label;
   if (gPad) gPad->Modified();
}


//_____________________________________________________________________________
void TGraphPolargram::SetPolarLabelColor(Color_t tcolorangular )
{
   // Set Polar labels color.

   fPolarLabelColor = tcolorangular;
}


//______________________________________________________________________________
void TGraphPolargram::SetPolarLabelFont(Font_t tfontangular)
{

   // Set Polar label font.

   fPolarLabelFont = tfontangular;
}


//______________________________________________________________________________
void TGraphPolargram::SetPolarLabelSize(Double_t angularsize )
{
   // Set angular labels size.

   fPolarTextSize = angularsize;
}


//______________________________________________________________________________
void TGraphPolargram::SetPolarOffset(Double_t angularOffset)
{
   // Set the labels offset.

   fPolarOffset = angularOffset;
   if (gPad) gPad->Modified();
}


//______________________________________________________________________________
void TGraphPolargram::SetRadialLabelColor(Color_t tcolorradial )
{
   // Set radial labels color.

   fRadialLabelColor = tcolorradial;
}


//______________________________________________________________________________
void TGraphPolargram::SetRadialLabelFont(Font_t tfontradial)
{
   // Set radial label font.

   fRadialLabelFont = tfontradial;
}


//______________________________________________________________________________
void TGraphPolargram::SetRadialLabelSize(Double_t radialsize )
{
   // Set radial labels size.

   fRadialTextSize = radialsize;
}


//______________________________________________________________________________
void TGraphPolargram::SetRadialOffset(Double_t radialOffset)
{
   // Set the labels offset.

   fRadialOffset = radialOffset;
   if (gPad) gPad->Modified();
}


//______________________________________________________________________________
void TGraphPolargram::SetRangePolar(Double_t tmin, Double_t tmax)
{
   // Allows to change range Polar.
   // tmin is the start number.
   // tmax is the end number.

   fDegree = kFALSE;
   fGrad   = kFALSE;
   fRadian = kFALSE;

   if (tmin < tmax) {
      fRwtmin = tmin;
      fRwtmax = tmax;
   }
   if (gPad) gPad->Modified();
}


//______________________________________________________________________________
void TGraphPolargram::SetRangeRadial(Double_t rmin, Double_t rmax)
{
   // Set the radial range.
   // rmin is at center of the circle.
   // rmax is at the intersection of the right X axis part and the circle.

   if (rmin < rmax) {
      fRwrmin = rmin;
      fRwrmax = rmax;
   }
   if (gPad) gPad->Modified();
}


//______________________________________________________________________________
void TGraphPolargram::SetTickpolarSize(Double_t tickpolarsize)
{
   // Set polar ticks size.

   fTickpolarSize = tickpolarsize;
}


//______________________________________________________________________________
void TGraphPolargram::SetToDegree()
{
   // The Polar circle is labelled using degree.

   fDegree = kTRUE;
   fGrad   = kFALSE;
   fRadian = kFALSE;
   ChangeRangePolar(0,360);
}


//______________________________________________________________________________
void TGraphPolargram::SetToGrad()
{
   // The Polar circle is labelled using gradian.

   fGrad   = kTRUE;
   fRadian = kFALSE;
   fDegree = kFALSE;
   ChangeRangePolar(0,200);
}


//______________________________________________________________________________
void TGraphPolargram::SetToRadian()
{
   // The Polar circle is labelled using radian.

   fRadian = kTRUE;
   fGrad   = kFALSE;
   fDegree = kFALSE;
   ChangeRangePolar(0,2*TMath::Pi());
}


//______________________________________________________________________________
void TGraphPolargram::SetTwoPi()
{
   //set range from 0 to 2*pi
   SetRangePolar(0,2*TMath::Pi());
}
 TGraphPolargram.cxx:1
 TGraphPolargram.cxx:2
 TGraphPolargram.cxx:3
 TGraphPolargram.cxx:4
 TGraphPolargram.cxx:5
 TGraphPolargram.cxx:6
 TGraphPolargram.cxx:7
 TGraphPolargram.cxx:8
 TGraphPolargram.cxx:9
 TGraphPolargram.cxx:10
 TGraphPolargram.cxx:11
 TGraphPolargram.cxx:12
 TGraphPolargram.cxx:13
 TGraphPolargram.cxx:14
 TGraphPolargram.cxx:15
 TGraphPolargram.cxx:16
 TGraphPolargram.cxx:17
 TGraphPolargram.cxx:18
 TGraphPolargram.cxx:19
 TGraphPolargram.cxx:20
 TGraphPolargram.cxx:21
 TGraphPolargram.cxx:22
 TGraphPolargram.cxx:23
 TGraphPolargram.cxx:24
 TGraphPolargram.cxx:25
 TGraphPolargram.cxx:26
 TGraphPolargram.cxx:27
 TGraphPolargram.cxx:28
 TGraphPolargram.cxx:29
 TGraphPolargram.cxx:30
 TGraphPolargram.cxx:31
 TGraphPolargram.cxx:32
 TGraphPolargram.cxx:33
 TGraphPolargram.cxx:34
 TGraphPolargram.cxx:35
 TGraphPolargram.cxx:36
 TGraphPolargram.cxx:37
 TGraphPolargram.cxx:38
 TGraphPolargram.cxx:39
 TGraphPolargram.cxx:40
 TGraphPolargram.cxx:41
 TGraphPolargram.cxx:42
 TGraphPolargram.cxx:43
 TGraphPolargram.cxx:44
 TGraphPolargram.cxx:45
 TGraphPolargram.cxx:46
 TGraphPolargram.cxx:47
 TGraphPolargram.cxx:48
 TGraphPolargram.cxx:49
 TGraphPolargram.cxx:50
 TGraphPolargram.cxx:51
 TGraphPolargram.cxx:52
 TGraphPolargram.cxx:53
 TGraphPolargram.cxx:54
 TGraphPolargram.cxx:55
 TGraphPolargram.cxx:56
 TGraphPolargram.cxx:57
 TGraphPolargram.cxx:58
 TGraphPolargram.cxx:59
 TGraphPolargram.cxx:60
 TGraphPolargram.cxx:61
 TGraphPolargram.cxx:62
 TGraphPolargram.cxx:63
 TGraphPolargram.cxx:64
 TGraphPolargram.cxx:65
 TGraphPolargram.cxx:66
 TGraphPolargram.cxx:67
 TGraphPolargram.cxx:68
 TGraphPolargram.cxx:69
 TGraphPolargram.cxx:70
 TGraphPolargram.cxx:71
 TGraphPolargram.cxx:72
 TGraphPolargram.cxx:73
 TGraphPolargram.cxx:74
 TGraphPolargram.cxx:75
 TGraphPolargram.cxx:76
 TGraphPolargram.cxx:77
 TGraphPolargram.cxx:78
 TGraphPolargram.cxx:79
 TGraphPolargram.cxx:80
 TGraphPolargram.cxx:81
 TGraphPolargram.cxx:82
 TGraphPolargram.cxx:83
 TGraphPolargram.cxx:84
 TGraphPolargram.cxx:85
 TGraphPolargram.cxx:86
 TGraphPolargram.cxx:87
 TGraphPolargram.cxx:88
 TGraphPolargram.cxx:89
 TGraphPolargram.cxx:90
 TGraphPolargram.cxx:91
 TGraphPolargram.cxx:92
 TGraphPolargram.cxx:93
 TGraphPolargram.cxx:94
 TGraphPolargram.cxx:95
 TGraphPolargram.cxx:96
 TGraphPolargram.cxx:97
 TGraphPolargram.cxx:98
 TGraphPolargram.cxx:99
 TGraphPolargram.cxx:100
 TGraphPolargram.cxx:101
 TGraphPolargram.cxx:102
 TGraphPolargram.cxx:103
 TGraphPolargram.cxx:104
 TGraphPolargram.cxx:105
 TGraphPolargram.cxx:106
 TGraphPolargram.cxx:107
 TGraphPolargram.cxx:108
 TGraphPolargram.cxx:109
 TGraphPolargram.cxx:110
 TGraphPolargram.cxx:111
 TGraphPolargram.cxx:112
 TGraphPolargram.cxx:113
 TGraphPolargram.cxx:114
 TGraphPolargram.cxx:115
 TGraphPolargram.cxx:116
 TGraphPolargram.cxx:117
 TGraphPolargram.cxx:118
 TGraphPolargram.cxx:119
 TGraphPolargram.cxx:120
 TGraphPolargram.cxx:121
 TGraphPolargram.cxx:122
 TGraphPolargram.cxx:123
 TGraphPolargram.cxx:124
 TGraphPolargram.cxx:125
 TGraphPolargram.cxx:126
 TGraphPolargram.cxx:127
 TGraphPolargram.cxx:128
 TGraphPolargram.cxx:129
 TGraphPolargram.cxx:130
 TGraphPolargram.cxx:131
 TGraphPolargram.cxx:132
 TGraphPolargram.cxx:133
 TGraphPolargram.cxx:134
 TGraphPolargram.cxx:135
 TGraphPolargram.cxx:136
 TGraphPolargram.cxx:137
 TGraphPolargram.cxx:138
 TGraphPolargram.cxx:139
 TGraphPolargram.cxx:140
 TGraphPolargram.cxx:141
 TGraphPolargram.cxx:142
 TGraphPolargram.cxx:143
 TGraphPolargram.cxx:144
 TGraphPolargram.cxx:145
 TGraphPolargram.cxx:146
 TGraphPolargram.cxx:147
 TGraphPolargram.cxx:148
 TGraphPolargram.cxx:149
 TGraphPolargram.cxx:150
 TGraphPolargram.cxx:151
 TGraphPolargram.cxx:152
 TGraphPolargram.cxx:153
 TGraphPolargram.cxx:154
 TGraphPolargram.cxx:155
 TGraphPolargram.cxx:156
 TGraphPolargram.cxx:157
 TGraphPolargram.cxx:158
 TGraphPolargram.cxx:159
 TGraphPolargram.cxx:160
 TGraphPolargram.cxx:161
 TGraphPolargram.cxx:162
 TGraphPolargram.cxx:163
 TGraphPolargram.cxx:164
 TGraphPolargram.cxx:165
 TGraphPolargram.cxx:166
 TGraphPolargram.cxx:167
 TGraphPolargram.cxx:168
 TGraphPolargram.cxx:169
 TGraphPolargram.cxx:170
 TGraphPolargram.cxx:171
 TGraphPolargram.cxx:172
 TGraphPolargram.cxx:173
 TGraphPolargram.cxx:174
 TGraphPolargram.cxx:175
 TGraphPolargram.cxx:176
 TGraphPolargram.cxx:177
 TGraphPolargram.cxx:178
 TGraphPolargram.cxx:179
 TGraphPolargram.cxx:180
 TGraphPolargram.cxx:181
 TGraphPolargram.cxx:182
 TGraphPolargram.cxx:183
 TGraphPolargram.cxx:184
 TGraphPolargram.cxx:185
 TGraphPolargram.cxx:186
 TGraphPolargram.cxx:187
 TGraphPolargram.cxx:188
 TGraphPolargram.cxx:189
 TGraphPolargram.cxx:190
 TGraphPolargram.cxx:191
 TGraphPolargram.cxx:192
 TGraphPolargram.cxx:193
 TGraphPolargram.cxx:194
 TGraphPolargram.cxx:195
 TGraphPolargram.cxx:196
 TGraphPolargram.cxx:197
 TGraphPolargram.cxx:198
 TGraphPolargram.cxx:199
 TGraphPolargram.cxx:200
 TGraphPolargram.cxx:201
 TGraphPolargram.cxx:202
 TGraphPolargram.cxx:203
 TGraphPolargram.cxx:204
 TGraphPolargram.cxx:205
 TGraphPolargram.cxx:206
 TGraphPolargram.cxx:207
 TGraphPolargram.cxx:208
 TGraphPolargram.cxx:209
 TGraphPolargram.cxx:210
 TGraphPolargram.cxx:211
 TGraphPolargram.cxx:212
 TGraphPolargram.cxx:213
 TGraphPolargram.cxx:214
 TGraphPolargram.cxx:215
 TGraphPolargram.cxx:216
 TGraphPolargram.cxx:217
 TGraphPolargram.cxx:218
 TGraphPolargram.cxx:219
 TGraphPolargram.cxx:220
 TGraphPolargram.cxx:221
 TGraphPolargram.cxx:222
 TGraphPolargram.cxx:223
 TGraphPolargram.cxx:224
 TGraphPolargram.cxx:225
 TGraphPolargram.cxx:226
 TGraphPolargram.cxx:227
 TGraphPolargram.cxx:228
 TGraphPolargram.cxx:229
 TGraphPolargram.cxx:230
 TGraphPolargram.cxx:231
 TGraphPolargram.cxx:232
 TGraphPolargram.cxx:233
 TGraphPolargram.cxx:234
 TGraphPolargram.cxx:235
 TGraphPolargram.cxx:236
 TGraphPolargram.cxx:237
 TGraphPolargram.cxx:238
 TGraphPolargram.cxx:239
 TGraphPolargram.cxx:240
 TGraphPolargram.cxx:241
 TGraphPolargram.cxx:242
 TGraphPolargram.cxx:243
 TGraphPolargram.cxx:244
 TGraphPolargram.cxx:245
 TGraphPolargram.cxx:246
 TGraphPolargram.cxx:247
 TGraphPolargram.cxx:248
 TGraphPolargram.cxx:249
 TGraphPolargram.cxx:250
 TGraphPolargram.cxx:251
 TGraphPolargram.cxx:252
 TGraphPolargram.cxx:253
 TGraphPolargram.cxx:254
 TGraphPolargram.cxx:255
 TGraphPolargram.cxx:256
 TGraphPolargram.cxx:257
 TGraphPolargram.cxx:258
 TGraphPolargram.cxx:259
 TGraphPolargram.cxx:260
 TGraphPolargram.cxx:261
 TGraphPolargram.cxx:262
 TGraphPolargram.cxx:263
 TGraphPolargram.cxx:264
 TGraphPolargram.cxx:265
 TGraphPolargram.cxx:266
 TGraphPolargram.cxx:267
 TGraphPolargram.cxx:268
 TGraphPolargram.cxx:269
 TGraphPolargram.cxx:270
 TGraphPolargram.cxx:271
 TGraphPolargram.cxx:272
 TGraphPolargram.cxx:273
 TGraphPolargram.cxx:274
 TGraphPolargram.cxx:275
 TGraphPolargram.cxx:276
 TGraphPolargram.cxx:277
 TGraphPolargram.cxx:278
 TGraphPolargram.cxx:279
 TGraphPolargram.cxx:280
 TGraphPolargram.cxx:281
 TGraphPolargram.cxx:282
 TGraphPolargram.cxx:283
 TGraphPolargram.cxx:284
 TGraphPolargram.cxx:285
 TGraphPolargram.cxx:286
 TGraphPolargram.cxx:287
 TGraphPolargram.cxx:288
 TGraphPolargram.cxx:289
 TGraphPolargram.cxx:290
 TGraphPolargram.cxx:291
 TGraphPolargram.cxx:292
 TGraphPolargram.cxx:293
 TGraphPolargram.cxx:294
 TGraphPolargram.cxx:295
 TGraphPolargram.cxx:296
 TGraphPolargram.cxx:297
 TGraphPolargram.cxx:298
 TGraphPolargram.cxx:299
 TGraphPolargram.cxx:300
 TGraphPolargram.cxx:301
 TGraphPolargram.cxx:302
 TGraphPolargram.cxx:303
 TGraphPolargram.cxx:304
 TGraphPolargram.cxx:305
 TGraphPolargram.cxx:306
 TGraphPolargram.cxx:307
 TGraphPolargram.cxx:308
 TGraphPolargram.cxx:309
 TGraphPolargram.cxx:310
 TGraphPolargram.cxx:311
 TGraphPolargram.cxx:312
 TGraphPolargram.cxx:313
 TGraphPolargram.cxx:314
 TGraphPolargram.cxx:315
 TGraphPolargram.cxx:316
 TGraphPolargram.cxx:317
 TGraphPolargram.cxx:318
 TGraphPolargram.cxx:319
 TGraphPolargram.cxx:320
 TGraphPolargram.cxx:321
 TGraphPolargram.cxx:322
 TGraphPolargram.cxx:323
 TGraphPolargram.cxx:324
 TGraphPolargram.cxx:325
 TGraphPolargram.cxx:326
 TGraphPolargram.cxx:327
 TGraphPolargram.cxx:328
 TGraphPolargram.cxx:329
 TGraphPolargram.cxx:330
 TGraphPolargram.cxx:331
 TGraphPolargram.cxx:332
 TGraphPolargram.cxx:333
 TGraphPolargram.cxx:334
 TGraphPolargram.cxx:335
 TGraphPolargram.cxx:336
 TGraphPolargram.cxx:337
 TGraphPolargram.cxx:338
 TGraphPolargram.cxx:339
 TGraphPolargram.cxx:340
 TGraphPolargram.cxx:341
 TGraphPolargram.cxx:342
 TGraphPolargram.cxx:343
 TGraphPolargram.cxx:344
 TGraphPolargram.cxx:345
 TGraphPolargram.cxx:346
 TGraphPolargram.cxx:347
 TGraphPolargram.cxx:348
 TGraphPolargram.cxx:349
 TGraphPolargram.cxx:350
 TGraphPolargram.cxx:351
 TGraphPolargram.cxx:352
 TGraphPolargram.cxx:353
 TGraphPolargram.cxx:354
 TGraphPolargram.cxx:355
 TGraphPolargram.cxx:356
 TGraphPolargram.cxx:357
 TGraphPolargram.cxx:358
 TGraphPolargram.cxx:359
 TGraphPolargram.cxx:360
 TGraphPolargram.cxx:361
 TGraphPolargram.cxx:362
 TGraphPolargram.cxx:363
 TGraphPolargram.cxx:364
 TGraphPolargram.cxx:365
 TGraphPolargram.cxx:366
 TGraphPolargram.cxx:367
 TGraphPolargram.cxx:368
 TGraphPolargram.cxx:369
 TGraphPolargram.cxx:370
 TGraphPolargram.cxx:371
 TGraphPolargram.cxx:372
 TGraphPolargram.cxx:373
 TGraphPolargram.cxx:374
 TGraphPolargram.cxx:375
 TGraphPolargram.cxx:376
 TGraphPolargram.cxx:377
 TGraphPolargram.cxx:378
 TGraphPolargram.cxx:379
 TGraphPolargram.cxx:380
 TGraphPolargram.cxx:381
 TGraphPolargram.cxx:382
 TGraphPolargram.cxx:383
 TGraphPolargram.cxx:384
 TGraphPolargram.cxx:385
 TGraphPolargram.cxx:386
 TGraphPolargram.cxx:387
 TGraphPolargram.cxx:388
 TGraphPolargram.cxx:389
 TGraphPolargram.cxx:390
 TGraphPolargram.cxx:391
 TGraphPolargram.cxx:392
 TGraphPolargram.cxx:393
 TGraphPolargram.cxx:394
 TGraphPolargram.cxx:395
 TGraphPolargram.cxx:396
 TGraphPolargram.cxx:397
 TGraphPolargram.cxx:398
 TGraphPolargram.cxx:399
 TGraphPolargram.cxx:400
 TGraphPolargram.cxx:401
 TGraphPolargram.cxx:402
 TGraphPolargram.cxx:403
 TGraphPolargram.cxx:404
 TGraphPolargram.cxx:405
 TGraphPolargram.cxx:406
 TGraphPolargram.cxx:407
 TGraphPolargram.cxx:408
 TGraphPolargram.cxx:409
 TGraphPolargram.cxx:410
 TGraphPolargram.cxx:411
 TGraphPolargram.cxx:412
 TGraphPolargram.cxx:413
 TGraphPolargram.cxx:414
 TGraphPolargram.cxx:415
 TGraphPolargram.cxx:416
 TGraphPolargram.cxx:417
 TGraphPolargram.cxx:418
 TGraphPolargram.cxx:419
 TGraphPolargram.cxx:420
 TGraphPolargram.cxx:421
 TGraphPolargram.cxx:422
 TGraphPolargram.cxx:423
 TGraphPolargram.cxx:424
 TGraphPolargram.cxx:425
 TGraphPolargram.cxx:426
 TGraphPolargram.cxx:427
 TGraphPolargram.cxx:428
 TGraphPolargram.cxx:429
 TGraphPolargram.cxx:430
 TGraphPolargram.cxx:431
 TGraphPolargram.cxx:432
 TGraphPolargram.cxx:433
 TGraphPolargram.cxx:434
 TGraphPolargram.cxx:435
 TGraphPolargram.cxx:436
 TGraphPolargram.cxx:437
 TGraphPolargram.cxx:438
 TGraphPolargram.cxx:439
 TGraphPolargram.cxx:440
 TGraphPolargram.cxx:441
 TGraphPolargram.cxx:442
 TGraphPolargram.cxx:443
 TGraphPolargram.cxx:444
 TGraphPolargram.cxx:445
 TGraphPolargram.cxx:446
 TGraphPolargram.cxx:447
 TGraphPolargram.cxx:448
 TGraphPolargram.cxx:449
 TGraphPolargram.cxx:450
 TGraphPolargram.cxx:451
 TGraphPolargram.cxx:452
 TGraphPolargram.cxx:453
 TGraphPolargram.cxx:454
 TGraphPolargram.cxx:455
 TGraphPolargram.cxx:456
 TGraphPolargram.cxx:457
 TGraphPolargram.cxx:458
 TGraphPolargram.cxx:459
 TGraphPolargram.cxx:460
 TGraphPolargram.cxx:461
 TGraphPolargram.cxx:462
 TGraphPolargram.cxx:463
 TGraphPolargram.cxx:464
 TGraphPolargram.cxx:465
 TGraphPolargram.cxx:466
 TGraphPolargram.cxx:467
 TGraphPolargram.cxx:468
 TGraphPolargram.cxx:469
 TGraphPolargram.cxx:470
 TGraphPolargram.cxx:471
 TGraphPolargram.cxx:472
 TGraphPolargram.cxx:473
 TGraphPolargram.cxx:474
 TGraphPolargram.cxx:475
 TGraphPolargram.cxx:476
 TGraphPolargram.cxx:477
 TGraphPolargram.cxx:478
 TGraphPolargram.cxx:479
 TGraphPolargram.cxx:480
 TGraphPolargram.cxx:481
 TGraphPolargram.cxx:482
 TGraphPolargram.cxx:483
 TGraphPolargram.cxx:484
 TGraphPolargram.cxx:485
 TGraphPolargram.cxx:486
 TGraphPolargram.cxx:487
 TGraphPolargram.cxx:488
 TGraphPolargram.cxx:489
 TGraphPolargram.cxx:490
 TGraphPolargram.cxx:491
 TGraphPolargram.cxx:492
 TGraphPolargram.cxx:493
 TGraphPolargram.cxx:494
 TGraphPolargram.cxx:495
 TGraphPolargram.cxx:496
 TGraphPolargram.cxx:497
 TGraphPolargram.cxx:498
 TGraphPolargram.cxx:499
 TGraphPolargram.cxx:500
 TGraphPolargram.cxx:501
 TGraphPolargram.cxx:502
 TGraphPolargram.cxx:503
 TGraphPolargram.cxx:504
 TGraphPolargram.cxx:505
 TGraphPolargram.cxx:506
 TGraphPolargram.cxx:507
 TGraphPolargram.cxx:508
 TGraphPolargram.cxx:509
 TGraphPolargram.cxx:510
 TGraphPolargram.cxx:511
 TGraphPolargram.cxx:512
 TGraphPolargram.cxx:513
 TGraphPolargram.cxx:514
 TGraphPolargram.cxx:515
 TGraphPolargram.cxx:516
 TGraphPolargram.cxx:517
 TGraphPolargram.cxx:518
 TGraphPolargram.cxx:519
 TGraphPolargram.cxx:520
 TGraphPolargram.cxx:521
 TGraphPolargram.cxx:522
 TGraphPolargram.cxx:523
 TGraphPolargram.cxx:524
 TGraphPolargram.cxx:525
 TGraphPolargram.cxx:526
 TGraphPolargram.cxx:527
 TGraphPolargram.cxx:528
 TGraphPolargram.cxx:529
 TGraphPolargram.cxx:530
 TGraphPolargram.cxx:531
 TGraphPolargram.cxx:532
 TGraphPolargram.cxx:533
 TGraphPolargram.cxx:534
 TGraphPolargram.cxx:535
 TGraphPolargram.cxx:536
 TGraphPolargram.cxx:537
 TGraphPolargram.cxx:538
 TGraphPolargram.cxx:539
 TGraphPolargram.cxx:540
 TGraphPolargram.cxx:541
 TGraphPolargram.cxx:542
 TGraphPolargram.cxx:543
 TGraphPolargram.cxx:544
 TGraphPolargram.cxx:545
 TGraphPolargram.cxx:546
 TGraphPolargram.cxx:547
 TGraphPolargram.cxx:548
 TGraphPolargram.cxx:549
 TGraphPolargram.cxx:550
 TGraphPolargram.cxx:551
 TGraphPolargram.cxx:552
 TGraphPolargram.cxx:553
 TGraphPolargram.cxx:554
 TGraphPolargram.cxx:555
 TGraphPolargram.cxx:556
 TGraphPolargram.cxx:557
 TGraphPolargram.cxx:558
 TGraphPolargram.cxx:559
 TGraphPolargram.cxx:560
 TGraphPolargram.cxx:561
 TGraphPolargram.cxx:562
 TGraphPolargram.cxx:563
 TGraphPolargram.cxx:564
 TGraphPolargram.cxx:565
 TGraphPolargram.cxx:566
 TGraphPolargram.cxx:567
 TGraphPolargram.cxx:568
 TGraphPolargram.cxx:569
 TGraphPolargram.cxx:570
 TGraphPolargram.cxx:571
 TGraphPolargram.cxx:572
 TGraphPolargram.cxx:573
 TGraphPolargram.cxx:574
 TGraphPolargram.cxx:575
 TGraphPolargram.cxx:576
 TGraphPolargram.cxx:577
 TGraphPolargram.cxx:578
 TGraphPolargram.cxx:579
 TGraphPolargram.cxx:580
 TGraphPolargram.cxx:581
 TGraphPolargram.cxx:582
 TGraphPolargram.cxx:583
 TGraphPolargram.cxx:584
 TGraphPolargram.cxx:585
 TGraphPolargram.cxx:586
 TGraphPolargram.cxx:587
 TGraphPolargram.cxx:588
 TGraphPolargram.cxx:589
 TGraphPolargram.cxx:590
 TGraphPolargram.cxx:591
 TGraphPolargram.cxx:592
 TGraphPolargram.cxx:593
 TGraphPolargram.cxx:594
 TGraphPolargram.cxx:595
 TGraphPolargram.cxx:596
 TGraphPolargram.cxx:597
 TGraphPolargram.cxx:598
 TGraphPolargram.cxx:599
 TGraphPolargram.cxx:600
 TGraphPolargram.cxx:601
 TGraphPolargram.cxx:602
 TGraphPolargram.cxx:603
 TGraphPolargram.cxx:604
 TGraphPolargram.cxx:605
 TGraphPolargram.cxx:606
 TGraphPolargram.cxx:607
 TGraphPolargram.cxx:608
 TGraphPolargram.cxx:609
 TGraphPolargram.cxx:610
 TGraphPolargram.cxx:611
 TGraphPolargram.cxx:612
 TGraphPolargram.cxx:613
 TGraphPolargram.cxx:614
 TGraphPolargram.cxx:615
 TGraphPolargram.cxx:616
 TGraphPolargram.cxx:617
 TGraphPolargram.cxx:618
 TGraphPolargram.cxx:619
 TGraphPolargram.cxx:620
 TGraphPolargram.cxx:621
 TGraphPolargram.cxx:622
 TGraphPolargram.cxx:623
 TGraphPolargram.cxx:624
 TGraphPolargram.cxx:625
 TGraphPolargram.cxx:626
 TGraphPolargram.cxx:627
 TGraphPolargram.cxx:628
 TGraphPolargram.cxx:629
 TGraphPolargram.cxx:630
 TGraphPolargram.cxx:631
 TGraphPolargram.cxx:632
 TGraphPolargram.cxx:633
 TGraphPolargram.cxx:634
 TGraphPolargram.cxx:635
 TGraphPolargram.cxx:636
 TGraphPolargram.cxx:637
 TGraphPolargram.cxx:638
 TGraphPolargram.cxx:639
 TGraphPolargram.cxx:640
 TGraphPolargram.cxx:641
 TGraphPolargram.cxx:642
 TGraphPolargram.cxx:643
 TGraphPolargram.cxx:644
 TGraphPolargram.cxx:645
 TGraphPolargram.cxx:646
 TGraphPolargram.cxx:647
 TGraphPolargram.cxx:648
 TGraphPolargram.cxx:649
 TGraphPolargram.cxx:650
 TGraphPolargram.cxx:651
 TGraphPolargram.cxx:652
 TGraphPolargram.cxx:653
 TGraphPolargram.cxx:654
 TGraphPolargram.cxx:655
 TGraphPolargram.cxx:656
 TGraphPolargram.cxx:657
 TGraphPolargram.cxx:658
 TGraphPolargram.cxx:659
 TGraphPolargram.cxx:660
 TGraphPolargram.cxx:661
 TGraphPolargram.cxx:662
 TGraphPolargram.cxx:663
 TGraphPolargram.cxx:664
 TGraphPolargram.cxx:665
 TGraphPolargram.cxx:666
 TGraphPolargram.cxx:667
 TGraphPolargram.cxx:668
 TGraphPolargram.cxx:669
 TGraphPolargram.cxx:670
 TGraphPolargram.cxx:671
 TGraphPolargram.cxx:672
 TGraphPolargram.cxx:673
 TGraphPolargram.cxx:674
 TGraphPolargram.cxx:675
 TGraphPolargram.cxx:676
 TGraphPolargram.cxx:677
 TGraphPolargram.cxx:678
 TGraphPolargram.cxx:679
 TGraphPolargram.cxx:680
 TGraphPolargram.cxx:681
 TGraphPolargram.cxx:682
 TGraphPolargram.cxx:683
 TGraphPolargram.cxx:684
 TGraphPolargram.cxx:685
 TGraphPolargram.cxx:686
 TGraphPolargram.cxx:687
 TGraphPolargram.cxx:688
 TGraphPolargram.cxx:689
 TGraphPolargram.cxx:690
 TGraphPolargram.cxx:691
 TGraphPolargram.cxx:692
 TGraphPolargram.cxx:693
 TGraphPolargram.cxx:694
 TGraphPolargram.cxx:695
 TGraphPolargram.cxx:696
 TGraphPolargram.cxx:697
 TGraphPolargram.cxx:698
 TGraphPolargram.cxx:699
 TGraphPolargram.cxx:700
 TGraphPolargram.cxx:701
 TGraphPolargram.cxx:702
 TGraphPolargram.cxx:703
 TGraphPolargram.cxx:704
 TGraphPolargram.cxx:705
 TGraphPolargram.cxx:706
 TGraphPolargram.cxx:707
 TGraphPolargram.cxx:708
 TGraphPolargram.cxx:709
 TGraphPolargram.cxx:710
 TGraphPolargram.cxx:711
 TGraphPolargram.cxx:712
 TGraphPolargram.cxx:713
 TGraphPolargram.cxx:714
 TGraphPolargram.cxx:715
 TGraphPolargram.cxx:716
 TGraphPolargram.cxx:717
 TGraphPolargram.cxx:718
 TGraphPolargram.cxx:719
 TGraphPolargram.cxx:720
 TGraphPolargram.cxx:721
 TGraphPolargram.cxx:722
 TGraphPolargram.cxx:723
 TGraphPolargram.cxx:724
 TGraphPolargram.cxx:725
 TGraphPolargram.cxx:726
 TGraphPolargram.cxx:727
 TGraphPolargram.cxx:728
 TGraphPolargram.cxx:729
 TGraphPolargram.cxx:730
 TGraphPolargram.cxx:731
 TGraphPolargram.cxx:732
 TGraphPolargram.cxx:733
 TGraphPolargram.cxx:734
 TGraphPolargram.cxx:735
 TGraphPolargram.cxx:736
 TGraphPolargram.cxx:737
 TGraphPolargram.cxx:738
 TGraphPolargram.cxx:739
 TGraphPolargram.cxx:740
 TGraphPolargram.cxx:741
 TGraphPolargram.cxx:742
 TGraphPolargram.cxx:743
 TGraphPolargram.cxx:744
 TGraphPolargram.cxx:745
 TGraphPolargram.cxx:746
 TGraphPolargram.cxx:747
 TGraphPolargram.cxx:748
 TGraphPolargram.cxx:749
 TGraphPolargram.cxx:750
 TGraphPolargram.cxx:751
 TGraphPolargram.cxx:752
 TGraphPolargram.cxx:753
 TGraphPolargram.cxx:754
 TGraphPolargram.cxx:755
 TGraphPolargram.cxx:756
 TGraphPolargram.cxx:757
 TGraphPolargram.cxx:758
 TGraphPolargram.cxx:759
 TGraphPolargram.cxx:760
 TGraphPolargram.cxx:761
 TGraphPolargram.cxx:762
 TGraphPolargram.cxx:763
 TGraphPolargram.cxx:764
 TGraphPolargram.cxx:765
 TGraphPolargram.cxx:766
 TGraphPolargram.cxx:767
 TGraphPolargram.cxx:768
 TGraphPolargram.cxx:769
 TGraphPolargram.cxx:770
 TGraphPolargram.cxx:771
 TGraphPolargram.cxx:772
 TGraphPolargram.cxx:773
 TGraphPolargram.cxx:774
 TGraphPolargram.cxx:775
 TGraphPolargram.cxx:776
 TGraphPolargram.cxx:777
 TGraphPolargram.cxx:778
 TGraphPolargram.cxx:779
 TGraphPolargram.cxx:780
 TGraphPolargram.cxx:781
 TGraphPolargram.cxx:782
 TGraphPolargram.cxx:783
 TGraphPolargram.cxx:784
 TGraphPolargram.cxx:785
 TGraphPolargram.cxx:786
 TGraphPolargram.cxx:787
 TGraphPolargram.cxx:788
 TGraphPolargram.cxx:789
 TGraphPolargram.cxx:790
 TGraphPolargram.cxx:791
 TGraphPolargram.cxx:792
 TGraphPolargram.cxx:793
 TGraphPolargram.cxx:794
 TGraphPolargram.cxx:795
 TGraphPolargram.cxx:796
 TGraphPolargram.cxx:797
 TGraphPolargram.cxx:798
 TGraphPolargram.cxx:799
 TGraphPolargram.cxx:800
 TGraphPolargram.cxx:801
 TGraphPolargram.cxx:802
 TGraphPolargram.cxx:803
 TGraphPolargram.cxx:804
 TGraphPolargram.cxx:805
 TGraphPolargram.cxx:806
 TGraphPolargram.cxx:807
 TGraphPolargram.cxx:808
 TGraphPolargram.cxx:809
 TGraphPolargram.cxx:810
 TGraphPolargram.cxx:811
 TGraphPolargram.cxx:812
 TGraphPolargram.cxx:813
 TGraphPolargram.cxx:814
 TGraphPolargram.cxx:815
 TGraphPolargram.cxx:816
 TGraphPolargram.cxx:817
 TGraphPolargram.cxx:818
 TGraphPolargram.cxx:819
 TGraphPolargram.cxx:820
 TGraphPolargram.cxx:821
 TGraphPolargram.cxx:822
 TGraphPolargram.cxx:823
 TGraphPolargram.cxx:824
 TGraphPolargram.cxx:825
 TGraphPolargram.cxx:826
 TGraphPolargram.cxx:827
 TGraphPolargram.cxx:828
 TGraphPolargram.cxx:829
 TGraphPolargram.cxx:830
 TGraphPolargram.cxx:831
 TGraphPolargram.cxx:832
 TGraphPolargram.cxx:833
 TGraphPolargram.cxx:834
 TGraphPolargram.cxx:835
 TGraphPolargram.cxx:836
 TGraphPolargram.cxx:837
 TGraphPolargram.cxx:838
 TGraphPolargram.cxx:839
 TGraphPolargram.cxx:840
 TGraphPolargram.cxx:841
 TGraphPolargram.cxx:842
 TGraphPolargram.cxx:843
 TGraphPolargram.cxx:844
 TGraphPolargram.cxx:845
 TGraphPolargram.cxx:846
 TGraphPolargram.cxx:847
 TGraphPolargram.cxx:848
 TGraphPolargram.cxx:849
 TGraphPolargram.cxx:850
 TGraphPolargram.cxx:851
 TGraphPolargram.cxx:852
 TGraphPolargram.cxx:853
 TGraphPolargram.cxx:854
 TGraphPolargram.cxx:855
 TGraphPolargram.cxx:856
 TGraphPolargram.cxx:857
 TGraphPolargram.cxx:858
 TGraphPolargram.cxx:859
 TGraphPolargram.cxx:860
 TGraphPolargram.cxx:861
 TGraphPolargram.cxx:862
 TGraphPolargram.cxx:863
 TGraphPolargram.cxx:864
 TGraphPolargram.cxx:865
 TGraphPolargram.cxx:866
 TGraphPolargram.cxx:867
 TGraphPolargram.cxx:868
 TGraphPolargram.cxx:869
 TGraphPolargram.cxx:870
 TGraphPolargram.cxx:871
 TGraphPolargram.cxx:872
 TGraphPolargram.cxx:873
 TGraphPolargram.cxx:874
 TGraphPolargram.cxx:875
 TGraphPolargram.cxx:876
 TGraphPolargram.cxx:877
 TGraphPolargram.cxx:878
 TGraphPolargram.cxx:879
 TGraphPolargram.cxx:880
 TGraphPolargram.cxx:881
 TGraphPolargram.cxx:882
 TGraphPolargram.cxx:883
 TGraphPolargram.cxx:884
 TGraphPolargram.cxx:885
 TGraphPolargram.cxx:886
 TGraphPolargram.cxx:887
 TGraphPolargram.cxx:888
 TGraphPolargram.cxx:889
 TGraphPolargram.cxx:890
 TGraphPolargram.cxx:891
 TGraphPolargram.cxx:892
 TGraphPolargram.cxx:893
 TGraphPolargram.cxx:894
 TGraphPolargram.cxx:895
 TGraphPolargram.cxx:896
 TGraphPolargram.cxx:897
 TGraphPolargram.cxx:898
 TGraphPolargram.cxx:899
 TGraphPolargram.cxx:900
 TGraphPolargram.cxx:901
 TGraphPolargram.cxx:902
 TGraphPolargram.cxx:903
 TGraphPolargram.cxx:904
 TGraphPolargram.cxx:905
 TGraphPolargram.cxx:906
 TGraphPolargram.cxx:907
 TGraphPolargram.cxx:908
 TGraphPolargram.cxx:909
 TGraphPolargram.cxx:910
 TGraphPolargram.cxx:911
 TGraphPolargram.cxx:912
 TGraphPolargram.cxx:913
 TGraphPolargram.cxx:914
 TGraphPolargram.cxx:915
 TGraphPolargram.cxx:916
 TGraphPolargram.cxx:917
 TGraphPolargram.cxx:918
 TGraphPolargram.cxx:919
 TGraphPolargram.cxx:920
 TGraphPolargram.cxx:921
 TGraphPolargram.cxx:922
 TGraphPolargram.cxx:923
 TGraphPolargram.cxx:924
 TGraphPolargram.cxx:925
 TGraphPolargram.cxx:926
 TGraphPolargram.cxx:927
 TGraphPolargram.cxx:928
 TGraphPolargram.cxx:929
 TGraphPolargram.cxx:930
 TGraphPolargram.cxx:931
 TGraphPolargram.cxx:932
 TGraphPolargram.cxx:933
 TGraphPolargram.cxx:934
 TGraphPolargram.cxx:935
 TGraphPolargram.cxx:936
 TGraphPolargram.cxx:937
 TGraphPolargram.cxx:938
 TGraphPolargram.cxx:939
 TGraphPolargram.cxx:940
 TGraphPolargram.cxx:941
 TGraphPolargram.cxx:942
 TGraphPolargram.cxx:943
 TGraphPolargram.cxx:944
 TGraphPolargram.cxx:945
 TGraphPolargram.cxx:946
 TGraphPolargram.cxx:947
 TGraphPolargram.cxx:948
 TGraphPolargram.cxx:949
 TGraphPolargram.cxx:950
 TGraphPolargram.cxx:951
 TGraphPolargram.cxx:952
 TGraphPolargram.cxx:953
 TGraphPolargram.cxx:954
 TGraphPolargram.cxx:955
 TGraphPolargram.cxx:956
 TGraphPolargram.cxx:957
 TGraphPolargram.cxx:958
 TGraphPolargram.cxx:959
 TGraphPolargram.cxx:960
 TGraphPolargram.cxx:961
 TGraphPolargram.cxx:962
 TGraphPolargram.cxx:963
 TGraphPolargram.cxx:964
 TGraphPolargram.cxx:965
 TGraphPolargram.cxx:966
 TGraphPolargram.cxx:967
 TGraphPolargram.cxx:968
 TGraphPolargram.cxx:969
 TGraphPolargram.cxx:970
 TGraphPolargram.cxx:971
 TGraphPolargram.cxx:972
 TGraphPolargram.cxx:973
 TGraphPolargram.cxx:974
 TGraphPolargram.cxx:975
 TGraphPolargram.cxx:976
 TGraphPolargram.cxx:977
 TGraphPolargram.cxx:978
 TGraphPolargram.cxx:979