void AnalyzeBKGShape(TString folder, TString sample1, TString sample2){
    gStyle->SetOptStat(000000);

    TH1::SetDefaultSumw2();

    TFile *f= TFile::Open("/Users/Tita/Desktop/analysis_HH_bbTauTau/src/HHbbTauTau/data/datacards_tautau_try_2/htt_tt.inputs-Hhh-8TeV.root");

    TH1D *histo_QCD = (TH1D*)f->Get((folder+"/"+sample1));
    TH1D *histo_QCDalt = (TH1D*)f->Get((folder+"/"+sample2));

    TCanvas * c1 = new TCanvas("c1","c1", 800,800);


    histo_QCD->Scale(1/(histo_QCD->Integral()),"width");

    histo_QCD->SetLineColor(kBlue);
    histo_QCD->SetMarkerColor(kBlue);
    histo_QCD->SetMarkerStyle(20);

    histo_QCDalt->Scale(1/(histo_QCDalt->Integral()),"width");

    histo_QCDalt->SetLineColor(kRed);
    histo_QCDalt->SetMarkerColor(kRed);
    histo_QCDalt->SetMarkerStyle(20);

    histo_QCD->Draw("");
    histo_QCDalt->Draw("same");

    cout<<"--------------------------------------------------------------KS--------------------------------------------------------------"<<endl;
    cout<<"**************************"<<endl;
    cout<<" Kolmogorov Test: "<<histo_QCD->KolmogorovTest(histo_QCDalt,"")<<endl;

    cout<<"**************************"<<endl;
    histo_QCD->SetTitle("QCD shape ");
    histo_QCD->GetXaxis()->SetTitle("M_{H} [GeV]");
    histo_QCD->GetYaxis()->SetTitleOffset(1.5);
    histo_QCD->GetYaxis()->SetTitle("Normalized Events");
//    histo_0tag_Difference->SetMaximum(8);

    TLegend* legend = new TLegend(0.6, 0.65, 0.99, 0.9);
    legend->SetFillColor(0);
    legend->SetTextSize(0.03);
    legend->SetEntrySeparation(0.05);
    legend->AddEntry(histo_QCD, "QCD" );
    legend->AddEntry(histo_QCDalt, "QCD alt" );

    legend->Draw();

    c1->SaveAs("./QCD_shape_"+folder+".pdf");

}
void AnalyzeESshape(/*TString datacards_folder,*/ TString folder_0tag, TString folder_1tag, TString folder_2tag,
                     TString sample){
	gStyle->SetOptStat(000000);
	
	TH1::SetDefaultSumw2();
	
    TFile *f= TFile::Open("/Users/Tita/Desktop/analysis_HH_bbTauTau/Limits/auxiliaries/shapes/Italians/htt_tt.inputs-Hhh-8TeV.root");
	
    TH1D *histo_0tag_Up = (TH1D*)f->Get((folder_0tag+"/"+sample+"_CMS_scale_t_tautau_8TeVUp"));
    TH1D *histo_0tag_Central = (TH1D*)f->Get((folder_0tag+"/"+sample));
    TH1D *histo_0tag_Down = (TH1D*)f->Get((folder_0tag+"/"+sample+"_CMS_scale_t_tautau_8TeVDown"));
    TH1D *histo_1tag_Up = (TH1D*)f->Get((folder_1tag+"/"+sample+"_CMS_scale_t_tautau_8TeVUp"));
    TH1D *histo_1tag_Central = (TH1D*)f->Get((folder_1tag+"/"+sample));
    TH1D *histo_1tag_Down = (TH1D*)f->Get((folder_1tag+"/"+sample+"_CMS_scale_t_tautau_8TeVDown"));
    TH1D *histo_2tag_Up = (TH1D*)f->Get((folder_2tag+"/"+sample+"_CMS_scale_t_tautau_8TeVUp"));
    TH1D *histo_2tag_Central = (TH1D*)f->Get((folder_2tag+"/"+sample));
    TH1D *histo_2tag_Down = (TH1D*)f->Get((folder_2tag+"/"+sample+"_CMS_scale_t_tautau_8TeVDown"));

	
		
	TCanvas * c1 = new TCanvas("c1","c1", 800,800);

    TH1D* histo_0tag_Up_Central = (TH1D*)histo_0tag_Up->Clone("histo_0tag_Up_Central");
    histo_0tag_Up_Central->Divide(histo_0tag_Central);

    histo_0tag_Up_Central->SetLineColor(kBlue);
    histo_0tag_Up_Central->SetMarkerColor(kBlue);
    histo_0tag_Up_Central->SetMarkerStyle(20);

    TH1D* histo_1tag_Up_Central = (TH1D*)histo_1tag_Up->Clone("histo_1tag_Up_Central");
    histo_1tag_Up_Central->Divide(histo_1tag_Central);

    histo_1tag_Up_Central->SetLineColor(kRed);
    histo_1tag_Up_Central->SetMarkerColor(kRed);
    histo_1tag_Up_Central->SetMarkerStyle(20);

    TH1D* histo_2tag_Up_Central = (TH1D*)histo_2tag_Up->Clone("histo_2tag_Up_Central");
    histo_2tag_Up_Central->Divide(histo_2tag_Central);

    histo_2tag_Up_Central->SetLineColor(kBlack);
    histo_2tag_Up_Central->SetMarkerColor(kBlack);
    histo_2tag_Up_Central->SetMarkerStyle(20);
	
    
    
    histo_0tag_Up_Central->Draw("");
    histo_1tag_Up_Central->Draw("same");
    histo_2tag_Up_Central->Draw("same");
    
    

    
    cout<<"--------------------------------------------------------------KS   "<<sample<<"  --------------------------------------------------------------"<<endl;
    cout<<"**************************"<<endl;
    cout<<" Kolmogorov Test 0tag-1tag: "<<histo_0tag_Up_Central->KolmogorovTest(histo_1tag_Up_Central,"")<<endl;
    cout<<" Kolmogorov Test 0tag-2tag: "<<histo_0tag_Up_Central->KolmogorovTest(histo_2tag_Up_Central,"")<<endl;
    cout<<" Kolmogorov Test 1tag-2tag: "<<histo_1tag_Up_Central->KolmogorovTest(histo_2tag_Up_Central,"")<<endl;
    cout<<"**************************"<<endl;
    histo_0tag_Up_Central->SetTitle("Scale Up/ Central - "+sample);
    histo_0tag_Up_Central->GetXaxis()->SetTitle("M_{H} [GeV]");
    histo_0tag_Up_Central->GetYaxis()->SetTitleOffset(1.5);
    histo_0tag_Up_Central->GetYaxis()->SetTitle("Normalized Events");
    histo_0tag_Up_Central->SetMaximum(3.5);
		
	TLegend* legend = new TLegend(0.6, 0.65, 0.99, 0.9);
	legend->SetFillColor(0);
	legend->SetTextSize(0.03);
	legend->SetEntrySeparation(0.05);
    legend->AddEntry(histo_0tag_Up_Central, "2jet0tag" );
    legend->AddEntry(histo_1tag_Up_Central, "2jet1tag" );
    legend->AddEntry(histo_2tag_Up_Central, "2jet2tag" );
	
	legend->Draw();
	
    c1->SaveAs("./UP_CENTRAL_"+sample+".pdf");

    TCanvas * c2 = new TCanvas("c2","c2", 800,800);

    TH1D* histo_0tag_Down_Central = (TH1D*)histo_0tag_Down->Clone("histo_0tag_Down_Central");
    histo_0tag_Down_Central->Divide(histo_0tag_Central);

    histo_0tag_Down_Central->SetLineColor(kBlue);
    histo_0tag_Down_Central->SetMarkerColor(kBlue);
    histo_0tag_Down_Central->SetMarkerStyle(20);

    TH1D* histo_1tag_Down_Central = (TH1D*)histo_1tag_Down->Clone("histo_1tag_Down_Central");
    histo_1tag_Down_Central->Divide(histo_1tag_Central);

    histo_1tag_Down_Central->SetLineColor(kRed);
    histo_1tag_Down_Central->SetMarkerColor(kRed);
    histo_1tag_Down_Central->SetMarkerStyle(20);

    TH1D* histo_2tag_Down_Central = (TH1D*)histo_2tag_Down->Clone("histo_2tag_Down_Central");
    histo_2tag_Down_Central->Divide(histo_2tag_Central);

    histo_2tag_Down_Central->SetLineColor(kBlack);
    histo_2tag_Down_Central->SetMarkerColor(kBlack);
    histo_2tag_Down_Central->SetMarkerStyle(20);



    histo_0tag_Down_Central->Draw("");
    histo_1tag_Down_Central->Draw("same");
    histo_2tag_Down_Central->Draw("same");




    cout<<"--------------------------------------------------------------KS   "<<sample<<"  --------------------------------------------------------------"<<endl;
    cout<<"**************************"<<endl;
    cout<<" Kolmogorov Test 0tag-1tag: "<<histo_0tag_Down_Central->KolmogorovTest(histo_1tag_Down_Central,"")<<endl;
    cout<<" Kolmogorov Test 0tag-2tag: "<<histo_0tag_Down_Central->KolmogorovTest(histo_2tag_Down_Central,"")<<endl;
    cout<<" Kolmogorov Test 1tag-2tag: "<<histo_1tag_Down_Central->KolmogorovTest(histo_2tag_Down_Central,"")<<endl;
    cout<<"**************************"<<endl;
    histo_0tag_Down_Central->SetTitle("Scale Down/ Central - "+sample);
    histo_0tag_Down_Central->GetXaxis()->SetTitle("M_{H} [GeV]");
    histo_0tag_Down_Central->GetYaxis()->SetTitleOffset(1.5);
    histo_0tag_Down_Central->GetYaxis()->SetTitle("Normalized Events");
    histo_0tag_Down_Central->SetMaximum(2.5);

    TLegend* legend = new TLegend(0.6, 0.65, 0.99, 0.9);
    legend->SetFillColor(0);
    legend->SetTextSize(0.03);
    legend->SetEntrySeparation(0.05);
    legend->AddEntry(histo_0tag_Down_Central, "2jet0tag" );
    legend->AddEntry(histo_1tag_Down_Central, "2jet1tag" );
    legend->AddEntry(histo_2tag_Down_Central, "2jet2tag" );

    legend->Draw();

    c2->SaveAs("./DOWN_CENTRAL_"+sample+".pdf");
}
void comparisonMCdataVsPV(){

  std::vector<TH1D*> IsoEcalplotsBarrelNotRemoved;
  std::vector<TH1D*> IsoEcalplotsBarrelRemoved;

  int numbofvertices=15;

	gROOT->ForceStyle();
	setTDRStyle();
	TFile *dataf = TFile::Open("rfio:/castor/cern.ch/user/m/marone/ZJets/results/PreselectionMay10_v1_1.root"); //data file
	TFile *dataremoved = TFile::Open("rfio:/castor/cern.ch/user/m/marone/ZJets/results/PreselectionMay10PURemoved_v1_1.root");


	for (int i=1;i<numbofvertices;i++){
	  //set the string
	  stringstream oss;
	  oss<<i;
	  string name=" Number of Vertices="+oss.str();
	  cout<<name<<endl;
	  string cut="numberOfVertices=="+oss.str();
	  cout<<cut<<endl;

	//DATA	
	dataf->cd("demo");

	//Creazione degli istogrammi
	//FIXME da duplicare per il file di MC
	//EB data

	TH1D *h_ieEB_data = new TH1D("h_ieEB_data","IsoEcal EB",40,0.,0.40);
	treeVJ_->Draw("IsoEcalEB>>h_ieEB_data",cut.c_str());

	TH1D *h_ihEB_data = new TH1D("h_ihEB_data","IsoHcal EB",40,0.,0.40);
	treeVJ_->Draw("IsoHcalEB>>h_ihEB_data",cut.c_str());

	//EE data

	TH1D *h_ieEE_data = new TH1D("h_ieEE_data","IsoEcal EE",40,0.,0.40);
	treeVJ_->Draw("IsoEcalEE>>h_ieEE_data",cut.c_str());

	TH1D *h_ihEE_data = new TH1D("h_ihEE_data","IsoHcal EE",40,0.,0.40);
	treeVJ_->Draw("IsoHcalEE>>h_ihEE_data",cut.c_str());


	//DATA REMOVED PU
	dataremoved->cd("demo");
	//Numero di entries

	//EB data


	TH1D *h_ieEB_rem = new TH1D("h_ieEB_rem","IsoEcal EB",40,0.,0.40);
	treeVJ_->Draw("IsoEcalEB>>h_ieEB_rem",cut.c_str());


	TH1D *h_ihEB_rem = new TH1D("h_ihEB_rem","IsoHcal EB",40,0.,0.40);
	treeVJ_->Draw("IsoHcalEB>>h_ihEB_rem",cut.c_str());

	//EE data


	TH1D *h_ieEE_rem = new TH1D("h_ieEE_rem","IsoEcal EE",40,0.,0.40);
	treeVJ_->Draw("IsoEcalEE>>h_ieEE_rem",cut.c_str());


	TH1D *h_ihEE_rem = new TH1D("h_ihEE_rem","IsoHcal EE",40,0.,0.40);
	treeVJ_->Draw("IsoHcalEE>>h_ihEE_rem",cut.c_str());


	//Definizione canvas e riempimento
	//EB

	TCanvas *Comp = new TCanvas("Comp","Comp",0,0,800,600);
	Comp->Divide(2,2);
	Comp->cd(1);
	MLogAxis(0,1);
	h_ieEB_data->SetTitle(name.c_str());
	h_ieEB_data->SetMarkerColor(kBlack);
	h_ieEB_data->GetXaxis()->SetTitle("IsoECAL Barrel");
	h_ieEB_data->GetYaxis()->SetTitle("Entries");
	h_ieEB_data->SetLineColor(kBlack);
	h_ieEB_data->SetMarkerColor(kBlack);
	h_ieEB_data->Draw("E1");
	h_ieEB_rem->SetMarkerColor(kRed);
	h_ieEB_rem->SetLineColor(kRed);
	h_ieEB_rem->Draw("E1 SAMES");
	Comp->Update();
	TPaveStats *r2 = (TPaveStats*)h_ieEB_rem->FindObject("stats"); 
	r2->SetY1NDC(0.878); 
	r2->SetY2NDC(0.75); 
	r2->SetTextColor(kRed);
	r2->Draw();
	Comp->Update();
	TLegend *leg = new TLegend(0.4,0.75,0.8,0.9);
	leg->SetBorderSize(0);
	leg->SetEntrySeparation(0.01);
	leg->SetFillColor(0);
	leg->AddEntry(h_ieEB_data,"data","p");
	leg->AddEntry(h_ieEB_rem,"data removed PU","p");
	leg->Draw();
	Comp->Update();

	Comp->cd(2);
	MLogAxis(0,1);
	h_ihEB_data->SetTitle(name.c_str());
	h_ihEB_data->SetMarkerColor(kBlack);
	h_ihEB_data->SetLineColor(kBlack);
	h_ihEB_data->GetXaxis()->SetTitle("IsoHCAL Barrel");
	h_ihEB_data->GetYaxis()->SetTitle("Entries");
	h_ihEB_data->Draw("E1");
	h_ihEB_rem->SetMarkerColor(kRed);
	h_ihEB_rem->SetLineColor(kRed);
	h_ihEB_rem->Draw("E1 SAMES");
	Comp->Update();

	TPaveStats *r3 = (TPaveStats*)h_ihEB_rem->FindObject("stats"); 
	r3->SetY1NDC(0.878); 
	r3->SetY2NDC(0.75); 
	r3->SetTextColor(kRed);
	r3->Draw();
	Comp->Update();
	
	TLegend *leg = new TLegend(0.4,0.75,0.8,0.9);
	leg->SetBorderSize(0);
	leg->SetEntrySeparation(0.01);
	leg->SetFillColor(0);
	leg->AddEntry(h_ihEB_data,"data","p");
	leg->AddEntry(h_ihEB_rem,"data removed PU","p");
	leg->Draw();
	Comp->Update();

	Comp->cd(3);
	MLogAxis(0,1);
	h_ieEE_data->SetTitle(name.c_str());
	h_ieEE_data->SetMarkerColor(kBlack);
	h_ieEE_data->SetLineColor(kBlack);
	h_ieEE_data->GetXaxis()->SetTitle("IsoECAL Endcap");
	h_ieEE_data->GetYaxis()->SetTitle("Entries");
	h_ieEE_data->Draw("E1");
	h_ieEE_rem->SetMarkerColor(kRed);
	h_ieEE_rem->SetLineColor(kRed);
	h_ieEE_rem->Draw("E1 SAMES");
	Comp->Update();
	
	TPaveStats *r5 = (TPaveStats*)h_ieEE_rem->FindObject("stats"); 
	r5->SetY1NDC(0.878); 
	r5->SetY2NDC(0.75); 
	r5->SetTextColor(kRed);
	r5->Draw();
	Comp->Update();
	
	TLegend *leg = new TLegend(0.4,0.75,0.8,0.9);
	leg->SetBorderSize(0);
	leg->SetEntrySeparation(0.01);
	leg->SetFillColor(0);
	leg->AddEntry(h_ieEE_data,"data","p");
	leg->AddEntry(h_ieEE_rem,"data removed PU","p");
	leg->Draw();
	Comp->Update();


	Comp->cd(4);
	MLogAxis(0,1);
	h_ihEE_data->SetTitle(name.c_str());
	h_ihEE_data->SetMarkerColor(kBlack);
	h_ihEE_data->SetLineColor(kBlack);
	h_ihEE_data->GetXaxis()->SetTitle("IsoHCAL Endcap");
	h_ihEE_data->GetYaxis()->SetTitle("Entries");
	h_ihEE_data->Draw("E1");
	h_ihEE_rem->SetMarkerColor(kRed);
	h_ihEE_rem->SetLineColor(kRed);
	h_ihEE_rem->Draw("E1 SAMES");
	Comp->Update();
	
	TPaveStats *r6 = (TPaveStats*)h_ihEE_rem->FindObject("stats"); 
	r6->SetY1NDC(0.878); 
	r6->SetY2NDC(0.75); 
	r6->SetTextColor(kRed);
	r6->Draw();
	Comp->Update();
	
	TLegend *leg = new TLegend(0.4,0.75,0.8,0.9);
	leg->SetBorderSize(0);
	leg->SetEntrySeparation(0.01);
	leg->SetFillColor(0);
	leg->AddEntry(h_ihEE_data,"data","p");
	leg->AddEntry(h_ihEE_rem,"data removed PU","p");
	leg->Draw();
	Comp->Update();

	string picname="IsolationWithWithoutPU"+oss.str()+".png";
	Comp->Print(picname.c_str());
	  oss.clear();
	  oss.str("");

	  IsoEcalplotsBarrelRemoved.push_back(h_ieEB_rem);
	  IsoEcalplotsBarrelNotRemoved.push_back(h_ieEB_data);
	  cout<<"entries "<<IsoEcalplotsBarrelRemoved[i-1]->GetEntries();
	  cout<<"entries "<<IsoEcalplotsBarrelNotRemoved[i-1]->GetEntries();
	}

	  //if (h_ieEB_data) delete h_ieEB_data;
	  //if (h_ihEB_data) delete h_ihEB_data;
	  //if (h_ieEE_data) delete h_ieEE_data;
	  //if (h_ihEE_data) delete h_ihEE_data;	
	  // if (h_ieEB_rem) delete h_ieEB_rem;
	  //if (h_ihEB_rem) delete h_ihEB_rem;
	  //if (h_ieEE_rem) delete h_ieEE_rem;
	  //if (h_ihEE_rem) delete h_ihEE_rem;
	  //if (Comp) delete Comp;
	  //if (r2) delete r2;
	  //if (leg) delete leg;
	  //if (r3) delete r3;
	  //if (r5) delete r5;
	  //if (r6) delete r6;

	TCanvas *ComparisonRemoved = new TCanvas("ComparisonRemoved","ComparisonRemoved",0,0,800,600);
	MLogAxis(0,1);
	TLegend *lege= new TLegend(0.4,0.75,0.8,0.9);
	  stringstream nu;
	for (int i=1;i<numbofvertices;i++){
	  nu<<i;
	  cout<<"a"<<endl;
	  string name="Vertices="+nu.str();
	  IsoEcalplotsBarrelRemoved[i-1]->SetMarkerColor(i);
	  IsoEcalplotsBarrelRemoved[i-1]->Sumw2();
	  IsoEcalplotsBarrelRemoved[i-1]->SetLineColor(i);
	  cout<<"aa"<<endl;
	  double plotentries=1.0/(double)IsoEcalplotsBarrelRemoved[i-1]->GetEntries();
	  IsoEcalplotsBarrelRemoved[i-1]->Scale(plotentries);
	  if (i==1){
	  cout<<"ab"<<endl;
	    //TPaveStats *r7 = (TPaveStats*)IsoEcalplotsBarrelRemoved[i-1]->FindObject("stats");
	    //r7->SetOptStat(0);
	    IsoEcalplotsBarrelRemoved[i-1]->SetTitle("Comparison between PURemoved distributions");
	    IsoEcalplotsBarrelRemoved[i-1]->GetXaxis()->SetTitle("IsoECAL Barrel");
	    IsoEcalplotsBarrelRemoved[i-1]->GetYaxis()->SetTitle("Fraction of Events");
	    IsoEcalplotsBarrelRemoved[i-1]->Draw("E1");
	    lege->AddEntry( IsoEcalplotsBarrelRemoved[i-1],name.c_str(),"p");
	  }
	  else{
	  cout<<"ac"<<endl;
	    IsoEcalplotsBarrelRemoved[i-1]->Draw("E1 SAMES");
	    lege->AddEntry( IsoEcalplotsBarrelRemoved[i-1],name.c_str(),"p");
	  }
	  nu.clear();
	  nu.str("");
	}
	ComparisonRemoved->Update();
	lege->SetBorderSize(0);
	lege->SetEntrySeparation(0.01);
	lege->SetFillColor(0);
	lege->Draw();
      	ComparisonRemoved->Print("AllRemoved.png");

	TCanvas *ComparisonNotRemoved = new TCanvas("ComparisonNotRemoved","ComparisonNotRemoved",0,0,800,600);
	MLogAxis(0,1);
	TLegend *lege= new TLegend(0.4,0.75,0.8,0.9);
	  stringstream nu;
	for (int i=1;i<numbofvertices;i++){
	  nu<<i;
	  cout<<"a"<<endl;
	  string name="Vertices="+nu.str();
	  IsoEcalplotsBarrelNotRemoved[i-1]->SetMarkerColor(i);
	  IsoEcalplotsBarrelNotRemoved[i-1]->Sumw2();
	  IsoEcalplotsBarrelNotRemoved[i-1]->SetLineColor(i);
	  cout<<"aa"<<endl;
	  double plotentries=1.0/(double)IsoEcalplotsBarrelNotRemoved[i-1]->GetEntries();
	  IsoEcalplotsBarrelNotRemoved[i-1]->Scale(plotentries);
	  if (i==1){
	  cout<<"ab"<<endl;
	    //TPaveStats *r7 = (TPaveStats*)IsoEcalplotsBarrelNotRemoved[i-1]->FindObject("stats");
	    //r7->SetOptStat(0);
	    IsoEcalplotsBarrelNotRemoved[i-1]->SetTitle("Comparison between PU Not Removed distributions");
	    IsoEcalplotsBarrelNotRemoved[i-1]->GetXaxis()->SetTitle("IsoECAL Barrel");
	    IsoEcalplotsBarrelNotRemoved[i-1]->GetYaxis()->SetTitle("Fraction of Events");
	    IsoEcalplotsBarrelNotRemoved[i-1]->Draw("E1");
	    lege->AddEntry( IsoEcalplotsBarrelNotRemoved[i-1],name.c_str(),"p");
	  }
	  else{
	  cout<<"ac"<<endl;
	    IsoEcalplotsBarrelNotRemoved[i-1]->Draw("E1 SAMES");
	    lege->AddEntry( IsoEcalplotsBarrelNotRemoved[i-1],name.c_str(),"p");
	  }
	  nu.clear();
	  nu.str("");
	}
	ComparisonNotRemoved->Update();
	lege->SetBorderSize(0);
	lege->SetEntrySeparation(0.01);
	lege->SetFillColor(0);
	lege->Draw();

      	ComparisonNotRemoved->Print("AllNotRemoved.png");
	
	return;

}
vector<TH1*> PlotsFeeder::Loop(int NumOfVtx)
{
//   In a ROOT session, you can do:
//      Root > .L PlotsFeeder.C
//      Root > PlotsFeeder t
//      Root > t.GetEntry(12); // Fill t data members with entry number 12
//      Root > t.Show();       // Show values of entry 12
//      Root > t.Show(16);     // Read and show values of entry 16
//      Root > t.Loop();       // Loop on all entries
//

//     This is the loop skeleton where:
//    jentry is the global entry number in the chain
//    ientry is the entry number in the current Tree
//  Note that the argument to GetEntry must be:
//    jentry for TChain::GetEntry
//    ientry for TTree::GetEntry and TBranch::GetEntry
//
//       To read only selected branches, Insert statements like:
// METHOD1:
//    fChain->SetBranchStatus("*",0);  // disable all branches
//    fChain->SetBranchStatus("branchname",1);  // activate branchname
// METHOD2: replace line
//    fChain->GetEntry(jentry);       //read all branches
//by  b_branchname->GetEntry(ientry); //read only this branch

	vector<TH1 *> vHistograms;

//DS! PER IL MOMENTO LI LASCIO TUTTI, SE POI DECIDIAMO EFFETTIVAMENTE DI TENERE SOLO LE 3 ISO, 
//QUESTA MACRO È MEGLIO INTEGRARLA CON LA PlotsFeeder.C 
//(e modificare di conseguenza anche la DataMCValidation.C per far sparire la DataMCValidationPUR.C

	//EB Reweight
	TH1D * h_IsoTrk_EBR_PUR; 
	TH1D * h_IsoEcal_EBR_PUR;
	TH1D * h_IsoHcal_EBR_PUR;
	TH1D * h_HE_EBR;
	TH1F * h_DeltaPhiTkClu_EBR;
	TH1F * h_DeltaEtaTkClu_EBR;
	TH1F * h_sigmaIeIe_EBR;
	//EB Reweight
	h_IsoTrk_EBR_PUR = new TH1D("h_IsoTrk_EBR_PUR","IsoTrk_PUR",36,0.,0.09);
	h_IsoEcal_EBR_PUR = new TH1D("h_IsoEcal_EBR_PUR","IsoEcal_PUR",28,0.,0.07);
	h_IsoHcal_EBR_PUR = new TH1D("h_IsoHcal_EBR_PUR","IsoHcal_PUR",40,0.,0.10);
	/*h_IsoTrk_EBR_PUR = new TH1D("h_IsoTrk_EBR_PUR","IsoTrk_PUR",20,0.,0.20);
	h_IsoEcal_EBR_PUR = new TH1D("h_IsoEcal_EBR_PUR","IsoEcal_PUR",20,0.,0.20);
	h_IsoHcal_EBR_PUR = new TH1D("h_IsoHcal_EBR_PUR","IsoHcal_PUR",20,0.,0.20);*/
	h_HE_EBR = new TH1D("h_HE_EBR","H/E",20,0.,0.20);
	h_DeltaPhiTkClu_EBR = new TH1F("h_DeltaPhiTkClu_EBR","DeltaPhiTkClu",20,0.,0.2);
	h_DeltaEtaTkClu_EBR = new TH1F("h_DeltaEtaTkClu_EBR","DeltaEtaTkClu",20,0.,.05);
	h_sigmaIeIe_EBR = new TH1F("h_sigmaIeIe_EBR","sigmaIeIe",20,0.,0.1);

	/*=========================*/

	//EE Reweight
	TH1D * h_IsoTrk_EER_PUR; 
	TH1D * h_IsoEcal_EER_PUR;
	TH1D * h_IsoHcal_EER_PUR;
	TH1D * h_HE_EER;
	TH1F * h_DeltaPhiTkClu_EER;
	TH1F * h_DeltaEtaTkClu_EER;
	TH1F * h_sigmaIeIe_EER;
	//EE Reweight
	h_IsoTrk_EER_PUR = new TH1D("h_IsoTrk_EER_PUR","IsoTrk",16,0.,0.04);
	h_IsoEcal_EER_PUR = new TH1D("h_IsoEcal_EER_PUR","IsoEcal",20,0.,0.05);
	h_IsoHcal_EER_PUR = new TH1D("h_IsoHcal_EER_PUR","IsoHcal",10,0.,0.025);
	/*h_IsoTrk_EER_PUR = new TH1D("h_IsoTrk_EER_PUR","IsoTrk",20,0.,0.20);
	h_IsoEcal_EER_PUR = new TH1D("h_IsoEcal_EER_PUR","IsoEcal",20,0.,0.20);
	h_IsoHcal_EER_PUR = new TH1D("h_IsoHcal_EER_PUR","IsoHcal",20,0.,0.20);*/
	h_HE_EER = new TH1D("h_HE_EER","H/E",20,0.,0.20);
	h_DeltaPhiTkClu_EER = new TH1F("h_DeltaPhiTkClu_EER","DeltaPhiTkClu",20,0.,0.2);
	h_DeltaEtaTkClu_EER = new TH1F("h_DeltaEtaTkClu_EER","DeltaEtaTkClu",20,0.,.05);
	h_sigmaIeIe_EER = new TH1F("h_sigmaIeIe_EER","sigmaIeIe",20,0.,0.1);

	/*=========================*/

	if (fChain == 0){ cout << " something went wrong in PlotsFeeder "; return vHistograms;}

	Long64_t nentries = fChain->GetEntriesFast();

	Long64_t nbytes = 0, nb = 0;
	for (Long64_t jentry=0; jentry<nentries;jentry++) {
		Long64_t ientry = LoadTree(jentry);
		if (ientry < 0) break;
		nb = fChain->GetEntry(jentry);   nbytes += nb;
		// if (Cut(ientry) < 0) continue;

		if(numberOfVertices==NumOfVtx){

			if (IsoTrkEB_PUR->size()>0) {
				for (unsigned int i=0; i<IsoTrkEB_PUR->size();i++){
					float var=IsoTrkEB_PUR->at(i);
					h_IsoTrk_EBR_PUR->Fill(var,Weight);
				}
			} 
			if (IsoEcalEB_PUR->size()>0) {
				for (unsigned int i=0; i<IsoEcalEB_PUR->size();i++){
					float var=IsoEcalEB_PUR->at(i);
					h_IsoEcal_EBR_PUR->Fill(var,Weight);
				}
			}
			if (IsoHcalEB_PUR->size()>0) {
				for (unsigned int i=0; i<IsoEcalEB_PUR->size();i++){
					float var=IsoHcalEB_PUR->at(i);
					h_IsoHcal_EBR_PUR->Fill(var,Weight);
				}
			}
			if (HEEB->size()>0) {
				for (unsigned int i=0; i<HEEB->size();i++){
					float var=HEEB->at(i);
					h_HE_EBR->Fill(var,Weight);
				}
			}
			if (DeltaPhiTkCluEB->size()>0) {
				for (unsigned int i=0; i<DeltaPhiTkCluEB->size();i++){
					float var=DeltaPhiTkCluEB->at(i);
					h_DeltaPhiTkClu_EBR->Fill(var,Weight);
				}
			}
			if (DeltaEtaTkCluEB->size()>0) {
				for (unsigned int i=0; i<DeltaEtaTkCluEB->size();i++){
					float var=DeltaEtaTkCluEB->at(i);
					h_DeltaEtaTkClu_EBR->Fill(var,Weight);
				}
			}
			if (sigmaIeIeEB->size()>0) {
				for (unsigned int i=0; i<sigmaIeIeEB->size();i++){
					float var=sigmaIeIeEB->at(i);
					h_sigmaIeIe_EBR->Fill(var,Weight);
				}
			}

			//==== EE ====//

			if (IsoTrkEE_PUR->size()>0) {
				for (unsigned int i=0; i<IsoTrkEE_PUR->size();i++){
					float var=IsoTrkEE_PUR->at(i);
					h_IsoTrk_EER_PUR->Fill(var,Weight);
				}
			}
			if (IsoEcalEE_PUR->size()>0) {
				for (unsigned int i=0; i<IsoEcalEE_PUR->size();i++){
					float var=IsoEcalEE_PUR->at(i);
					h_IsoEcal_EER_PUR->Fill(var,Weight);
				}
			}
			if (IsoHcalEE_PUR->size()>0) {
				for (unsigned int i=0; i<IsoHcalEE_PUR->size();i++){
					float var=IsoHcalEE_PUR->at(i);
					h_IsoHcal_EER_PUR->Fill(var,Weight);
				}
			}
			if (HEEE->size()>0) {
				for (unsigned int i=0; i<HEEE->size();i++){
					float var=HEEE->at(i);
					h_HE_EER->Fill(var,Weight);
				}
			}
			if (DeltaPhiTkCluEE->size()>0) {
				for (unsigned int i=0; i<DeltaPhiTkCluEE->size();i++){
					float var=DeltaPhiTkCluEE->at(i);
					h_DeltaPhiTkClu_EER->Fill(var,Weight);
				}
			}
			if (DeltaEtaTkCluEE->size()>0) {
				for (unsigned int i=0; i<DeltaEtaTkCluEE->size();i++){
					float var=DeltaEtaTkCluEE->at(i);
					h_DeltaEtaTkClu_EER->Fill(var,Weight);
				}
			}
			if (sigmaIeIeEE->size()>0) {
				for (unsigned int i=0; i<sigmaIeIeEE->size();i++){
					float var=sigmaIeIeEE->at(i);
					h_sigmaIeIe_EER->Fill(var,Weight);
				}
			}
		}
	}

	vHistograms.push_back(h_IsoTrk_EBR_PUR); 
	vHistograms.push_back(h_IsoEcal_EBR_PUR);
	vHistograms.push_back(h_IsoHcal_EBR_PUR);
	vHistograms.push_back(h_HE_EBR);
	vHistograms.push_back(h_DeltaPhiTkClu_EBR);
	vHistograms.push_back(h_DeltaEtaTkClu_EBR);
	vHistograms.push_back(h_sigmaIeIe_EBR);
	
	vHistograms.push_back(h_IsoTrk_EER_PUR); 
	vHistograms.push_back(h_IsoEcal_EER_PUR);
	vHistograms.push_back(h_IsoHcal_EER_PUR);
	vHistograms.push_back(h_HE_EER);
	vHistograms.push_back(h_DeltaPhiTkClu_EER);
	vHistograms.push_back(h_DeltaEtaTkClu_EER);
	vHistograms.push_back(h_sigmaIeIe_EER);
	


//===================================//
//=========== DEBUG AREA ============//
//===================================//

	bool debug=0;
	if(debug==1){

		TCanvas * EB_plots;
		TCanvas * EE_plots;

		//EB - Create a Canvas and divide it in Pads
		EB_plots = new TCanvas("EB_plots","EB",400,20,1200,800);
		EB_plots->Divide(4,2);

		//First histogram
		EB_plots->cd(1);
		h_IsoTrk_EBR_PUR->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_IsoTrk_EBR_PUR->SetLineColor(1);
		h_IsoTrk_EBR_PUR->Draw();

		//WP Lines and Legend
		TLegend *leg = new TLegend(0.4,0.55,0.8,0.9);
		leg->SetBorderSize(0);
		leg->SetEntrySeparation(0.01);
		leg->SetFillColor(0);
		leg->AddEntry(h_IsoTrk_EBR_PUR,"MC Reweighted and PUR","l");
		TLine *Line80 = new TLine(0.09,0.,0.09,h_IsoTrk_EBR_PUR->GetMaximum());
		Line80->SetLineColor(kBlue);
		Line80->SetLineStyle(2);
		Line80->Draw();
		leg->AddEntry(Line80,"WP 80","l");
		TLine *Line90 = new TLine(0.12,0.,0.12,h_IsoTrk_EBR_PUR->GetMaximum());
		Line90->SetLineColor(kBlack);
		Line90->SetLineStyle(2);
		Line90->Draw();
		leg->AddEntry(Line90,"WP 90","l");
		leg->Draw();


		//Second histogram
		EB_plots->cd(2);
		h_IsoEcal_EBR_PUR->GetYaxis()->SetTitle("Number of Events");
		h_IsoEcal_EBR_PUR->Draw();
		BLine(0.07,0.,0.07,h_IsoEcal_EBR_PUR->GetMaximum());
		MLine(0.09,0.,0.09,h_IsoEcal_EBR_PUR->GetMaximum());

		EB_plots->cd(3);
		h_IsoHcal_EBR_PUR->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_IsoHcal_EBR_PUR->SetLineColor(1);
		h_IsoHcal_EBR_PUR->Draw();
		BLine(0.10,0.,0.10,h_IsoHcal_EBR_PUR->GetMaximum());
		MLine(0.10,0.,0.10,h_IsoHcal_EBR_PUR->GetMaximum());

		EB_plots->cd(4);
		h_HE_EBR->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_HE_EBR->SetLineColor(1);
		h_HE_EBR->Draw();
		BLine(0.04,0.,0.04,h_HE_EBR->GetMaximum());
		MLine(0.12,0.,0.12,h_HE_EBR->GetMaximum());

		EB_plots->cd(5);
		h_DeltaPhiTkClu_EBR->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_DeltaPhiTkClu_EBR->SetLineColor(1);
		h_DeltaPhiTkClu_EBR->Draw();
		BLine(0.06,0.,0.06,h_DeltaPhiTkClu_EBR->GetMaximum());
		MLine(0.8,0.,0.8,h_DeltaPhiTkClu_EBR->GetMaximum());

		EB_plots->cd(6);
		h_DeltaEtaTkClu_EBR->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_DeltaEtaTkClu_EBR->SetLineColor(1);
		h_DeltaEtaTkClu_EBR->Draw();
		BLine(0.004,0.,0.004,h_DeltaEtaTkClu_EBR->GetMaximum());
		MLine(0.007,0.,0.007,h_DeltaEtaTkClu_EBR->GetMaximum());

		EB_plots->cd(7);
		h_sigmaIeIe_EBR->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_sigmaIeIe_EBR->SetLineColor(1);
		h_sigmaIeIe_EBR->Draw();
		BLine(0.004,0.,0.004,h_sigmaIeIe_EBR->GetMaximum());
		MLine(0.007,0.,0.007,h_sigmaIeIe_EBR->GetMaximum());


		/*============================*/

		// qua dei draw copi diretto da all plots
		//EE - Create a Canvas and divide it in Pads
		EE_plots = new TCanvas("EE_plots","EE",400,20,1200,800);
		EE_plots->Divide(4,2);

		//First histogram
		EE_plots->cd(1);
		h_IsoTrk_EER_PUR->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_IsoTrk_EER_PUR->SetLineColor(1);
		h_IsoTrk_EER_PUR->Draw();

		//WP Lines and Legend
		TLegend *leg2 = new TLegend(0.4,0.55,0.8,0.9);
		leg2->SetBorderSize(0);
		leg2->SetEntrySeparation(0.01);
		leg2->SetFillColor(0);
		leg2->AddEntry(h_IsoTrk_EER_PUR,"MC Reweighted and PUR","l");
		Line80->SetLineColor(kBlue);
		Line80->SetLineStyle(2);
		Line80->Draw();
		leg2->AddEntry(Line80,"WP 80","l");
		Line90->SetLineColor(kBlack);
		Line90->SetLineStyle(2);
		Line90->Draw();
		leg2->AddEntry(Line90,"WP 90","l");
		leg2->Draw();


		//Second histogram
		EE_plots->cd(2);
		h_IsoEcal_EER_PUR->GetYaxis()->SetTitle("Number of Events");
		h_IsoEcal_EER_PUR->SetLineColor(1);
		h_IsoEcal_EER_PUR->Draw();
		BLine(0.07,0.,0.07,h_IsoEcal_EER_PUR->GetMaximum());
		MLine(0.09,0.,0.09,h_IsoEcal_EER_PUR->GetMaximum());

		EE_plots->cd(3);
		h_IsoHcal_EER_PUR->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_IsoHcal_EER_PUR->SetLineColor(1);
		h_IsoHcal_EER_PUR->Draw();
		BLine(0.10,0.,0.10,h_IsoHcal_EER_PUR->GetMaximum());
		MLine(0.10,0.,0.10,h_IsoHcal_EER_PUR->GetMaximum());

		EE_plots->cd(4);
		h_HE_EER->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_HE_EER->SetLineColor(1);
		h_HE_EER->Draw();
		BLine(0.04,0.,0.04,h_HE_EER->GetMaximum());
		MLine(0.12,0.,0.12,h_HE_EER->GetMaximum());

		EE_plots->cd(5);
		h_DeltaPhiTkClu_EER->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_DeltaPhiTkClu_EER->SetLineColor(1);
		h_DeltaPhiTkClu_EER->Draw();
		BLine(0.06,0.,0.06,h_DeltaPhiTkClu_EER->GetMaximum());
		MLine(0.8,0.,0.8,h_DeltaPhiTkClu_EER->GetMaximum());

		EE_plots->cd(6);
		h_DeltaEtaTkClu_EER->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_DeltaEtaTkClu_EER->SetLineColor(1);
		h_DeltaEtaTkClu_EER->Draw();
		BLine(0.004,0.,0.004,h_DeltaEtaTkClu_EER->GetMaximum());
		MLine(0.007,0.,0.007,h_DeltaEtaTkClu_EER->GetMaximum());

		EE_plots->cd(7);
		h_sigmaIeIe_EER->GetYaxis()->SetTitle("Number of Events");
		gPad->SetLogy(1);
		h_sigmaIeIe_EER->SetLineColor(1);
		h_sigmaIeIe_EER->Draw();
		BLine(0.004,0.,0.004,h_sigmaIeIe_EER->GetMaximum());
		MLine(0.007,0.,0.007,h_sigmaIeIe_EER->GetMaximum());

	}

return  vHistograms;

}
Example #5
0
void mkChanCorrPlots( void )
{
    Float_t meancopo[kNfls];
    Float_t meancrspo[kNfls];
    Float_t rmscopo[kNfls];
    Float_t rmscrspo[kNfls];

    TFile* fout = TFile::Open( outfn, "recreate" );

    TGraphErrors* gCopo02 = new TGraphErrors;
    TGraphErrors* gCopo13 = new TGraphErrors;
    
    TGraphErrors* gCrspo02 = new TGraphErrors;
    TGraphErrors* gCrspo13 = new TGraphErrors;

    for( UChar_t f = 0; f < kNfls; f++ )
    {
        Float_t mean[kNChCmb];
        Float_t rms[kNChCmb];

        TFile* ifl = TFile::Open( infn[f] );
 
        for( UChar_t c = 0; c < NSnConstants::kNchans; c++ )
        {
            for( UChar_t c2 = c + 1; c2 < NSnConstants::kNchans; c2++ )
            {
                TH1F* h = dynamic_cast<TH1F*>(ifl->Get(Form("hCC%d%d", c, c2)));

                UInt_t idx  = TSnRecoChanOffsets::IndexFor(c2, c);
                mean[idx]   = h->GetMean( );
                rms[idx]    = h->GetRMS( );
            }
        }

        meancopo[f]     = mean[TSnRecoChanOffsets::IndexFor(copoC[f] + 2, 
                                                                   copoC[f])];
        meancrspo[f]    = mean[TSnRecoChanOffsets::IndexFor(crspoC[f] + 2, 
                                                                   crspoC[f])];

        rmscopo[f]      = rms[TSnRecoChanOffsets::IndexFor(copoC[f] + 2, 
                                                                   copoC[f])];
        rmscrspo[f]     = rms[TSnRecoChanOffsets::IndexFor(crspoC[f] + 2, 
                                                                   crspoC[f])];

        Printf( "co po mean: %f rms: %f run: %u", meancopo[f], rmscopo[f], 
                                                                    y[f] );
        Printf( "cross po mean: %f rms: %f run: %u\n", meancrspo[f], 
                                                        rmscrspo[f], y[f] );

        ifl->Close( );
    }

//    Float_t y[kNfls]    = { 1., 1., 1., 1., 1., 1., 1., 1. };
    Float_t ye[kNfls]   = { 0., 0., 0., 0., 0., 0., 0., 0. }; 

    fout->cd( );

    UInt_t nc0 = 0;
    UInt_t nc1 = 0;

    for( UChar_t f = 0; f < kNfls; f++ )
    {
        if( copoC[f] == 0 && crspoC[f] == 1 )
        {
            gCopo02->SetPoint( nc0, meancopo[f], 0. );
            gCrspo13->SetPoint( nc0, meancrspo[f], 0. );

            gCrspo13->SetPointError( nc0, rmscrspo[f], ye[f] );
            gCopo02->SetPointError( nc0++, rmscopo[f], ye[f] );

            gCopo02->SetMarkerColor( kRed );
            gCopo02->SetLineColor( kRed );
            gCopo02->GetHistogram()->SetMinimum( -0.5 );
            gCopo02->GetHistogram()->SetMaximum( 1.5 );

            gCrspo13->SetMarkerColor( kRed );
            gCrspo13->SetLineColor( kRed );
            gCrspo13->GetHistogram()->SetMinimum( -0.5 );
            gCrspo13->GetHistogram()->SetMaximum( 1.5 );
        }            
        if( copoC[f] == 1 && crspoC[f] == 0 )
        {
            gCopo13->SetPoint( nc1, meancopo[f], 1. );
            gCrspo02->SetPoint( nc1, meancrspo[f], 1. );

            gCrspo02->SetPointError( nc1, rmscrspo[f], ye[f] );
            gCopo13->SetPointError( nc1++, rmscopo[f], ye[f] );

            gCopo13->SetMarkerColor( kBlack );
            gCopo13->SetLineColor( kBlack );
            gCopo13->GetHistogram()->SetMinimum( -0.5 );
            gCopo13->GetHistogram()->SetMaximum( 1.5 );

            gCrspo02->SetMarkerColor( kBlack );
            gCrspo02->SetLineColor( kBlack );
            gCrspo02->GetHistogram()->SetMinimum( -0.5 );
            gCrspo02->GetHistogram()->SetMaximum( 1.5 );
        }
    }

    TLegend* leg = new TLegend( 0.258, 0.742, 0.410, 0.993 );
    leg->SetBorderSize( 0 );
    leg->SetFillColor( 0 );

    TLegend* legcr = new TLegend( 0.258, 0.742, 0.410, 0.993 );
    legcr->SetBorderSize( 0 );
    legcr->SetFillColor( 0 );
    legcr->SetFillStyle( 0 );
    legcr->SetEntrySeparation( 0.01 );
    legcr->SetTextSize( 0.04 );
//    gCopo = new TGraphErrors( kNfls, meancopo, y, rmscopo, ye );
    TCanvas* c = new TCanvas( "c", "", 800, 400 );
    c->Divide( 2, 1 );

    c->cd( 1 );
    gCopo02->SetName( "gcopoCC02" );
    gCopo02->Draw( "AP*" );
    gCopo13->Draw( "P*" );

    leg->AddEntry( gCopo02, "Ch 0 & Ch 2 Co. Po.", "lp" );
    leg->AddEntry( gCopo13, "Ch 1 & Ch 3 Co. Po.", "lp" );
    leg->Draw( );

    gCopo02->Write( ); 

    c->cd( 2 );
    gCrspo13->SetName( "gcrspoCC13" );
    gCrspo13->Draw( "AP*" );
    gCrspo13->GetXaxis()->SetLimits( 0.45, 0.85 );

    gCrspo02->SetName( "gcrspoCC02" );
    gCrspo02->Draw( "P*" );

    legcr->AddEntry( gCrspo13, "Ch 1 & Ch 3 Cross Po.", "lp" );
    legcr->AddEntry( gCrspo02, "Ch 0 & Ch 2 Cross Po.", "lp" );
    legcr->Draw( );

    gCrspo13->Write( ); 


    TCanvas* c2 = new TCanvas( "c2", "", 800, 800 );
    c2->cd( 1 );
    gCopo13->SetName( "gcopoCC13" );
    gCopo13->Draw( "AP*" );
    gCopo13->Write( );

//    fout->Write( );
    fout->Close( );
} 
void AnalyzeBKGShape(TString folder, TString sample1, TString sample2){
	gStyle->SetOptStat(000000);
	
	TH1::SetDefaultSumw2();
	
	TFile *f= TFile::Open("/Users/Tita/Desktop/analysis_HH_bbTauTau/src/HHbbTauTau/data/datacards_TauTau_ZTT/htt_tt.inputs-Hhh-8TeV_m_ttbb_kinfit_KinFitConvergedWithMassWindow.root");
	

	
	TH1D *histoDY = (TH1D*)f->Get((folder+"/"+sample1));
	TH1D *histoTT = (TH1D*)f->Get((folder+"/"+sample2));
	
		
	TCanvas * c1 = new TCanvas("c1","c1", 800,800);

	histoDY->SetLineColor(kBlue);
	histoDY->SetMarkerColor(kBlue);
	histoDY->SetMarkerStyle(20);
	

	histoTT->SetLineColor(kRed);
	histoTT->SetMarkerColor(kRed);
	histoTT->SetMarkerStyle(20);

	
	
	
	
    // double error_histo = 0;
//     double integral_histo = histo->IntegralAndError(1, histo->GetNbinsX(),error_histo);
//     cout<<"--------------------------------------------------------------"<<sample<<"--------------------------------------------------------------"<<endl;
//     cout<<"*************"<<folder<<"  "<<sample<<"*************"<<endl;
//     cout<<" MC Shape "<<integral_histo<<"   ----  "<<error_histo<<endl;
//     cout<<" MC Shape Loose B "<<histoBLoose->Integral()<<endl;
//     cout<<" MC Shape Loose B + Relax Tau Iso "<<histoBLooseTauLoose->Integral()<<endl;
    
    
//     histoBLooseTauLoose->Scale(1/(histoBLooseTauLoose->Integral()));
    // histoTT->Scale(1/(histoTT->Integral()));
//     histoDY->Scale(1/(histoDY->Integral()));
	
	cout << "Integral DY = " << histoDY->Integral() << ", Integral TT = " << histoTT->Integral() << endl;
	cout << "percentage = " << histoTT->Integral()/histoDY->Integral() << endl;
    
    histoDY->Draw("");
    histoTT->Draw("same");
    
//     histoBLooseTauLoose->Draw("same");
    
    

    
    // cout<<"--------------------------------------------------------------KS   "<<sample<<"--------------------------------------------------------------"<<endl;
//     cout<<"*************"<<folder<<"  "<<sample<<"*************"<<endl;
//     cout<<" Kolmogorov Test "<<histoDY->KolmogorovTest(histoBLoose,"")<<endl;
	histoDY->SetTitle("M_{H}");
	histoDY->GetXaxis()->SetTitle("M_{H} [GeV]");
	histoDY->GetYaxis()->SetTitleOffset(1.5);
	histoDY->GetYaxis()->SetTitle("N Events");
	
	
	
		
	
	TLegend* legend = new TLegend(0.6, 0.65, 0.99, 0.9);
	legend->SetFillColor(0);
	legend->SetTextSize(0.05);
	legend->SetEntrySeparation(0.05);
	legend->AddEntry(histoDY, " DY embedded ");
	legend->AddEntry(histoTT, " TT embedded ");
	//legend->AddEntry(histoBLooseTauLoose, " No Btagging, TauIso<1 ");
	
	legend->Draw();
	
	c1->SaveAs("./plots_embedded/"+folder+"_embComparison.eps");
}
Example #7
0
void DataMCComp6(int irun=0, string title="", int plot=0) {

int unfold=0; // use pre-unfolding distributions
//int unfold=1; // use unfolded distributions

//int drawInclusive = 0; // do not plot the "inclusive" histogram
int drawInclusive = 1; // do plot the "inclusive" histogram

string subdir="0";
string postfix="";
if (irun==1) {             // irun==1 => JEC Up
  subdir="1";
  postfix="Up";
}
if (irun==2) {             // irun==2 => JEC Down
  subdir="2";
  postfix="Down";
}
if (irun==3) {             // irun==3 => PU Up
  subdir="3";
  postfix="Pup";
}
if (irun==4) {             // irun==4 => PU Down
  subdir="4";
  postfix="Pum";
}
if (irun==5) {             // irun==5 => top bkg
  subdir="5";
  postfix="";  
}
if (irun==6) {             // irun==6 => b purity
  subdir="6";
  postfix="";   
}
if (irun==7) {             // irun==7 => unfolding
  subdir="7";
  postfix="";   
}
if (irun==8) {             // irun==8 => unfolding with Sherpa
  subdir="8";
  postfix="";
}
if (irun==9) {             // irun==9 => unfolding with Powheg
  subdir="9";
  postfix="";
}
if (irun==10) {            // irun==10 => bkg systematics
  subdir="10";
  postfix="";
}
if (irun==11) {            // irun==11 => JER Up
  subdir="11";
  postfix="JerUp";
}
if (irun==12) {            // irun==12 => JER Down
  subdir="12";
  postfix="JerDown";
}
if (irun==13) {            // irun==13 => bkg statistics
  subdir="13";
  postfix="";
}
if (irun==14) {            // irun==14 => unfolding with data weight
  subdir="14";
  postfix="";
}
if (irun==15) {            // irun==15 => qcd bkg
  subdir="15";
  postfix="";
}
if (irun==77) {            // irun==77 => unfolding with MadGraph 4FS
  subdir="77";
  postfix="";
}
if (irun==88) {            // irun==88 => deltaR
  subdir="88";
  postfix="DR";
}
if (irun==99) {            // irun==99 => pur
  subdir="99";
  postfix="Pur";
}

        string title_e = title;
        string title_m = title;

        if (title=="w_mt_b") {
	  title_e = "w_mt_wenu_b";
	  title_m = "w_mt_wmnu_b";
	}

        if (title=="w_delta_b") {
	  title_e = "w_delta_wenu_b";
	  title_m = "w_delta_wmnu_b";
	}

        if (title=="w_deltaR_b") {
	  title_e = "w_deltaR_wenu_b";
	  title_m = "w_deltaR_wmnu_b";
	}

	if (title=="w_pt_W_b") {
	  title_e = "w_pt_W_wenu_b";
	  title_m = "w_pt_W_wmnu_b";
	}

	if (title=="w_eta_W_b") {
	  title_e = "w_eta_W_wenu_b";
	  title_m = "w_eta_W_wmnu_b";
	}

        string title_e_b = title_e;
        string title_m_b = title_m;

        if (title.find("_bjet_")!=string::npos) {
          title_e.erase(title_e.find("_bjet_")+1, 1);
          title_m.erase(title_m.find("_bjet_")+1, 1);
        } else {
	  title_e_b = title_e_b + "b";
	  title_m_b = title_m_b + "b";
	}

        TFile* f_e;
        TFile* f_e_b;
        if (unfold) {
           f_e = TFile::Open((path + "/electrons/" + version + "/" + subdir + "/unfolding/" + title_e + "_unfolding.root").c_str());
           f_e_b = TFile::Open((path + "/electrons/" + version + "/" + subdir + "/unfolding/" + title_e_b + "_unfolding.root").c_str());
        } else {
          f_e = TFile::Open((path + "/electrons/" + version + "/" + subdir + "/xsecs/" + title_e_b + "_xsecs.root").c_str());
          f_e_b = TFile::Open((path + "/electrons/" + version + "/" + subdir + "/xsecs/" + title_e_b + "_xsecs.root").c_str());
        }
        TH1F* h_data_e = (TH1F*)f_e->Get(title_e.c_str())->Clone();
        TH1F* h_data_e_b = (TH1F*)f_e_b->Get(title_e_b.c_str())->Clone();
        h_data_e->SetDirectory(0);
        h_data_e_b->SetDirectory(0);
        f_e->Close();
        f_e_b->Close();

        TFile* f_m;
        TFile* f_m_b;
        if (unfold) {
          f_m = TFile::Open((path + "/muons/" + version + "/" + subdir + "/unfolding/" + title_m + "_unfolding.root").c_str());
          f_m_b= TFile::Open((path + "/muons/" + version + "/" + subdir + "/unfolding/" + title_m_b + "_unfolding.root").c_str());
        } else {
          f_m= TFile::Open((path + "/muons/" + version + "/" + subdir + "/xsecs/" + title_m_b + "_xsecs.root").c_str());
          f_m_b= TFile::Open((path + "/muons/" + version + "/" + subdir + "/xsecs/" + title_m_b + "_xsecs.root").c_str());
        }
        TH1F* h_data_m = (TH1F*)f_m->Get(title_m.c_str())->Clone();
        TH1F* h_data_m_b = (TH1F*)f_m_b->Get(title_m_b.c_str())->Clone();
        h_data_m->SetDirectory(0);
        h_data_m_b->SetDirectory(0);
        f_m->Close();
        f_m_b->Close();

        h_data_e->SetStats(0);
        h_data_e_b->SetStats(0);
        h_data_m->SetStats(0);
        h_data_m_b->SetStats(0);

	if (unfold) {
	  h_data_e->Scale(1./Lumi2012_ele, "width");
	  h_data_e_b->Scale(1./Lumi2012_ele, "width");
	  h_data_m->Scale(1./Lumi2012_muon, "width");
	  h_data_m_b->Scale(1./Lumi2012_muon, "width");
	}

        TCanvas* c1 = new TCanvas("c", "c", 800, 600);
        c1->cd();

        TPad *pad1 = new TPad("pad1","pad1",0.0,0.3,1.0,1.0);
        pad1->SetBottomMargin(0.001);
        pad1->Draw();
        pad1->cd();
        pad1->SetLogy();

        h_data_e->SetTitle("");
        h_data_e_b->SetTitle("");

        h_data_e->GetYaxis()->SetTitle("#sigma [pb]");

        h_data_e->SetMarkerStyle(20);
        h_data_e->SetMarkerSize(0.7);
        h_data_e->SetMarkerColor(kRed);
        h_data_e->SetLineColor(kRed);
        h_data_e_b->SetMarkerStyle(24);
        h_data_e_b->SetMarkerSize(0.7);
        h_data_e_b->SetMarkerColor(kRed);
        h_data_e_b->SetLineColor(kRed);
        h_data_m->SetMarkerStyle(20);
        h_data_m->SetMarkerSize(0.7);
        h_data_m->SetMarkerColor(kBlue);
        h_data_m->SetLineColor(kBlue);
        h_data_m_b->SetMarkerStyle(24);
        h_data_m_b->SetMarkerSize(0.7);
        h_data_m_b->SetMarkerColor(kBlue);
        h_data_m_b->SetLineColor(kBlue);

	if (drawInclusive) {
	  h_data_e_b->SetMaximum(4*h_data_e->GetMaximum());
	} else {
	  h_data_e_b->SetMaximum(4*h_data_e_b->GetMaximum());
	}
        h_data_e_b->SetMinimum(TMath::Max(0.002,0.25*h_data_e_b->GetBinContent(h_data_e_b->GetMinimumBin())));
	if (title.find("_mt")!=string::npos) h_data_e_b->SetMinimum(TMath::Max(0.00002,0.25*h_data_e_b->GetBinContent(h_data_e_b->GetMinimumBin())));
	if (title.find("_pt")!=string::npos) h_data_e_b->SetMinimum(TMath::Max(0.000004,0.25*h_data_e_b->GetBinContent(h_data_e_b->GetMinimumBin())));
	if (title.find("_mass")!=string::npos) h_data_e_b->SetMinimum(TMath::Max(0.0002,0.25*h_data_e_b->GetBinContent(h_data_e_b->GetMinimumBin())));

        h_data_e_b->Draw("E0PX");
        if (drawInclusive) h_data_e->Draw("E0PXSAME");
        h_data_m_b->Draw("E0PXSAME");
        if (drawInclusive) h_data_m->Draw("E0PXSAME");

        TLegend *leg = new TLegend(0.62, 0.580, 0.88, 0.88);
        leg->SetBorderSize(0);
        leg->SetEntrySeparation(0.01);
        leg->SetFillColor(0);
        leg->SetFillStyle(0);

        leg->AddEntry(h_data_e_b,"W(#rightarrow e#nu)+2b DATA","p");
        if (drawInclusive) leg->AddEntry(h_data_e,"W(#rightarrow e#nu)+1b DATA","p");
        leg->AddEntry(h_data_m_b,"W(#rightarrow #mu#nu)+2b DATA","p");
        if (drawInclusive) leg->AddEntry(h_data_m,"W(#rightarrow #mu#nu)+1b DATA","p");

        leg->Draw();

        pad1->Update();
        c1->Update();

        c1->cd();

        TLatex *latexLabel = CMSPrel((Lumi2012_ele+Lumi2012_muon)/2./1000.,"",0.15,0.94);
        latexLabel->Draw("same");

        TPad *pad2 = new TPad("pad2","pad2",0,0,1,0.3);
        pad2->SetTopMargin(0);
        pad2->SetBottomMargin(0.3);
        pad2->Draw();
        pad2->cd();

        TH1F* h_ratio = (TH1F*)h_data_e->Clone("h_ratio");
        TH1F* h_ratio_b = (TH1F*)h_data_e_b->Clone("h_ratio_b");
        h_ratio->Divide(h_data_m);
        h_ratio_b->Divide(h_data_m_b);

        h_ratio_b->SetTitle("");

        h_ratio_b->GetXaxis()->SetTitleOffset(0.9);
        h_ratio_b->GetXaxis()->SetTitleSize(0.1);
        h_ratio_b->GetXaxis()->SetLabelFont(42);
        h_ratio_b->GetXaxis()->SetLabelSize(0.08);
        h_ratio_b->GetXaxis()->SetTitleFont(42);
        h_ratio_b->GetYaxis()->SetTitle("Electrons/Muons");
        h_ratio_b->GetYaxis()->SetNdivisions(505);
        h_ratio_b->GetYaxis()->SetTitleSize(0.09);
        h_ratio_b->GetYaxis()->SetLabelSize(0.08);
        h_ratio_b->GetYaxis()->SetRangeUser(0.5, 1.5);
        h_ratio_b->GetYaxis()->SetTitleOffset(0.4);

        h_ratio->SetMarkerStyle(20);
        h_ratio->SetMarkerColor(kBlack);
        h_ratio->SetLineColor(kBlack);
        h_ratio_b->SetMarkerStyle(24);
        h_ratio_b->SetMarkerColor(kBlack);
        h_ratio_b->SetLineColor(kBlack);

        h_ratio_b->Draw("E0PX");
        if (drawInclusive) h_ratio->Draw("E0PXSAME");

        TLine *OLine = new TLine(h_ratio->GetXaxis()->GetXmin(),1.,h_ratio->GetXaxis()->GetXmax(),1.);
        OLine->SetLineColor(kGreen);
        OLine->SetLineWidth(1);
        OLine->Draw();

        c1->cd();

	if (plot) {
          if (unfold) {
            gSystem->mkdir((path + "/combined/" + version + "/" + subdir + "/xsecs_unfolding/").c_str(), kTRUE);
            c1->SaveAs((path + "/combined/" + version + "/" + subdir + "/xsecs_unfolding/" + title + "b" + "_xsecs_unfolding.pdf").c_str());
          } else {
            gSystem->mkdir((path + "/combined/" + version + "/" + subdir + "/xsecs/").c_str(), kTRUE);
            c1->SaveAs((path + "/combined/" + version + "/" + subdir + "/xsecs/" + title + "b" + "_xsecs.pdf").c_str());
          }
	}

}
Example #8
0
//void VHPlotter(string title="", int plot=0) {
void VHPlotter(string title="", int plot=0,   TCanvas* c1=0 ) {


    string subdir="0";
    string postfix="";
    string dirbSel="";

    double norm11 = ((Lumi2016_ele * Xsec_dy_amc1) / Ngen_dy_amc1);
    double norm12 = ((Lumi2016_ele * Xsec_dy_amc2) / Ngen_dy_amc2);
    double norm13 = ((Lumi2016_ele * Xsec_dy_amc3) / Ngen_dy_amc3);
    double norm14 = ((Lumi2016_ele * Xsec_dy_amc4) / Ngen_dy_amc4);

    double norm2 = ((Lumi2016_ele * Xsec_tt) / Ngen_tt);
    double norm3 = ((Lumi2016_ele * Xsec_zz) / Ngen_zz);
    double norm4 = ((Lumi2016_ele * Xsec_wz) / Ngen_wz);
    double norm6 = ((Lumi2016_ele * Xsec_ww) / Ngen_ww);
    double norm7 = ((Lumi2016_ele * Xsec_zhm) / Ngen_zhm);
    double norm8 = ((Lumi2016_ele * Xsec_zhp) / Ngen_zhp);

//if (ilepton==1) Lumi2016 = Lumi2016_ele;

    /*double enorm1 = ((Lumi2012 * eXsec_dy) / Ngen_dy);
    double enorm1_amc = ((Lumi2012 * eXsec_dy_amc) / Ngen_dy_amc);
    double enorm1_1 = ((Lumi2012 * eXsec_dy_1) / Ngen_dy_1);
    double enorm1_2=0;
    double enorm2 = ((Lumi2012 * eXsec_tt) / Ngen_tt);
    double enorm4 = ((Lumi2012 * eXsec_wz) / Ngen_wz);
    double enorm5 = ((Lumi2012 * eXsec_qcd) / Ngen_qcd);
    double enorm6 = ((Lumi2012 * eXsec_ww) / Ngen_ww);
    double enorm7 = ((Lumi2012 * eXsec_wj) / Ngen_wj);
    double enorm8 = ((Lumi2012 * eXsec_tS) / Ngen_tS);
    double enorm9 = ((Lumi2012 * eXsec_tT) / Ngen_tT);
    double enorm10 = ((Lumi2012 * eXsec_tW) / Ngen_tW);
    double enorm11 = ((Lumi2012 * eXsec_tSb) / Ngen_tSb);
    double enorm12 = ((Lumi2012 * eXsec_tTb) / Ngen_tTb);
    double enorm13 = ((Lumi2012 * eXsec_tWb) / Ngen_tWb);
    */

    TFile* mc11 = TFile::Open((path + "DYJetsToLL_M-50_HT-100to200_13TeV.root").c_str());
    TH1F* h_mc11 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc12 = TFile::Open((path + "DYJetsToLL_M-50_HT-200to400_13TeV.root").c_str());
    TH1F* h_mc12 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc13 = TFile::Open((path + "DYJetsToLL_M-50_HT-400to600_13TeV.root").c_str());
    TH1F* h_mc13 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc14 = TFile::Open((path + "DYJetsToLL_M-50_HT-600toInf_13TeV.root").c_str());
    TH1F* h_mc14 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc2 = TFile::Open((path + "TT_TuneCUETP8M1_13TeV.root").c_str());
    TH1F* h_mc2 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc3 = TFile::Open((path + "ZZ_TuneCUETP8M1_13TeV.root").c_str());
    TH1F* h_mc3 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc4 = TFile::Open((path + "WZ_TuneCUETP8M1_13TeV.root").c_str());
    TH1F* h_mc4 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc6 = TFile::Open((path + "WW_TuneCUETP8M1_13TeV.root").c_str());
    TH1F* h_mc6 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc7 = TFile::Open((path + "ZH_HToBB_ZToLL_M125_13TeV_amcatnlo.root").c_str());
    TH1F* h_mc7 = (TH1F*)gDirectory->Get(title.c_str());
    TFile* mc8 = TFile::Open((path + "ZH_HToBB_ZToLL_M125_13TeV_powheg.root").c_str());
    TH1F* h_mc8 = (TH1F*)gDirectory->Get(title.c_str());

//TFile* data = TFile::Open((path + "SingleElectron-Run2016B-v2.root").c_str());;
//TH1F* h_data = (TH1F*)gDirectory->Get(title.c_str());

    TFile* data_runB = TFile::Open((path + "SingleElectron-Run2016B-v2.root").c_str());
    TH1F* h_data_runB = (TH1F*)gDirectory->Get(title.c_str());

    TFile* data_runC = TFile::Open((path + "SingleElectron-Run2016C-v2.root").c_str());
    TH1F* h_data_runC = (TH1F*)gDirectory->Get(title.c_str());

    TFile* data_runD = TFile::Open((path + "SingleElectron-Run2016D-v2.root").c_str());
    TH1F* h_data_runD = (TH1F*)gDirectory->Get(title.c_str());

    TH1F* h_data = (TH1F*)h_data_runB ->Clone("h_data");
    h_data->Reset();
    h_data->Add( h_data_runB );
    h_data->Add( h_data_runC );
    h_data->Add( h_data_runD );

    h_mc2 -> SetLineColor(kBlack);
    h_mc2 -> SetFillColor(kBlue);
//h_mc2 -> SetFillStyle(3004);

    h_mc3 -> SetLineColor(kBlack);
    h_mc3 -> SetFillColor(kGray+2);
//h_mc3 -> SetFillStyle(3004);

//h_mc4 -> SetLineColor(kBlack);
//h_mc4 -> SetFillColor(kGray+3);
//h_mc4 -> SetFillStyle(3004);

//h_mc6 -> SetLineColor(kBlack);
//h_mc6 -> SetFillColor(kRed+2);
//h_mc6 -> SetFillStyle(3004);

    h_mc7 -> SetLineColor(kBlack);
    h_mc7 -> SetFillColor(kMagenta);
//h_mc7 -> SetFillStyle(3004);

    h_mc8 -> SetLineColor(kGreen);
//h_mc8 -> SetLineColor(kBlack);
//h_mc8 -> SetFillColor(kPink);
//h_mc8 -> SetFillStyle(3004);
    h_mc8 ->SetLineWidth(3);

    h_mc11->Scale(norm11);
    h_mc12->Scale(norm12);
    h_mc13->Scale(norm13);
    h_mc14->Scale(norm14);
    h_mc2->Scale(norm2);
    h_mc3->Scale(norm3);
    h_mc4->Scale(norm4);
    h_mc6->Scale(norm6);
    h_mc7->Scale(norm7);
    h_mc8->Scale(norm8);

    TH1F* h_mcDY = (TH1F*)h_mc11->Clone("h_mcDY");
    h_mcDY->Reset();
    h_mcDY->Add(h_mc14);
    h_mcDY->Add(h_mc13);
    h_mcDY->Add(h_mc12);
    h_mcDY->Add(h_mc11);

    h_mcDY -> SetLineColor(kBlack);
    h_mcDY -> SetFillColor(kYellow-4);
//h_mcDY -> SetFillStyle(3004);

    TH1F* h_mcDiboson = (TH1F*)h_mc3->Clone("h_mcDiboson");
    h_mcDiboson->Reset();
    h_mcDiboson->Add(h_mc3);
    h_mcDiboson->Add(h_mc4);
    h_mcDiboson->Add(h_mc6);


    TH1F *ht = (TH1F*)h_mcDY->Clone("ht");
    ht->Reset();
//ht->Add(h_mc8);
    ht->Add(h_mc7);
//ht->Add(h_mc6);
//ht->Add(h_mc4);
//ht->Add(h_mc3);
    ht->Add(h_mcDiboson);
    ht->Add(h_mc2);
    ht->Add(h_mcDY);

    THStack *hs = new THStack("hs","");
//hs->Add(h_mc8); // ZH powheg
    hs->Add(h_mc7);   // ZH madgraph
//hs->Add(h_mc6);
//hs->Add(h_mc4);
//hs->Add(h_mc3);
    hs->Add(h_mcDiboson);
    hs->Add(h_mc2);
    hs->Add(h_mcDY);

//TCanvas* c1 = 0;
//c1 = new TCanvas("c","c",10,10,800,600);
    c1->cd();

    TPad *pad1 = new TPad("pad1","pad1",0.0,0.3,1.0,1.0);
    pad1->SetBottomMargin(0.001);
    pad1->Draw();
    pad1->cd();

    if( title=="FATjetSDmass" || title=="FATjetSDmassCorr" || title=="FATjetPRmass" || title=="FATjetPRmassCorr" || title=="FATnSubjet" || title=="ZHmass" )
    {
        pad1->SetLogy();
    }

    hs->Draw("HIST");
    hs->GetYaxis()->SetTitle("Events");
    hs->GetYaxis()->SetTitleSize(0.05);
    hs->GetYaxis()->SetLabelSize(0.045);
    hs->GetYaxis()->SetTitleOffset(1.0);// 0.7
//hs->SetMinimum(8);
    hs->SetMinimum(0.1);
    hs->SetMaximum(1.2*hs->GetMaximum());
    if (title=="ZHmass") {
        hs->GetXaxis()->SetRangeUser(0, 3000);
    }

    h_mc8->Draw("same hist");


    h_data->Draw("EPX0SAMES");
    h_data->SetMarkerColor(kBlack);
    h_data->SetMarkerStyle(20);
    h_data->SetMarkerSize (1.0);
    h_data->SetStats(0);

    TLegend *leg;

    if (title=="FATjetTau2dvTau1") {
        leg = new TLegend(0.15, 0.547, 0.41, 0.88);
    }
    else {
        leg = new TLegend(0.65, 0.547, 0.91, 0.88);
    }
//leg = new TLegend(0.65, 0.547, 0.91, 0.88);
    leg->SetBorderSize(0);
    leg->SetEntrySeparation(0.01);
    leg->SetFillColor(0);
    leg->SetFillStyle(0);

    leg->AddEntry(h_data,"Data","p");
    leg->AddEntry(h_mcDY,"DY","f");
    leg->AddEntry(h_mc2,"t#bar{t}","f");
//leg->AddEntry(h_mc3,"ZZ","f");
//leg->AddEntry(h_mc4,"WZ","f");
//leg->AddEntry(h_mc6,"WW","f");
    leg->AddEntry(h_mcDiboson,"Diboson","f");
    leg->AddEntry(h_mc7,"ZH madgraph","f");
    leg->AddEntry(h_mc8,"ZH powheg (not in stack)","f");

    leg->Draw();

    TLatex *lar = new TLatex();
    lar->SetNDC(kTRUE);
    lar->SetTextSize(0.04);
    lar->SetLineWidth(5);
    lar->DrawLatex(0.14, 0.94, "CMS #it{#bf{2016}}");
    lar->DrawLatex(0.60, 0.94, "L = 12.7 fb^{-1} at #sqrt{s} = 13 TeV");

    pad1->Update();
    c1->Update();

    c1->cd();

    TH1F *h_ratio = (TH1F*)h_data->Clone("h_ratio");

    TPad *pad2 = new TPad("pad2","pad2",0,0,1,0.3);// 0.3
    pad2->SetTopMargin(0);
    pad2->SetBottomMargin(0.3);
    pad2->Draw();
    pad2->cd();
    h_ratio->SetTitle("");
    h_ratio->SetStats(0);

    if (title=="Zpt") {
        h_ratio->GetXaxis ()->SetTitle("p_{T}(Z) [GeV/c]");
    } else if (title=="Zmass") {
        h_ratio->GetXaxis ()->SetTitle("M(Z) [GeV/c^{2}]");//
    } else if (title=="ZRapidity") {
        h_ratio->GetXaxis ()->SetTitle("y(Z)");
    } else if (title=="Zeta") {
        h_ratio->GetXaxis ()->SetTitle("#eta(Z)");
    } else if (title=="nVtx") {
        h_ratio->GetXaxis ()->SetTitle("Number of Vertices");
    } else if (title=="leadElePt") {
        h_ratio->GetXaxis ()->SetTitle("Leading Electron p_{T} [GeV/c]");
    } else if (title=="subleadElePt") {
        h_ratio->GetXaxis ()->SetTitle("Sub-Leading Electron p_{T} [GeV/c]");
    } else if (title=="leadEleEta") {
        h_ratio->GetXaxis ()->SetTitle("Leading Electron #eta");
    } else if (title=="subleadEleEta") {
        h_ratio->GetXaxis ()->SetTitle("Sub-Leading Electron #eta");
    } else if (title=="FATjetPt") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet p_{T} [GeV/c]");
    } else if (title=="FATjetEta") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet #eta");
    } else if (title=="FATjetCISVV2") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet CSVv2");
    } else if (title=="FATjetSDmass") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet Soft Drop Mass [GeV/c^{2}]");
    } else if (title=="FATjetSDmassCorr") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet Corrected Soft Drop Mass [GeV/c^{2}]");
    }   else if (title=="FATjetPRmass") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet Pruned Mass [GeV/c^{2}]");
    } else if (title=="FATjetPRmassCorr") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet L2L3 Corrected Pruned Mass [GeV/c^{2}]");
    } else if (title=="FATjetTau1") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet #tau_{1}");
    } else if (title=="FATjetTau2") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet #tau_{2}");
    } else if (title=="FATjetTau2dvTau1") {
        h_ratio->GetXaxis ()->SetTitle("FAT Jet #tau_{21}");
    } else if (title=="FATnSubjet") {
        h_ratio->GetXaxis ()->SetTitle("Number of Subjets");
    } else if (title=="FATsubjetLeadingPt") {
        h_ratio->GetXaxis ()->SetTitle("Leading SubJet p_{T} [GeV/c]");
    } else if (title=="FATsubjetLeadingEta") {
        h_ratio->GetXaxis ()->SetTitle("Leading SubJet #eta");
    } else if (title=="FATsubjetLeadingSDCSV") {
        h_ratio->GetXaxis ()->SetTitle("Leading SubJet Soft Drop CSV");
    } else if (title=="FATsubjetSubLeadingPt") {
        h_ratio->GetXaxis ()->SetTitle("Sub-Leading SubJet p_{T} [GeV/c]");
    } else if (title=="FATsubjetSubLeadingEta") {
        h_ratio->GetXaxis ()->SetTitle("Sub-Leading SubJet #eta");
    } else if (title=="FATsubjetSubLeadingSDCSV") {
        h_ratio->GetXaxis ()->SetTitle("Sub-Leading SubJet Soft Drop CSV");
    } else if (title=="ADDjet_DoubleSV") {
        h_ratio->GetXaxis ()->SetTitle("ADDjet double b-tagger discriminator");
    }  else if (title=="ZHmass") {
        h_ratio->GetXaxis ()->SetTitle("ZH invariant mass [GeV/c^{2}]");
    }

    if (title=="ZHmass") {
        h_ratio->GetXaxis()->SetRangeUser(0, 3000);
    }
    h_ratio->GetXaxis()->SetTitleSize(0.11);
    h_ratio->GetXaxis()->SetLabelFont(42);
    h_ratio->GetXaxis()->SetLabelSize(0.10);
    h_ratio->GetXaxis()->SetTitleFont(42);
    h_ratio->GetYaxis()->SetTitle("Data/MC");
    h_ratio->GetYaxis()->SetNdivisions(505);
    h_ratio->GetYaxis()->SetTitleSize(0.11);
    h_ratio->GetYaxis()->SetLabelSize(0.10);
    h_ratio->GetYaxis()->SetRangeUser(0.2, 2);
    h_ratio->GetYaxis()->SetTitleOffset(0.33);

    h_ratio->Divide(ht);
    h_ratio->SetMarkerStyle(20);
    h_ratio->Draw("E0PX0");

    TLine *OLine = new TLine(h_ratio->GetXaxis()->GetXmin(),1.,h_ratio->GetXaxis()->GetXmax(),1.);
    OLine->SetLineColor(kRed);
    OLine->SetLineWidth(2);
    OLine->Draw();

    /*
    TLatex *lar = new TLatex();
    lar->SetNDC(kTRUE);
    lar->SetTextSize(0.04);
    lar->SetLineWidth(5);
    lar->DrawLatex(0.14, 0.94, "CMS #it{#bf{2016}}");
    lar->DrawLatex(0.60, 0.94, "L = 4.327 fb^{-1} at #sqrt{s} = 13 TeV");
    */

    c1->cd();
//c1->SaveAs((path + title + ".pdf").c_str());

}