#include "TFile.h" #include "TH1.h" #include "TH2.h" #include "tdrstyle.C" #include "TString.h" void TFR(TString fileName = "WJets") { const int nPtBins = 3; float ptBins[4] = {20,30,50,1000}; TString PtBins[3] = { "Pt20to30", "Pt30to50", "PtGt50"}; const int nEtaBins = 3; float etaBins[4] = {0,0.9,1.2,2.4}; TString EtaBins[3] = {"EtaLt0p9", "Eta0p9to1p2", "EtaGt1p2"}; TString Regions[2] = {"Loose","Tight"}; TString Cuts[4] = {"DPhi","mT","Ratio","All"}; const int nCuts = 4; TH1D * etaBinsH = new TH1D("etaBinsH", "etaBinsH", nEtaBins, etaBins); // etaBinsH->Draw(); etaBinsH->GetXaxis()->Set(nEtaBins, etaBins); for (int i=0; iGetXaxis()->SetBinLabel(i+1, EtaBins[i]);} TH1D * ptBinsH= new TH1D("ptBinsH", "ptBinsH", nPtBins, ptBins); ptBinsH->GetXaxis()->Set(nPtBins, ptBins); for (int i=0; iGetXaxis()->SetBinLabel(i+1, PtBins[i]);} TFile * file = new TFile("WJetsToLNu_TuneCUETP8M1_13TeV-madgraphMLM-pythia8_B_OS.root","read"); TFile * file2 = new TFile("DataTFR.root","read"); TH1D * FakeRatePtIncLoose[nEtaBins][nCuts]; TH1D * FakeRatePtIncTight[nEtaBins][nCuts]; TH1D * FakeRatePtIncLooseData[nEtaBins][nCuts]; TH1D * FakeRatePtIncTightData[nEtaBins][nCuts]; double Tight[nEtaBins][nCuts]; double Loose[nEtaBins][nCuts]; TH1D * events = (TH1D*)file->Get("histWeightsH"); file->cd(""); for (int iEta=0; iEtaGet("FakeRatePtIncLoose"+EtaBins[iEta]+Cuts[iCut]); FakeRatePtIncTight[iEta][iCut] = (TH1D*)file->Get("FakeRatePtIncTight"+EtaBins[iEta]+Cuts[iCut]); FakeRatePtIncLooseData[iEta][iCut] = (TH1D*)file2->Get("FakeRatePtIncLoose"+EtaBins[iEta]+Cuts[iCut]); FakeRatePtIncTightData[iEta][iCut] = (TH1D*)file2->Get("FakeRatePtIncTight"+EtaBins[iEta]+Cuts[iCut]); } } TGraphAsymmErrors * effCut[nEtaBins][nCuts]; TGraphAsymmErrors * effCutData[nEtaBins][nCuts]; char name[100]; string s1,s2; s1=""; s2=""; for (int iEta=0; iEtaSetLineColor(kBlue); effCut[iEta][iCut]->SetMarkerColor(kBlue); effCut[iEta][iCut]->SetFillColor(kBlue); effCut[iEta][iCut]->SetLineWidth(2); effCut[iEta][iCut]->SetMarkerSize(1.6); effCut[iEta][iCut]->SetMarkerStyle(29); effCut[iEta][iCut]->GetYaxis()->SetRangeUser(0.0,1.1); effCut[iEta][iCut]->Divide(FakeRatePtIncTight[iEta][iCut],FakeRatePtIncLoose[iEta][iCut],"Norm"); effCut[iEta][iCut]->GetXaxis()->SetTitle("pT (GeV)"); effCut[iEta][iCut]->GetYaxis()->SetTitle("tau fake rate"); effCut[iEta][iCut]->GetYaxis()->SetTitleSize(0.05); effCut[iEta][iCut]->GetXaxis()->SetTitleSize(0.05); s1 = EtaBins[iEta]; s2 = Cuts[iCut]; sprintf(name, "%s_%s_MC",s1,s2); // effCut[iEta][iCut]->SetName(name); effCut[iEta][iCut]->SetName(EtaBins[iEta] + "_" + Cuts[iCut] + "_MC"); effCut[iEta][iCut]->SetTitle(EtaBins[iEta] + "_" + Cuts[iCut] + "_MC"); effCutData[iEta][iCut] = new TGraphAsymmErrors(); effCutData[iEta][iCut]->SetLineColor(kBlack); effCutData[iEta][iCut]->SetMarkerColor(kBlack); effCutData[iEta][iCut]->SetFillColor(kBlack); effCutData[iEta][iCut]->SetLineWidth(2); //effCutData[iEta][iCut]->SetLineStyle(2); effCutData[iEta][iCut]->SetMarkerSize(1.6); effCutData[iEta][iCut]->SetMarkerStyle(24); effCutData[iEta][iCut]->GetYaxis()->SetRangeUser(0.0,1.1); effCutData[iEta][iCut]->Divide(FakeRatePtIncTightData[iEta][iCut],FakeRatePtIncLooseData[iEta][iCut],"Norm"); effCutData[iEta][iCut]->GetXaxis()->SetTitle("pT (GeV)"); effCutData[iEta][iCut]->GetYaxis()->SetTitle("tau fake rate"); effCutData[iEta][iCut]->GetYaxis()->SetTitleSize(0.05); effCutData[iEta][iCut]->GetXaxis()->SetTitleSize(0.05); sprintf(name, "%s_%s_Data",s1,s2); // cout<<" The name to be used "<SetName(name); //effCutData[iEta][iCut]->SetTitle(name); //effCut[iEta][iCut]->SetTitle(name); effCutData[iEta][iCut]->SetName(EtaBins[iEta] + "_" + Cuts[iCut] + "_Data"); effCutData[iEta][iCut]->SetTitle(EtaBins[iEta] + "_" + Cuts[iCut] + "_Data"); //cout<<" for Eta "<Integral()/effCut[iEta][iCut]->Integral()<Divide(1,3); // canv2->Divide(1,3); // canv3->Divide(1,3); canv4->Divide(1,3); TPad * pad1 = new TPad("pad1","pad1",0.01,0.01,1.,0.99); TPad * pad2 = new TPad("pad2","pad2",0.01,0.01,1.,0.99); TPad * pad3 = new TPad("pad3","pad3",0.01,0.01,1.,0.99); TPad * pad1a = new TPad("pad1a","pad1a",0.01,0.01,1.,0.99); TPad * pad2a = new TPad("pad2a","pad2a",0.01,0.01,1.,0.99); TPad * pad3a = new TPad("pad3a","pad3a",0.01,0.01,1.,0.99); TPad * pad1b = new TPad("pad1b","pad1b",0.01,0.01,1.,0.99); TPad * pad2b = new TPad("pad2b","pad2b",0.01,0.01,1.,0.99); TPad * pad3b = new TPad("pad3b","pad3b",0.01,0.01,1.,0.99); TPad * pad1c = new TPad("pad1c","pad1c",0.01,0.01,1.,0.99); TPad * pad2c = new TPad("pad2c","pad2c",0.01,0.01,1.,0.99); TPad * pad3c = new TPad("pad3c","pad3c",0.01,0.01,1.,0.99); /* TPad * pad1d = new TPad("pad1d","pad1d",0.01,0.01,1.,0.99); TPad * pad2d = new TPad("pad2d","pad2d",0.01,0.01,1.,0.99); TPad * pad3d = new TPad("pad3d","pad3d",0.01,0.01,1.,0.99); */ pad1->SetGridx(); pad1->SetGridy(); pad1->SetLogx(); pad2->SetGridx(); pad2->SetGridy(); pad2->SetLogx(); pad3->SetGridx(); pad3->SetGridy(); pad3->SetLogx(); pad1a->SetGridx(); pad1a->SetGridy(); pad1a->SetLogx(); pad2a->SetGridx(); pad2a->SetGridy(); pad2a->SetLogx(); pad3a->SetGridx(); pad3a->SetGridy(); pad3a->SetLogx(); pad1b->SetGridx(); pad1b->SetGridy(); pad1b->SetLogx(); pad2b->SetGridx(); pad2b->SetGridy(); pad2b->SetLogx(); pad3b->SetGridx(); pad3b->SetGridy(); pad3b->SetLogx(); pad1c->SetGridx(); pad1c->SetGridy(); pad1c->SetLogx(); pad2c->SetGridx(); pad2c->SetGridy(); pad2c->SetLogx(); pad3c->SetGridx(); pad3c->SetGridy(); pad3c->SetLogx(); /* pad1d->SetGridx(); pad1d->SetGridy(); pad1d->SetLogx(); pad2d->SetGridx(); pad2d->SetGridy(); pad2d->SetLogx(); pad3d->SetGridx(); pad3d->SetGridy(); pad3d->SetLogx(); */ TH1F* v1 = new TH1F("", "", 1, 0, 1);v1->SetLineColor(kBlack);v1->SetFillColor(kBlack);v1->SetMarkerColor(kBlack);v1->SetMarkerStyle(24); TH1F* v2 = new TH1F("", "", 1, 0, 1);v2->SetLineColor(kBlue);;v2->SetFillColor(kBlue);v2->SetMarkerColor(kBlue);v2->SetMarkerStyle(29); TLegend * leg1 = new TLegend(0.6,0.5,0.85,0.9); TLegend * leg2 = new TLegend(0.6,0.5,0.85,0.9); TLegend * leg3 = new TLegend(0.6,0.5,0.85,0.9); //TLegend * leg4 = new TLegend(0.6,0.5,0.85,0.9); leg1->SetFillStyle(0); leg1->SetFillColor(0); leg1->SetLineColor(0); leg2->SetFillStyle(0); leg2->SetFillColor(0); leg2->SetLineColor(0); leg3->SetFillStyle(0); leg3->SetFillColor(0); leg3->SetLineColor(0); leg1->AddEntry(v1,"Data","LEP"); leg1->AddEntry(v2,"MC","LEP"); leg1->AddEntry(v2,"",""); leg1->AddEntry(v2,"|#eta| < 0.9",""); //leg1->AddEntry(v2,"0.9 < |#eta| < 1.2",""); //leg1->AddEntry(v2,"1.2 < |#eta| < 2.4",""); leg2->AddEntry(v2,"0.9 < |#eta| < 1.2",""); leg3->AddEntry(v2,"1.2 < |#eta| < 2.1",""); //leg4->AddEntry(v2,"2.1 < |#eta| < 2.4",""); /* canv1->SetName(Cuts[0]); canv1->SetTitle(Cuts[0]); canv2->SetName(Cuts[1]); canv2->SetTitle(Cuts[1]); canv3->SetName(Cuts[2]); canv3->SetTitle(Cuts[2]); canv1->cd(1); */ canv4->SetName(Cuts[3]); canv4->SetTitle(Cuts[3]); for (int iEta=0;iEtaGetY()[iPt]/effCut[iEta][3]->GetY()[iPt]<<" "<cd(1); pad1c->Draw(); pad1c->cd(); effCut[0][3]->Draw("AP"); effCutData[0][3]->Draw("P"); leg1->Draw("same"); effCutData[0][3]->GetYaxis()->SetRangeUser(0.0,0.5); effCut[0][3]->GetYaxis()->SetRangeUser(0.0,0.5); float effD =1.; float effM =1.; canv4->cd(2); pad2c->Draw(); pad2c->cd(); effCut[1][3]->Draw("AP"); effCutData[1][3]->Draw("P"); leg2->Draw("same"); effCutData[1][3]->GetYaxis()->SetRangeUser(0.0,0.5); effCut[1][3]->GetYaxis()->SetRangeUser(0.0,0.5); canv4->cd(3); pad3c->Draw(); pad3c->cd(); effCut[2][3]->Draw("AP"); effCutData[2][3]->Draw("P"); leg3->Draw("same"); effCutData[2][3]->GetYaxis()->SetRangeUser(0.0,0.5); effCut[2][3]->GetYaxis()->SetRangeUser(0.0,0.5); TFile *file = TFile::Open ("TFR.root", "recreate"); file->cd(); // effCut[2][3]->Write(); for (int iEta=0; iEtaWrite(); effCut[iEta][3]->Write(); } etaBinsH->Write(); ptBinsH->Write(); file->Write(); file->Close(); // } gPad->Update(); TFile *fileIn = TFile::Open ("TFR.root", "read"); fileIn->cd(); fileIn->ls(); //TH1D *tgg = (TH1D*)fileIn->Get("etaBinsH"); pad1->Modified(); pad1a->Modified(); pad2->Modified(); pad2a->Modified(); pad3->Modified(); pad3a->Modified(); }