#include <fstream>
#include <string>
#include <vector>
//Function prototypes
int readVec(char *fToGo,vector<double> *valVec,vector<double> *errVec);

void fitFracHist(void){
  char fString[120];

  //1230
  cout<<"1230:"<<endl;
  vector<double> valVec1230,errVec1230;
  sprintf(fString,"./outFit/frac_A_m1230.txt");
  readVec(fString,&valVec1230,&errVec1230);

  //1250
  cout<<"1250:"<<endl;
  vector<double> valVec1250,errVec1250;
  sprintf(fString,"./outFit/frac_A_m1250.txt");
  readVec(fString,&valVec1250,&errVec1250);
 
  //1270
  cout<<"1270:"<<endl;
  vector<double> valVec1270,errVec1270;
  sprintf(fString,"./outFit/frac_A_m1270.txt");
  readVec(fString,&valVec1270,&errVec1270);

  //1290
  cout<<"1290:"<<endl;
  vector<double> valVec1290,errVec1290;
  sprintf(fString,"./outFit/frac_A_m1290.txt");
  readVec(fString,&valVec1290,&errVec1290);

  //1310
  cout<<"1310:"<<endl;
  vector<double> valVec1310,errVec1310;
  sprintf(fString,"./outFit/frac_A_m1310.txt");
  readVec(fString,&valVec1310,&errVec1310);

  TH2D *hFitFrac = new TH2D("hFitFrac","",5,1220,1320,21,0.5,21.5);

  int nFrac = valVec1310.size();
  //if (nFrac != 11) cout<<"!!!  hFitFrac WRONG SIZE  !!!"<<endl; 
  
  for (int i=0; i< nFrac; i++){
    double val1230 = valVec1230[i];
    double err1230 = errVec1230[i];

    double val1250 = valVec1250[i];
    double err1250 = errVec1250[i];

    double val1270 = valVec1270[i];
    double err1270 = errVec1270[i];

    double val1290 = valVec1290[i];
    double err1290 = errVec1290[i];

    double val1310 = valVec1310[i];
    double err1310 = errVec1310[i];

    hFitFrac->SetBinContent(1,i+1,val1230);
    hFitFrac->SetBinError(1,i+1,err1230);

    hFitFrac->SetBinContent(2,i+1,val1250);
    hFitFrac->SetBinError(2,i+1,err1250);

    hFitFrac->SetBinContent(3,i+1,val1270);
    hFitFrac->SetBinError(3,i+1,err1270);

    hFitFrac->SetBinContent(4,i+1,val1290);
    hFitFrac->SetBinError(4,i+1,err1290);

    hFitFrac->SetBinContent(5,i+1,val1310);
    hFitFrac->SetBinError(5,i+1,err1310);
    
  }
  
  hFitFrac->Draw("colz");

  //Setup the output file
  TFile *outFile = new TFile("./outFit/ff.root","RECREATE");
  hFitFrac->Write();
  outFile->Close();

  
}

int readVec(char *fToGo,vector<double> *valVec,vector<double> *errVec)
{
  string line;
  stringstream os(line);
  string temp;
  ifstream myfile (fToGo);
  if (myfile.is_open())
    {
      int j = 0;
      while ( myfile.good() )
        {
          int i = 0;
          getline(myfile,line);
          stringstream os(line);
          while (os >> temp) {
            if (i%2 == 0){
	      valVec->push_back(atof(temp.c_str()));
	      cout<<atof(temp.c_str());
	    }else{
	      errVec->push_back(atof(temp.c_str()));
	      cout<<" +/- "<<atof(temp.c_str())<<endl;
	    }
            i++;
          }
          j++;
        }
      
      myfile.close();
    }
  else cout << "Unable to open file";
  return 0;
}
