ROOT logo
TH1* bayneseffdiv(TH1* numerator, TH1* denominator,Char_t* name);
void SetStyles(TH1 *histo,int marker, int color){
  histo->Sumw2();
  histo->SetMarkerStyle(marker);
  histo->SetMarkerColor(color);
  histo->SetLineColor(color);
  //histo->GetXaxis()->SetTitle(xtitle);
  //histo->GetYaxis()->SetTitle(ytitle);
}
void Rescale(TH1 *histo,Int_t rescale){
  histo->Rebin(rescale);
  histo->Scale(1.0/((Float_t)rescale));
}
void SetStyles(TH1 *histo,int marker, int color,char *name){
  SetStyles(histo,marker,color);
  histo->SetName(name);
}
void PrintInfo(TH1 *histo){
  cout<<histo->GetName()<<":"<<endl;
  cout<<"x range "<<histo->GetBinLowEdge(1)<<" - "<<histo->GetBinLowEdge(histo->GetNbinsX()+1)<<endl;
  cout<<"y range "<<histo->GetMinimum()<<" - "<<histo->GetMaximum()<<endl;
}
Int_t colors[] = {0,TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, 
		    TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, 
		    TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, 
		    TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack};
Int_t markers[] = {20,21,22,23,33, 24,25,26,32,27, 20,21,22,23,33, 24,25,26,32,27};


Float_t nNeutronsSim[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsData[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsDataErr[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsShortSim[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsShortData[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsShortDataErr[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsSimCl[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsDataCl[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsShortSimCl[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
Float_t nNeutronsShortDataCl[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};

void WriteLatex();
Float_t neutronCorrEmcal[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
Float_t neutronCorrPhos[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
Float_t neutronErrorEmcal[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
Float_t neutronErrorPhos[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
TH1D* Divide(TH1D* numerator, TH1D* denominator,Char_t* name){
  //TH1D *output = numerator->Clone(name);
  TH1D *output = new TH1D(name,name,numerator->GetNbinsX(),numerator->GetBinLowEdge(1),numerator->GetBinLowEdge(numerator->GetNbinsX()+1));
  output->GetXaxis()->SetTitle(numerator->GetXaxis()->GetTitle());
  output->GetYaxis()->SetTitle(numerator->GetYaxis()->GetTitle());
  Int_t nbinsNum = numerator->GetNbinsX();
  Int_t nbinsDen = denominator->GetNbinsX();
  for(Int_t i=1;i<=output->GetNbinsX();i++){
    if(nbinsNum!=nbinsDen){
      if(denominator->GetBinContent(i)>0){
	output->SetBinContent(i,numerator->GetBinContent(i)/denominator->GetBinContent(i));
      }
    }
    else{
      output->SetBinContent(i,numerator->GetBinContent(i));
    }
    //output->SetBinError((Int_t)i,0,0,(Double_t)0.0);
    //denominator->SetBinError((Int_t)i,0,0,(Double_t)0.0);
    //cout<<" "<<output->GetBinError(i)<<" "<<denominator->GetBinError(i)<<endl;
  }
  if(nbinsNum==nbinsDen){
    output->Divide(denominator);
  }
  //cout<<"Fixing "<<output->GetName()<<endl;
  Double_t newerror = 1e-5;
  for(Int_t i=1;i<=output->GetNbinsX();i++){
    //cout<<"Bin "<<i<<" setting bin error "<<output->GetBinError(i)<<" to 0.  New bin error: ";
    output->SetBinError((Int_t)i,(Double_t)newerror);
    //output->SetBinError((Int_t)i,0,0,(Double_t)0.0);
    //cout<<" "<<output->GetBinError(i)<<endl;
  }
  return output;
}

void PlotProtons(TString filename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.root", TString filenameData = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal.LHC10hPass2.Run139465.root", Bool_t effCorr = kTRUE){
  gStyle->SetOptTitle(0);
  gStyle->SetOptStat(0);
  gStyle->SetOptFit(0);
  Bool_t isPhos = kTRUE;
  TString detector = "Phos";
  if(filename.Contains("EMC")){
    detector = "Emcal";
    isPhos = kFALSE;
  }

  TString tag = "";
  if(!effCorr) tag = "NoEffCorr";

  ofstream myfile;
  TString textfilename = "Neutrons"+detector+tag+".dat";
  myfile.open (textfilename.Data());
  ofstream myfile2;
  TString textfilename2 = "Neutrons"+detector+tag+"Short.dat";
  myfile2.open (textfilename2.Data());

  //Reading histograms
  TFile *f = TFile::Open(filename, "READ");
  TList *l = dynamic_cast<TList*>(f->Get("out1"));
  TH2F *fHistPIDProtonsTrackMatchedDepositedVsNch;
  TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNch;
  TH2F *fHistPiKPTrackMatchedDepositedVsNch;
  TH2F *fHistNeutronsDepositedVsNch;
  TH2F *fHistAntiNeutronsDepositedVsNch;
  TH2F *fHistProtonsDepositedVsNch;
  TH2F *fHistAntiProtonsDepositedVsNch;
  TH2F *fHistPiKPDepositedVsNch;
  TH2F *fHistProtonsNotTrackMatchedDepositedVsNch;
  TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNch;
  TH2F *fHistPIDProtonsTrackMatchedDepositedVsNcl;
  TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNcl;
  TH2F *fHistPiKPTrackMatchedDepositedVsNcl;
  TH2F *fHistNeutronsDepositedVsNcl;
  TH2F *fHistAntiNeutronsDepositedVsNcl;
  TH2F *fHistProtonsDepositedVsNcl;
  TH2F *fHistAntiProtonsDepositedVsNcl;
  TH2F *fHistPiKPDepositedVsNcl;
  TH2F *fHistProtonsNotTrackMatchedDepositedVsNcl;
  TH2F *fHistAntiProtonsNotTrackMatchedDepositedVsNcl;

  if(effCorr){
    fHistPIDProtonsTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistPIDProtonsTrackMatchedDepositedVsNch");
    fHistPIDAntiProtonsTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistPIDAntiProtonsTrackMatchedDepositedVsNch");
    fHistPiKPTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistPiKPTrackMatchedDepositedVsNch");
    fHistNeutronsDepositedVsNch = (TH2F *)l->FindObject("fHistNeutronsDepositedVsNch");
    fHistAntiNeutronsDepositedVsNch = (TH2F *)l->FindObject("fHistAntiNeutronsDepositedVsNch");
    fHistProtonsDepositedVsNch = (TH2F *)l->FindObject("fHistProtonsDepositedVsNch");
    fHistAntiProtonsDepositedVsNch = (TH2F *)l->FindObject("fHistAntiProtonsDepositedVsNch");
    fHistPiKPDepositedVsNch = (TH2F *)l->FindObject("fHistPiKPDepositedVsNch");
    fHistProtonsNotTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistProtonsNotTrackMatchedDepositedVsNch");
    fHistAntiProtonsNotTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistAntiProtonsNotTrackMatchedDepositedVsNch");

    fHistPIDProtonsTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistPIDProtonsTrackMatchedDepositedVsNcl");
    fHistPIDAntiProtonsTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistPIDAntiProtonsTrackMatchedDepositedVsNcl");
    fHistPiKPTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistPiKPTrackMatchedDepositedVsNcl");
    fHistNeutronsDepositedVsNcl = (TH2F *)l->FindObject("fHistNeutronsDepositedVsNcl");
    fHistAntiNeutronsDepositedVsNcl = (TH2F *)l->FindObject("fHistAntiNeutronsDepositedVsNcl");
    fHistProtonsDepositedVsNcl = (TH2F *)l->FindObject("fHistProtonsDepositedVsNcl");
    fHistAntiProtonsDepositedVsNcl = (TH2F *)l->FindObject("fHistAntiProtonsDepositedVsNcl");
    fHistPiKPDepositedVsNcl = (TH2F *)l->FindObject("fHistPiKPDepositedVsNcl");
    fHistProtonsNotTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistProtonsNotTrackMatchedDepositedVsNcl");
    fHistAntiProtonsNotTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistAntiProtonsNotTrackMatchedDepositedVsNcl");
  }
  else{
    fHistPIDProtonsTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistPIDProtonsTrackMatchedDepositedVsNchNoEff");
    fHistPIDAntiProtonsTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistPIDAntiProtonsTrackMatchedDepositedVsNchNoEff");
    fHistPiKPTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistPiKPTrackMatchedDepositedVsNchNoEff");
    fHistNeutronsDepositedVsNch = (TH2F *)l->FindObject("fHistNeutronsDepositedVsNchNoEffCorr");
    fHistAntiNeutronsDepositedVsNch = (TH2F *)l->FindObject("fHistAntiNeutronsDepositedVsNchNoEffCorr");
    fHistProtonsDepositedVsNch = (TH2F *)l->FindObject("fHistProtonsDepositedVsNchNoEffCorr");
    fHistAntiProtonsDepositedVsNch = (TH2F *)l->FindObject("fHistAntiProtonsDepositedVsNchNoEffCorr");
    fHistPiKPDepositedVsNch = (TH2F *)l->FindObject("fHistPiKPDepositedVsNchNoEffCorr");
    fHistProtonsNotTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistProtonsNotTrackMatchedDepositedVsNchNoEffCorr");
    fHistAntiProtonsNotTrackMatchedDepositedVsNch = (TH2F *)l->FindObject("fHistAntiProtonsNotTrackMatchedDepositedVsNchNoEffCorr");



    fHistPIDProtonsTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistPIDProtonsTrackMatchedDepositedVsNclNoEff");
    fHistPIDAntiProtonsTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistPIDAntiProtonsTrackMatchedDepositedVsNclNoEff");
    fHistPiKPTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistPiKPTrackMatchedDepositedVsNclNoEff");
    fHistNeutronsDepositedVsNcl = (TH2F *)l->FindObject("fHistNeutronsDepositedVsNclNoEffCorr");
    fHistAntiNeutronsDepositedVsNcl = (TH2F *)l->FindObject("fHistAntiNeutronsDepositedVsNclNoEffCorr");
    fHistProtonsDepositedVsNcl = (TH2F *)l->FindObject("fHistProtonsDepositedVsNclNoEffCorr");
    fHistAntiProtonsDepositedVsNcl = (TH2F *)l->FindObject("fHistAntiProtonsDepositedVsNclNoEffCorr");
    fHistPiKPDepositedVsNcl = (TH2F *)l->FindObject("fHistPiKPDepositedVsNclNoEffCorr");
    fHistProtonsNotTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistProtonsNotTrackMatchedDepositedVsNclNoEffCorr");
    fHistAntiProtonsNotTrackMatchedDepositedVsNcl = (TH2F *)l->FindObject("fHistAntiProtonsNotTrackMatchedDepositedVsNclNoEffCorr");
  }

  TH3F *fHistCentVsNchVsNcl = l->FindObject("fHistCentVsNchVsNclReco");
  fHistCentVsNchVsNcl->GetXaxis()->SetTitle("cent");
  fHistCentVsNchVsNcl->GetYaxis()->SetTitle("N_{Ch}");
  fHistCentVsNchVsNcl->GetZaxis()->SetTitle("N_{Cl}");
  //fHistCentVsNchVsNcl->SetName("fHistCentVsNchVsNclSim");

  fHistPIDProtonsTrackMatchedDepositedVsNch->SetName(Form("%sSim","fHistPIDProtonsTrackMatchedDepositedVsNch"));
  fHistPIDAntiProtonsTrackMatchedDepositedVsNch->SetName(Form("%sSim","fHistPIDAntiProtonsTrackMatchedDepositedVsNch"));
  fHistPiKPTrackMatchedDepositedVsNch->SetName(Form("%sSim","fHistPiKPTrackMatchedDepositedVsNch"));

  TFile *fData = TFile::Open(filenameData, "READ");
  TList *lData = dynamic_cast<TList*>(fData->Get("out1"));
  TH2F *fHistPIDProtonsTrackMatchedDepositedVsNchData;
  TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNchData;
  TH2F *fHistPiKPTrackMatchedDepositedVsNchData;
  TH2F *fHistPIDProtonsTrackMatchedDepositedVsNclData;
  TH2F *fHistPIDAntiProtonsTrackMatchedDepositedVsNclData;
  TH2F *fHistPiKPTrackMatchedDepositedVsNclData;
  if(effCorr){
    fHistPIDProtonsTrackMatchedDepositedVsNchData =(TH2F *) lData->FindObject("fHistPIDProtonsTrackMatchedDepositedVsNch");
    fHistPIDAntiProtonsTrackMatchedDepositedVsNchData = (TH2F *)lData->FindObject("fHistPIDAntiProtonsTrackMatchedDepositedVsNch");
    fHistPiKPTrackMatchedDepositedVsNchData = (TH2F *)lData->FindObject("fHistPiKPTrackMatchedDepositedVsNch");
    fHistPIDProtonsTrackMatchedDepositedVsNclData =(TH2F *) lData->FindObject("fHistPIDProtonsTrackMatchedDepositedVsNcl");
    fHistPIDAntiProtonsTrackMatchedDepositedVsNclData = (TH2F *)lData->FindObject("fHistPIDAntiProtonsTrackMatchedDepositedVsNcl");
    fHistPiKPTrackMatchedDepositedVsNclData = (TH2F *)lData->FindObject("fHistPiKPTrackMatchedDepositedVsNcl");
  }
  else{
    fHistPIDProtonsTrackMatchedDepositedVsNchData =(TH2F *) lData->FindObject("fHistPIDProtonsTrackMatchedDepositedVsNchNoEff");
    fHistPIDAntiProtonsTrackMatchedDepositedVsNchData = (TH2F *)lData->FindObject("fHistPIDAntiProtonsTrackMatchedDepositedVsNchNoEff");
    fHistPiKPTrackMatchedDepositedVsNchData = (TH2F *)lData->FindObject("fHistPiKPTrackMatchedDepositedVsNchNoEff");
    fHistPIDProtonsTrackMatchedDepositedVsNclData =(TH2F *) lData->FindObject("fHistPIDProtonsTrackMatchedDepositedVsNclNoEff");
    fHistPIDAntiProtonsTrackMatchedDepositedVsNclData = (TH2F *)lData->FindObject("fHistPIDAntiProtonsTrackMatchedDepositedVsNclNoEff");
    fHistPiKPTrackMatchedDepositedVsNclData = (TH2F *)lData->FindObject("fHistPiKPTrackMatchedDepositedVsNclNoEff");
  }
  TH3F *fHistCentVsNchVsNclData = lData->FindObject("fHistCentVsNchVsNclReco");
  fHistPIDProtonsTrackMatchedDepositedVsNchData->SetName(Form("%sData","fHistPIDProtonsTrackMatchedDepositedVsNch"));
  fHistPIDAntiProtonsTrackMatchedDepositedVsNchData->SetName(Form("%sData","fHistPIDAntiProtonsTrackMatchedDepositedVsNch"));
  fHistPiKPTrackMatchedDepositedVsNchData->SetName(Form("%sData","fHistPiKPTrackMatchedDepositedVsNch"));
  fHistPIDProtonsTrackMatchedDepositedVsNclData->SetName(Form("%sData","fHistPIDProtonsTrackMatchedDepositedVsNcl"));
  fHistPIDAntiProtonsTrackMatchedDepositedVsNclData->SetName(Form("%sData","fHistPIDAntiProtonsTrackMatchedDepositedVsNcl"));
  //fHistPiKPTrackMatchedDepositedVsNclData->SetName(Form("%sData","fHistPiKPTrackMatchedDepositedVsNcl"));
  fHistCentVsNchVsNclData->SetName("fHistCentVsNchVsNclRecoData");
  //TH3F *fHistCentVsNchVsNclData = lData->FindObject("fHistCentVsNchVsNcl");

  TCanvas *c1 = new TCanvas("c1","Simulation",600,400);
  c1->SetTopMargin(0.02);
  c1->SetRightMargin(0.149329);
  c1->SetBorderSize(0);
  c1->SetFillColor(0);
  c1->SetFillColor(0);
  c1->SetBorderMode(0);
  c1->SetFrameFillColor(0);
  c1->SetFrameBorderMode(0);
  //c1->SetLogz();
  //fHistPIDProtonsTrackMatchedDepositedVsNch->Draw("colz");
  TH1D *fHistPiKPTrackMatchedDepositedVsNchProf = fHistPiKPTrackMatchedDepositedVsNch->ProfileY();
  fHistPiKPTrackMatchedDepositedVsNchProf->Scale(1.0/30.0);
  fHistPiKPTrackMatchedDepositedVsNchProf->GetXaxis()->SetTitle("N_{ch}");
  fHistPiKPTrackMatchedDepositedVsNchProf->GetYaxis()->SetTitle("<E_{T}>");
  TH1D *fHistPiKPTrackMatchedDepositedVsNchProfCopy = fHistPiKPTrackMatchedDepositedVsNchProf->Clone("fHistPiKPTrackMatchedDepositedVsNchProfCopy");
  fHistPiKPTrackMatchedDepositedVsNchProfCopy->Draw();
  TH1D *fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf = fHistPIDAntiProtonsTrackMatchedDepositedVsNch->ProfileY("fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf");
  TH1D *fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf = fHistPIDAntiProtonsTrackMatchedDepositedVsNcl->ProfileY("fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf");
  fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf->Draw("same");
  TH1D *fHistPIDProtonsTrackMatchedDepositedVsNchProf = fHistPIDProtonsTrackMatchedDepositedVsNch->ProfileY("fHistPIDProtonsTrackMatchedDepositedVsNchProf");
  TH1D *fHistPIDProtonsTrackMatchedDepositedVsNclProf = fHistPIDProtonsTrackMatchedDepositedVsNcl->ProfileY("fHistPIDProtonsTrackMatchedDepositedVsNclProf");
  fHistPIDProtonsTrackMatchedDepositedVsNchProf->Draw("same");
  SetStyles(fHistPiKPTrackMatchedDepositedVsNchProf,29,1);
  SetStyles(fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf,20,TColor::kRed);
  SetStyles(fHistPIDProtonsTrackMatchedDepositedVsNchProf,24,TColor::kBlue);
  TLegend *leg = new TLegend(0.157718,0.709677,0.278523,0.935484);
  leg->SetFillStyle(0);
  leg->SetFillColor(0);
  leg->SetBorderSize(0);
  leg->SetTextSize(0.03);
  leg->SetTextSize(0.038682);
  leg->AddEntry(fHistPiKPTrackMatchedDepositedVsNchProf,"Track matched E_{T}/30");
  leg->AddEntry(fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf,"Identified #bar{p} E_{T}");
  leg->AddEntry(fHistPIDProtonsTrackMatchedDepositedVsNchProf,"Identified p E_{T}");
  leg->Draw();
  TString name1 = "/tmp/Sim"+detector+".png";
  c1->SaveAs(name1.Data());
  //cerr<<"176"<<endl;

  TCanvas *c2 = new TCanvas("c2","Data",600,400);
  c2->SetTopMargin(0.02);
  c2->SetRightMargin(0.149329);
  c2->SetBorderSize(0);
  c2->SetFillColor(0);
  c2->SetFillColor(0);
  c2->SetBorderMode(0);
  c2->SetFrameFillColor(0);
  c2->SetFrameBorderMode(0);
  //c2->SetLogz();
  //fHistPIDProtonsTrackMatchedDepositedVsNchData->Draw("colz");
  TH1D *fHistPiKPTrackMatchedDepositedVsNchDataProf = fHistPiKPTrackMatchedDepositedVsNchData->ProfileY("fHistPiKPTrackMatchedDepositedVsNchDataProf");
  fHistPiKPTrackMatchedDepositedVsNchDataProf->Scale(1.0/30.0);
  fHistPiKPTrackMatchedDepositedVsNchDataProf->GetXaxis()->SetTitle("N_{ch}");
  fHistPiKPTrackMatchedDepositedVsNchDataProf->GetYaxis()->SetTitle("<E_{T}>");
  TH1D *fHistPiKPTrackMatchedDepositedVsNchDataProfCopy = fHistPiKPTrackMatchedDepositedVsNchDataProf->Clone("fHistPiKPTrackMatchedDepositedVsNchDataProfCopy");
  fHistPiKPTrackMatchedDepositedVsNchDataProfCopy->Draw();
  TH1D *fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf = fHistPIDAntiProtonsTrackMatchedDepositedVsNchData->ProfileY("fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf");
  TH1D *fHistPIDAntiProtonsTrackMatchedDepositedVsNclDataProf = fHistPIDAntiProtonsTrackMatchedDepositedVsNclData->ProfileY("fHistPIDAntiProtonsTrackMatchedDepositedVsNclDataProf");
  fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf->Draw("same");
  TH1D *fHistPIDProtonsTrackMatchedDepositedVsNchDataProf = fHistPIDProtonsTrackMatchedDepositedVsNchData->ProfileY("fHistPIDProtonsTrackMatchedDepositedVsNchDataProf");
  TH1D *fHistPIDProtonsTrackMatchedDepositedVsNclDataProf = fHistPIDProtonsTrackMatchedDepositedVsNclData->ProfileY("fHistPIDProtonsTrackMatchedDepositedVsNclDataProf");
  fHistPIDProtonsTrackMatchedDepositedVsNchDataProf->Draw("same");
  SetStyles(fHistPiKPTrackMatchedDepositedVsNchDataProf,29,1);
  SetStyles(fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf,20,TColor::kRed);
  SetStyles(fHistPIDProtonsTrackMatchedDepositedVsNchDataProf,24,TColor::kBlue);
  TLegend *legData = new TLegend(0.157718,0.709677,0.278523,0.935484);
  legData->SetFillStyle(0);
  legData->SetFillColor(0);
  legData->SetBorderSize(0);
  legData->SetTextSize(0.03);
  legData->SetTextSize(0.038682);
  legData->AddEntry(fHistPiKPTrackMatchedDepositedVsNchDataProf,"Track matched E_{T}/30");
  legData->AddEntry(fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf,"Identified #bar{p} E_{T}");
  legData->AddEntry(fHistPIDProtonsTrackMatchedDepositedVsNchDataProf,"Identified p E_{T}");
  legData->Draw();
  //cerr<<"212"<<endl;

  TString name2 = "/tmp/Data"+detector+".png";
  c2->SaveAs(name2.Data());
  fHistPiKPTrackMatchedDepositedVsNchDataProf->Scale(30.0);
  fHistPiKPTrackMatchedDepositedVsNchProf->Scale(30.0);

  TCanvas *c3 = new TCanvas("c3","Ratios at low pT",600,400);
  c3->SetTopMargin(0.02);
  c3->SetRightMargin(0.149329);
  c3->SetBorderSize(0);
  c3->SetFillColor(0);
  c3->SetFillColor(0);
  c3->SetBorderMode(0);
  c3->SetFrameFillColor(0);
  c3->SetFrameBorderMode(0);
  TH1D *hAntiProtonSim = Divide(fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf,fHistPiKPTrackMatchedDepositedVsNchProf,"hAntiProtonSim");
  TH1D *hProtonSim = Divide(fHistPIDProtonsTrackMatchedDepositedVsNchProf,fHistPiKPTrackMatchedDepositedVsNchProf,"hProtonSim");
  TH1D *htemp =  fHistPIDProtonsTrackMatchedDepositedVsNchProf->Clone("temp");
  //cout<<htemp->GetEntries();
  htemp->Add(fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf);
  htemp->Scale(2);//because the profile averages when you add two profiles
  //cout<<" "<<htemp->GetEntries()<<endl;
  //cout<<"entries "<<fHistPiKPTrackMatchedDepositedVsNchProf->GetEntries()<<endl;
  TH1D *hAllProtonSim = Divide(htemp,fHistPiKPTrackMatchedDepositedVsNchProf,"hAllProtonSim");
  //delete htemp;


  //cerr<<"240"<<endl;

  TH1D *hAntiProtonData = Divide(fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf,fHistPiKPTrackMatchedDepositedVsNchDataProf,"hAntiProtonData");
  TH1D *hProtonData = Divide(fHistPIDProtonsTrackMatchedDepositedVsNchDataProf,fHistPiKPTrackMatchedDepositedVsNchDataProf,"hProtonData");
  TH1D *htemp2 =  fHistPIDProtonsTrackMatchedDepositedVsNchDataProf->Clone("temp2");

  //cout<<htemp2->GetEntries();
  htemp2->Add(fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf);
  htemp2->Scale(2);//because the profile averages when you add two profiles
  //cout<<" "<<htemp2->GetEntries()<<endl;
  //cout<<"entries "<<fHistPiKPTrackMatchedDepositedVsNchDataProf->GetEntries()<<endl;
  TH1D *hAllProtonData = Divide(htemp2,fHistPiKPTrackMatchedDepositedVsNchDataProf,"hAllProtonData");
  //delete htemp2;
  SetStyles(hAntiProtonSim,20,TColor::kRed);
  SetStyles(hProtonSim,24,TColor::kRed);
  SetStyles(hAllProtonSim,28,1);
  SetStyles(hAntiProtonData,22,TColor::kRed);
  SetStyles(hProtonData,26,TColor::kRed);
  SetStyles(hAllProtonData,33,1);
  hAllProtonSim->GetXaxis()->SetTitle("N_ch");
  hAllProtonSim->GetYaxis()->SetTitle("E_{T}^{p,#bar{p}}/E_{T}^{#pi,K,p TM}");
  TF1 *funcData = new TF1("funcData","[0]*exp(-x/[1])+[2]-[3]*x",0,2500);
  funcData->SetParameter(0,0.12);
  funcData->SetParameter(1,10);
  funcData->SetParLimits(1,1e-9,1e9);
  funcData->SetParameter(2,0.09);
  funcData->SetParameter(3,2e-5);
  funcData->SetLineColor(hAllProtonData->GetLineColor());
  hAllProtonData->Fit(funcData,"","",50,2700);
  TF1 *funcSim = new TF1("funcSim","[0]*exp(-x/[1])+[2]-[3]*x",0,2500);
  funcSim->SetParameter(0,0.06);
  funcSim->SetParLimits(0,0,0.12);
  funcSim->SetParameter(1,10);
  funcSim->SetParLimits(1,1e-3,1e2);
  funcSim->SetParameter(2,0.09);
  funcSim->SetParameter(3,2e-5);
  funcSim->SetLineColor(hAllProtonSim->GetLineColor());
  hAllProtonSim->Fit(funcSim,"","",0,2700);
  hAllProtonSim->Draw();
  hAllProtonData->Draw("same");
  hAntiProtonData->Draw("same");
  hProtonData->Draw("same");
  hAntiProtonSim->Draw("same");
  hProtonSim->Draw("same");
  TLegend *legRatio = new TLegend(0.157718,0.709677,0.278523,0.935484);
  legRatio->SetFillStyle(0);
  legRatio->SetFillColor(0);
  legRatio->SetBorderSize(0);
  legRatio->SetTextSize(0.03);
  legRatio->SetTextSize(0.038682);
  legRatio->AddEntry(hAllProtonSim,"p+#bar{p} Sim");
  legRatio->AddEntry(hAllProtonData,"p+#bar{p} Data");
  legRatio->AddEntry(hProtonSim,"p Sim");
  legRatio->AddEntry(hProtonData,"p Data");
  legRatio->AddEntry(hAntiProtonSim,"#bar{p} Sim");
  legRatio->AddEntry(hAntiProtonData,"#bar{p} Data");
  legRatio->Draw();
  //     c1->cd();
  //     SetStyles(htemp,21,1);
  //     htemp->Draw("same");
  //     c2->cd();
  //     SetStyles(htemp2,21,1);
  //     htemp2->Draw("same");

  TString name3 = "/tmp/ProtonRatio"+detector+".eps";
  c3->SaveAs(name3.Data());

  cerr<<"306"<<endl;


  TCanvas *c4 = new TCanvas("c4","Sim: ratios of particles to low pT protons",600,400);
  c4->SetTopMargin(0.02);
  c4->SetRightMargin(0.149329);
  c4->SetBorderSize(0);
  c4->SetFillColor(0);
  c4->SetFillColor(0);
  c4->SetBorderMode(0);
  c4->SetFrameFillColor(0);
  c4->SetFrameBorderMode(0);
  TH1D *fHistNeutronsDepositedVsNchProf = fHistNeutronsDepositedVsNch->ProfileY("fHistNeutronsDepositedVsNchProf");
  TH1D *fHistAntiNeutronsDepositedVsNchProf = fHistAntiNeutronsDepositedVsNch->ProfileY("fHistAntiNeutronsDepositedVsNchProf");
  TH1D *fHistProtonsDepositedVsNchProf = fHistProtonsDepositedVsNch->ProfileY("fHistProtonsDepositedVsNchProf");
  TH1D *fHistAntiProtonsDepositedVsNchProf = fHistAntiProtonsDepositedVsNch->ProfileY("fHistAntiProtonsDepositedVsNchProf");
  TH1D *hNeutronsOverLowPtProtons = Divide(fHistNeutronsDepositedVsNchProf,fHistPIDProtonsTrackMatchedDepositedVsNchProf,"hAllNeutronsOverLowPtProtonsName");
  TH1D *hAntiNeutronsOverLowPtAntiProtons = Divide(fHistAntiNeutronsDepositedVsNchProf,fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf,"hAllNeutronsOverLowPtAntiProtonsName");
  TH1D *hProtonsOverLowPtProtons = Divide(fHistProtonsDepositedVsNchProf,fHistPIDProtonsTrackMatchedDepositedVsNchProf,"hAllProtonsOverLowPtProtonsName");
  TH1D *hAntiProtonsOverLowPtAntiProtons = Divide(fHistAntiProtonsDepositedVsNchProf,fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf,"hAllProtonsOverLowPtAntiProtonsName");

  TH1D *fHistNeutronsDepositedVsNclProf = fHistNeutronsDepositedVsNcl->ProfileY("fHistNeutronsDepositedVsNclProf");
  TH1D *fHistAntiNeutronsDepositedVsNclProf = fHistAntiNeutronsDepositedVsNcl->ProfileY("fHistAntiNeutronsDepositedVsNclProf");
  TH1D *fHistProtonsDepositedVsNclProf = fHistProtonsDepositedVsNcl->ProfileY("fHistProtonsDepositedVsNclProf");
  TH1D *fHistAntiProtonsDepositedVsNclProf = fHistAntiProtonsDepositedVsNcl->ProfileY("fHistAntiProtonsDepositedVsNclProf");
  cout<<"Dividing cluster histos"<<endl;
  TH1D *hNeutronsOverLowPtProtonsCl = Divide(fHistNeutronsDepositedVsNclProf,fHistPIDProtonsTrackMatchedDepositedVsNclProf,"hAllNeutronsOverLowPtProtonsClName");
  TH1D *hAntiNeutronsOverLowPtAntiProtonsCl = Divide(fHistAntiNeutronsDepositedVsNclProf,fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf,"hAllNeutronsOverLowPtAntiProtonsClName");
  TH1D *hProtonsOverLowPtProtonsCl = Divide(fHistProtonsDepositedVsNclProf,fHistPIDProtonsTrackMatchedDepositedVsNclProf,"hAllProtonsOverLowPtProtonsClName");
  TH1D *hAntiProtonsOverLowPtAntiProtonsCl = Divide(fHistAntiProtonsDepositedVsNclProf,fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf,"hAllProtonsOverLowPtAntiProtonsClName");
  cout<<"Done dividing cluster histos"<<endl;

  TH1D *hTmpAllLowPtProtons = fHistPIDProtonsTrackMatchedDepositedVsNchProf->Clone("hTmpAllLowPtProtons");
  hTmpAllLowPtProtons->Add(fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf);
  TH1D *hTmpAllLowPtProtonsData = fHistPIDProtonsTrackMatchedDepositedVsNchDataProf->Clone("hTmpAllLowPtProtonsData");
  hTmpAllLowPtProtonsData->Add(fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf);
  TH1D *hTmpAllProtons = fHistProtonsDepositedVsNchProf->Clone("hTmpAllProtons");
  hTmpAllProtons->Add(fHistAntiProtonsDepositedVsNchProf);
  TH1D *hTmpAllNeutrons = fHistNeutronsDepositedVsNchProf->Clone("hTmpAllNeutrons");
  hTmpAllNeutrons->Add(fHistAntiNeutronsDepositedVsNchProf);

  TH1D *hTmpAllLowPtProtonsCl = fHistPIDProtonsTrackMatchedDepositedVsNclProf->Clone("hTmpAllLowPtProtonsCl");
  hTmpAllLowPtProtonsCl->Add(fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf);
  TH1D *hTmpAllLowPtProtonsDataCl = fHistPIDProtonsTrackMatchedDepositedVsNclDataProf->Clone("hTmpAllLowPtProtonsDataCl");
  hTmpAllLowPtProtonsDataCl->Add(fHistPIDAntiProtonsTrackMatchedDepositedVsNclDataProf);
  TH1D *hTmpAllProtonsCl = fHistProtonsDepositedVsNclProf->Clone("hTmpAllProtonsCl");
  hTmpAllProtonsCl->Add(fHistAntiProtonsDepositedVsNclProf);
  TH1D *hTmpAllNeutronsCl = fHistNeutronsDepositedVsNclProf->Clone("hTmpAllNeutronsCl");
  hTmpAllNeutronsCl->Add(fHistAntiNeutronsDepositedVsNclProf);

  TH1D *hAllNeutronsOverLowPtProtons = Divide(hTmpAllNeutrons,hTmpAllLowPtProtons,"hAllNeutronsOverLowPtProtons");
  TH1D *hAllNeutronsOverLowPtProtonsData = Divide(hTmpAllNeutrons,hTmpAllLowPtProtonsData,"hAllNeutronsOverLowPtProtonsData");
  TH1D *hAllProtonsOverLowPtProtons = Divide(hTmpAllProtons,hTmpAllLowPtProtons,"hAllProtonsOverLowPtProtons");
  TH1D *hAllProtonsOverLowPtProtonsData = Divide(hTmpAllProtons,hTmpAllLowPtProtonsData,"hAllProtonsOverLowPtProtonsData");
  SetStyles(hAntiNeutronsOverLowPtAntiProtons,20,TColor::kBlue);
  SetStyles(hNeutronsOverLowPtProtons,24,TColor::kBlue);
  SetStyles(hAntiProtonsOverLowPtAntiProtons,22,TColor::kRed);
  SetStyles(hProtonsOverLowPtProtons,26,TColor::kRed);
  SetStyles(hAllNeutronsOverLowPtProtonsData,29,TColor::kGreen+3);
  SetStyles(hAllNeutronsOverLowPtProtons,30,TColor::kGreen+3);
  SetStyles(hAllProtonsOverLowPtProtons,24,TColor::kRed);
  SetStyles(hAllProtonsOverLowPtProtonsData,20,TColor::kRed);

  TH1D *hAllNeutronsOverLowPtProtonsCl = Divide(hTmpAllNeutronsCl,hTmpAllLowPtProtonsCl,"hAllNeutronsOverLowPtProtonsCl");
  TH1D *hAllNeutronsOverLowPtProtonsDataCl = Divide(hTmpAllNeutronsCl,hTmpAllLowPtProtonsDataCl,"hAllNeutronsOverLowPtProtonsDataCl");
  TH1D *hAllProtonsOverLowPtProtonsCl = Divide(hTmpAllProtonsCl,hTmpAllLowPtProtonsCl,"hAllProtonsOverLowPtProtonsCl");
  TH1D *hAllProtonsOverLowPtProtonsDataCl = Divide(hTmpAllProtonsCl,hTmpAllLowPtProtonsDataCl,"hAllProtonsOverLowPtProtonsDataCl");
  SetStyles(hAntiNeutronsOverLowPtAntiProtonsCl,20,TColor::kBlue);
  SetStyles(hNeutronsOverLowPtProtonsCl,24,TColor::kBlue);
  SetStyles(hAntiProtonsOverLowPtAntiProtonsCl,22,TColor::kRed);
  SetStyles(hProtonsOverLowPtProtonsCl,26,TColor::kRed);
  SetStyles(hAllNeutronsOverLowPtProtonsDataCl,29,TColor::kGreen+3);
  SetStyles(hAllNeutronsOverLowPtProtonsCl,30,TColor::kGreen+3);
  SetStyles(hAllProtonsOverLowPtProtonsCl,24,TColor::kRed);
  SetStyles(hAllProtonsOverLowPtProtonsDataCl,20,TColor::kRed);

  //cerr<<"349"<<endl;

  Rescale(hAntiNeutronsOverLowPtAntiProtons,2);
  Rescale(hNeutronsOverLowPtProtons,2);
  Rescale(hAntiProtonsOverLowPtAntiProtons,2);
  Rescale(hProtonsOverLowPtProtons,2);
  Rescale(hAllNeutronsOverLowPtProtonsData,2);
  Rescale(hAllNeutronsOverLowPtProtons,2);
  Rescale(hAllProtonsOverLowPtProtons,2);
  Rescale(hAllProtonsOverLowPtProtonsData,2);

  Rescale(hAntiNeutronsOverLowPtAntiProtonsCl,2);
  Rescale(hNeutronsOverLowPtProtonsCl,2);
  Rescale(hAntiProtonsOverLowPtAntiProtonsCl,2);
  Rescale(hProtonsOverLowPtProtonsCl,2);
  Rescale(hAllNeutronsOverLowPtProtonsDataCl,2);
  Rescale(hAllNeutronsOverLowPtProtonsCl,2);
  Rescale(hAllProtonsOverLowPtProtonsCl,2);
  Rescale(hAllProtonsOverLowPtProtonsDataCl,2);


  //SetStyles(hAllProtonSim,28,1);
  //SetStyles(hAntiProtonData,22,TColor::kRed);
  //SetStyles(hProtonData,26,TColor::kRed);
  //SetStyles(hAllProtonData,33,1);
  hAntiNeutronsOverLowPtAntiProtons->SetMinimum(0.0);
  hAntiNeutronsOverLowPtAntiProtons->SetMaximum(8.0);
  hAntiNeutronsOverLowPtAntiProtons->GetXaxis()->SetTitle("N_{ch}");
  hAntiNeutronsOverLowPtAntiProtons->GetYaxis()->SetTitle("Ratio of energy deposited in sim");
  hAntiNeutronsOverLowPtAntiProtons->Draw("");
  hNeutronsOverLowPtProtons->Draw("same");
  hAntiProtonsOverLowPtAntiProtons->Draw("same");
  hProtonsOverLowPtProtons->Draw("same");
  hAllNeutronsOverLowPtProtons->Draw("same");
  hAllProtonsOverLowPtProtons->Draw("same");
  TLegend *legRatio2 = new TLegend(0.157718,0.709677,0.278523,0.935484);
  legRatio2->SetFillStyle(0);
  legRatio2->SetFillColor(0);
  legRatio2->SetBorderSize(0);
  legRatio2->SetTextSize(0.03);
  legRatio2->SetTextSize(0.038682);
  legRatio2->AddEntry(hAntiNeutronsOverLowPtAntiProtons,"#bar{n}/PID'd #bar{p}");
  legRatio2->AddEntry(hNeutronsOverLowPtProtons,"n/PID'd p");
  legRatio2->AddEntry(hAntiProtonsOverLowPtAntiProtons,"#bar{p}/PID'd #bar{p}");
  legRatio2->AddEntry(hProtonsOverLowPtProtons,"p/PID'd p");
  legRatio2->AddEntry(hAllNeutronsOverLowPtProtons,"(#bar{n}+n)/(PID'd #bar{p}+p)");
  legRatio2->AddEntry(hAllProtonsOverLowPtProtons,"(#bar{p}+p)/(PID'd #bar{p}+p)");
  legRatio2->Draw();

  //cerr<<"387"<<endl;
  TString name4 = "/tmp/RatiosToLowPt"+detector+".eps";
  c4->SaveAs(name4.Data());

  TCanvas *c5 = new TCanvas("c5","Neutron ratios used for error bounds",600,400);
  c5->SetTopMargin(0.02);
  c5->SetRightMargin(0.149329);
  c5->SetBorderSize(0);
  c5->SetFillColor(0);
  c5->SetFillColor(0);
  c5->SetBorderMode(0);
  c5->SetFrameFillColor(0);
  c5->SetFrameBorderMode(0);

  TF1 *funcNominal = new TF1("funcNominal","([0]*exp(-x/[1])+[2]-[3]*x)*[4]",0,3700);
  funcNominal->SetParameter(0,3.38452e+00);
  funcNominal->SetParameter(1,1.32723e+02);
  funcNominal->SetParameter(2,2.51044e+00);
  funcNominal->SetParameter(3,4.78729e-04);
  funcNominal->SetParLimits(1,1,1e3);
  funcNominal->FixParameter(4,1);
  //cout<<"funcnominal"<<endl;
  funcNominal->SetLineColor(hAllNeutronsOverLowPtProtonsData->GetLineColor());
  hAllNeutronsOverLowPtProtonsData->Fit(funcNominal,"","",50,2700);
  TF1 *funcLow = funcNominal->Clone("funcLow");
  funcLow->FixParameter(4,1.15);
  funcLow->SetLineStyle(2);
  TF1 *funcHigh = funcNominal->Clone("funcHigh");
  funcHigh->FixParameter(4,0.85);
  funcHigh->SetLineStyle(2);


  hAllNeutronsOverLowPtProtons->SetMinimum(0.0);
  hAllNeutronsOverLowPtProtons->SetMaximum(8.0);
  hAllNeutronsOverLowPtProtons->GetXaxis()->SetTitle("N_{ch}");
  hAllNeutronsOverLowPtProtons->GetYaxis()->SetTitle("Ratio of energy deposited in sim");
  hAllNeutronsOverLowPtProtons->Draw();
  hAllNeutronsOverLowPtProtonsData->Draw("same");
  hAllProtonsOverLowPtProtons->Draw("same");
  hAllProtonsOverLowPtProtonsData->Draw("same");
  TLegend *legRatioForData = new TLegend(0.157718,0.709677,0.278523,0.935484);
  legRatioForData->SetFillStyle(0);
  legRatioForData->SetFillColor(0);
  legRatioForData->SetBorderSize(0);
  legRatioForData->SetTextSize(0.03);
  legRatioForData->SetTextSize(0.038682);
  legRatioForData->AddEntry(hAllNeutronsOverLowPtProtons,"(#bar{n}+n)/(PID'd #bar{p}+p in Sim)");
  legRatioForData->AddEntry(hAllNeutronsOverLowPtProtonsData,"(#bar{n}+n)/(PID'd #bar{p}+p in Data)");
  legRatioForData->AddEntry(hAllProtonsOverLowPtProtons,"(#bar{p}+p)/(PID'd #bar{p}+p in Sim)");
  legRatioForData->AddEntry(hAllProtonsOverLowPtProtonsData,"(#bar{p}+p)/(PID'd #bar{p}+p in Data)");
  legRatioForData->Draw();
  funcHigh->Draw("same");
  funcLow->Draw("same");

  TString name5 = "/tmp/RatiosForErrors"+detector+".eps";
  c5->SaveAs(name5.Data());

  TCanvas *c5a = new TCanvas("c5a","Neutron ratios used for error bounds",600,400);
  c5a->SetTopMargin(0.02);
  c5a->SetRightMargin(0.149329);
  c5a->SetBorderSize(0);
  c5a->SetFillColor(0);
  c5a->SetFillColor(0);
  c5a->SetBorderMode(0);
  c5a->SetFrameFillColor(0);
  c5a->SetFrameBorderMode(0);

  TF1 *funcANominal = new TF1("funcANominal","([0]*exp(-x/[1])+[2]-[3]*x)*[4]",0,3700);
  funcANominal->SetParameter(0,3.09123e+00);
  funcANominal->SetParameter(1,2.69186e+01);
  funcANominal->SetParameter(2,3.07388e+00);
  funcANominal->SetParameter(3,2.88916e-03);
  funcANominal->SetParLimits(1,0,1e3);
  //funcANominal->SetParLimits(2,0,3);
  //funcANominal->SetParLimits(3,1e-3,1e3);
  funcANominal->SetParLimits(0,1,1e2);
  funcANominal->FixParameter(4,1);
  //cout<<"funcAnominal"<<endl;
  funcANominal->SetLineColor(hAllNeutronsOverLowPtProtonsDataCl->GetLineColor());
  Float_t fitlim = 280;
  if(isPhos) fitlim = 160;
  hAllNeutronsOverLowPtProtonsDataCl->Fit(funcANominal,"","",20,fitlim);
  TF1 *funcALow = funcANominal->Clone("funcALow");
  funcALow->FixParameter(4,1.15);
  funcALow->SetLineStyle(2);
  TF1 *funcAHigh = funcANominal->Clone("funcAHigh");
  funcAHigh->FixParameter(4,0.85);
  funcAHigh->SetLineStyle(2);


  hAllNeutronsOverLowPtProtonsCl->SetMinimum(0.0);
  hAllNeutronsOverLowPtProtonsCl->SetMaximum(8.0);
  hAllNeutronsOverLowPtProtonsCl->GetXaxis()->SetTitle("N_{cl}");
  hAllNeutronsOverLowPtProtonsCl->GetYaxis()->SetTitle("Ratio of energy deposited in sim");
  hAllNeutronsOverLowPtProtonsCl->GetXaxis()->SetRange(1,hAllNeutronsOverLowPtProtonsCl->FindBin(fitlim));
  hAllNeutronsOverLowPtProtonsCl->Draw();
  hAllNeutronsOverLowPtProtonsDataCl->Draw("same");
  hAllProtonsOverLowPtProtonsCl->Draw("same");
  hAllProtonsOverLowPtProtonsDataCl->Draw("same");
  TLegend *legRatioForDataCl = new TLegend(0.157718,0.709677,0.278523,0.935484);
  legRatioForDataCl->SetFillStyle(0);
  legRatioForDataCl->SetFillColor(0);
  legRatioForDataCl->SetBorderSize(0);
  legRatioForDataCl->SetTextSize(0.03);
  legRatioForDataCl->SetTextSize(0.038682);
  legRatioForDataCl->AddEntry(hAllNeutronsOverLowPtProtonsCl,"(#bar{n}+n)/(PID'd #bar{p}+p in Sim)");
  legRatioForDataCl->AddEntry(hAllNeutronsOverLowPtProtonsDataCl,"(#bar{n}+n)/(PID'd #bar{p}+p in Data)");
  legRatioForDataCl->AddEntry(hAllProtonsOverLowPtProtonsCl,"(#bar{p}+p)/(PID'd #bar{p}+p in Sim)");
  legRatioForDataCl->AddEntry(hAllProtonsOverLowPtProtonsDataCl,"(#bar{p}+p)/(PID'd #bar{p}+p in Data)");
  legRatioForDataCl->Draw();
  funcAHigh->Draw("same");
  funcALow->Draw("same");

  TString name5a = "/tmp/RatiosForErrorsCl"+detector+".eps";
  c5a->SaveAs(name5a.Data());



//     TCanvas *c5b = new TCanvas("c5b","Neutron ratios used for error bounds",600,400);
//     c5b->SetTopMargin(0.02);
//     c5b->SetRightMargin(0.149329);
//     c5b->SetBorderSize(0);
//     c5b->SetFillColor(0);
//     c5b->SetFillColor(0);
//     c5b->SetBorderMode(0);
//     c5b->SetFrameFillColor(0);
//     c5b->SetFrameBorderMode(0);
//     fHistNeutronsDepositedVsNclProf->Draw();
//     fHistAntiNeutronsDepositedVsNclProf->Draw("same");
//     fHistPIDProtonsTrackMatchedDepositedVsNclProf->Draw("same");
//     fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf->Draw("same");
//     //fHistPIDProtonsTrackMatchedDepositedVsNclProf->Draw("same");
//     //fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf->Draw("same");

//     SetStyles(fHistNeutronsDepositedVsNclProf,20, TColor::kBlue);
//     SetStyles(fHistAntiNeutronsDepositedVsNclProf,24, TColor::kBlue);
//     SetStyles(fHistPIDProtonsTrackMatchedDepositedVsNclProf,21,TColor::kRed);
//     SetStyles(fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf,25,TColor::kRed);
//     PrintInfo(fHistNeutronsDepositedVsNclProf);
//     PrintInfo(fHistAntiNeutronsDepositedVsNclProf);
//     PrintInfo(fHistPIDProtonsTrackMatchedDepositedVsNclProf);
//     PrintInfo(fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf);

    //cerr<<"442"<<endl;

    TObjArray trackmultiplicity(20);
    TObjArray trackmultiplicityData(20);
    TObjArray clustermultiplicity(20);
    TObjArray clustermultiplicityData(20);
    int nbinsChMult = fHistCentVsNchVsNcl->GetYaxis()->GetNbins();
    int nbinsClMult = fHistCentVsNchVsNcl->GetZaxis()->GetNbins();
    fHistCentVsNchVsNcl->GetXaxis()->SetTitle("Cent Bin");
    fHistCentVsNchVsNcl->GetYaxis()->SetTitle("N_{tr}");
    fHistCentVsNchVsNcl->GetZaxis()->SetTitle("N_{cl}");
    for(int cb=0;cb<20;cb++){
      //x axis is centrality
      //y axis is charged track multiplicity
      //z axis is cluster multiplicity
      fHistCentVsNchVsNcl->GetXaxis()->SetRange(cb+1,cb+1);
      trackmultiplicity[cb] = fHistCentVsNchVsNcl->Project3D("y");
      SetStyles((TH1*)trackmultiplicity[cb],markers[cb],colors[cb],Form("tr%i",cb));
      clustermultiplicity[cb] = fHistCentVsNchVsNcl->Project3D("z");
      SetStyles((TH1*)clustermultiplicity[cb],markers[cb],colors[cb],Form("cl%i",cb));
      fHistCentVsNchVsNclData->GetXaxis()->SetRange(cb+1,cb+1);
      trackmultiplicityData[cb] = fHistCentVsNchVsNclData->Project3D("y");
      SetStyles((TH1*)trackmultiplicityData[cb],markers[cb],colors[cb],Form("tr%i",cb));
      clustermultiplicityData[cb] = fHistCentVsNchVsNclData->Project3D("z");
      SetStyles((TH1*)clustermultiplicityData[cb],markers[cb],colors[cb],Form("cl%i",cb));
    }

    int currentShortCB = 0;
    //cerr<<"464"<<endl;
    Float_t neventsShortData[] = {0,0,0,0,0,0,0,0,0,0,0};
    Float_t neventsShortSim[] = {0,0,0,0,0,0,0,0,0,0,0};
    Float_t neventsShortDataCl[] = {0,0,0,0,0,0,0,0,0,0,0};
    Float_t neventsShortSimCl[] = {0,0,0,0,0,0,0,0,0,0,0};
    for(int cb=0;cb<19;cb++){
      //cout<<"cb "<<cb<<" current short cb "<<currentShortCB<<endl;
      cout<<"cb "<<cb<<" mean mult "<< ((TH1*)trackmultiplicity[cb])->GetMean()<<endl;
      int nbins = ((TH1*)trackmultiplicity[cb])->GetNbinsX();
      Float_t nevents = 0.0;
      for(int binn = 1;binn<=nbins;binn++){
      	float neventsBinn = ((TH1*)trackmultiplicityData[cb])->GetBinContent(binn);
	float mult= ((TH1*)trackmultiplicityData[cb])->GetBinCenter(binn);
	//mean et deposited in this event class =  (et of n+nbar / measured et of p+pbar) * (measured et of p+pbar)
	float meanetppbar = fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf->GetBinContent(fHistPIDAntiProtonsTrackMatchedDepositedVsNchDataProf->FindBin(mult)) +  fHistPIDProtonsTrackMatchedDepositedVsNchDataProf->GetBinContent(fHistPIDProtonsTrackMatchedDepositedVsNchDataProf->FindBin(mult));
	float meanet = funcNominal->Eval(mult) * meanetppbar;
	nNeutronsData[cb] += neventsBinn*meanet;
	nevents +=neventsBinn;
	nNeutronsShortData[currentShortCB] += neventsBinn*meanet;
	neventsShortData[currentShortCB] +=neventsBinn;
      }
      if(nevents>0) nNeutronsData[cb] = nNeutronsData[cb]/nevents;
      nevents = 0.0;
      for(int binn = 1;binn<=nbins;binn++){
      	float neventsBinn = ((TH1*)trackmultiplicity[cb])->GetBinContent(binn);
	float mult= ((TH1*)trackmultiplicity[cb])->GetBinCenter(binn);
	//mean et deposited in this event class =  (et of n+nbar / measured et of p+pbar) * (measured et of p+pbar)
	float meanetppbar = fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf->GetBinContent(fHistPIDAntiProtonsTrackMatchedDepositedVsNchProf->FindBin(mult)) +  fHistPIDProtonsTrackMatchedDepositedVsNchProf->GetBinContent(fHistPIDProtonsTrackMatchedDepositedVsNchProf->FindBin(mult));
	float meanet = funcNominal->Eval(mult) * meanetppbar;
	nNeutronsSim[cb] += neventsBinn*meanet;
	nevents +=neventsBinn;
	nNeutronsShortSim[currentShortCB] += neventsBinn*meanet;
	neventsShortSim[currentShortCB] +=neventsBinn;
      }
      if(nevents>0) nNeutronsSim[cb] = nNeutronsSim[cb]/nevents;


      nbins = ((TH1*)clustermultiplicity[cb])->GetNbinsX();
      nevents = 0.0;
      for(int binn = 1;binn<=nbins;binn++){
      	float neventsBinn = ((TH1*)clustermultiplicityData[cb])->GetBinContent(binn);
	float mult= ((TH1*)clustermultiplicityData[cb])->GetBinCenter(binn);
	//mean et deposited in this event class =  (et of n+nbar / measured et of p+pbar) * (measured et of p+pbar)
	float meanetppbar = fHistPIDAntiProtonsTrackMatchedDepositedVsNclDataProf->GetBinContent(fHistPIDAntiProtonsTrackMatchedDepositedVsNclDataProf->FindBin(mult)) +  fHistPIDProtonsTrackMatchedDepositedVsNclDataProf->GetBinContent(fHistPIDProtonsTrackMatchedDepositedVsNclDataProf->FindBin(mult));
	float meanet = funcANominal->Eval(mult) * meanetppbar;
	nNeutronsDataCl[cb] += neventsBinn*meanet;
	nevents +=neventsBinn;
	//cout<<"et "<< neventsBinn<<"*"<<meanet<<" events "<<neventsBinn<<endl;
	nNeutronsShortDataCl[currentShortCB] += neventsBinn*meanet;
	neventsShortDataCl[currentShortCB] +=neventsBinn;
      }
      if(nevents>0) nNeutronsDataCl[cb] = nNeutronsDataCl[cb]/nevents;
      nevents = 0.0;
      for(int binn = 1;binn<=nbins;binn++){
      	float neventsBinn = ((TH1*)clustermultiplicity[cb])->GetBinContent(binn);
	float mult= ((TH1*)clustermultiplicity[cb])->GetBinCenter(binn);
	//mean et deposited in this event class =  (et of n+nbar / measured et of p+pbar) * (measured et of p+pbar)
	float meanetppbar = fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf->GetBinContent(fHistPIDAntiProtonsTrackMatchedDepositedVsNclProf->FindBin(mult)) +  fHistPIDProtonsTrackMatchedDepositedVsNclProf->GetBinContent(fHistPIDProtonsTrackMatchedDepositedVsNclProf->FindBin(mult));
	float meanet = funcANominal->Eval(mult) * meanetppbar;
	nNeutronsSimCl[cb] += neventsBinn*meanet;
	nevents +=neventsBinn;
	nNeutronsShortSimCl[currentShortCB] += neventsBinn*meanet;
	neventsShortSimCl[currentShortCB] +=neventsBinn;
      }
      if(nevents>0) nNeutronsSimCl[cb] = nNeutronsSimCl[cb]/nevents;


      //cout<<"cb "<<cb;
      //cout<<" data "<<  nNeutronsData[cb];// <<" +/- "<< 0.15*nNeutronsData[cb];
      //cout<<" sim "<<  nNeutronsSim[cb];// <<" +/- "<< 0.15*nNeutronsSim[cb]<<endl;
      //cout<<" data cl "<<  nNeutronsDataCl[cb];// <<" +/- "<< 0.15*nNeutronsDataCl[cb];
      //cout<<" sim cl "<<  nNeutronsSimCl[cb];// <<" +/- "<< 0.15*nNeutronsSimCl[cb]<<endl;
      //cout<<" w/err data ";
      float val = (nNeutronsData[cb]+nNeutronsDataCl[cb])/2.0;
      float err = TMath::Abs(nNeutronsData[cb]-nNeutronsDataCl[cb])/2.0;
      //cout<< val<<" +/- "<<err;
      //if(val>0)cout<<" ("<<err/val<<")";
      float valsim = (nNeutronsSim[cb]+nNeutronsSimCl[cb])/2.0;
      float errsim = TMath::Abs(nNeutronsSim[cb]-nNeutronsSimCl[cb])/2.0;
      //cout<<" sim "<< valsim <<" +/- "<<errsim;
      //if(valsim>0)cout<<" ("<<errsim/valsim<<")";
      //cout<<endl;
      nNeutronsData[cb] = val;
      nNeutronsDataErr[cb] = err;
      myfile<<Form("%2.3f %2.3f",nNeutronsData[cb],nNeutronsDataErr[cb])<<endl;
      if(cb<2 || cb%2==1){//normalize
	if(neventsShortSimCl[currentShortCB]>0) nNeutronsShortSimCl[currentShortCB] = nNeutronsShortSimCl[currentShortCB]/neventsShortSimCl[currentShortCB];
	if(neventsShortDataCl[currentShortCB]>0) nNeutronsShortDataCl[currentShortCB] = nNeutronsShortDataCl[currentShortCB]/neventsShortDataCl[currentShortCB];
	if(neventsShortSim[currentShortCB]>0) nNeutronsShortSim[currentShortCB] = nNeutronsShortSim[currentShortCB]/neventsShortSim[currentShortCB];
	if(neventsShortData[currentShortCB]>0) nNeutronsShortData[currentShortCB] = nNeutronsShortData[currentShortCB]/neventsShortData[currentShortCB];
	//cout<<"cbShort "<<currentShortCB<<" data "<<  nNeutronsShortData[currentShortCB] <<" +/- "<< 0.15*nNeutronsShortData[currentShortCB];
	//cout<<" sim "<<  nNeutronsShortSim[currentShortCB] <<" +/- "<< 0.15*nNeutronsShortSim[currentShortCB];//<<endl;

	val = (nNeutronsShortData[currentShortCB]+nNeutronsShortDataCl[currentShortCB])/2.0;
	err = TMath::Abs(nNeutronsShortData[currentShortCB]-nNeutronsShortDataCl[currentShortCB])/2.0;
	//cout<<" val "<<val<<" err "<<err<<endl;
	//cout<<nNeutronsShortData[currentShortCB]<<" "<<nNeutronsShortDataCl[currentShortCB]<<endl<<endl;
	nNeutronsShortData[currentShortCB] = val;
	nNeutronsShortDataErr[currentShortCB] = err;


	myfile2<<Form("%2.3f %2.3f",nNeutronsShortData[currentShortCB],0.15*nNeutronsShortData[currentShortCB])<<endl;
	if(cb<2) currentShortCB++;
      }
      if(cb>2 && cb%2==1){//increment the counter
	//cout<<"Here!"<<endl;
	currentShortCB++;
      }

    }
    myfile.close();
    myfile2.close();
    WriteLatex();
}


void WriteLatex(){
  TString detector = "Emcal";
    string inline;
    //NeutronsEmcal.dat
    TString neutronInfileName = "Neutrons"+detector+".dat";
    ifstream myneutronfile3 (neutronInfileName.Data());
    Float_t value = 0;
    Float_t error = 0;
    Int_t i=0;
    if (myneutronfile3.is_open()){
      while ( myneutronfile3.good() )
	{
	  getline (myneutronfile3,inline);
	  istringstream tmp(inline);
	  tmp >> value;
	  tmp >> error;
	  if(i<20){
	    neutronCorrEmcal[i] = value;
	    neutronErrorEmcal[i] = error;
	  }
	  i++;
	}
        myneutronfile3.close();
    }

    detector = "Phos";
    neutronInfileName = "Neutrons"+detector+".dat";
    ifstream myneutronfile4 (neutronInfileName.Data());
    Float_t value = 0;
    Float_t error = 0;
    Int_t i=0;
    if (myneutronfile4.is_open()){
      while ( myneutronfile4.good() )
	{
	  getline (myneutronfile4,inline);
	  istringstream tmp(inline);
	  tmp >> value;
	  tmp >> error;
	  if(i<20){
	    neutronCorrPhos[i] = value;
	    neutronErrorPhos[i] = error;
	  }
	  i++;
	}
        myneutronfile4.close();
    }
    ofstream myfile3;
    myfile3.open ("Protons.tex");
    for(int i=0;i<20;i++){
      TString line = Form("%i-%i & %2.3f $\\pm$ %2.3f & %2.3f $\\pm$ %2.3f \\\\",i*5,(i+1)*5,neutronCorrPhos[i],neutronErrorPhos[i],neutronCorrEmcal[i],neutronErrorEmcal[i]);
      myfile3<<line.Data()<<endl;

    }

    myfile3.close();

}


TH1* bayneseffdiv(TH1* numerator, TH1* denominator,Char_t* name) 
{
    if(!numerator){
      cerr<<"Error:  numerator does not exist!"<<endl;
      return NULL;
    }
    if(!denominator){
      cerr<<"Error:  denominator does not exist!"<<endl;
      return NULL;
    }
    TH1* result = (TH1*)numerator->Clone(name);
    Int_t nbins = numerator->GetNbinsX();
    for (Int_t ibin=0; ibin<= nbins+1; ++ibin) {
      Double_t numeratorVal = numerator->GetBinContent(ibin);
      Double_t denominatorVal = denominator->GetBinContent(ibin);
      // Check if the errors are right or the thing is scaled
      Double_t numeratorValErr = numerator->GetBinError(ibin);
      if (!(numeratorValErr==0. || numeratorVal ==0.) ) {
	Double_t rescale = numeratorValErr*numeratorValErr/numeratorVal;
	numeratorVal /= rescale;
      }
      Double_t denominatorValErr = denominator->GetBinError(ibin);
      if (!(denominatorValErr==0. || denominatorVal==0. )) {
	Double_t rescale = denominatorValErr*denominatorValErr/denominatorVal;
	denominatorVal /= rescale;
      }
      Double_t quotient = 0.;
      if (denominatorVal!=0.) {
	quotient = numeratorVal/denominatorVal;
      }
      Double_t quotientErr=0;
      quotientErr = TMath::Sqrt(
				(numeratorVal+1.0)/(denominatorVal+2.0)*
				((numeratorVal+2.0)/(denominatorVal+3.0)-(numeratorVal+1.0)/(denominatorVal+2.0)));
      result->SetBinContent(ibin,quotient);
      result->SetBinError(ibin,quotientErr);
      //cout<<"Setting bin "<<ibin<<" to "<<quotient<<" "<<numeratorVal<<"/"<<denominatorVal<<endl;
    }
    return result;
}
 PlotProtons.C:1
 PlotProtons.C:2
 PlotProtons.C:3
 PlotProtons.C:4
 PlotProtons.C:5
 PlotProtons.C:6
 PlotProtons.C:7
 PlotProtons.C:8
 PlotProtons.C:9
 PlotProtons.C:10
 PlotProtons.C:11
 PlotProtons.C:12
 PlotProtons.C:13
 PlotProtons.C:14
 PlotProtons.C:15
 PlotProtons.C:16
 PlotProtons.C:17
 PlotProtons.C:18
 PlotProtons.C:19
 PlotProtons.C:20
 PlotProtons.C:21
 PlotProtons.C:22
 PlotProtons.C:23
 PlotProtons.C:24
 PlotProtons.C:25
 PlotProtons.C:26
 PlotProtons.C:27
 PlotProtons.C:28
 PlotProtons.C:29
 PlotProtons.C:30
 PlotProtons.C:31
 PlotProtons.C:32
 PlotProtons.C:33
 PlotProtons.C:34
 PlotProtons.C:35
 PlotProtons.C:36
 PlotProtons.C:37
 PlotProtons.C:38
 PlotProtons.C:39
 PlotProtons.C:40
 PlotProtons.C:41
 PlotProtons.C:42
 PlotProtons.C:43
 PlotProtons.C:44
 PlotProtons.C:45
 PlotProtons.C:46
 PlotProtons.C:47
 PlotProtons.C:48
 PlotProtons.C:49
 PlotProtons.C:50
 PlotProtons.C:51
 PlotProtons.C:52
 PlotProtons.C:53
 PlotProtons.C:54
 PlotProtons.C:55
 PlotProtons.C:56
 PlotProtons.C:57
 PlotProtons.C:58
 PlotProtons.C:59
 PlotProtons.C:60
 PlotProtons.C:61
 PlotProtons.C:62
 PlotProtons.C:63
 PlotProtons.C:64
 PlotProtons.C:65
 PlotProtons.C:66
 PlotProtons.C:67
 PlotProtons.C:68
 PlotProtons.C:69
 PlotProtons.C:70
 PlotProtons.C:71
 PlotProtons.C:72
 PlotProtons.C:73
 PlotProtons.C:74
 PlotProtons.C:75
 PlotProtons.C:76
 PlotProtons.C:77
 PlotProtons.C:78
 PlotProtons.C:79
 PlotProtons.C:80
 PlotProtons.C:81
 PlotProtons.C:82
 PlotProtons.C:83
 PlotProtons.C:84
 PlotProtons.C:85
 PlotProtons.C:86
 PlotProtons.C:87
 PlotProtons.C:88
 PlotProtons.C:89
 PlotProtons.C:90
 PlotProtons.C:91
 PlotProtons.C:92
 PlotProtons.C:93
 PlotProtons.C:94
 PlotProtons.C:95
 PlotProtons.C:96
 PlotProtons.C:97
 PlotProtons.C:98
 PlotProtons.C:99
 PlotProtons.C:100
 PlotProtons.C:101
 PlotProtons.C:102
 PlotProtons.C:103
 PlotProtons.C:104
 PlotProtons.C:105
 PlotProtons.C:106
 PlotProtons.C:107
 PlotProtons.C:108
 PlotProtons.C:109
 PlotProtons.C:110
 PlotProtons.C:111
 PlotProtons.C:112
 PlotProtons.C:113
 PlotProtons.C:114
 PlotProtons.C:115
 PlotProtons.C:116
 PlotProtons.C:117
 PlotProtons.C:118
 PlotProtons.C:119
 PlotProtons.C:120
 PlotProtons.C:121
 PlotProtons.C:122
 PlotProtons.C:123
 PlotProtons.C:124
 PlotProtons.C:125
 PlotProtons.C:126
 PlotProtons.C:127
 PlotProtons.C:128
 PlotProtons.C:129
 PlotProtons.C:130
 PlotProtons.C:131
 PlotProtons.C:132
 PlotProtons.C:133
 PlotProtons.C:134
 PlotProtons.C:135
 PlotProtons.C:136
 PlotProtons.C:137
 PlotProtons.C:138
 PlotProtons.C:139
 PlotProtons.C:140
 PlotProtons.C:141
 PlotProtons.C:142
 PlotProtons.C:143
 PlotProtons.C:144
 PlotProtons.C:145
 PlotProtons.C:146
 PlotProtons.C:147
 PlotProtons.C:148
 PlotProtons.C:149
 PlotProtons.C:150
 PlotProtons.C:151
 PlotProtons.C:152
 PlotProtons.C:153
 PlotProtons.C:154
 PlotProtons.C:155
 PlotProtons.C:156
 PlotProtons.C:157
 PlotProtons.C:158
 PlotProtons.C:159
 PlotProtons.C:160
 PlotProtons.C:161
 PlotProtons.C:162
 PlotProtons.C:163
 PlotProtons.C:164
 PlotProtons.C:165
 PlotProtons.C:166
 PlotProtons.C:167
 PlotProtons.C:168
 PlotProtons.C:169
 PlotProtons.C:170
 PlotProtons.C:171
 PlotProtons.C:172
 PlotProtons.C:173
 PlotProtons.C:174
 PlotProtons.C:175
 PlotProtons.C:176
 PlotProtons.C:177
 PlotProtons.C:178
 PlotProtons.C:179
 PlotProtons.C:180
 PlotProtons.C:181
 PlotProtons.C:182
 PlotProtons.C:183
 PlotProtons.C:184
 PlotProtons.C:185
 PlotProtons.C:186
 PlotProtons.C:187
 PlotProtons.C:188
 PlotProtons.C:189
 PlotProtons.C:190
 PlotProtons.C:191
 PlotProtons.C:192
 PlotProtons.C:193
 PlotProtons.C:194
 PlotProtons.C:195
 PlotProtons.C:196
 PlotProtons.C:197
 PlotProtons.C:198
 PlotProtons.C:199
 PlotProtons.C:200
 PlotProtons.C:201
 PlotProtons.C:202
 PlotProtons.C:203
 PlotProtons.C:204
 PlotProtons.C:205
 PlotProtons.C:206
 PlotProtons.C:207
 PlotProtons.C:208
 PlotProtons.C:209
 PlotProtons.C:210
 PlotProtons.C:211
 PlotProtons.C:212
 PlotProtons.C:213
 PlotProtons.C:214
 PlotProtons.C:215
 PlotProtons.C:216
 PlotProtons.C:217
 PlotProtons.C:218
 PlotProtons.C:219
 PlotProtons.C:220
 PlotProtons.C:221
 PlotProtons.C:222
 PlotProtons.C:223
 PlotProtons.C:224
 PlotProtons.C:225
 PlotProtons.C:226
 PlotProtons.C:227
 PlotProtons.C:228
 PlotProtons.C:229
 PlotProtons.C:230
 PlotProtons.C:231
 PlotProtons.C:232
 PlotProtons.C:233
 PlotProtons.C:234
 PlotProtons.C:235
 PlotProtons.C:236
 PlotProtons.C:237
 PlotProtons.C:238
 PlotProtons.C:239
 PlotProtons.C:240
 PlotProtons.C:241
 PlotProtons.C:242
 PlotProtons.C:243
 PlotProtons.C:244
 PlotProtons.C:245
 PlotProtons.C:246
 PlotProtons.C:247
 PlotProtons.C:248
 PlotProtons.C:249
 PlotProtons.C:250
 PlotProtons.C:251
 PlotProtons.C:252
 PlotProtons.C:253
 PlotProtons.C:254
 PlotProtons.C:255
 PlotProtons.C:256
 PlotProtons.C:257
 PlotProtons.C:258
 PlotProtons.C:259
 PlotProtons.C:260
 PlotProtons.C:261
 PlotProtons.C:262
 PlotProtons.C:263
 PlotProtons.C:264
 PlotProtons.C:265
 PlotProtons.C:266
 PlotProtons.C:267
 PlotProtons.C:268
 PlotProtons.C:269
 PlotProtons.C:270
 PlotProtons.C:271
 PlotProtons.C:272
 PlotProtons.C:273
 PlotProtons.C:274
 PlotProtons.C:275
 PlotProtons.C:276
 PlotProtons.C:277
 PlotProtons.C:278
 PlotProtons.C:279
 PlotProtons.C:280
 PlotProtons.C:281
 PlotProtons.C:282
 PlotProtons.C:283
 PlotProtons.C:284
 PlotProtons.C:285
 PlotProtons.C:286
 PlotProtons.C:287
 PlotProtons.C:288
 PlotProtons.C:289
 PlotProtons.C:290
 PlotProtons.C:291
 PlotProtons.C:292
 PlotProtons.C:293
 PlotProtons.C:294
 PlotProtons.C:295
 PlotProtons.C:296
 PlotProtons.C:297
 PlotProtons.C:298
 PlotProtons.C:299
 PlotProtons.C:300
 PlotProtons.C:301
 PlotProtons.C:302
 PlotProtons.C:303
 PlotProtons.C:304
 PlotProtons.C:305
 PlotProtons.C:306
 PlotProtons.C:307
 PlotProtons.C:308
 PlotProtons.C:309
 PlotProtons.C:310
 PlotProtons.C:311
 PlotProtons.C:312
 PlotProtons.C:313
 PlotProtons.C:314
 PlotProtons.C:315
 PlotProtons.C:316
 PlotProtons.C:317
 PlotProtons.C:318
 PlotProtons.C:319
 PlotProtons.C:320
 PlotProtons.C:321
 PlotProtons.C:322
 PlotProtons.C:323
 PlotProtons.C:324
 PlotProtons.C:325
 PlotProtons.C:326
 PlotProtons.C:327
 PlotProtons.C:328
 PlotProtons.C:329
 PlotProtons.C:330
 PlotProtons.C:331
 PlotProtons.C:332
 PlotProtons.C:333
 PlotProtons.C:334
 PlotProtons.C:335
 PlotProtons.C:336
 PlotProtons.C:337
 PlotProtons.C:338
 PlotProtons.C:339
 PlotProtons.C:340
 PlotProtons.C:341
 PlotProtons.C:342
 PlotProtons.C:343
 PlotProtons.C:344
 PlotProtons.C:345
 PlotProtons.C:346
 PlotProtons.C:347
 PlotProtons.C:348
 PlotProtons.C:349
 PlotProtons.C:350
 PlotProtons.C:351
 PlotProtons.C:352
 PlotProtons.C:353
 PlotProtons.C:354
 PlotProtons.C:355
 PlotProtons.C:356
 PlotProtons.C:357
 PlotProtons.C:358
 PlotProtons.C:359
 PlotProtons.C:360
 PlotProtons.C:361
 PlotProtons.C:362
 PlotProtons.C:363
 PlotProtons.C:364
 PlotProtons.C:365
 PlotProtons.C:366
 PlotProtons.C:367
 PlotProtons.C:368
 PlotProtons.C:369
 PlotProtons.C:370
 PlotProtons.C:371
 PlotProtons.C:372
 PlotProtons.C:373
 PlotProtons.C:374
 PlotProtons.C:375
 PlotProtons.C:376
 PlotProtons.C:377
 PlotProtons.C:378
 PlotProtons.C:379
 PlotProtons.C:380
 PlotProtons.C:381
 PlotProtons.C:382
 PlotProtons.C:383
 PlotProtons.C:384
 PlotProtons.C:385
 PlotProtons.C:386
 PlotProtons.C:387
 PlotProtons.C:388
 PlotProtons.C:389
 PlotProtons.C:390
 PlotProtons.C:391
 PlotProtons.C:392
 PlotProtons.C:393
 PlotProtons.C:394
 PlotProtons.C:395
 PlotProtons.C:396
 PlotProtons.C:397
 PlotProtons.C:398
 PlotProtons.C:399
 PlotProtons.C:400
 PlotProtons.C:401
 PlotProtons.C:402
 PlotProtons.C:403
 PlotProtons.C:404
 PlotProtons.C:405
 PlotProtons.C:406
 PlotProtons.C:407
 PlotProtons.C:408
 PlotProtons.C:409
 PlotProtons.C:410
 PlotProtons.C:411
 PlotProtons.C:412
 PlotProtons.C:413
 PlotProtons.C:414
 PlotProtons.C:415
 PlotProtons.C:416
 PlotProtons.C:417
 PlotProtons.C:418
 PlotProtons.C:419
 PlotProtons.C:420
 PlotProtons.C:421
 PlotProtons.C:422
 PlotProtons.C:423
 PlotProtons.C:424
 PlotProtons.C:425
 PlotProtons.C:426
 PlotProtons.C:427
 PlotProtons.C:428
 PlotProtons.C:429
 PlotProtons.C:430
 PlotProtons.C:431
 PlotProtons.C:432
 PlotProtons.C:433
 PlotProtons.C:434
 PlotProtons.C:435
 PlotProtons.C:436
 PlotProtons.C:437
 PlotProtons.C:438
 PlotProtons.C:439
 PlotProtons.C:440
 PlotProtons.C:441
 PlotProtons.C:442
 PlotProtons.C:443
 PlotProtons.C:444
 PlotProtons.C:445
 PlotProtons.C:446
 PlotProtons.C:447
 PlotProtons.C:448
 PlotProtons.C:449
 PlotProtons.C:450
 PlotProtons.C:451
 PlotProtons.C:452
 PlotProtons.C:453
 PlotProtons.C:454
 PlotProtons.C:455
 PlotProtons.C:456
 PlotProtons.C:457
 PlotProtons.C:458
 PlotProtons.C:459
 PlotProtons.C:460
 PlotProtons.C:461
 PlotProtons.C:462
 PlotProtons.C:463
 PlotProtons.C:464
 PlotProtons.C:465
 PlotProtons.C:466
 PlotProtons.C:467
 PlotProtons.C:468
 PlotProtons.C:469
 PlotProtons.C:470
 PlotProtons.C:471
 PlotProtons.C:472
 PlotProtons.C:473
 PlotProtons.C:474
 PlotProtons.C:475
 PlotProtons.C:476
 PlotProtons.C:477
 PlotProtons.C:478
 PlotProtons.C:479
 PlotProtons.C:480
 PlotProtons.C:481
 PlotProtons.C:482
 PlotProtons.C:483
 PlotProtons.C:484
 PlotProtons.C:485
 PlotProtons.C:486
 PlotProtons.C:487
 PlotProtons.C:488
 PlotProtons.C:489
 PlotProtons.C:490
 PlotProtons.C:491
 PlotProtons.C:492
 PlotProtons.C:493
 PlotProtons.C:494
 PlotProtons.C:495
 PlotProtons.C:496
 PlotProtons.C:497
 PlotProtons.C:498
 PlotProtons.C:499
 PlotProtons.C:500
 PlotProtons.C:501
 PlotProtons.C:502
 PlotProtons.C:503
 PlotProtons.C:504
 PlotProtons.C:505
 PlotProtons.C:506
 PlotProtons.C:507
 PlotProtons.C:508
 PlotProtons.C:509
 PlotProtons.C:510
 PlotProtons.C:511
 PlotProtons.C:512
 PlotProtons.C:513
 PlotProtons.C:514
 PlotProtons.C:515
 PlotProtons.C:516
 PlotProtons.C:517
 PlotProtons.C:518
 PlotProtons.C:519
 PlotProtons.C:520
 PlotProtons.C:521
 PlotProtons.C:522
 PlotProtons.C:523
 PlotProtons.C:524
 PlotProtons.C:525
 PlotProtons.C:526
 PlotProtons.C:527
 PlotProtons.C:528
 PlotProtons.C:529
 PlotProtons.C:530
 PlotProtons.C:531
 PlotProtons.C:532
 PlotProtons.C:533
 PlotProtons.C:534
 PlotProtons.C:535
 PlotProtons.C:536
 PlotProtons.C:537
 PlotProtons.C:538
 PlotProtons.C:539
 PlotProtons.C:540
 PlotProtons.C:541
 PlotProtons.C:542
 PlotProtons.C:543
 PlotProtons.C:544
 PlotProtons.C:545
 PlotProtons.C:546
 PlotProtons.C:547
 PlotProtons.C:548
 PlotProtons.C:549
 PlotProtons.C:550
 PlotProtons.C:551
 PlotProtons.C:552
 PlotProtons.C:553
 PlotProtons.C:554
 PlotProtons.C:555
 PlotProtons.C:556
 PlotProtons.C:557
 PlotProtons.C:558
 PlotProtons.C:559
 PlotProtons.C:560
 PlotProtons.C:561
 PlotProtons.C:562
 PlotProtons.C:563
 PlotProtons.C:564
 PlotProtons.C:565
 PlotProtons.C:566
 PlotProtons.C:567
 PlotProtons.C:568
 PlotProtons.C:569
 PlotProtons.C:570
 PlotProtons.C:571
 PlotProtons.C:572
 PlotProtons.C:573
 PlotProtons.C:574
 PlotProtons.C:575
 PlotProtons.C:576
 PlotProtons.C:577
 PlotProtons.C:578
 PlotProtons.C:579
 PlotProtons.C:580
 PlotProtons.C:581
 PlotProtons.C:582
 PlotProtons.C:583
 PlotProtons.C:584
 PlotProtons.C:585
 PlotProtons.C:586
 PlotProtons.C:587
 PlotProtons.C:588
 PlotProtons.C:589
 PlotProtons.C:590
 PlotProtons.C:591
 PlotProtons.C:592
 PlotProtons.C:593
 PlotProtons.C:594
 PlotProtons.C:595
 PlotProtons.C:596
 PlotProtons.C:597
 PlotProtons.C:598
 PlotProtons.C:599
 PlotProtons.C:600
 PlotProtons.C:601
 PlotProtons.C:602
 PlotProtons.C:603
 PlotProtons.C:604
 PlotProtons.C:605
 PlotProtons.C:606
 PlotProtons.C:607
 PlotProtons.C:608
 PlotProtons.C:609
 PlotProtons.C:610
 PlotProtons.C:611
 PlotProtons.C:612
 PlotProtons.C:613
 PlotProtons.C:614
 PlotProtons.C:615
 PlotProtons.C:616
 PlotProtons.C:617
 PlotProtons.C:618
 PlotProtons.C:619
 PlotProtons.C:620
 PlotProtons.C:621
 PlotProtons.C:622
 PlotProtons.C:623
 PlotProtons.C:624
 PlotProtons.C:625
 PlotProtons.C:626
 PlotProtons.C:627
 PlotProtons.C:628
 PlotProtons.C:629
 PlotProtons.C:630
 PlotProtons.C:631
 PlotProtons.C:632
 PlotProtons.C:633
 PlotProtons.C:634
 PlotProtons.C:635
 PlotProtons.C:636
 PlotProtons.C:637
 PlotProtons.C:638
 PlotProtons.C:639
 PlotProtons.C:640
 PlotProtons.C:641
 PlotProtons.C:642
 PlotProtons.C:643
 PlotProtons.C:644
 PlotProtons.C:645
 PlotProtons.C:646
 PlotProtons.C:647
 PlotProtons.C:648
 PlotProtons.C:649
 PlotProtons.C:650
 PlotProtons.C:651
 PlotProtons.C:652
 PlotProtons.C:653
 PlotProtons.C:654
 PlotProtons.C:655
 PlotProtons.C:656
 PlotProtons.C:657
 PlotProtons.C:658
 PlotProtons.C:659
 PlotProtons.C:660
 PlotProtons.C:661
 PlotProtons.C:662
 PlotProtons.C:663
 PlotProtons.C:664
 PlotProtons.C:665
 PlotProtons.C:666
 PlotProtons.C:667
 PlotProtons.C:668
 PlotProtons.C:669
 PlotProtons.C:670
 PlotProtons.C:671
 PlotProtons.C:672
 PlotProtons.C:673
 PlotProtons.C:674
 PlotProtons.C:675
 PlotProtons.C:676
 PlotProtons.C:677
 PlotProtons.C:678
 PlotProtons.C:679
 PlotProtons.C:680
 PlotProtons.C:681
 PlotProtons.C:682
 PlotProtons.C:683
 PlotProtons.C:684
 PlotProtons.C:685
 PlotProtons.C:686
 PlotProtons.C:687
 PlotProtons.C:688
 PlotProtons.C:689
 PlotProtons.C:690
 PlotProtons.C:691
 PlotProtons.C:692
 PlotProtons.C:693
 PlotProtons.C:694
 PlotProtons.C:695
 PlotProtons.C:696
 PlotProtons.C:697
 PlotProtons.C:698
 PlotProtons.C:699
 PlotProtons.C:700
 PlotProtons.C:701
 PlotProtons.C:702
 PlotProtons.C:703
 PlotProtons.C:704
 PlotProtons.C:705
 PlotProtons.C:706
 PlotProtons.C:707
 PlotProtons.C:708
 PlotProtons.C:709
 PlotProtons.C:710
 PlotProtons.C:711
 PlotProtons.C:712
 PlotProtons.C:713
 PlotProtons.C:714
 PlotProtons.C:715
 PlotProtons.C:716
 PlotProtons.C:717
 PlotProtons.C:718
 PlotProtons.C:719
 PlotProtons.C:720
 PlotProtons.C:721
 PlotProtons.C:722
 PlotProtons.C:723
 PlotProtons.C:724
 PlotProtons.C:725
 PlotProtons.C:726
 PlotProtons.C:727
 PlotProtons.C:728
 PlotProtons.C:729
 PlotProtons.C:730
 PlotProtons.C:731
 PlotProtons.C:732
 PlotProtons.C:733
 PlotProtons.C:734
 PlotProtons.C:735
 PlotProtons.C:736
 PlotProtons.C:737
 PlotProtons.C:738
 PlotProtons.C:739
 PlotProtons.C:740
 PlotProtons.C:741
 PlotProtons.C:742
 PlotProtons.C:743
 PlotProtons.C:744
 PlotProtons.C:745
 PlotProtons.C:746
 PlotProtons.C:747
 PlotProtons.C:748
 PlotProtons.C:749
 PlotProtons.C:750
 PlotProtons.C:751
 PlotProtons.C:752
 PlotProtons.C:753
 PlotProtons.C:754
 PlotProtons.C:755
 PlotProtons.C:756
 PlotProtons.C:757
 PlotProtons.C:758
 PlotProtons.C:759
 PlotProtons.C:760
 PlotProtons.C:761
 PlotProtons.C:762
 PlotProtons.C:763
 PlotProtons.C:764
 PlotProtons.C:765
 PlotProtons.C:766
 PlotProtons.C:767
 PlotProtons.C:768
 PlotProtons.C:769
 PlotProtons.C:770
 PlotProtons.C:771
 PlotProtons.C:772
 PlotProtons.C:773
 PlotProtons.C:774
 PlotProtons.C:775
 PlotProtons.C:776
 PlotProtons.C:777
 PlotProtons.C:778
 PlotProtons.C:779
 PlotProtons.C:780
 PlotProtons.C:781
 PlotProtons.C:782
 PlotProtons.C:783
 PlotProtons.C:784
 PlotProtons.C:785
 PlotProtons.C:786
 PlotProtons.C:787
 PlotProtons.C:788
 PlotProtons.C:789
 PlotProtons.C:790
 PlotProtons.C:791
 PlotProtons.C:792
 PlotProtons.C:793
 PlotProtons.C:794
 PlotProtons.C:795
 PlotProtons.C:796
 PlotProtons.C:797
 PlotProtons.C:798
 PlotProtons.C:799
 PlotProtons.C:800
 PlotProtons.C:801
 PlotProtons.C:802
 PlotProtons.C:803
 PlotProtons.C:804
 PlotProtons.C:805
 PlotProtons.C:806
 PlotProtons.C:807
 PlotProtons.C:808
 PlotProtons.C:809
 PlotProtons.C:810
 PlotProtons.C:811
 PlotProtons.C:812
 PlotProtons.C:813
 PlotProtons.C:814
 PlotProtons.C:815
 PlotProtons.C:816
 PlotProtons.C:817
 PlotProtons.C:818
 PlotProtons.C:819
 PlotProtons.C:820
 PlotProtons.C:821
 PlotProtons.C:822
 PlotProtons.C:823
 PlotProtons.C:824
 PlotProtons.C:825
 PlotProtons.C:826
 PlotProtons.C:827
 PlotProtons.C:828
 PlotProtons.C:829
 PlotProtons.C:830
 PlotProtons.C:831
 PlotProtons.C:832
 PlotProtons.C:833
 PlotProtons.C:834
 PlotProtons.C:835
 PlotProtons.C:836
 PlotProtons.C:837
 PlotProtons.C:838
 PlotProtons.C:839
 PlotProtons.C:840
 PlotProtons.C:841
 PlotProtons.C:842
 PlotProtons.C:843
 PlotProtons.C:844
 PlotProtons.C:845
 PlotProtons.C:846
 PlotProtons.C:847
 PlotProtons.C:848
 PlotProtons.C:849
 PlotProtons.C:850
 PlotProtons.C:851
 PlotProtons.C:852
 PlotProtons.C:853
 PlotProtons.C:854
 PlotProtons.C:855
 PlotProtons.C:856
 PlotProtons.C:857
 PlotProtons.C:858
 PlotProtons.C:859
 PlotProtons.C:860
 PlotProtons.C:861
 PlotProtons.C:862
 PlotProtons.C:863
 PlotProtons.C:864
 PlotProtons.C:865
 PlotProtons.C:866
 PlotProtons.C:867
 PlotProtons.C:868
 PlotProtons.C:869
 PlotProtons.C:870
 PlotProtons.C:871
 PlotProtons.C:872
 PlotProtons.C:873
 PlotProtons.C:874
 PlotProtons.C:875
 PlotProtons.C:876
 PlotProtons.C:877
 PlotProtons.C:878
 PlotProtons.C:879
 PlotProtons.C:880
 PlotProtons.C:881
 PlotProtons.C:882
 PlotProtons.C:883
 PlotProtons.C:884
 PlotProtons.C:885
 PlotProtons.C:886
 PlotProtons.C:887
 PlotProtons.C:888
 PlotProtons.C:889
 PlotProtons.C:890
 PlotProtons.C:891
 PlotProtons.C:892
 PlotProtons.C:893
 PlotProtons.C:894
 PlotProtons.C:895
 PlotProtons.C:896
 PlotProtons.C:897
 PlotProtons.C:898
 PlotProtons.C:899
 PlotProtons.C:900