#include <TH1.h>
#include <TH2.h>
#include <TCanvas.h>
#include <fstream>

void graphmulticol(){
  //Define parameters common to all analysis configurations
	const Int_t points = 9;
	char printname[256];
	char graphname1[256];
	char xTitle[256];
	char yTitle[256];
	char GraphText1[256];
	char histTitle[256];
	char output_line[256];

	gStyle->SetStatColor(0);//All this stuff makes backgrounds, etc.
	gStyle->SetTitleColor(0);//transparent for printing purposes...
	gStyle->SetCanvasColor(0);
	gStyle->SetPadColor(0);
	gStyle->SetPadBorderMode(0);
	gStyle->SetCanvasBorderMode(0);
	gStyle->SetFrameBorderMode(0);
	gStyle->SetPalette(1);
	gStyle->SetOptStat(kFALSE);
	gStyle->SetOptFit(0000);
	gStyle->SetPadGridX(kTRUE);
	gStyle->SetPadGridY(kTRUE);
	TGaxis::SetMaxDigits(4);

	ifstream infile1("summary.txt");

	float Run[points], HV[points], PreAmp[points], Navg[points], PedAve[points], PedRMS[points], nonLin[points], nonLinpV[points], Error[points], Chi2p6df[points], I_out[points];
	Double_t my_HV[points], my_nonLin[points], erx[points], ery[points], my_nonLinpV[points], my_PreAmp[points], my_Iout[points];
	char header[256];
	for(int h=0; h<11; h++) {//read the header info
		infile1 >> header;
	}

	for(int i=0; i<points; i++){
		infile1 >> Run[i] >> HV[i] >> PreAmp[i] >> Navg[i] >> PedAve[i] >> PedRMS[i] >> nonLin[i] >> Error[i] >> nonLinpV[i] >> Chi2p6df[i] >> I_out[i];

	cout << Run[i] << "	"<< HV[i] << "	" << PreAmp[i] <<"	"<< Navg[i] <<"	"<< PedAve[i] <<"	"<< PedRMS[i] <<"	" << nonLin[i] <<"	"<< Error[i]<<"	" << nonLinpV[i] <<"	"<< Chi2p6df[i] <<"	"<< I_out[i] << endl;
		my_HV[i] = HV[i];
		my_nonLin[i] = nonLin[i];
		erx[i] = 0;
		ery[i] = Error[i];
		my_nonLinpV[i] = nonLinpV[i];
		my_PreAmp[i] = PreAmp[i];
		my_Iout[i] = I_out[i];
     }
		infile1.close();

  TCanvas *c = new TCanvas("c","nonLinearity vs HV",0,0,900,600);
  gPad->SetLogy(0);
  gPad->SetLogx(0);
  gStyle->SetOptStat(kFALSE);
  TH2F *hr1;
  hr1 = new TH2F("hr1","",100,-900,-450,100,-1,1);
  gStyle->SetTitleX(0.18);
  sprintf(xTitle,"HV (V)");  
  sprintf(yTitle,"nonLinearity (%)");
  hr1->GetYaxis()->SetLabelColor(1);
  hr1->GetYaxis()->SetTitleColor(1);
  hr1->SetYTitle(yTitle);
  hr1->GetXaxis()->CenterTitle();
  hr1->GetYaxis()->CenterTitle();
  hr1->GetYaxis()->SetTitleOffset(1.3);
  hr1->GetXaxis()->SetLabelColor(1);
  hr1->GetXaxis()->SetTitleColor(1);
  hr1->SetXTitle(xTitle);
  hr1->Draw();

  TPaveLabel *title1 = new TPaveLabel(0.20,0.91,0.60,0.96,"nonLinearity vs HV for  ZK4033 @ LL=7nA, FF=120Hz","NDC");
  title1->SetBorderSize(0);
  title1->SetTextColor(kBlack);
  title1->SetTextSize(0.80);
  title1->SetFillColor(0);
  title1->Draw();
  TGraphErrors *gr1 = new TGraphErrors(points,my_HV,my_nonLin,erx,ery);
  gr1->SetLineColor(1);
  gr1->SetMarkerStyle(20);
  gr1->SetMarkerColor(1);
  gr1->SetMarkerSize(0.55);
  gr1->Draw("P");
  TF1 *f1 = new TF1("f1","pol1",-900,-450);
  f1->SetLineWidth(2);
  f1->SetLineColor(1);
  gr1->Fit("f1","R"); 

  sprintf(printname,"nonLinearity_vs_HV.png");
  c->Print(printname);

  return ;
	}