#include <TROOT.h>
#include <TStyle.h>
#include <TFile.h>
#include <Rtypes.h>
#include <TSystem.h>
#include <TCanvas.h>
#include <TBenchmark.h>
#include <TApplication.h>
#include <TH2D.h>
#include <TGraphErrors.h>
#include <TLatex.h>
#include <TGaxis.h>
#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main(int argc, char **argv)
{

  const Int_t NData = 24;
  Double_t Data [NData][3] = {
   0,    20,  5685.32,
   1,    25,  6547.66,
   2,    30,  11705.2,
   3,    35,  15297.9,
   4,    40,  21363.8,
   5,    45,  26712.2,
   6,    50,  30453.8,
   7,    55,  32484.6,
   8,    60,  34677.3,
   9,    65,  34165.1,
  10,    70,  35002.6,
  11,    75,  35762.7,
  12,    80,  36308.4,
  13,    85,  35428.3,
  14,    90,  36202.1,
  15,    95,  36768.4,
  16,   100,  37254.2,
  17,   105,  37934.8,
  18,   110,  37617.7,
  19,   115,  39755.8,
  20,   120,  39334.6,
  21,   125,  39719.4,
  22,   130,  39094.8,
  23,   135,  39605.7};

    const Int_t BackgroundColor = 10;
    const Int_t CanvasFillStyle = 0;
    const Float_t AxisTitleSize = 0.06;
    const Float_t AxisTitleOffset = 0.7;
    const Float_t AxisLabelSize = 0.045;
    const Int_t NDivisions = 110;

   gROOT -> SetStyle("Plain");
   gStyle -> SetOptStat(0);
//   gStyle -> SetOptTitle(kFALSE);
   gStyle -> SetTitleBorderSize(0);
   gStyle -> SetTitleX(0.25);
   gStyle -> SetTitleY(0.98);
   gStyle -> SetFrameLineColor(BackgroundColor);
   gStyle -> SetFrameFillStyle(CanvasFillStyle);
   gStyle -> SetFrameBorderMode(0); 
   gStyle -> SetCanvasColor(BackgroundColor);
//   gStyle -> SetTitleFillColor(BackgroundColor);
   gROOT -> ForceStyle();


   TApplication TestTGAxis("TestTGAxis", 0, 0);

 
   string CName, CTitle, HName, HTitle;

   TCanvas *CC[1]; 
   TH2F *HH[1];
   Int_t ic = 0;
   ostringstream cc1;
   cc1 << ic;
   CName = "Canvas";
   CName += cc1.str();
   CTitle = "Canvas ";
   CTitle += cc1.str();
   HName = "Plot";
   HName += cc1.str();
   HTitle = "TGaxis Test";
   CC[ic] = new TCanvas(CName.c_str(), CTitle.c_str(), 800, 600);

   Int_t NX = 14, NY = 10;
   Double_t XMin = 0.0, XMax = 140;
   Double_t YMin = 0.0;
   Double_t  YMax = 40000.0;
   HH[ic] = new TH2F(HName.c_str(), HTitle.c_str(), NX, XMin, XMax, NY, YMin, YMax);
   HH[ic] -> GetXaxis() -> SetTitle("Time");
   HH[ic] -> GetXaxis() -> CenterTitle(kTRUE);
   HH[ic] -> GetXaxis() -> SetNdivisions(NDivisions);
   HH[ic] -> GetXaxis() -> SetLabelSize(AxisLabelSize);
   HH[ic] -> GetXaxis() -> SetTitleSize(AxisTitleSize);
   HH[ic] -> GetXaxis() -> SetTitleOffset(AxisTitleOffset);
   HH[ic] -> GetYaxis() -> SetTitle("TGaxis");
   HH[ic] -> GetYaxis() -> CenterTitle(kTRUE);
   HH[ic] -> GetYaxis() -> SetNdivisions(NDivisions);
   TGaxis::SetMaxDigits(2);
   HH[ic] -> GetYaxis() -> SetLabelSize(AxisLabelSize);
   HH[ic] -> GetYaxis() -> SetTitleSize(AxisTitleSize);
   HH[ic] -> GetYaxis() -> SetTitleOffset(AxisTitleOffset);
   HH[ic] -> Draw();

   TGraphErrors *Gr5[1];

   Double_t XX[NData], EXX[NData], YY[NData], EYY[NData];
   for (Int_t ii = 0; ii < NData; ii++) {
       XX[ii] = Data[ii][1];
       EXX[ii] = 0.0;
       YY[ii] = Data[ii][2];
       EYY[ii] = 0.0;
   }
   Gr5[0] = new TGraphErrors(NData, XX, YY, EXX, EYY);
   Gr5[0] -> SetMarkerColor(2);
   Gr5[0] -> SetMarkerSize(2);
   Gr5[0] -> SetMarkerStyle(21);
   Gr5[0] -> SetLineColor(4);
   Gr5[0] -> Draw("LP");

   CC[ic] -> Update();

   TestTGAxis.Run();

}
