#ifndef ROOT_TGaxis
#define ROOT_TGaxis
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TLine
#include "TLine.h"
#endif
#ifndef ROOT_TAttText
#include "TAttText.h"
#endif
class TF1;
class TAxis;
class TGaxis : public TLine, public TAttText {
protected:
Double_t fWmin;
Double_t fWmax;
Float_t fGridLength;
Float_t fTickSize;
Float_t fLabelOffset;
Float_t fLabelSize;
Float_t fTitleOffset;
Float_t fTitleSize;
Int_t fNdiv;
Int_t fLabelColor;
Int_t fLabelFont;
TString fChopt;
TString fName;
TString fTitle;
TString fTimeFormat;
TString fFunctionName;
TF1 *fFunction;
TAxis *fAxis;
static Int_t fgMaxDigits;
static Float_t fXAxisExpXOffset;
static Float_t fXAxisExpYOffset;
static Float_t fYAxisExpXOffset;
static Float_t fYAxisExpYOffset;
TGaxis(const TGaxis&);
TGaxis& operator=(const TGaxis&);
public:
TGaxis();
TGaxis(Double_t xmin,Double_t ymin,Double_t xmax,Double_t ymax,
Double_t wmin,Double_t wmax,Int_t ndiv=510, Option_t *chopt="",
Double_t gridlength = 0);
TGaxis(Double_t xmin,Double_t ymin,Double_t xmax,Double_t ymax,
const char *funcname, Int_t ndiv=510, Option_t *chopt="",
Double_t gridlength = 0);
virtual ~TGaxis();
virtual void AdjustBinSize(Double_t A1, Double_t A2, Int_t nold
,Double_t &BinLow, Double_t &BinHigh, Int_t &nbins, Double_t &BinWidth);
virtual void CenterLabels(Bool_t center=kTRUE);
virtual void CenterTitle(Bool_t center=kTRUE);
virtual void DrawAxis(Double_t xmin,Double_t ymin,Double_t xmax,Double_t ymax,
Double_t wmin,Double_t wmax,Int_t ndiv=510, Option_t *chopt="",
Double_t gridlength = 0);
Float_t GetGridLength() const {return fGridLength;}
TF1 *GetFunction() const {return fFunction;}
Int_t GetLabelColor() const {return fLabelColor;}
Int_t GetLabelFont() const {return fLabelFont;}
Float_t GetLabelOffset() const {return fLabelOffset;}
Float_t GetLabelSize() const {return fLabelSize;}
Float_t GetTitleOffset() const {return fTitleOffset;}
Float_t GetTitleSize() const {return fTitleSize;}
virtual const char *GetName() const {return fName.Data();}
virtual const char *GetOption() const {return fChopt.Data();}
virtual const char *GetTitle() const {return fTitle.Data();}
static Int_t GetMaxDigits();
Int_t GetNdiv() const {return fNdiv;}
Double_t GetWmin() const {return fWmin;}
Double_t GetWmax() const {return fWmax;}
Float_t GetTickSize() const {return fTickSize;}
virtual void ImportAxisAttributes(TAxis *axis);
void LabelsLimits(const char *label, Int_t &first, Int_t &last);
virtual void Paint(Option_t *chopt="");
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);
virtual void Rotate(Double_t X, Double_t Y, Double_t CFI, Double_t SFI
,Double_t XT, Double_t YT, Double_t &U, Double_t &V);
virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
void SetFunction(const char *funcname="");
void SetOption(Option_t *option="");
void SetLabelColor(Int_t labelcolor) {fLabelColor = labelcolor;}
void SetLabelFont(Int_t labelfont) {fLabelFont = labelfont;}
void SetLabelOffset(Float_t labeloffset) {fLabelOffset = labeloffset;}
void SetLabelSize(Float_t labelsize) {fLabelSize = labelsize;}
static void SetMaxDigits(Int_t maxd=5);
virtual void SetName(const char *name);
virtual void SetNdivisions(Int_t ndiv) {fNdiv = ndiv;}
virtual void SetMoreLogLabels(Bool_t more=kTRUE);
virtual void SetNoExponent(Bool_t noExponent=kTRUE);
virtual void SetDecimals(Bool_t dot=kTRUE);
void SetTickSize(Float_t ticksize) {fTickSize = ticksize;}
void SetTickLength(Float_t ticklength) {SetTickSize(ticklength);}
void SetGridLength(Float_t gridlength) {fGridLength = gridlength;}
void SetTimeFormat(const char *tformat);
void SetTimeOffset(Double_t toffset, Option_t *option="local");
virtual void SetTitle(const char *title="");
void SetTitleOffset(Float_t titleoffset=1) {fTitleOffset = titleoffset;}
void SetTitleSize(Float_t titlesize) {fTitleSize = titlesize;}
void SetTitleFont(Int_t titlefont) {SetTextFont(titlefont);}
void SetTitleColor(Int_t titlecolor) {SetTextColor(titlecolor);}
void SetWmin(Double_t wmin) {fWmin = wmin;}
void SetWmax(Double_t wmax) {fWmax = wmax;}
static void SetExponentOffset(Float_t xoff=0., Float_t yoff=0., Option_t *axis="xy");
ClassDef(TGaxis,5)
};
#endif