ROOT logo
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <Riostream.h>

#include "TVector2.h"
#include "TFile.h"
#include "TString.h"
#include "TF1.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TProfile.h"
#include "TProfile2D.h"
#include "TMath.h"
#include "TText.h"
#include "TRandom3.h"
#include "TArray.h"
#include "TLegend.h"
#include "TStyle.h"
#include "TMinuit.h"

using namespace std;

void MakeMomResHisto_Merged(){

  int MBmerged = 0;
  //

  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_myRun_L0p68R11.root","READ");
  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_myRun_L0p68R10.root","READ");
  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_lego_L0p68R9andR8.root","READ");
  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_myRun_L0p68R7.root","READ");
  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_myRun_L0p68R6.root","READ");
  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_lego_L0p68R11_PID1p5_and_FB5.root","READ");
  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_myRun_L0p68R11_chi3p1.root","READ");
  TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_myRun_L0p68R11_highKt.root","READ");
  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17d_fix_genSignal_Rinv11.root","READ");
  //TFile *infile1 = new TFile("Results/PDC_HIJING_12a17a_myRun_L0p68R11_ncls.root","READ");
  //TFile *infile1 = new TFile("MyOutput.root","READ");
  //
  //TFile *infile2 = new TFile("Results/PDC_HIJING_12a17b_12a17e_noPadCut_lego.root","READ");
  //TFile *infile2 = new TFile("Results/PDC_HIJING_12a17b_newr3_lego.root","READ");
  //TFile *infile2 = new TFile("Results/PDC_HIJING_12a17b_GRS_lego.root","READ");
  //TFile *infile2 = new TFile("Results/PDC_HIJING_12a17b_myRun_L0p4R8.root","READ");

  //TDirectoryFile *tdir1 = (TDirectoryFile*)infile1->Get("PWGCF.outputChaoticityAnalysis.root");
  //TList *list1=(TList*)tdir1->Get("ChaoticityOutput_2");
  TList *list1=(TList*)infile1->Get("MyList");
  infile1->Close();
  //TDirectoryFile *tdir2 = (TDirectoryFile*)infile2->Get("PWGCF.outputChaoticityAnalysis.root");
  //TList *list2=(TList*)tdir2->Get("ChaoticityOutput");
  //TList *list2=(TList*)infile2->Get("MyList");
  //infile2->Close();

  TList *list;

  const int Mbins=2;

  TH2D *num_i_2[2];// 2-particle
  TH2D *den_i_2[2];// 2-particle
  TH2D *num_s_2[2];// 2-particle
  TH2D *den_s_2[2];// 2-particle
  //
  TH2D *merged_num_i_2[2];
  TH2D *merged_den_i_2[2];
  TH2D *merged_num_s_2[2];
  TH2D *merged_den_s_2[2];
  //

 
  TString *names[2][4];
  // 3d
  TString *names_terms[2][5][2];// charge-combo (ss or os), terms, ideal/smeared, Mbins
  TH3D *merged_terms_i[2][5];// charge-combo (ss or os), terms, Mbins
  TH3D *merged_terms_s[2][5];// charge-combo (ss or os), terms, Mbins
  TH1D *merged_terms1D_i[2][5];
  TH1D *merged_terms1D_s[2][5];
  //
  TString *names_termsK3[2][2];// charge-combo (ss or os), Sum/En, Mbins
  TH3D *merged_terms_SumK3[2];// charge-combo (ss or os), Mbins
  TH3D *merged_terms_EnK3[2];// charge-combo (ss or os), Mbins
  //
  TString *names_terms_FVP[5][2][2];// terms, ideal/smeared, Projection 1 or 2, Mbins
  TH3D *merged_terms_FVP_i[5][2];// terms, Projection 1 or 2, Mbins
  TH3D *merged_terms_FVP_s[5][2];// terms, Projection 1 or 2, Mbins
  //
  TString *names_terms_FVP_K[5][2][2];// terms, Sum/En, Projection 1 or 2, Mbins
  TH3D *merged_terms_FVP_SumK[5][2];// terms, Projection 1 or 2, Mbins
  TH3D *merged_terms_FVP_EnK[5][2];// terms, Projection 1 or 2, Mbins
  //
  TString *names_terms_FVPTPN[2][2];// ideal/smeared, Projection 1 or 2, Mbins
  TH3D *merged_terms_FVPTPN_i[2];// Projection 1 or 2, Mbins
  TH3D *merged_terms_FVPTPN_s[2];// Projection 1 or 2, Mbins

  
  for(int mb=0; mb<Mbins; mb++){// Mbin loop
    cout<<"Cent bin "<<mb<<endl;
    for(int ch=0; ch<2; ch++){// + or - loop
      
      int MixedCbin1=0, MixedCbin2=0, MixedCbin3=0;
      // 3d histos
      for(int term=0; term<5; term++){// term loop
	names_terms[0][term][0]=new TString("PairCut3_Charge1_"); *names_terms[0][term][0] += ch;
	names_terms[0][term][0]->Append("_Charge2_"); *names_terms[0][term][0] += ch;
	names_terms[0][term][0]->Append("_Charge3_"); *names_terms[0][term][0] += ch;
	names_terms[0][term][0]->Append("_SC_0_M_");
	*names_terms[0][term][0] += mb;
	names_terms[0][term][0]->Append("_ED_0_");
	TString *TPNnameBase = new TString(names_terms[0][term][0]->Data());
	names_terms[0][term][0]->Append("Term_"); *names_terms[0][term][0] += term+1; 
	names_terms[0][term][1]=new TString(names_terms[0][term][0]->Data());
	if(term==0) {
	  names_termsK3[0][0]=new TString(names_terms[0][term][0]->Data());
	  names_termsK3[0][1]=new TString(names_terms[0][term][0]->Data());
	  names_termsK3[0][0]->Append("_SumK3");
	  names_termsK3[0][1]->Append("_EnK3");
	}	
	//
	
	names_terms_FVP[term][0][0] = new TString(names_terms[0][term][0]->Data());
	names_terms_FVP[term][1][0] = new TString(names_terms[0][term][0]->Data());
	names_terms_FVP[term][0][0]->Append("_4VectProd1Ideal");
	names_terms_FVP[term][1][0]->Append("_4VectProd1Smeared");
	//
	names_terms_FVP[term][0][1] = new TString(names_terms[0][term][1]->Data());
	names_terms_FVP[term][1][1] = new TString(names_terms[0][term][1]->Data());
	names_terms_FVP[term][0][1]->Append("_4VectProd2Ideal");
	names_terms_FVP[term][1][1]->Append("_4VectProd2Smeared");
	//
	names_terms_FVP_K[term][0][0] = new TString(names_terms[0][term][1]->Data());// Prod1 SumK
	names_terms_FVP_K[term][1][0] = new TString(names_terms[0][term][1]->Data());// Prod1 EnK
	names_terms_FVP_K[term][0][1] = new TString(names_terms[0][term][1]->Data());// Prod2 SumK
	names_terms_FVP_K[term][1][1] = new TString(names_terms[0][term][1]->Data());// Prod2 EnK
	if(term==0) {
	  names_terms_FVP_K[term][0][0]->Append("_4VectProd1SumK3");
	  names_terms_FVP_K[term][1][0]->Append("_4VectProd1EnK3");
	  names_terms_FVP_K[term][0][1]->Append("_4VectProd2SumK3");
	  names_terms_FVP_K[term][1][1]->Append("_4VectProd2EnK3");
	  names_terms_FVPTPN[0][0] = new TString(TPNnameBase->Data());
	  names_terms_FVPTPN[0][1] = new TString(TPNnameBase->Data());
	  names_terms_FVPTPN[1][0] = new TString(TPNnameBase->Data());
	  names_terms_FVPTPN[1][1] = new TString(TPNnameBase->Data());
	  names_terms_FVPTPN[0][0]->Append("TPN_0_4VectProd1Ideal");
	  names_terms_FVPTPN[0][1]->Append("TPN_0_4VectProd2Ideal");
	  names_terms_FVPTPN[1][0]->Append("TPN_0_4VectProd1Smeared");
	  names_terms_FVPTPN[1][1]->Append("TPN_0_4VectProd2Smeared");
	}
	if(term>0 && term<4){
	  names_terms_FVP_K[term][0][0]->Append("_4VectProd1SumK2");
	  names_terms_FVP_K[term][1][0]->Append("_4VectProd1EnK2");
	  names_terms_FVP_K[term][0][1]->Append("_4VectProd2SumK2");
	  names_terms_FVP_K[term][1][1]->Append("_4VectProd2EnK2");
	}
	
	names_terms[0][term][0]->Append("_Ideal");
	names_terms[0][term][1]->Append("_Smeared");
	
	//
	if(ch==0) {MixedCbin1=0; MixedCbin2=0; MixedCbin3=1;}
	else {MixedCbin1=0; MixedCbin2=1; MixedCbin3=1;}
	names_terms[1][term][0]=new TString("PairCut3_Charge1_"); *names_terms[1][term][0] += MixedCbin1;
	names_terms[1][term][0]->Append("_Charge2_"); *names_terms[1][term][0] += MixedCbin2;
	names_terms[1][term][0]->Append("_Charge3_"); *names_terms[1][term][0] += MixedCbin3;
	names_terms[1][term][0]->Append("_SC_0_M_");
	*names_terms[1][term][0] += mb;
	names_terms[1][term][0]->Append("_ED_0_Term_"); *names_terms[1][term][0] += term+1;
	names_terms[1][term][1]=new TString(names_terms[1][term][0]->Data());
	if(term==0) {
	  names_termsK3[1][0]=new TString(names_terms[1][term][0]->Data());
	  names_termsK3[1][1]=new TString(names_terms[1][term][0]->Data());
	  names_termsK3[1][0]->Append("_SumK3");
	  names_termsK3[1][1]->Append("_EnK3");
	}	
	names_terms[1][term][0]->Append("_Ideal");
	names_terms[1][term][1]->Append("_Smeared");
      }// term loop
    
      
      TString *base1 = new TString("Explicit2_Charge1_"); *base1 += ch; 
      base1->Append("_Charge2_"); *base1 += ch; base1->Append("_SC_0_M_");
      names[0][0]=new TString(base1->Data());
      *names[0][0] += mb;
      names[0][0]->Append("_ED_0_Term_1_Ideal");
      names[0][1]=new TString(base1->Data());
      *names[0][1] += mb;
      names[0][1]->Append("_ED_0_Term_2_Ideal");
      names[0][2]=new TString(base1->Data());
      *names[0][2] += mb;
      names[0][2]->Append("_ED_0_Term_1_Smeared");
      names[0][3]=new TString(base1->Data());
      *names[0][3] += mb;
      names[0][3]->Append("_ED_0_Term_2_Smeared");
      // mixed charge 2-particle case is double counted here.  It's ok (only the stat errors are wrong...not used anyway).
      TString *base2 = new TString("Explicit2_Charge1_0_Charge2_1"); base2->Append("_SC_0_M_");
      names[1][0]=new TString(base2->Data());
      *names[1][0] += mb;
      names[1][0]->Append("_ED_0_Term_1_Ideal");
      names[1][1]=new TString(base2->Data());
      *names[1][1] += mb;
      names[1][1]->Append("_ED_0_Term_2_Ideal");
      names[1][2]=new TString(base2->Data());
      *names[1][2] += mb;
      names[1][2]->Append("_ED_0_Term_1_Smeared");
      names[1][3]=new TString(base2->Data());
      *names[1][3] += mb;
      names[1][3]->Append("_ED_0_Term_2_Smeared");
      //
      if(mb<2) list=(TList*)list1->Clone();
      //else list=(TList*)list2->Clone();
      
      
      for(int ChProd=0; ChProd<2; ChProd++){// charge product loop
	//
	num_i_2[ChProd]=(TH2D*)list->FindObject(names[ChProd][0]->Data());
	den_i_2[ChProd]=(TH2D*)list->FindObject(names[ChProd][1]->Data());
	num_s_2[ChProd]=(TH2D*)list->FindObject(names[ChProd][2]->Data());
	den_s_2[ChProd]=(TH2D*)list->FindObject(names[ChProd][3]->Data());
	//
	
	if(ch==0 && mb==0){
	  for(int term=0; term<5; term++){
	    merged_terms_i[ChProd][term] = (TH3D*)(list->FindObject(names_terms[ChProd][term][0]->Data()))->Clone();
	    merged_terms_s[ChProd][term] = (TH3D*)(list->FindObject(names_terms[ChProd][term][1]->Data()))->Clone();

	    if(term==0){
	      merged_terms_SumK3[ChProd] = (TH3D*)(list->FindObject(names_termsK3[ChProd][0]->Data()))->Clone();
	      merged_terms_EnK3[ChProd] = (TH3D*)(list->FindObject(names_termsK3[ChProd][1]->Data()))->Clone();
	    }
	    if(ChProd==0) {
	      //merged_terms_FVP_i[term][0] = (TH3D*)(list->FindObject(names_terms_FVP[term][0][0]->Data()))->Clone();// ideal, Prod 1
	      //merged_terms_FVP_s[term][0] = (TH3D*)(list->FindObject(names_terms_FVP[term][1][0]->Data()))->Clone();// smeared, Prod 1
	      //merged_terms_FVP_i[term][1] = (TH3D*)(list->FindObject(names_terms_FVP[term][0][1]->Data()))->Clone();// ideal, Prod 2
	      //merged_terms_FVP_s[term][1] = (TH3D*)(list->FindObject(names_terms_FVP[term][1][1]->Data()))->Clone();// smeared, Prod 2
	      if(term !=4){
		//merged_terms_FVP_SumK[term][0] = (TH3D*)(list->FindObject(names_terms_FVP_K[term][0][0]->Data()))->Clone();// Prod 1 Sum K
		//merged_terms_FVP_EnK[term][0] = (TH3D*)(list->FindObject(names_terms_FVP_K[term][1][0]->Data()))->Clone();// Prod 1 En K
		//merged_terms_FVP_SumK[term][1] = (TH3D*)(list->FindObject(names_terms_FVP_K[term][0][1]->Data()))->Clone();// Prod 2 Sum K
		//merged_terms_FVP_EnK[term][1] = (TH3D*)(list->FindObject(names_terms_FVP_K[term][1][1]->Data()))->Clone();// Prod 2 En K
	      }
	      if(term==0){
		//merged_terms_FVPTPN_i[0] = (TH3D*)(list->FindObject(names_terms_FVPTPN[0][0]->Data()))->Clone();// ideal, Prod 1 
		//merged_terms_FVPTPN_s[0] = (TH3D*)(list->FindObject(names_terms_FVPTPN[1][0]->Data()))->Clone();// smeared, Prod 1 
		//merged_terms_FVPTPN_i[1] = (TH3D*)(list->FindObject(names_terms_FVPTPN[0][1]->Data()))->Clone();// ideal, Prod 2
		//merged_terms_FVPTPN_s[1] = (TH3D*)(list->FindObject(names_terms_FVPTPN[1][1]->Data()))->Clone();// smeared, Prod 2
	      }
	    }
	  }
	}else{// ch==1 || mb!=0
	  for(int term=0; term<5; term++){
	    if(ChProd==0) {
	      merged_terms_i[0][term]->Add((TH3D*)(list->FindObject(names_terms[0][term][0]->Data())));
	      merged_terms_s[0][term]->Add((TH3D*)(list->FindObject(names_terms[0][term][1]->Data())));
	      if(term==0) {
		merged_terms_SumK3[0]->Add((TH3D*)(list->FindObject(names_termsK3[0][0]->Data())));
		merged_terms_EnK3[0]->Add((TH3D*)(list->FindObject(names_termsK3[0][1]->Data())));
		/*merged_terms_FVPTPN_i[0]->Add((TH3D*)(list->FindObject(names_terms_FVPTPN[0][0]->Data())));
		merged_terms_FVPTPN_i[1]->Add((TH3D*)(list->FindObject(names_terms_FVPTPN[0][1]->Data())));
		merged_terms_FVPTPN_s[0]->Add((TH3D*)(list->FindObject(names_terms_FVPTPN[1][0]->Data())));
		merged_terms_FVPTPN_s[1]->Add((TH3D*)(list->FindObject(names_terms_FVPTPN[1][1]->Data())));*/
	      }
	      /* merged_terms_FVP_i[term][0]->Add((TH3D*)(list->FindObject(names_terms_FVP[term][0][0]->Data())));
	      merged_terms_FVP_s[term][0]->Add((TH3D*)(list->FindObject(names_terms_FVP[term][1][0]->Data())));
	      merged_terms_FVP_i[term][1]->Add((TH3D*)(list->FindObject(names_terms_FVP[term][0][1]->Data())));
	      merged_terms_FVP_s[term][1]->Add((TH3D*)(list->FindObject(names_terms_FVP[term][1][1]->Data())));*/
	      
	      if(term<4){
		/*merged_terms_FVP_SumK[term][0]->Add((TH3D*)(list->FindObject(names_terms_FVP_K[term][0][0]->Data())));
		merged_terms_FVP_EnK[term][0]->Add((TH3D*)(list->FindObject(names_terms_FVP_K[term][1][0]->Data())));
		merged_terms_FVP_SumK[term][1]->Add((TH3D*)(list->FindObject(names_terms_FVP_K[term][0][1]->Data())));
		merged_terms_FVP_EnK[term][1]->Add((TH3D*)(list->FindObject(names_terms_FVP_K[term][1][1]->Data())));*/
	      }
	    }else {// different placement of same-charge pair
	      int termOther=term;
	      if(ch==1){
		if(term==0) termOther=0;
		else if(term==1) termOther=3;
		else if(term==2) termOther=2;
		else if(term==3) termOther=1;
		else termOther=4;
	      }
	      TH3D *temphisto_i=((TH3D*)(list->FindObject(names_terms[1][termOther][0]->Data())));
	      TH3D *temphisto_s=((TH3D*)(list->FindObject(names_terms[1][termOther][1]->Data())));
	      TH3D *temphisto_SumK3=((TH3D*)(list->FindObject(names_termsK3[1][0]->Data())));
	      TH3D *temphisto_EnK3=((TH3D*)(list->FindObject(names_termsK3[1][1]->Data())));
	      for(int bin1=1; bin1<merged_terms_i[1][term]->GetNbinsX(); bin1++){
		for(int bin2=1; bin2<merged_terms_i[1][term]->GetNbinsY(); bin2++){
		  for(int bin3=1; bin3<merged_terms_i[1][term]->GetNbinsZ(); bin3++){
		    
		    if(ch==0){
		      merged_terms_i[1][term]->SetBinContent(bin1,bin2,bin3, merged_terms_i[1][term]->GetBinContent(bin1,bin2,bin3)+temphisto_i->GetBinContent(bin1,bin2,bin3));
		      merged_terms_s[1][term]->SetBinContent(bin1,bin2,bin3, merged_terms_s[1][term]->GetBinContent(bin1,bin2,bin3)+temphisto_s->GetBinContent(bin1,bin2,bin3));
		    }else {
		      merged_terms_i[1][term]->SetBinContent(bin1,bin2,bin3, merged_terms_i[1][term]->GetBinContent(bin1,bin2,bin3)+temphisto_i->GetBinContent(bin3,bin2,bin1));
		      merged_terms_s[1][term]->SetBinContent(bin1,bin2,bin3, merged_terms_s[1][term]->GetBinContent(bin1,bin2,bin3)+temphisto_s->GetBinContent(bin3,bin2,bin1));
		    }
		    
		    //
		    if(term==0){
		      //merged_terms_SumK3[1]->SetBinContent(bin1,bin2,bin3, merged_terms_SumK3[1]->GetBinContent(bin1,bin2,bin3)+temphisto_SumK3->GetBinContent(bin3,bin2,bin1));
		      //merged_terms_EnK3[1]->SetBinContent(bin1,bin2,bin3, merged_terms_EnK3[1]->GetBinContent(bin1,bin2,bin3)+temphisto_EnK3->GetBinContent(bin3,bin2,bin1));
		    }
		  }
		}
	      }
	    }
	  }
	}// else for 3-particle part
	
	// 2-particles
	if(ch==0 && mb==0) {
	  merged_num_i_2[ChProd] = (TH2D*)num_i_2[ChProd]->Clone();
	  merged_den_i_2[ChProd] = (TH2D*)den_i_2[ChProd]->Clone();
	  merged_num_s_2[ChProd] = (TH2D*)num_s_2[ChProd]->Clone();
	  merged_den_s_2[ChProd] = (TH2D*)den_s_2[ChProd]->Clone();
	}else {
	  merged_num_i_2[ChProd]->Add(num_i_2[ChProd]);
	  merged_den_i_2[ChProd]->Add(den_i_2[ChProd]);
	  merged_num_s_2[ChProd]->Add(num_s_2[ChProd]);
	  merged_den_s_2[ChProd]->Add(den_s_2[ChProd]);
	  
	}
      }// ch loop
      
      
    }// mb loop
    
  }// ChProd loop
  
  
  cout<<"Start Writing to Output File"<<endl;
  TFile *outfile = new TFile("MomResFile_temp.root","RECREATE");
  TFile *outfileOffline = new TFile("MomResFile_Offline_temp.root","RECREATE");
  int NbinsX = merged_num_i_2[0]->GetNbinsX();
  int NbinsY = merged_num_i_2[0]->GetNbinsY();
  float Xlow = merged_num_i_2[0]->GetXaxis()->GetBinLowEdge(1);
  float Xhigh = merged_num_i_2[0]->GetXaxis()->GetBinUpEdge(NbinsX);
  float Ylow = merged_num_i_2[0]->GetYaxis()->GetBinLowEdge(1);
  float Yhigh = merged_num_i_2[0]->GetYaxis()->GetBinUpEdge(NbinsY);
  TH2D *MomResHisto_pp = new TH2D("MomResHisto_pp","",NbinsX,Xlow,Xhigh, NbinsY,Ylow,Yhigh);
  TH2D *MomResHisto_mp = new TH2D("MomResHisto_mp","",NbinsX,Xlow,Xhigh, NbinsY,Ylow,Yhigh);
  //
  TH2D *MomResHisto_pp_term1 = new TH2D("MomResHisto_pp_term1","",NbinsX,Xlow,Xhigh, NbinsY,Ylow,Yhigh);
  TH2D *MomResHisto_pp_term2 = new TH2D("MomResHisto_pp_term2","",NbinsX,Xlow,Xhigh, NbinsY,Ylow,Yhigh);
  TH2D *MomResHisto_mp_term1 = new TH2D("MomResHisto_mp_term1","",NbinsX,Xlow,Xhigh, NbinsY,Ylow,Yhigh);
  TH2D *MomResHisto_mp_term2 = new TH2D("MomResHisto_mp_term2","",NbinsX,Xlow,Xhigh, NbinsY,Ylow,Yhigh);
  //
  // 3d part
  int NbinsX_3d = merged_terms_i[0][0]->GetNbinsX();
  float Xlow_3d = merged_terms_i[0][0]->GetXaxis()->GetBinLowEdge(1);
  float Xhigh_3d = merged_terms_i[0][0]->GetXaxis()->GetBinUpEdge(NbinsX_3d);
  TH3D *MomResHisto_3d_SC[5];
  TH3D *MomResHisto_3d_MC[5];
  TH1D *MomResHisto_1d_SC[5];
  TH1D *MomResHisto_1d_MC[5];
  TH3D *MomResHisto_3d_SC_K3;
  TH3D *MomResHisto_3d_MC_K3;
  // 4vectProd
  /*const int NEdges_FVP_temp = merged_terms_FVP_i[0][0]->GetNbinsX() + 1;
  const int NEdges_FVP = NEdges_FVP_temp;
  double Edges[NEdges_FVP]={0};
  for(int edg=0; edg<NEdges_FVP; edg++){
    Edges[edg] = merged_terms_FVP_i[0][0]->GetXaxis()->GetBinLowEdge(edg+1);
    //cout<<Edges[edg]<<endl;
  }
  TH3D *MomResHisto_3d_FVP1[5];
  TH3D *MomResHisto_3d_FVP2[5];
  TH3D *MomResHisto_3d_FVP1K[5];
  TH3D *MomResHisto_3d_FVP2K[5];
  TH3D *MomResHisto_TPN_FVP1;
  TH3D *MomResHisto_TPN_FVP2;*/


  for(int term=0; term<5; term++){
    TString *nameSC = new TString("MomResHisto3_SC_term");
    TString *nameMC = new TString("MomResHisto3_MC_term");
    TString *nameSC1D = new TString("MomResHisto1D_SC_term");
    TString *nameMC1D = new TString("MomResHisto1D_MC_term");
    TString *nameFVP1 = new TString("MomResHisto3_FVP1_term");
    TString *nameFVP2 = new TString("MomResHisto3_FVP2_term");
    TString *nameFVP1K = new TString("MomResHisto3_FVP1K_term");
    TString *nameFVP2K = new TString("MomResHisto3_FVP2K_term");
    *nameSC += term+1;
    *nameMC += term+1;
    *nameSC1D += term+1;
    *nameMC1D += term+1;
    *nameFVP1 += term+1;
    *nameFVP2 += term+1;
    *nameFVP1K += term+1;
    *nameFVP2K += term+1;
    nameSC->Append("_M");
    nameMC->Append("_M");
    nameSC1D->Append("_M");
    nameMC1D->Append("_M");
    nameFVP1->Append("_M");
    nameFVP2->Append("_M");
    nameFVP1K->Append("_M");
    nameFVP2K->Append("_M");
    *nameSC += MBmerged;
    *nameMC += MBmerged;
    *nameSC1D += MBmerged;
    *nameMC1D += MBmerged;
    *nameFVP1 += MBmerged;
    *nameFVP2 += MBmerged;
    *nameFVP1K += MBmerged;
    *nameFVP2K += MBmerged;
    MomResHisto_3d_SC[term] = new TH3D(nameSC->Data(),"",NbinsX_3d,Xlow_3d,Xhigh_3d, NbinsX_3d,Xlow_3d,Xhigh_3d, NbinsX_3d,Xlow_3d,Xhigh_3d);
    MomResHisto_3d_MC[term] = new TH3D(nameMC->Data(),"",NbinsX_3d,Xlow_3d,Xhigh_3d, NbinsX_3d,Xlow_3d,Xhigh_3d, NbinsX_3d,Xlow_3d,Xhigh_3d);
    MomResHisto_1d_SC[term] = new TH1D(nameSC1D->Data(),"",20,0,0.2);
    MomResHisto_1d_MC[term] = new TH1D(nameMC1D->Data(),"",20,0,0.2);
    /*MomResHisto_3d_FVP1[term] = new TH3D(nameFVP1->Data(),"",NEdges_FVP-1,Edges, NEdges_FVP-1,Edges, NEdges_FVP-1,Edges);
      MomResHisto_3d_FVP2[term] = new TH3D(nameFVP2->Data(),"",NEdges_FVP-1,Edges, NEdges_FVP-1,Edges, NEdges_FVP-1,Edges);
      MomResHisto_3d_FVP1K[term] = new TH3D(nameFVP1K->Data(),"",NEdges_FVP-1,Edges, NEdges_FVP-1,Edges, NEdges_FVP-1,Edges);
      MomResHisto_3d_FVP2K[term] = new TH3D(nameFVP2K->Data(),"",NEdges_FVP-1,Edges, NEdges_FVP-1,Edges, NEdges_FVP-1,Edges);*/
  }
  //TString *nameTPN_FVP1 = new TString("MomResHisto3_TPN_FVP1_M");
  //TString *nameTPN_FVP2 = new TString("MomResHisto3_TPN_FVP2_M");
  TString *nameSC_K3 = new TString("AvgK3_SC_M");
  TString *nameMC_K3 = new TString("AvgK3_MC_M");
  *nameSC_K3 += MBmerged;
  *nameMC_K3 += MBmerged;
  //*nameTPN_FVP1 += MBmerged;
  //*nameTPN_FVP2 += MBmerged;
  MomResHisto_3d_SC_K3 = new TH3D(nameSC_K3->Data(),"",NbinsX_3d,Xlow_3d,Xhigh_3d, NbinsX_3d,Xlow_3d,Xhigh_3d, NbinsX_3d,Xlow_3d,Xhigh_3d);
  MomResHisto_3d_MC_K3 = new TH3D(nameMC_K3->Data(),"",NbinsX_3d,Xlow_3d,Xhigh_3d, NbinsX_3d,Xlow_3d,Xhigh_3d, NbinsX_3d,Xlow_3d,Xhigh_3d);
  //MomResHisto_TPN_FVP1 = new TH3D(nameTPN_FVP1->Data(),"",NEdges_FVP-1,Edges, NEdges_FVP-1,Edges, NEdges_FVP-1,Edges);
  //MomResHisto_TPN_FVP2 = new TH3D(nameTPN_FVP2->Data(),"",NEdges_FVP-1,Edges, NEdges_FVP-1,Edges, NEdges_FVP-1,Edges);
  
  
  
  for(int term=0; term<5; term++){
    
    // 1D Q3 projection
    double Sum_i_SC[20]={0};
    double Sum_i_MC[20]={0};
    double Sum_s_SC[20]={0};
    double Sum_s_MC[20]={0};
    
    for(int i=1; i<NbinsX_3d; i++){
      for(int j=1; j<NbinsX_3d; j++){
	for(int l=1; l<NbinsX_3d; l++){
	  //if((i+j)==2 || (i+l)==2 || (j+l)==2) continue;
	  double q3 = sqrt(pow(merged_terms_i[0][term]->GetXaxis()->GetBinCenter(i+1),2)+pow(merged_terms_i[0][term]->GetYaxis()->GetBinCenter(j+1),2)+pow(merged_terms_i[0][term]->GetZaxis()->GetBinCenter(l+1),2));
	  int q3bin = MomResHisto_1d_SC[term]->GetXaxis()->FindBin(q3);
	  if(q3bin>20) continue;
	  Sum_i_SC[q3bin-1] += merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1);
	  Sum_i_MC[q3bin-1] += merged_terms_i[1][term]->GetBinContent(i+1,j+1,l+1);
	  Sum_s_SC[q3bin-1] += merged_terms_s[0][term]->GetBinContent(i+1,j+1,l+1);
	  Sum_s_MC[q3bin-1] += merged_terms_s[1][term]->GetBinContent(i+1,j+1,l+1);
	}
      }
    }
    for(int i=0; i<20; i++){
      
      if(Sum_s_SC[i]>0) MomResHisto_1d_SC[term]->SetBinContent(i+1, Sum_i_SC[i]/Sum_s_SC[i]);
      if(Sum_s_MC[i]>0) MomResHisto_1d_MC[term]->SetBinContent(i+1, Sum_i_MC[i]/Sum_s_MC[i]);
    }

    // full 3d method
    merged_terms_i[0][term]->Divide(merged_terms_s[0][term]);
    merged_terms_i[1][term]->Divide(merged_terms_s[1][term]);
    //merged_terms_FVP_i[term][0]->Divide(merged_terms_FVP_s[term][0]);// Prod 1
    //merged_terms_FVP_i[term][1]->Divide(merged_terms_FVP_s[term][1]);// Prod 2
    if(term < 4){
      //merged_terms_FVP_SumK[term][0]->Divide(merged_terms_FVP_EnK[term][0]);// Prod 1
      //merged_terms_FVP_SumK[term][1]->Divide(merged_terms_FVP_EnK[term][1]);// Prod 2
    }
  }
  //merged_terms_FVPTPN_i[0]->Divide(merged_terms_FVPTPN_s[0]);// Prod 1
  //merged_terms_FVPTPN_i[1]->Divide(merged_terms_FVPTPN_s[1]);// Prod 2
  merged_terms_SumK3[0]->Divide(merged_terms_EnK3[0]);// Avg SC K3 for Q12,Q13,Q23
  merged_terms_SumK3[1]->Divide(merged_terms_EnK3[1]);// Avg MC K3 for Q12,Q13,Q23
  
  
  
  for(int term=0; term<5; term++){
    for(int i=0; i<NbinsX_3d; i++){
      for(int j=0; j<NbinsX_3d; j++){
	for(int l=0; l<NbinsX_3d; l++){
	  
	  double MomResCorr=0; double terms=0;
	  if(term==0 || term==4){
	    if(merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1); terms++;}
	    if(merged_terms_i[0][term]->GetBinContent(i+1,l+1,j+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(i+1,l+1,j+1); terms++;}
	    if(merged_terms_i[0][term]->GetBinContent(j+1,i+1,l+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(j+1,i+1,l+1); terms++;}
	    if(merged_terms_i[0][term]->GetBinContent(j+1,l+1,i+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(j+1,l+1,i+1); terms++;}
	    if(merged_terms_i[0][term]->GetBinContent(l+1,i+1,j+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(l+1,i+1,j+1); terms++;}
	    if(merged_terms_i[0][term]->GetBinContent(l+1,j+1,i+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(l+1,j+1,i+1); terms++;}
	  }else if(term==1){
	    if(merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1); terms++;}
	    if(merged_terms_i[0][term]->GetBinContent(i+1,l+1,j+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(i+1,l+1,j+1); terms++;}
	  }else if(term==2){
	    if(merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1); terms++;}
	    if(merged_terms_i[0][term]->GetBinContent(l+1,j+1,i+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(l+1,j+1,i+1); terms++;}
	  }else {
	    if(merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(i+1,j+1,l+1); terms++;}
	    if(merged_terms_i[0][term]->GetBinContent(j+1,i+1,l+1)>0) {MomResCorr += merged_terms_i[0][term]->GetBinContent(j+1,i+1,l+1); terms++;}
	  }
	  
	  if(terms > 0) MomResCorr /= terms;
	  MomResHisto_3d_SC[term]->SetBinContent(i+1,j+1,l+1, MomResCorr);

	  // Mixed-Charge
	  MomResCorr=0; terms=0;
	  if(term==0 || term==1 || term==4){
	    if(merged_terms_i[1][term]->GetBinContent(i+1,j+1,l+1)>0) {MomResCorr += merged_terms_i[1][term]->GetBinContent(i+1,j+1,l+1); terms++;}
	    if(merged_terms_i[1][term]->GetBinContent(i+1,l+1,j+1)>0) {MomResCorr += merged_terms_i[1][term]->GetBinContent(i+1,l+1,j+1); terms++;}
	  }else{
	    if(merged_terms_i[1][term]->GetBinContent(i+1,j+1,l+1)>0) {MomResCorr += merged_terms_i[1][term]->GetBinContent(i+1,j+1,l+1); terms++;}
	  }
	  
	  if(terms > 0) MomResCorr /= terms;
	  MomResHisto_3d_MC[term]->SetBinContent(i+1,j+1,l+1, MomResCorr);
	  
	  if(term==0){
	    MomResHisto_3d_SC_K3->SetBinContent(i+1,j+1,l+1, merged_terms_SumK3[0]->GetBinContent(i+1,j+1,l+1));
	    MomResHisto_3d_MC_K3->SetBinContent(i+1,j+1,l+1, merged_terms_SumK3[1]->GetBinContent(i+1,j+1,l+1));
	  }
	  // condition edge effects
	  if(MomResHisto_3d_SC[term]->GetBinContent(i+1,j+1,l+1) > 10) MomResHisto_3d_SC[term]->SetBinContent(i+1,j+1,l+1, 1.0);
	  if(MomResHisto_3d_MC[term]->GetBinContent(i+1,j+1,l+1) > 10) MomResHisto_3d_MC[term]->SetBinContent(i+1,j+1,l+1, 1.0);
	}
      }
    }
  }// term
  
  // FVP
  /*for(int mb=0; mb<1; mb++){
    for(int term=0; term<5; term++){
      for(int i=0; i<NEdges_FVP-1; i++){
	for(int j=0; j<NEdges_FVP-1; j++){
	  for(int l=0; l<NEdges_FVP-1; l++){
	    MomResHisto_3d_FVP1[term]->SetBinContent(i+1,j+1,l+1, merged_terms_FVP_i[term][0]->GetBinContent(i+1,j+1,l+1));
	    MomResHisto_3d_FVP2[term]->SetBinContent(i+1,j+1,l+1, merged_terms_FVP_i[term][1]->GetBinContent(i+1,j+1,l+1));
	    if(term < 4){
	      MomResHisto_3d_FVP1K[term]->SetBinContent(i+1,j+1,l+1, merged_terms_FVP_SumK[term][0]->GetBinContent(i+1,j+1,l+1));
	      MomResHisto_3d_FVP2K[term]->SetBinContent(i+1,j+1,l+1, merged_terms_FVP_SumK[term][1]->GetBinContent(i+1,j+1,l+1));
	    }
	    if(term==0){
	      MomResHisto_TPN_FVP1->SetBinContent(i+1,j+1,l+1, merged_terms_FVPTPN_i[0]->GetBinContent(i+1,j+1,l+1));
	      MomResHisto_TPN_FVP2->SetBinContent(i+1,j+1,l+1, merged_terms_FVPTPN_i[1]->GetBinContent(i+1,j+1,l+1));
	    }
	    // condition edge effects
	    if(MomResHisto_3d_FVP1[term]->GetBinContent(i+1,j+1,l+1) > 10) MomResHisto_3d_FVP1[term]->SetBinContent(i+1,j+1,l+1, 1.0);
	    if(MomResHisto_3d_FVP2[term]->GetBinContent(i+1,j+1,l+1) > 10) MomResHisto_3d_FVP2[term]->SetBinContent(i+1,j+1,l+1, 1.0);
	  }
	}
      }
    }
    }*/
  
  // 2-particles
  for(int ChProd=0; ChProd<2; ChProd++){
    for(int i=0; i<NbinsX; i++){
      for(int j=0; j<NbinsY; j++){
	
	double weight = 1.0, weight_term1=1.0, weight_term2=1.0;
	double weight_e = 0, weight_term1_e=0, weight_term2_e=0;
	bool goodbin=kTRUE;
	if(merged_num_i_2[ChProd]->GetBinContent(i+1,j+1) == 0) goodbin=kFALSE;
	if(merged_den_i_2[ChProd]->GetBinContent(i+1,j+1) == 0) goodbin=kFALSE;
	if(merged_num_s_2[ChProd]->GetBinContent(i+1,j+1) == 0) goodbin=kFALSE;
	if(merged_den_s_2[ChProd]->GetBinContent(i+1,j+1) == 0) goodbin=kFALSE;
	
	if(goodbin==kTRUE){
	  double NUM_i=merged_num_i_2[ChProd]->GetBinContent(i+1,j+1);
	  double NUM_s=merged_num_s_2[ChProd]->GetBinContent(i+1,j+1);
	  double DEN_i=merged_den_i_2[ChProd]->GetBinContent(i+1,j+1);
	  double DEN_s=merged_den_s_2[ChProd]->GetBinContent(i+1,j+1);
	  weight = (NUM_i/DEN_i)/(NUM_s/DEN_s);
	  weight_e = pow((sqrt(NUM_s)*NUM_i/DEN_i)/(pow(NUM_s,2)/DEN_s),2);// approximate. does not take lambda into account!!
	  weight_e += pow((sqrt(DEN_s)*NUM_i/DEN_i)/(NUM_s),2);
	  weight_e = sqrt(weight_e); 
	  //
	  weight_term1 = NUM_i/NUM_s;
	  weight_term1_e = pow(sqrt(NUM_i)/NUM_s,2);
	  weight_term1_e += pow(sqrt(NUM_s)*NUM_i/pow(NUM_s,2),2);
	  weight_term1_e = sqrt(weight_term1_e);
	  weight_term2 = DEN_i/DEN_s;
	  weight_term2_e = pow(sqrt(DEN_i)/DEN_s,2);
	  weight_term2_e += pow(sqrt(DEN_s)*DEN_i/pow(DEN_s,2),2);
	  weight_term2_e = sqrt(weight_term2_e);
	}
	
	if(ChProd==0) {
	  MomResHisto_pp->SetBinContent(i+1,j+1, weight);
	  MomResHisto_pp->SetBinError(i+1,j+1, weight_e);
	  MomResHisto_pp_term1->SetBinContent(i+1,j+1, weight_term1);
	  MomResHisto_pp_term2->SetBinContent(i+1,j+1, weight_term2);
	  MomResHisto_pp_term1->SetBinError(i+1,j+1, weight_term1_e);
	  MomResHisto_pp_term2->SetBinError(i+1,j+1, weight_term2_e);
	}else {
	  MomResHisto_mp->SetBinContent(i+1,j+1, weight); 
	  MomResHisto_mp->SetBinError(i+1,j+1, weight_e);
	  MomResHisto_mp_term1->SetBinContent(i+1,j+1, weight_term1);
	  MomResHisto_mp_term2->SetBinContent(i+1,j+1, weight_term2);
	  MomResHisto_mp_term1->SetBinError(i+1,j+1, weight_term1_e);
	  MomResHisto_mp_term2->SetBinError(i+1,j+1, weight_term2_e);
	}
      }
    }
  }
  

 
  outfile->cd();
  MomResHisto_pp->Write("MomResHisto_pp");
  MomResHisto_mp->Write("MomResHisto_mp");
  MomResHisto_pp_term1->Write("MomResHisto_pp_term1");
  MomResHisto_pp_term2->Write("MomResHisto_pp_term2");
  MomResHisto_mp_term1->Write("MomResHisto_mp_term1");
  MomResHisto_mp_term2->Write("MomResHisto_mp_term2");
  outfile->Close();

  outfileOffline->cd();
  if(MBmerged==0){
    MomResHisto_pp->Write("MomResHisto_pp");
    MomResHisto_mp->Write("MomResHisto_mp");
    MomResHisto_pp_term1->Write("MomResHisto_pp_term1");
    MomResHisto_pp_term2->Write("MomResHisto_pp_term2");
    MomResHisto_mp_term1->Write("MomResHisto_mp_term1");
    MomResHisto_mp_term2->Write("MomResHisto_mp_term2");
  }    
  //
  
  for(int term=0; term<5; term++){
    MomResHisto_3d_SC[term]->Write();
    MomResHisto_3d_MC[term]->Write();
    MomResHisto_1d_SC[term]->Write();
    MomResHisto_1d_MC[term]->Write();
    //MomResHisto_3d_FVP1[term]->Write();
    //MomResHisto_3d_FVP2[term]->Write();
    if(term < 4){
      //MomResHisto_3d_FVP1K[term]->Write();
      //MomResHisto_3d_FVP2K[term]->Write();
    }
  }
  MomResHisto_3d_SC_K3->Write();
  MomResHisto_3d_MC_K3->Write();
  //MomResHisto_TPN_FVP1->Write();
  //MomResHisto_TPN_FVP2->Write();
  
  
  outfileOffline->Close();
   
}
 MakeMomResHisto_Merged.C:1
 MakeMomResHisto_Merged.C:2
 MakeMomResHisto_Merged.C:3
 MakeMomResHisto_Merged.C:4
 MakeMomResHisto_Merged.C:5
 MakeMomResHisto_Merged.C:6
 MakeMomResHisto_Merged.C:7
 MakeMomResHisto_Merged.C:8
 MakeMomResHisto_Merged.C:9
 MakeMomResHisto_Merged.C:10
 MakeMomResHisto_Merged.C:11
 MakeMomResHisto_Merged.C:12
 MakeMomResHisto_Merged.C:13
 MakeMomResHisto_Merged.C:14
 MakeMomResHisto_Merged.C:15
 MakeMomResHisto_Merged.C:16
 MakeMomResHisto_Merged.C:17
 MakeMomResHisto_Merged.C:18
 MakeMomResHisto_Merged.C:19
 MakeMomResHisto_Merged.C:20
 MakeMomResHisto_Merged.C:21
 MakeMomResHisto_Merged.C:22
 MakeMomResHisto_Merged.C:23
 MakeMomResHisto_Merged.C:24
 MakeMomResHisto_Merged.C:25
 MakeMomResHisto_Merged.C:26
 MakeMomResHisto_Merged.C:27
 MakeMomResHisto_Merged.C:28
 MakeMomResHisto_Merged.C:29
 MakeMomResHisto_Merged.C:30
 MakeMomResHisto_Merged.C:31
 MakeMomResHisto_Merged.C:32
 MakeMomResHisto_Merged.C:33
 MakeMomResHisto_Merged.C:34
 MakeMomResHisto_Merged.C:35
 MakeMomResHisto_Merged.C:36
 MakeMomResHisto_Merged.C:37
 MakeMomResHisto_Merged.C:38
 MakeMomResHisto_Merged.C:39
 MakeMomResHisto_Merged.C:40
 MakeMomResHisto_Merged.C:41
 MakeMomResHisto_Merged.C:42
 MakeMomResHisto_Merged.C:43
 MakeMomResHisto_Merged.C:44
 MakeMomResHisto_Merged.C:45
 MakeMomResHisto_Merged.C:46
 MakeMomResHisto_Merged.C:47
 MakeMomResHisto_Merged.C:48
 MakeMomResHisto_Merged.C:49
 MakeMomResHisto_Merged.C:50
 MakeMomResHisto_Merged.C:51
 MakeMomResHisto_Merged.C:52
 MakeMomResHisto_Merged.C:53
 MakeMomResHisto_Merged.C:54
 MakeMomResHisto_Merged.C:55
 MakeMomResHisto_Merged.C:56
 MakeMomResHisto_Merged.C:57
 MakeMomResHisto_Merged.C:58
 MakeMomResHisto_Merged.C:59
 MakeMomResHisto_Merged.C:60
 MakeMomResHisto_Merged.C:61
 MakeMomResHisto_Merged.C:62
 MakeMomResHisto_Merged.C:63
 MakeMomResHisto_Merged.C:64
 MakeMomResHisto_Merged.C:65
 MakeMomResHisto_Merged.C:66
 MakeMomResHisto_Merged.C:67
 MakeMomResHisto_Merged.C:68
 MakeMomResHisto_Merged.C:69
 MakeMomResHisto_Merged.C:70
 MakeMomResHisto_Merged.C:71
 MakeMomResHisto_Merged.C:72
 MakeMomResHisto_Merged.C:73
 MakeMomResHisto_Merged.C:74
 MakeMomResHisto_Merged.C:75
 MakeMomResHisto_Merged.C:76
 MakeMomResHisto_Merged.C:77
 MakeMomResHisto_Merged.C:78
 MakeMomResHisto_Merged.C:79
 MakeMomResHisto_Merged.C:80
 MakeMomResHisto_Merged.C:81
 MakeMomResHisto_Merged.C:82
 MakeMomResHisto_Merged.C:83
 MakeMomResHisto_Merged.C:84
 MakeMomResHisto_Merged.C:85
 MakeMomResHisto_Merged.C:86
 MakeMomResHisto_Merged.C:87
 MakeMomResHisto_Merged.C:88
 MakeMomResHisto_Merged.C:89
 MakeMomResHisto_Merged.C:90
 MakeMomResHisto_Merged.C:91
 MakeMomResHisto_Merged.C:92
 MakeMomResHisto_Merged.C:93
 MakeMomResHisto_Merged.C:94
 MakeMomResHisto_Merged.C:95
 MakeMomResHisto_Merged.C:96
 MakeMomResHisto_Merged.C:97
 MakeMomResHisto_Merged.C:98
 MakeMomResHisto_Merged.C:99
 MakeMomResHisto_Merged.C:100
 MakeMomResHisto_Merged.C:101
 MakeMomResHisto_Merged.C:102
 MakeMomResHisto_Merged.C:103
 MakeMomResHisto_Merged.C:104
 MakeMomResHisto_Merged.C:105
 MakeMomResHisto_Merged.C:106
 MakeMomResHisto_Merged.C:107
 MakeMomResHisto_Merged.C:108
 MakeMomResHisto_Merged.C:109
 MakeMomResHisto_Merged.C:110
 MakeMomResHisto_Merged.C:111
 MakeMomResHisto_Merged.C:112
 MakeMomResHisto_Merged.C:113
 MakeMomResHisto_Merged.C:114
 MakeMomResHisto_Merged.C:115
 MakeMomResHisto_Merged.C:116
 MakeMomResHisto_Merged.C:117
 MakeMomResHisto_Merged.C:118
 MakeMomResHisto_Merged.C:119
 MakeMomResHisto_Merged.C:120
 MakeMomResHisto_Merged.C:121
 MakeMomResHisto_Merged.C:122
 MakeMomResHisto_Merged.C:123
 MakeMomResHisto_Merged.C:124
 MakeMomResHisto_Merged.C:125
 MakeMomResHisto_Merged.C:126
 MakeMomResHisto_Merged.C:127
 MakeMomResHisto_Merged.C:128
 MakeMomResHisto_Merged.C:129
 MakeMomResHisto_Merged.C:130
 MakeMomResHisto_Merged.C:131
 MakeMomResHisto_Merged.C:132
 MakeMomResHisto_Merged.C:133
 MakeMomResHisto_Merged.C:134
 MakeMomResHisto_Merged.C:135
 MakeMomResHisto_Merged.C:136
 MakeMomResHisto_Merged.C:137
 MakeMomResHisto_Merged.C:138
 MakeMomResHisto_Merged.C:139
 MakeMomResHisto_Merged.C:140
 MakeMomResHisto_Merged.C:141
 MakeMomResHisto_Merged.C:142
 MakeMomResHisto_Merged.C:143
 MakeMomResHisto_Merged.C:144
 MakeMomResHisto_Merged.C:145
 MakeMomResHisto_Merged.C:146
 MakeMomResHisto_Merged.C:147
 MakeMomResHisto_Merged.C:148
 MakeMomResHisto_Merged.C:149
 MakeMomResHisto_Merged.C:150
 MakeMomResHisto_Merged.C:151
 MakeMomResHisto_Merged.C:152
 MakeMomResHisto_Merged.C:153
 MakeMomResHisto_Merged.C:154
 MakeMomResHisto_Merged.C:155
 MakeMomResHisto_Merged.C:156
 MakeMomResHisto_Merged.C:157
 MakeMomResHisto_Merged.C:158
 MakeMomResHisto_Merged.C:159
 MakeMomResHisto_Merged.C:160
 MakeMomResHisto_Merged.C:161
 MakeMomResHisto_Merged.C:162
 MakeMomResHisto_Merged.C:163
 MakeMomResHisto_Merged.C:164
 MakeMomResHisto_Merged.C:165
 MakeMomResHisto_Merged.C:166
 MakeMomResHisto_Merged.C:167
 MakeMomResHisto_Merged.C:168
 MakeMomResHisto_Merged.C:169
 MakeMomResHisto_Merged.C:170
 MakeMomResHisto_Merged.C:171
 MakeMomResHisto_Merged.C:172
 MakeMomResHisto_Merged.C:173
 MakeMomResHisto_Merged.C:174
 MakeMomResHisto_Merged.C:175
 MakeMomResHisto_Merged.C:176
 MakeMomResHisto_Merged.C:177
 MakeMomResHisto_Merged.C:178
 MakeMomResHisto_Merged.C:179
 MakeMomResHisto_Merged.C:180
 MakeMomResHisto_Merged.C:181
 MakeMomResHisto_Merged.C:182
 MakeMomResHisto_Merged.C:183
 MakeMomResHisto_Merged.C:184
 MakeMomResHisto_Merged.C:185
 MakeMomResHisto_Merged.C:186
 MakeMomResHisto_Merged.C:187
 MakeMomResHisto_Merged.C:188
 MakeMomResHisto_Merged.C:189
 MakeMomResHisto_Merged.C:190
 MakeMomResHisto_Merged.C:191
 MakeMomResHisto_Merged.C:192
 MakeMomResHisto_Merged.C:193
 MakeMomResHisto_Merged.C:194
 MakeMomResHisto_Merged.C:195
 MakeMomResHisto_Merged.C:196
 MakeMomResHisto_Merged.C:197
 MakeMomResHisto_Merged.C:198
 MakeMomResHisto_Merged.C:199
 MakeMomResHisto_Merged.C:200
 MakeMomResHisto_Merged.C:201
 MakeMomResHisto_Merged.C:202
 MakeMomResHisto_Merged.C:203
 MakeMomResHisto_Merged.C:204
 MakeMomResHisto_Merged.C:205
 MakeMomResHisto_Merged.C:206
 MakeMomResHisto_Merged.C:207
 MakeMomResHisto_Merged.C:208
 MakeMomResHisto_Merged.C:209
 MakeMomResHisto_Merged.C:210
 MakeMomResHisto_Merged.C:211
 MakeMomResHisto_Merged.C:212
 MakeMomResHisto_Merged.C:213
 MakeMomResHisto_Merged.C:214
 MakeMomResHisto_Merged.C:215
 MakeMomResHisto_Merged.C:216
 MakeMomResHisto_Merged.C:217
 MakeMomResHisto_Merged.C:218
 MakeMomResHisto_Merged.C:219
 MakeMomResHisto_Merged.C:220
 MakeMomResHisto_Merged.C:221
 MakeMomResHisto_Merged.C:222
 MakeMomResHisto_Merged.C:223
 MakeMomResHisto_Merged.C:224
 MakeMomResHisto_Merged.C:225
 MakeMomResHisto_Merged.C:226
 MakeMomResHisto_Merged.C:227
 MakeMomResHisto_Merged.C:228
 MakeMomResHisto_Merged.C:229
 MakeMomResHisto_Merged.C:230
 MakeMomResHisto_Merged.C:231
 MakeMomResHisto_Merged.C:232
 MakeMomResHisto_Merged.C:233
 MakeMomResHisto_Merged.C:234
 MakeMomResHisto_Merged.C:235
 MakeMomResHisto_Merged.C:236
 MakeMomResHisto_Merged.C:237
 MakeMomResHisto_Merged.C:238
 MakeMomResHisto_Merged.C:239
 MakeMomResHisto_Merged.C:240
 MakeMomResHisto_Merged.C:241
 MakeMomResHisto_Merged.C:242
 MakeMomResHisto_Merged.C:243
 MakeMomResHisto_Merged.C:244
 MakeMomResHisto_Merged.C:245
 MakeMomResHisto_Merged.C:246
 MakeMomResHisto_Merged.C:247
 MakeMomResHisto_Merged.C:248
 MakeMomResHisto_Merged.C:249
 MakeMomResHisto_Merged.C:250
 MakeMomResHisto_Merged.C:251
 MakeMomResHisto_Merged.C:252
 MakeMomResHisto_Merged.C:253
 MakeMomResHisto_Merged.C:254
 MakeMomResHisto_Merged.C:255
 MakeMomResHisto_Merged.C:256
 MakeMomResHisto_Merged.C:257
 MakeMomResHisto_Merged.C:258
 MakeMomResHisto_Merged.C:259
 MakeMomResHisto_Merged.C:260
 MakeMomResHisto_Merged.C:261
 MakeMomResHisto_Merged.C:262
 MakeMomResHisto_Merged.C:263
 MakeMomResHisto_Merged.C:264
 MakeMomResHisto_Merged.C:265
 MakeMomResHisto_Merged.C:266
 MakeMomResHisto_Merged.C:267
 MakeMomResHisto_Merged.C:268
 MakeMomResHisto_Merged.C:269
 MakeMomResHisto_Merged.C:270
 MakeMomResHisto_Merged.C:271
 MakeMomResHisto_Merged.C:272
 MakeMomResHisto_Merged.C:273
 MakeMomResHisto_Merged.C:274
 MakeMomResHisto_Merged.C:275
 MakeMomResHisto_Merged.C:276
 MakeMomResHisto_Merged.C:277
 MakeMomResHisto_Merged.C:278
 MakeMomResHisto_Merged.C:279
 MakeMomResHisto_Merged.C:280
 MakeMomResHisto_Merged.C:281
 MakeMomResHisto_Merged.C:282
 MakeMomResHisto_Merged.C:283
 MakeMomResHisto_Merged.C:284
 MakeMomResHisto_Merged.C:285
 MakeMomResHisto_Merged.C:286
 MakeMomResHisto_Merged.C:287
 MakeMomResHisto_Merged.C:288
 MakeMomResHisto_Merged.C:289
 MakeMomResHisto_Merged.C:290
 MakeMomResHisto_Merged.C:291
 MakeMomResHisto_Merged.C:292
 MakeMomResHisto_Merged.C:293
 MakeMomResHisto_Merged.C:294
 MakeMomResHisto_Merged.C:295
 MakeMomResHisto_Merged.C:296
 MakeMomResHisto_Merged.C:297
 MakeMomResHisto_Merged.C:298
 MakeMomResHisto_Merged.C:299
 MakeMomResHisto_Merged.C:300
 MakeMomResHisto_Merged.C:301
 MakeMomResHisto_Merged.C:302
 MakeMomResHisto_Merged.C:303
 MakeMomResHisto_Merged.C:304
 MakeMomResHisto_Merged.C:305
 MakeMomResHisto_Merged.C:306
 MakeMomResHisto_Merged.C:307
 MakeMomResHisto_Merged.C:308
 MakeMomResHisto_Merged.C:309
 MakeMomResHisto_Merged.C:310
 MakeMomResHisto_Merged.C:311
 MakeMomResHisto_Merged.C:312
 MakeMomResHisto_Merged.C:313
 MakeMomResHisto_Merged.C:314
 MakeMomResHisto_Merged.C:315
 MakeMomResHisto_Merged.C:316
 MakeMomResHisto_Merged.C:317
 MakeMomResHisto_Merged.C:318
 MakeMomResHisto_Merged.C:319
 MakeMomResHisto_Merged.C:320
 MakeMomResHisto_Merged.C:321
 MakeMomResHisto_Merged.C:322
 MakeMomResHisto_Merged.C:323
 MakeMomResHisto_Merged.C:324
 MakeMomResHisto_Merged.C:325
 MakeMomResHisto_Merged.C:326
 MakeMomResHisto_Merged.C:327
 MakeMomResHisto_Merged.C:328
 MakeMomResHisto_Merged.C:329
 MakeMomResHisto_Merged.C:330
 MakeMomResHisto_Merged.C:331
 MakeMomResHisto_Merged.C:332
 MakeMomResHisto_Merged.C:333
 MakeMomResHisto_Merged.C:334
 MakeMomResHisto_Merged.C:335
 MakeMomResHisto_Merged.C:336
 MakeMomResHisto_Merged.C:337
 MakeMomResHisto_Merged.C:338
 MakeMomResHisto_Merged.C:339
 MakeMomResHisto_Merged.C:340
 MakeMomResHisto_Merged.C:341
 MakeMomResHisto_Merged.C:342
 MakeMomResHisto_Merged.C:343
 MakeMomResHisto_Merged.C:344
 MakeMomResHisto_Merged.C:345
 MakeMomResHisto_Merged.C:346
 MakeMomResHisto_Merged.C:347
 MakeMomResHisto_Merged.C:348
 MakeMomResHisto_Merged.C:349
 MakeMomResHisto_Merged.C:350
 MakeMomResHisto_Merged.C:351
 MakeMomResHisto_Merged.C:352
 MakeMomResHisto_Merged.C:353
 MakeMomResHisto_Merged.C:354
 MakeMomResHisto_Merged.C:355
 MakeMomResHisto_Merged.C:356
 MakeMomResHisto_Merged.C:357
 MakeMomResHisto_Merged.C:358
 MakeMomResHisto_Merged.C:359
 MakeMomResHisto_Merged.C:360
 MakeMomResHisto_Merged.C:361
 MakeMomResHisto_Merged.C:362
 MakeMomResHisto_Merged.C:363
 MakeMomResHisto_Merged.C:364
 MakeMomResHisto_Merged.C:365
 MakeMomResHisto_Merged.C:366
 MakeMomResHisto_Merged.C:367
 MakeMomResHisto_Merged.C:368
 MakeMomResHisto_Merged.C:369
 MakeMomResHisto_Merged.C:370
 MakeMomResHisto_Merged.C:371
 MakeMomResHisto_Merged.C:372
 MakeMomResHisto_Merged.C:373
 MakeMomResHisto_Merged.C:374
 MakeMomResHisto_Merged.C:375
 MakeMomResHisto_Merged.C:376
 MakeMomResHisto_Merged.C:377
 MakeMomResHisto_Merged.C:378
 MakeMomResHisto_Merged.C:379
 MakeMomResHisto_Merged.C:380
 MakeMomResHisto_Merged.C:381
 MakeMomResHisto_Merged.C:382
 MakeMomResHisto_Merged.C:383
 MakeMomResHisto_Merged.C:384
 MakeMomResHisto_Merged.C:385
 MakeMomResHisto_Merged.C:386
 MakeMomResHisto_Merged.C:387
 MakeMomResHisto_Merged.C:388
 MakeMomResHisto_Merged.C:389
 MakeMomResHisto_Merged.C:390
 MakeMomResHisto_Merged.C:391
 MakeMomResHisto_Merged.C:392
 MakeMomResHisto_Merged.C:393
 MakeMomResHisto_Merged.C:394
 MakeMomResHisto_Merged.C:395
 MakeMomResHisto_Merged.C:396
 MakeMomResHisto_Merged.C:397
 MakeMomResHisto_Merged.C:398
 MakeMomResHisto_Merged.C:399
 MakeMomResHisto_Merged.C:400
 MakeMomResHisto_Merged.C:401
 MakeMomResHisto_Merged.C:402
 MakeMomResHisto_Merged.C:403
 MakeMomResHisto_Merged.C:404
 MakeMomResHisto_Merged.C:405
 MakeMomResHisto_Merged.C:406
 MakeMomResHisto_Merged.C:407
 MakeMomResHisto_Merged.C:408
 MakeMomResHisto_Merged.C:409
 MakeMomResHisto_Merged.C:410
 MakeMomResHisto_Merged.C:411
 MakeMomResHisto_Merged.C:412
 MakeMomResHisto_Merged.C:413
 MakeMomResHisto_Merged.C:414
 MakeMomResHisto_Merged.C:415
 MakeMomResHisto_Merged.C:416
 MakeMomResHisto_Merged.C:417
 MakeMomResHisto_Merged.C:418
 MakeMomResHisto_Merged.C:419
 MakeMomResHisto_Merged.C:420
 MakeMomResHisto_Merged.C:421
 MakeMomResHisto_Merged.C:422
 MakeMomResHisto_Merged.C:423
 MakeMomResHisto_Merged.C:424
 MakeMomResHisto_Merged.C:425
 MakeMomResHisto_Merged.C:426
 MakeMomResHisto_Merged.C:427
 MakeMomResHisto_Merged.C:428
 MakeMomResHisto_Merged.C:429
 MakeMomResHisto_Merged.C:430
 MakeMomResHisto_Merged.C:431
 MakeMomResHisto_Merged.C:432
 MakeMomResHisto_Merged.C:433
 MakeMomResHisto_Merged.C:434
 MakeMomResHisto_Merged.C:435
 MakeMomResHisto_Merged.C:436
 MakeMomResHisto_Merged.C:437
 MakeMomResHisto_Merged.C:438
 MakeMomResHisto_Merged.C:439
 MakeMomResHisto_Merged.C:440
 MakeMomResHisto_Merged.C:441
 MakeMomResHisto_Merged.C:442
 MakeMomResHisto_Merged.C:443
 MakeMomResHisto_Merged.C:444
 MakeMomResHisto_Merged.C:445
 MakeMomResHisto_Merged.C:446
 MakeMomResHisto_Merged.C:447
 MakeMomResHisto_Merged.C:448
 MakeMomResHisto_Merged.C:449
 MakeMomResHisto_Merged.C:450
 MakeMomResHisto_Merged.C:451
 MakeMomResHisto_Merged.C:452
 MakeMomResHisto_Merged.C:453
 MakeMomResHisto_Merged.C:454
 MakeMomResHisto_Merged.C:455
 MakeMomResHisto_Merged.C:456
 MakeMomResHisto_Merged.C:457
 MakeMomResHisto_Merged.C:458
 MakeMomResHisto_Merged.C:459
 MakeMomResHisto_Merged.C:460
 MakeMomResHisto_Merged.C:461
 MakeMomResHisto_Merged.C:462
 MakeMomResHisto_Merged.C:463
 MakeMomResHisto_Merged.C:464
 MakeMomResHisto_Merged.C:465
 MakeMomResHisto_Merged.C:466
 MakeMomResHisto_Merged.C:467
 MakeMomResHisto_Merged.C:468
 MakeMomResHisto_Merged.C:469
 MakeMomResHisto_Merged.C:470
 MakeMomResHisto_Merged.C:471
 MakeMomResHisto_Merged.C:472
 MakeMomResHisto_Merged.C:473
 MakeMomResHisto_Merged.C:474
 MakeMomResHisto_Merged.C:475
 MakeMomResHisto_Merged.C:476
 MakeMomResHisto_Merged.C:477
 MakeMomResHisto_Merged.C:478
 MakeMomResHisto_Merged.C:479
 MakeMomResHisto_Merged.C:480
 MakeMomResHisto_Merged.C:481
 MakeMomResHisto_Merged.C:482
 MakeMomResHisto_Merged.C:483
 MakeMomResHisto_Merged.C:484
 MakeMomResHisto_Merged.C:485
 MakeMomResHisto_Merged.C:486
 MakeMomResHisto_Merged.C:487
 MakeMomResHisto_Merged.C:488
 MakeMomResHisto_Merged.C:489
 MakeMomResHisto_Merged.C:490
 MakeMomResHisto_Merged.C:491
 MakeMomResHisto_Merged.C:492
 MakeMomResHisto_Merged.C:493
 MakeMomResHisto_Merged.C:494
 MakeMomResHisto_Merged.C:495
 MakeMomResHisto_Merged.C:496
 MakeMomResHisto_Merged.C:497
 MakeMomResHisto_Merged.C:498
 MakeMomResHisto_Merged.C:499
 MakeMomResHisto_Merged.C:500
 MakeMomResHisto_Merged.C:501
 MakeMomResHisto_Merged.C:502
 MakeMomResHisto_Merged.C:503
 MakeMomResHisto_Merged.C:504
 MakeMomResHisto_Merged.C:505
 MakeMomResHisto_Merged.C:506
 MakeMomResHisto_Merged.C:507
 MakeMomResHisto_Merged.C:508
 MakeMomResHisto_Merged.C:509
 MakeMomResHisto_Merged.C:510
 MakeMomResHisto_Merged.C:511
 MakeMomResHisto_Merged.C:512
 MakeMomResHisto_Merged.C:513
 MakeMomResHisto_Merged.C:514
 MakeMomResHisto_Merged.C:515
 MakeMomResHisto_Merged.C:516
 MakeMomResHisto_Merged.C:517
 MakeMomResHisto_Merged.C:518
 MakeMomResHisto_Merged.C:519
 MakeMomResHisto_Merged.C:520
 MakeMomResHisto_Merged.C:521
 MakeMomResHisto_Merged.C:522
 MakeMomResHisto_Merged.C:523
 MakeMomResHisto_Merged.C:524
 MakeMomResHisto_Merged.C:525
 MakeMomResHisto_Merged.C:526
 MakeMomResHisto_Merged.C:527
 MakeMomResHisto_Merged.C:528
 MakeMomResHisto_Merged.C:529
 MakeMomResHisto_Merged.C:530
 MakeMomResHisto_Merged.C:531
 MakeMomResHisto_Merged.C:532
 MakeMomResHisto_Merged.C:533
 MakeMomResHisto_Merged.C:534
 MakeMomResHisto_Merged.C:535
 MakeMomResHisto_Merged.C:536
 MakeMomResHisto_Merged.C:537
 MakeMomResHisto_Merged.C:538
 MakeMomResHisto_Merged.C:539
 MakeMomResHisto_Merged.C:540
 MakeMomResHisto_Merged.C:541
 MakeMomResHisto_Merged.C:542
 MakeMomResHisto_Merged.C:543
 MakeMomResHisto_Merged.C:544
 MakeMomResHisto_Merged.C:545
 MakeMomResHisto_Merged.C:546
 MakeMomResHisto_Merged.C:547
 MakeMomResHisto_Merged.C:548
 MakeMomResHisto_Merged.C:549
 MakeMomResHisto_Merged.C:550
 MakeMomResHisto_Merged.C:551
 MakeMomResHisto_Merged.C:552
 MakeMomResHisto_Merged.C:553
 MakeMomResHisto_Merged.C:554
 MakeMomResHisto_Merged.C:555
 MakeMomResHisto_Merged.C:556
 MakeMomResHisto_Merged.C:557
 MakeMomResHisto_Merged.C:558
 MakeMomResHisto_Merged.C:559
 MakeMomResHisto_Merged.C:560
 MakeMomResHisto_Merged.C:561
 MakeMomResHisto_Merged.C:562
 MakeMomResHisto_Merged.C:563
 MakeMomResHisto_Merged.C:564
 MakeMomResHisto_Merged.C:565
 MakeMomResHisto_Merged.C:566
 MakeMomResHisto_Merged.C:567
 MakeMomResHisto_Merged.C:568
 MakeMomResHisto_Merged.C:569
 MakeMomResHisto_Merged.C:570
 MakeMomResHisto_Merged.C:571
 MakeMomResHisto_Merged.C:572
 MakeMomResHisto_Merged.C:573
 MakeMomResHisto_Merged.C:574
 MakeMomResHisto_Merged.C:575
 MakeMomResHisto_Merged.C:576
 MakeMomResHisto_Merged.C:577
 MakeMomResHisto_Merged.C:578
 MakeMomResHisto_Merged.C:579
 MakeMomResHisto_Merged.C:580
 MakeMomResHisto_Merged.C:581
 MakeMomResHisto_Merged.C:582
 MakeMomResHisto_Merged.C:583
 MakeMomResHisto_Merged.C:584
 MakeMomResHisto_Merged.C:585
 MakeMomResHisto_Merged.C:586
 MakeMomResHisto_Merged.C:587
 MakeMomResHisto_Merged.C:588
 MakeMomResHisto_Merged.C:589
 MakeMomResHisto_Merged.C:590
 MakeMomResHisto_Merged.C:591
 MakeMomResHisto_Merged.C:592
 MakeMomResHisto_Merged.C:593
 MakeMomResHisto_Merged.C:594
 MakeMomResHisto_Merged.C:595
 MakeMomResHisto_Merged.C:596
 MakeMomResHisto_Merged.C:597
 MakeMomResHisto_Merged.C:598
 MakeMomResHisto_Merged.C:599
 MakeMomResHisto_Merged.C:600
 MakeMomResHisto_Merged.C:601
 MakeMomResHisto_Merged.C:602
 MakeMomResHisto_Merged.C:603
 MakeMomResHisto_Merged.C:604
 MakeMomResHisto_Merged.C:605
 MakeMomResHisto_Merged.C:606
 MakeMomResHisto_Merged.C:607
 MakeMomResHisto_Merged.C:608
 MakeMomResHisto_Merged.C:609
 MakeMomResHisto_Merged.C:610
 MakeMomResHisto_Merged.C:611
 MakeMomResHisto_Merged.C:612
 MakeMomResHisto_Merged.C:613
 MakeMomResHisto_Merged.C:614
 MakeMomResHisto_Merged.C:615
 MakeMomResHisto_Merged.C:616
 MakeMomResHisto_Merged.C:617
 MakeMomResHisto_Merged.C:618
 MakeMomResHisto_Merged.C:619
 MakeMomResHisto_Merged.C:620
 MakeMomResHisto_Merged.C:621
 MakeMomResHisto_Merged.C:622
 MakeMomResHisto_Merged.C:623
 MakeMomResHisto_Merged.C:624
 MakeMomResHisto_Merged.C:625
 MakeMomResHisto_Merged.C:626
 MakeMomResHisto_Merged.C:627
 MakeMomResHisto_Merged.C:628
 MakeMomResHisto_Merged.C:629
 MakeMomResHisto_Merged.C:630
 MakeMomResHisto_Merged.C:631
 MakeMomResHisto_Merged.C:632
 MakeMomResHisto_Merged.C:633
 MakeMomResHisto_Merged.C:634
 MakeMomResHisto_Merged.C:635
 MakeMomResHisto_Merged.C:636
 MakeMomResHisto_Merged.C:637
 MakeMomResHisto_Merged.C:638
 MakeMomResHisto_Merged.C:639
 MakeMomResHisto_Merged.C:640
 MakeMomResHisto_Merged.C:641
 MakeMomResHisto_Merged.C:642
 MakeMomResHisto_Merged.C:643
 MakeMomResHisto_Merged.C:644
 MakeMomResHisto_Merged.C:645
 MakeMomResHisto_Merged.C:646
 MakeMomResHisto_Merged.C:647
 MakeMomResHisto_Merged.C:648