#include <fstream>
#include <string>
#include <vector>

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

void frac(void){
  char fString[120];
  vector<double> valVec,errVec;
  sprintf(fString,"./frac_fm1_V3.txt");
  readVec(fString,&valVec,&errVec);

  int nFrac = valVec.size();
  //if (nFrac != 11) cout<<"!!!  hFitFrac WRONG SIZE  !!!"<<endl; 
  
  double val_1 = 0;
  double var_1 = 0;
  double val_2 = 0;
  double var_2 = 0;
  
  val_1 += valVec[1]; 
  val_1 += valVec[2]; 
  val_1 += valVec[3]; 
  
  val_2 += valVec[4]; 
  val_2 += valVec[5]; 
  val_2 += valVec[6]; 
  val_2 += valVec[7]; 
  val_2 += valVec[8]; 
  val_2 += valVec[9]; 
  val_2 += valVec[10]; 
  val_2 += valVec[11]; 
  val_2 += valVec[12]; 
  
  var_1 += pow(errVec[1],2); 
  var_1 += pow(errVec[2],2); 
  var_1 += pow(errVec[3],2); 
  
  var_2 += pow(errVec[4],2); 
  var_2 += pow(errVec[5],2); 
  var_2 += pow(errVec[6],2); 
  var_2 += pow(errVec[7],2); 
  var_2 += pow(errVec[8],2); 
  var_2 += pow(errVec[9],2); 
  var_2 += pow(errVec[10],2); 
  var_2 += pow(errVec[11],2); 
  var_2 += pow(errVec[12],2); 
  
  double err_1 = sqrt(var_1);
  double err_2 = sqrt(var_2);
 
  cout<<"val_1 = "<<val_1<<" +/- "<<err_1<<" , val_2 = "<<val_2<<" +/- "<<err_2<<endl;

  double fracVal = val_1/val_2;
  double fracErr = fracVal*sqrt(pow(err_1/val_1,2)+pow(err_2/val_2,2));
  cout<<"frac = "<<fracVal<<" +/- "<<fracErr<<endl;
  
}

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;
}
