double* IfitBin(TH1D* dataInput, TH1D* sigTemplate, TH1D* bkgTemplate) { // Start TFractionFitter double Spara(0), eSpara(0); double Bpara(0), eBpara(0); TObjArray *mc = new TObjArray(2); mc->Add(sigTemplate); mc->Add(bkgTemplate); TFractionFitter *fitTemplate = new TFractionFitter(dataInput, mc); fitTemplate->Constrain(0, 0.0, 1.0); fitTemplate->Constrain(1, 0.0, 1.0); int status = fitTemplate->Fit(); cout<<" Fitting status = "<<status<<endl; if (status == 0) { fitTemplate->GetResult(0, Spara, eSpara); fitTemplate->GetResult(1, Bpara, eBpara); cout<<" Fitting result = "<<endl; cout<<" Chi2 = "<<fitTemplate->GetChisquare()<<endl; cout<<" NDF = "<<fitTemplate->GetNDF()<<endl; cout<<" Prob = "<<fitTemplate->GetProb()<<endl; cout<<" Signal fraction = "<<Spara<<"; Error = "<<eSpara<<endl; cout<<" Background fraction = "<<Bpara<<"; Error = "<<eBpara<<endl; } TH1D *FitResultReal = (TH1D*)sigTemplate->Clone(); TH1D *FitResultFake = (TH1D*)bkgTemplate->Clone(); TH1D *FitResultAll = (TH1D*)dataInput->Clone(); FitResultReal->SetName("ResultReal"); FitResultFake->SetName("ResultFake"); FitResultAll->SetName("ResultAll"); FitResultReal->Scale(1./FitResultReal->Integral()*Spara*dataInput->Integral()); FitResultFake->Scale(1./FitResultFake->Integral()*Bpara*dataInput->Integral()); FitResultAll->Reset(); FitResultAll->Add(FitResultReal); FitResultAll->Add(FitResultFake); TCanvas *c1 = new TCanvas("c1", "", 600, 400); c1->cd(); FitResultAll->SetXTitle("#sigma_{i#etai#eta}"); FitResultAll->SetYTitle("Number of photons"); FitResultAll->SetMinimum(0); FitResultAll->SetMaximum(FitResultAll->GetMaximum()*1.4); FitResultAll->SetLineColor(1); FitResultAll->SetLineWidth(2); FitResultAll->Draw(); dataInput->SetMarkerStyle(21); dataInput->SetMarkerSize(0.7); dataInput->SetLineColor(1); dataInput->SetLineWidth(2); dataInput->Draw("PE1same"); FitResultReal->SetLineColor(2); FitResultReal->SetFillColor(2); FitResultReal->SetFillStyle(3002); FitResultReal->Draw("same"); FitResultFake->SetLineColor(4); FitResultFake->SetFillColor(4); FitResultFake->SetFillStyle(3004); FitResultFake->Draw("same"); TLegend *leg1 = new TLegend(0.5,0.5,0.9,0.85); char text[200]; leg1->SetFillColor(0); leg1->SetShadowColor(0); leg1->SetFillStyle(0); leg1->SetBorderSize(0); leg1->SetLineColor(0); sprintf(text,"Data: %5.1f events", dataInput->Integral()); leg1->AddEntry(dataInput, text, "pl"); sprintf(text,"Fitted: %5.1f events", FitResultAll->Integral()); leg1->AddEntry(FitResultAll, text, "l"); sprintf(text,"Signal %5.1f #pm %5.1f events", FitResultReal->Integral(), eSpara/Spara*FitResultReal->Integral()); leg1->AddEntry(FitResultReal, text, "f"); sprintf(text,"Background %5.1f #pm %5.1f events", FitResultFake->Integral(), eBpara/Bpara*FitResultFake->Integral()); leg1->AddEntry(FitResultFake, text, "f"); leg1->Draw(); return; }
void anaFragShape(TString infile="dj_HCPR-GoodTrkAndPixel_CleanEvt1130.root") { TChain * djcalo = new TChain("djcalo/djTree"); djcalo->Add(infile); aliases_dijet(djcalo); TChain * djcalopix = new TChain("djcalo_pxl/djTree"); djcalopix->Add(infile); aliases_dijet(djcalopix); TString evtSel("(cent<10 && nljet>120 && abs(nljeta)<2 && aljet>50 && abs(aljeta)<2 && jdphi>2.5 && Aj>0.24)"); TH1::SetDefaultSumw2(); TCanvas * c0 = new TCanvas("c0","c0",500,500); djcalo->Draw("Aj>>hAj(20,0,1)",evtSel); djcalopix->Draw("Aj",evtSel,"Esame"); TCanvas * c2 = new TCanvas("c2","c2",500,500); TH1D * hJDPhi = new TH1D("hJDPhi","hJDPhi",50,0,3.1416); TH1D * hJDPhi2 = new TH1D("hJDPhi2","hJDPhi",50,0,3.1416); Float_t numDJ = djcalo->Draw("jdphi>>hJDPhi",evtSel); Float_t numDJ2 = djcalopix->Draw("jdphi>>hJDPhi2",evtSel); cout << "num djs: " << numDJ << " djs(pix)" << numDJ2 << endl; TH1D * hPNDRTrk = new TH1D("hPNDRTrk",";R(trk,jet);1/(N_{DJ} 2#piR) dp_{T}^{Trk}/dR",10,0,TMath::PiOver2()); TH1D * hPNDRPix = new TH1D("hPNDRPix",";R(trk,jet);1/(N_{DJ} 2#piR) dp_{T}^{Trk}/dR",10,0,TMath::PiOver2()); TH1D * hPADRTrk = new TH1D("hPADRTrk",";R(trk,jet);1/(N_{DJ} 2#piR) dp_{T}^{Trk}/dR",10,0,TMath::PiOver2()); TH1D * hPADRPix = new TH1D("hPADRPix",";R(trk,jet);1/(N_{DJ} 2#piR) dp_{T}^{Trk}/dR",10,0,TMath::PiOver2()); djcalo->Draw("pndr>>hPNDRTrk",Form("(%s&&ppt>=1.2)*(ppt/(TMath::TwoPi()*pndr))",evtSel.Data())); djcalopix->Draw("pndr>>hPNDRPix",Form("(%s&&ppt>=0.3&&ppt<1.2)*(ppt/(TMath::TwoPi()*pndr))",evtSel.Data())); djcalo->Draw("padr>>hPADRTrk",Form("(%s&&ppt>=1.2)*(ppt/(TMath::TwoPi()*padr))",evtSel.Data())); djcalopix->Draw("padr>>hPADRPix",Form("(%s&&ppt>=0.3&&ppt<1.2)*(ppt/(TMath::TwoPi()*padr))",evtSel.Data())); hPNDRTrk->Scale(1./(numDJ*hPNDRTrk->GetBinWidth(1))); hPNDRPix->Scale(1./(numDJ*hPNDRPix->GetBinWidth(1))); hPADRTrk->Scale(1./(numDJ*hPADRTrk->GetBinWidth(1))); hPADRPix->Scale(1./(numDJ*hPADRPix->GetBinWidth(1))); hPNDRPix->SetMinimum(50); hPNDRPix->SetMaximum(100); hPNDRTrk->SetMinimum(10); hPNDRTrk->SetMaximum(2000); hPNDRPix->SetMarkerStyle(kFullCircle); hPNDRTrk->SetMarkerStyle(kFullSquare); hPNDRPix->SetMarkerColor(kRed); hPNDRTrk->SetMarkerColor(kRed); hPADRPix->SetMarkerStyle(kOpenCircle); hPADRTrk->SetMarkerStyle(kOpenSquare); hPADRPix->SetMarkerColor(kBlue); hPADRTrk->SetMarkerColor(kBlue); TCanvas * c3 = new TCanvas("c3","c3",500,500); hPNDRPix->Draw("E"); hPADRPix->Draw("Esame"); TCanvas * c3_2 = new TCanvas("c3_2","c3_2",500,500); c3_2->SetLogy(); hPNDRTrk->Draw("E"); hPADRTrk->Draw("Esame"); }
bool DrawPileupCorr(Str jetAlgo) { JetCalibrationTool *theJES = new JetCalibrationTool(jetAlgo,_jesFile,false); bool residual = theJES->JetAreaJES(); TH1D *temp = new TH1D("","",100,-5,5); temp->SetXTitle("Jet #eta"); temp->SetYTitle("Jet offset at "+GetConstScale(jetAlgo)+"-scale [GeV]"); if (residual) temp->SetYTitle("Residual jet offset at "+GetConstScale(jetAlgo)+"-scale [GeV]"); temp->SetMinimum(-20); temp->SetMaximum(15); temp->SetStats(0); if ( residual && theJES->ResidualOffsetCorr_Description() == "" ) return false; Can->Clear(); temp->Draw(); for (int npv=0;npv<9;++npv) { double NPV=(npv%3)*10, mu=(npv/3)*10; if (NPV==0) NPV=1; Graph *g = new Graph(); FormatGraph(g,npv); for (int ieta=-50;ieta<50;++ieta) { double eta=0.05 + 0.1*ieta; double O = residual ? theJES->GetResidualOffset(eta,mu,NPV)/1000 : theJES->GetOffset(eta,mu,NPV)/1000; // convert to GeV g->SetPoint(g->GetN(),eta,O); } if (npv<4) DrawLabel(Form("N_{PV} = %.0f, #LT#mu#GT = %.0f",NPV,mu),0.18,0.35-0.04*npv,npv); else DrawLabel(Form("N_{PV} = %.0f, #LT#mu#GT = %.0f",NPV,mu),0.48,0.35-0.04*(npv-4),npv); g->Draw("P"); } tex->SetNDC(); tex->SetTextAlign(12); if (residual) tex->DrawLatex(0.18,0.975,theJES->ResidualOffsetCorr_Description()); else tex->DrawLatex(0.18,0.975,theJES->OffsetCorr_Description()); tex->DrawLatex(0.18,0.9,GetJetDesc(jetAlgo)); return true; }
void plotV2vstheta(){ gStyle->SetOptFit(1); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); gStyle->SetErrorX(0); int xbin = 0; TFile *f = new TFile("mergedV_Prod.root"); TVectorD *vecV = (TVectorD*)f->Get(Form("D_%d/V")); TVectorD *vecdeltaV = (TVectorD*)f->Get(Form("D_%d/deltaV")); TVectorD *vecVmean = (TVectorD*)f->Get(Form("Vmean")); double *V = vecV->GetMatrixArray(); double *deltaV = vecdeltaV->GetMatrixArray(); double *Vmean = vecVmean->GetMatrixArray(); double theta[ntheta]; for(int itheta=0;itheta<ntheta;itheta++){ theta[itheta]=itheta*TMath::Pi()/ntheta/nn; } TH1D *hFrame = new TH1D("","",300,-1,2); hFrame->GetXaxis()->SetTitle("#theta"); hFrame->GetYaxis()->SetTitle("referenceV_{2}"); hFrame->GetXaxis()->SetTitleSize(0.04); hFrame->GetYaxis()->SetTitleSize(0.04); hFrame->GetXaxis()->SetRangeUser(-0.1,1.5); hFrame->SetMaximum(0.055); hFrame->SetMinimum(0.045); hFrame->Draw(); TGraphErrors *gr = new TGraphErrors(ntheta,theta,V,0,deltaV); gr->SetMarkerSize(1.2); gr->SetMarkerStyle(20); gr->Draw("Psame"); TLine *l = new TLine(0,inV2,1.4,inV2); l->SetLineStyle(2); l->Draw("same"); c1->Print("V2vstheta.png"); }
// ---------------------------------------------------------------------- void plotRatio(string era = "2016BF") { gStyle->SetOptStat(0); if (era == "all") { plotRatio("2011"); plotRatio("2012"); plotRatio("2016BF"); plotRatio("2016GH"); return; } TH1D *hresult = new TH1D("hresult", Form("n(gauss(5.28))/n(gauss(5.37)) %s", era.c_str()), 40, 0., 0.4); hresult->GetXaxis()->SetTitle("BDT > "); TH1D *hbdtcut = new TH1D("hbdtcut", Form("n(gauss(5.28))/n(gauss(5.37)) %s", era.c_str()), 40, 0., 0.4); hbdtcut->SetMarkerColor(kBlue); invertedMuonID(era, 0.15, hresult); invertedMuonID(era, 0.20, hresult); invertedMuonID(era, 0.25, hresult); invertedMuonID(era, 0.30, hresult); invertedMuonID(era, -99., hbdtcut); c0->Clear(); double ymax(50.); if (hresult->GetMaximum() < 5.) ymax = 10.; if (hresult->GetMaximum() < 0.5) ymax = 1.0; hresult->SetMinimum(-ymax); hresult->SetMaximum(ymax); hresult->Draw(); hbdtcut->Draw("same"); pl->DrawLine(0., 0., 0.4, 0.); c0->SaveAs(Form("invertedMuonID-%s-result.pdf", era.c_str())); }
// ---------------------------------------------------------------------- void plotRatioRaw(string era = "2016BF") { gStyle->SetOptStat(0); if (era == "all") { plotRatioRaw("2011"); plotRatioRaw("2012"); plotRatioRaw("2016BF"); plotRatioRaw("2016GH"); return; } double eps(0.00001); TH1D *hresult = new TH1D("hresult", Form("%s", era.c_str()), 80, 0., 0.4); hresult->GetXaxis()->SetTitle("BDT > "); hresult->SetMarkerStyle(24); hresult->SetLineColor(kRed+2); hresult->SetMarkerColor(kRed+2); TH1D *hsresult = new TH1D("hsresult", Form("%s", era.c_str()), 80, 0.+eps, 0.4+eps); hsresult->SetMarkerStyle(25); hsresult->SetLineColor(kBlue); hsresult->SetMarkerColor(kBlue); TH1D *hbdtcut = new TH1D("hbdtcut", Form("%s", era.c_str()), 80, 0., 0.4); hbdtcut->SetMarkerColor(kRed+2); hbdtcut->SetMarkerStyle(20); TH1D *hsbdtcut = new TH1D("hsbdtcut", Form("%s", era.c_str()), 80, 0.+eps, 0.4+eps); hsbdtcut->SetMarkerColor(kBlue); hsbdtcut->SetMarkerStyle(21); invertedMuonIDRaw(era, 0.15, hresult, hsresult); invertedMuonIDRaw(era, 0.20, hresult, hsresult); invertedMuonIDRaw(era, 0.25, hresult, hsresult); invertedMuonIDRaw(era, 0.30, hresult, hsresult); invertedMuonIDRaw(era, -99., hbdtcut, hsbdtcut); c0->Clear(); double ymax(50.); double smax = hresult->GetMaximum(); double dmax = hsresult->GetMaximum(); double themax = (smax>dmax? smax: dmax); if (themax < 50.) ymax = 50.; if (themax < 20.) ymax = 30.; if (themax < 5.) ymax = 10.; if (themax < 0.5) ymax = 1.0; hresult->SetMinimum(-ymax); hresult->SetMaximum(ymax); hresult->Draw(); hsresult->Draw("same"); hbdtcut->Draw("same"); hsbdtcut->Draw("same"); pl->DrawLine(0., 0., 0.4, 0.); TLegend *tle = new TLegend(0.25, 0.2, 0.50, 0.5); tle->SetFillStyle(0); tle->SetBorderSize(0); tle->SetHeader(era.c_str()); tle->AddEntry(hresult, "yield at B0", "p"); tle->AddEntry(hsresult, "yield at Bs", "p"); tle->Draw(); c0->SaveAs(Form("invertedMuonIDRaw-%s-result.pdf", era.c_str())); }
TH1D* makeRatioHist(TH1D& Hist1, TH1D& Hist2, char* name="CaloJetPtRatio2over1", double maxX=100.0) { TH1D* hist = Hist2.Clone(name); TH1D* temphist = Hist1.Clone("temphist"); //temphist->Add( &Hist2, -1); hist->Divide(temphist); hist->GetXaxis()->SetTitle("jet p_{T} (GeV/c)"); hist->SetMinimum(0.0); if(maxX > 110.0) hist->SetMaximum(0.35); else hist->SetMaximum(0.3); hist->GetXaxis()->SetRangeUser(0,maxX); delete temphist; return hist; }
// ---------------------------------------------------------------------- void plotRatio2Comb(string era = "2016BF") { gStyle->SetOptStat(0); if (era == "all") { plotRatio2Comb("2011"); plotRatio2Comb("2012"); plotRatio2Comb("2016BF"); plotRatio2Comb("2016GH"); return; } double eps(0.00001); TH1D *hresultBd = new TH1D("hresultBd", era.c_str(), 80, 0., 0.4); TH1D *hresultBs = new TH1D("hresultBs", era.c_str(), 80, 0.+eps, 0.4+eps); hresultBd->GetYaxis()->SetTitle("a.u."); hresultBd->GetXaxis()->SetTitle("BDT > "); hresultBd->SetMarkerStyle(24); hresultBd->SetLineColor(kRed+2); hresultBd->SetMarkerColor(kRed+2); hresultBs->GetXaxis()->SetTitle("BDT > "); hresultBs->SetMarkerStyle(25); hresultBs->SetLineColor(kBlue); hresultBs->SetMarkerColor(kBlue); TH1D *hbdtcutBd = new TH1D("hbdtcutbd", "", 80, 0., 0.4); TH1D *hbdtcutBs = new TH1D("hbdtcutBs", "", 80, 0.+eps, 0.4+eps); hbdtcutBs->SetMarkerColor(kBlue); hbdtcutBd->SetMarkerStyle(24); hbdtcutBs->SetLineColor(kBlue); hbdtcutBd->SetMarkerColor(kRed+2); hbdtcutBd->SetMarkerStyle(25); hbdtcutBd->SetLineColor(kRed+2); invertedMuonID2Comb(era, 0.15, hresultBd, hresultBs); invertedMuonID2Comb(era, 0.20, hresultBd, hresultBs); invertedMuonID2Comb(era, 0.25, hresultBd, hresultBs); invertedMuonID2Comb(era, 0.30, hresultBd, hresultBs); invertedMuonID2Comb(era, -99., hbdtcutBd, hbdtcutBs); c0->Clear(); double ymax(5.); hresultBd->SetMinimum(-ymax); hresultBd->SetMaximum(ymax); hresultBd->Draw(); hbdtcutBd->Draw("same"); pl->DrawLine(0., 0., 0.4, 0.); tl->SetTextSize(0.035); tl->SetTextColor(kRed+2); tl->DrawLatexNDC(0.2, 0.85, "n(gauss(5.28))/combinatorial"); tl->SetTextColor(kBlue); tl->DrawLatexNDC(0.2, 0.81, "n(gauss(5.37))/combinatorial"); tl->SetTextColor(kBlack); hresultBs->Draw("same"); hbdtcutBs->Draw("same"); c0->SaveAs(Form("invertedMuonID2Comb-%s-result.pdf", era.c_str())); }
//======================== void PlotRatio1D(Int_t iEff, Int_t iVar){ Char_t name[100]; sprintf(name, "c1_%sEff_%s", effName[iEff], varName[iVar]); TCanvas *c1 = new TCanvas(name, name); sprintf(name, "hRatio_%sEff_%s", effName[iEff], varName[iVar]); TH1D *hRatio = (TH1D *) hEffTP[iEff][iVar]->Clone(name); hRatio->Divide(hEffMCTruth1D[iEff][iVar]); hRatio->SetMarkerStyle(20); hRatio->SetMinimum(0.); hRatio->SetMaximum(1.5); hRatio->Draw("p"); sprintf(name, "Figures/ratio_%sEff_%s.pdf", effName[iEff], varName[iVar]); c1->Print(name); }
void CompareBranch(string MCfilename, string CDfilename, string MCbranchname, string CDbranchname, string xtitle, string unit, string plotname, string MCcuts, string CDcuts, string MCweight, string CDweight, double xlow, double xup, int nbins) { TH1D* MChist = MakeBranchPlot(MCfilename,MCbranchname,MCcuts,MCweight,xlow,xup,nbins); TH1D* CDhist = MakeBranchPlot(CDfilename,CDbranchname,CDcuts,CDweight,xlow,xup,nbins); MChist->Scale(1./MChist->Integral()); CDhist->Scale(1./CDhist->Integral()); MChist->SetDrawOption("B"); MChist->SetFillColor(kOrange); MChist->SetLineColor(kOrange); MChist->SetMaximum(MChist->GetMaximum()*1.3); MChist->SetMinimum(0); // Draw everything plotmaker plotter(MChist); plotter.SetTitle(xtitle, unit); TCanvas* plot = plotter.Draw(); CDhist->Draw("sameE1"); plot->SaveAs((plotname+".pdf").c_str()); }
TH1D* GetDummyHist(Float_t xmax, Float_t min, Float_t max,Char_t *xttl,Char_t *yttl) { TH1D *dum; dum = new TH1D("dum","",100,0.0,xmax); //dum = new TH1D("dum","",100,0.2,xmax); dum->SetMinimum(min); dum->SetMaximum(max); dum->SetStats(0); dum->GetYaxis()->SetTitle(yttl); dum->GetYaxis()->CenterTitle(); dum->GetXaxis()->SetTitle(xttl); dum->GetXaxis()->CenterTitle(); return dum; }
TH1D *HistoRatio (TH1D *hisNum, TH1D *hisDen){ //Graph Ratio Clone TH1D *Ratio; Ratio = (TH1D*)hisNum->Clone(); Ratio->Divide(hisDen); for(int ibin=1;ibin<=Ratio->GetNbinsX();ibin++) { if (Ratio->GetBinContent(ibin) == 0.0 ) { Ratio->SetBinContent(ibin, 1.0); Ratio->SetBinError(ibin, 0.0); } } Ratio->SetFillColor(0); Ratio->SetLineColor(kGray+2); // Ratio->SetLineColor(kMagenta-5); Ratio->SetLineWidth(1); Ratio->SetTitle(""); Ratio->GetYaxis()->SetTitle("Obs/Exp"); Ratio->GetYaxis()->CenterTitle(); Ratio->GetYaxis()->SetTitleFont(42); Ratio->GetYaxis()->SetTitleSize(0.135); Ratio->GetYaxis()->SetTitleOffset(0.28); Ratio->GetYaxis()->SetLabelFont(42); Ratio->GetYaxis()->SetLabelSize(0.115); Ratio->GetYaxis()->SetNdivisions(402); Ratio->GetXaxis()->SetTitle("CSVv2 bin"); Ratio->GetXaxis()->SetNdivisions(509); //(402) Ratio->GetXaxis()->SetTitleOffset(1.1); Ratio->GetXaxis()->SetTitleFont(42); Ratio->GetXaxis()->SetTitleSize(0.16); Ratio->GetXaxis()->SetTitleFont(42); Ratio->GetXaxis()->SetLabelSize(0.14); Ratio->SetMinimum(0.4); Ratio->SetMaximum(1.6); return Ratio; }
TH1D* momResHist(TFile* f, int i) { Double_t xbins[33] = {0,0.2,0.4,0.6,0.8, 1.0,1.6,2.2,2.8,3.4, 4.4,5.4,6.0,8.0,10.0, 12.0,14.0,18.0,22.0,26.0, 30.0,36.0,42.0,50.0,55.0, 60.0,70.0,80.0,100.0,120.0, 140.0,160.0,200.0}; TH3F *hRes3D = (TH3F*) f->Get("trkEffAnalyzer/hresStoR3D"); double feta = 2.4; int binMaxEta = hRes3D->GetXaxis()->FindBin(feta); int binMinEta = hRes3D->GetXaxis()->FindBin(-1.0*feta); hRes3D->GetXaxis()->SetRange(binMinEta,binMaxEta); TH2D *hRes2D = (TH2D*) hRes3D->Project3D("zy"); // zy: rec-> y axis, sim -> x axis hRes2D->SetName("hRes2D"); hRes2D->FitSlicesY(0,0,-1,10); TH1D *h1 = (TH1D*)gDirectory->Get("hRes2D_1"); TH1D *h2 = (TH1D*)gDirectory->Get("hRes2D_2"); h1->Rebin(32,Form("h1new%d",i),xbins); h2->Rebin(32,Form("h2new%d",i),xbins); TH1D* h1new = (TH1D*) gDirectory->Get(Form("h1new%d",i)); TH1D* h2new = (TH1D*) gDirectory->Get(Form("h2new%d",i)); TH1D *momres = (TH1D*) h2new->Clone("momres"); momres->SetName(Form("momres_%d",i)); momres->SetMaximum(0.15); momres->SetMinimum(0.0); momres->SetTitle("Momentum resolution;p_{T} [GeV/c]"); momres->SetStats(0); momres->SetMarkerStyle(20); momres->Divide(h1new); return momres; }
void draw_graphs(void) { const char title[4][20] = {"Na_mean;um", "Na_sigma;um", "Co_mean;um", "Co_sigma;um"}; const double tgt[4] = {1.787, 0.394, 2.082, 0.473}; const double mc[4][4] = {{2.008, 1.985, 1.974, 1.933}, {0.319, 0.326, 0.330, 0.336}, {2.233, 2.211, 2.185, 2.149}, {0.377, 0.385, 0.394, 0.405}}; const double dl[4] = {0, 50, 100, 200}; const double mm[4][2] = {{1.7, 2.1}, {0.3, 0.4}, {2.0, 2.3}, {0.35, 0.5}}; TGraph *gr; TLine *ln; TH1D *h; TLegend *lg; int i; TCanvas *cv = new TCanvas; cv->Divide(2,2); gr = new TGraph; ln = new TLine; gr->SetMarkerStyle(kFullCircle); gr->SetMarkerSize(1.5); gr->SetMarkerColor(kBlue); ln->SetLineWidth(4); ln->SetLineColor(kRed); lg = new TLegend(0.65, 0.65, 0.95, 0.85); lg->AddEntry(ln, "Exp.", "L"); lg->AddEntry(gr, "MC", "P"); for (i=0; i<4; i++) { cv->cd(i+1); h = new TH1D(title[i], title[i], 100, 0, 200); h->SetMinimum(mm[i][0]); h->SetMaximum(mm[i][1]); h->DrawCopy(); gr->DrawGraph(4, dl, mc[i], "P"); ln->DrawLine(0, tgt[i], 200, tgt[i]); lg->Draw(); delete h; } }
void plotTheory(TString name) { _DEBUG("void plotTheory(TString name)"); TFile* fTheory = new TFile("/srv01/tau/hod/z0analysis-tests/z0analysis-r170/run/plots/theory_mass1000GeV_withpdf_histos.root","READ"); TH1D* hmassTheory = NULL; TH1D* hAfbTheory = NULL; TString model = ""; if (name.Contains("DY")) model = "DY"; else if(name.Contains("ZP_ssm")) model = "ZP"; else if(name.Contains("ZP_psi")) model = "E6_psi"; else if(name.Contains("ZP_chi")) model = "E6_chi"; else if(name.Contains("ZP_eta")) model = "E6_eta"; else if(name.Contains("KK")) model = "KK"; hmassTheory = (TH1D*)fTheory->Get("h1Sumq"+model)->Clone("hmassTheory"); hAfbTheory = (TH1D*)fTheory->Get("h1AfbSumq"+model)->Clone("hAfbTheory"); hmassTheory->SetLineColor(kOrange+2); // for(Int_t b=1 ; b<=hmassTheory->GetNbinsX() ; b++) hmassTheory->SetBinContent(b, hmassTheory->GetBinContent(b)*hmassTheory->GetBinCenter(b)); TCanvas* cnv_mass_ratio = hratio("cnv_mass_ratio", hmassTheory, h1Map["hMass"+name], NULL,"Ratio", true,true); saveas(cnv_mass_ratio,"plots/"+name+"_mass_ratio_withTheory"+sRunNum); TCanvas* cnv_afb = new TCanvas("cnv_afb","cnv_afb",600,400); cnv_afb->SetTicks(1,1); cnv_afb->SetLogx(); cnv_afb->cd(); cnv_afb->Draw(); hAfbTheory->SetLineColor(kOrange+2); hAfbTheory->SetMinimum(-1.); hAfbTheory->SetMaximum(+1.); hAfbTheory->Draw(); h1Map["hMassAFB_QRK"+name]->Draw("SAMES"); saveas(cnv_afb,"plots/"+name+"_Afb_withTheory"+sRunNum); }
void makeEtaSliceComparisonPlots( vector<mithep::TH2DAsymErr*> efficiencyGraphs, vector<string> efficiencyGraphLabels, string filename, string plotname, string xAxisLabel = "" , string yAxisLabel = "", double maxY = -1, double legendX1 = -99, double legendY1 = -99, double legendX2 = -99, double legendY2 = -99) { TCanvas *cv = MakeCanvas("cv", plotname.c_str(), 800, 900); // cv->Divide(2,3); int padIndex = 1; for(UInt_t j=1; j <= efficiencyGraphs[0]->GetYaxis()->GetNbins(); j++) { cout << "Start " << j << endl; char tmp[20]; sprintf(tmp, "_Eta%.2fTo%.2f", efficiencyGraphs[0]->GetYaxis()->GetBinLowEdge(j), efficiencyGraphs[0]->GetYaxis()->GetBinUpEdge(j)); string sliceEta = tmp; TLegend *leg1=0; if (legendX1 > -99) { leg1 = new TLegend(legendX1,legendY1,legendX2,legendY2); } else { leg1 = new TLegend(0.25,0.75,0.55,0.9); } leg1->SetBorderSize(0); leg1->SetTextSize(0.03); vector<TH1D*> slices; for(int s=0; s < efficiencyGraphs.size(); ++s) { char tmp1[20]; sprintf(tmp, "%d", s); string sliceString = tmp; cout << efficiencyGraphs[s]->GetName() << endl; TH1D *slice = efficiencyGraphs[s]->ProjectionX(("projectionX1" + sliceString).c_str() , j,j); slices.push_back(slice); cout << "here1 \n"; slice->SetTitle((plotname + " " + sliceEta).c_str()); if (xAxisLabel != "") slice->GetXaxis()->SetTitle(xAxisLabel.c_str()); slice->GetXaxis()->SetTitleOffset(1.0); slice->GetXaxis()->SetLabelSize(0.03); if (yAxisLabel != "") slice->GetYaxis()->SetTitle(yAxisLabel.c_str()); slice->GetYaxis()->SetTitleOffset(1.75); double MAXY = 0.04; if (maxY > 0) MAXY = maxY; slice->SetMaximum(MAXY); slice->SetMinimum(0.0); cout << "here2 \n"; leg1->AddEntry(slice, efficiencyGraphLabels[s].c_str(), "LP"); slice->SetMarkerColor(COLORS[s]); slice->SetLineColor(COLORS[s]); slice->SetMarkerSize(0.75); slice->SetMarkerStyle(MARKERS[s]); cout << "here3 \n"; if (s==0) { slice->Draw(); } else { slice->Draw("same"); } } leg1->Draw(); cv->SaveAs((filename + sliceEta + ".gif").c_str()); cv->SaveAs((filename + sliceEta + ".eps").c_str()); } return; }
void test() { style(); setLogBins(nlogfullimassbins,logfullimassmin,logfullimassmax,logfullimassbins); float Mhat; TCanvas* c = new TCanvas("c","c",600,400); c->SetLogx(); c->SetLogy(); c->Draw(); c->cd(); TLegend* leg = new TLegend(0.6627517,0.6846449,0.7919463,0.8261126,NULL,"brNDC"); leg->SetFillStyle(4000); //will be transparent leg->SetFillColor(0); leg->SetTextFont(42); TFile fLoose("/data/hod/2011/NTUPLE/analysisLocalControl_TightLoose.root", "READ"); TTree* tLoose = (TTree*)fLoose.Get("allCuts/allCuts_tree"); tLoose->SetBranchAddress("Mhat", &Mhat); Int_t nLoose = tLoose->GetEntries(); TH1D* hLoose = new TH1D("hLoose","tight-loose vs. tight-tight selection;m_{#mu#mu} TeV;Events",nlogfullimassbins,logfullimassbins); hLoose->SetLineColor(kRed); hLoose->SetMarkerColor(kRed); hLoose->SetMarkerStyle(24); hLoose->SetMarkerSize(0.8); hLoose->SetMinimum(1.e-3); hLoose->SetMaximum(7.e+5); hLoose->GetXaxis()->SetMoreLogLabels(); hLoose->GetXaxis()->SetNoExponent(); leg->AddEntry(hLoose,"tight-loose","lep"); for(Int_t i=0 ; i<nLoose ; i++) { tLoose->GetEntry(i); hLoose->Fill(Mhat*TeV2GeV); } TFile fTight("/data/hod/2011/NTUPLE/analysisLocalControl.root", "READ"); TTree* tTight = (TTree*)fTight.Get("allCuts/allCuts_tree"); tTight->SetBranchAddress("Mhat", &Mhat); Int_t nTight = tTight->GetEntries(); TH1D* hTight = new TH1D("hTight","tight-loose vs. tight-tight selection;m_{#mu#mu} TeV;Events",nlogfullimassbins,logfullimassbins); hTight->SetLineColor(kBlack); hTight->SetMarkerColor(kBlack); hTight->SetMarkerStyle(24); hTight->SetMarkerSize(0.8); hTight->SetMinimum(1.e-3); hTight->SetMaximum(7.e+5); hTight->GetXaxis()->SetMoreLogLabels(); hTight->GetXaxis()->SetNoExponent(); leg->AddEntry(hTight,"tight-tight","lep"); for(Int_t i=0 ; i<nTight ; i++) { tTight->GetEntry(i); hTight->Fill(Mhat*TeV2GeV); } hTight->Draw("e1x1"); hLoose->Draw("e1x1SAMES"); leg->Draw("SAMES"); c->RedrawAxis(); c->SaveAs("plots/Wjets.png"); }
void massfitvn_Jpsi() { double fit_range_low = 2.6; double fit_range_high = 3.5; double JPsi_mass = 3.097; int npt = 7; TFile* file1 = TFile::Open("HM185_JpsivnHist_etagap1p5_v30_eff_extdeta.root"); TFile ofile("v2vspt_fromfit_jpsi_HM185_250_deta1p5_doubleCB_v30_eff_exp_extdeta.root","RECREATE"); //v12 double alpha_fit[14] = {4.30986,3.50841,3.03436,2.73741,2.37934,2.10685,2.03615}; double n_fit[14] = {1.88853,1.9839,2.03198,2.07295,2.11001,2.15234,2.10154}; TF1* fmasssig[9]; TF1* fmassbkg[9]; TF1* fmasstotal[9]; TF1* fvn[9]; double pt[13]; double KET_ncq[13]; double v2[13]; double v2e[13]; double v2_bkg[13]; double v2_ncq[13]; double v2e_ncq[13]; double ptbin[14] = {0.2, 1.8, 3.0, 4.5, 6.0, 8.0, 10, 20}; double a[13]; double b[13]; double sigfrac[13]; TCanvas* c[10]; for(int i=0;i<npt;i++) { c[i] = new TCanvas(Form("c_%d",i),Form("c_%d",i),800,400); c[i]->Divide(2,1); } for(int i=0;i<npt;i++) { c[i]->cd(1)->SetTopMargin(0.06); c[i]->cd(1)->SetLeftMargin(0.18); c[i]->cd(1)->SetRightMargin(0.043); c[i]->cd(1)->SetBottomMargin(0.145); c[i]->cd(2)->SetTopMargin(0.06); c[i]->cd(2)->SetLeftMargin(0.18); c[i]->cd(2)->SetRightMargin(0.043); c[i]->cd(2)->SetBottomMargin(0.145); } TCanvas* c2 = new TCanvas("c2","c2",100,100); TLatex* tex = new TLatex; tex->SetNDC(); tex->SetTextFont(42); tex->SetTextSize(0.045); tex->SetLineWidth(2); TLatex* texCMS = new TLatex; texCMS->SetNDC(); texCMS->SetTextFont(42); texCMS->SetTextSize(0.05); texCMS->SetTextAlign(12); TH1D* hist = new TH1D("hist","",10,2.6,3.5); hist->SetLineWidth(0); //hist->GetYaxis()->SetRangeUser(0,0.3); hist->GetXaxis()->SetTitle("#it{m}_{#mu#mu} (GeV)"); hist->GetYaxis()->SetTitle("v_{2}^{S+B}"); hist->GetXaxis()->CenterTitle(); hist->GetYaxis()->CenterTitle(); hist->GetXaxis()->SetTitleOffset(1.3); hist->GetYaxis()->SetTitleOffset(2); hist->GetXaxis()->SetLabelOffset(0.007); hist->GetYaxis()->SetLabelOffset(0.007); hist->GetXaxis()->SetTitleSize(0.045); hist->GetYaxis()->SetTitleSize(0.045); hist->GetXaxis()->SetTitleFont(42); hist->GetYaxis()->SetTitleFont(42); hist->GetXaxis()->SetLabelFont(42); hist->GetYaxis()->SetLabelFont(42); hist->GetXaxis()->SetLabelSize(0.04); hist->GetYaxis()->SetLabelSize(0.04); hist->SetMinimum(0.01); hist->SetMaximum(0.33); c2->cd(); hist->Draw(); for(int i=0;i<npt;i++) { TH1D* h_data = (TH1D*)file1->Get(Form("massjpsi_pt%d",i)); h_data->SetMinimum(0); h_data->SetMarkerSize(0.8); h_data->SetMarkerStyle(20); h_data->SetLineWidth(1); h_data->SetOption("e"); h_data->Rebin(2); h_data->GetXaxis()->SetRangeUser(2.6,3.5); h_data->GetXaxis()->SetTitle("#it{m}_{#mu#mu} (GeV)"); h_data->GetYaxis()->SetTitle("Entries / 10 MeV"); h_data->GetXaxis()->CenterTitle(); h_data->GetYaxis()->CenterTitle(); h_data->GetXaxis()->SetTitleOffset(1.3); h_data->GetYaxis()->SetTitleOffset(2); h_data->GetXaxis()->SetLabelOffset(0.007); h_data->GetYaxis()->SetLabelOffset(0.007); h_data->GetXaxis()->SetTitleSize(0.045); h_data->GetYaxis()->SetTitleSize(0.045); h_data->GetXaxis()->SetTitleFont(42); h_data->GetYaxis()->SetTitleFont(42); h_data->GetXaxis()->SetLabelFont(42); h_data->GetYaxis()->SetLabelFont(42); h_data->GetXaxis()->SetLabelSize(0.04); h_data->GetYaxis()->SetLabelSize(0.04); h_data->GetXaxis()->SetNoExponent(true); ((TGaxis*)h_data->GetXaxis())->SetMaxDigits(7); h_data->SetMaximum(h_data->GetMaximum()*1.5); TH1D* h_pt = (TH1D*)file1->Get(Form("Ptjpsi_eff_pt%d",i)); TH1D* h_KET = (TH1D*)file1->Get(Form("KETjpsi_eff_pt%d",i)); pt[i] = h_pt->GetMean(); KET_ncq[i] = h_KET->GetMean()/2.0; c[i]->cd(1); /*p definitions [0] CB1 yield; [1] Common mean of CB and Gaus; [2] CB1 sigma; [3] CB n; [4] CB alpha; [5] CB2 yield; [6] CB2 sigma; [7-10] poly 3; [11] v2 signal; [12-13] v2 bkg; */ TF1* f = new TF1(Form("f_%d",i), crystalball_function_total, fit_range_low, fit_range_high, 11); f->SetLineColor(2); f->SetLineWidth(1); f->SetParNames("CB1_Yield","common_mean","CB1_sigma","CB_N","CB_Alpha","CB2_Yield","CB2_Sigma","Pol0","Pol1","Pol2","Pol3"); //first fit data mass signal + bkg f->SetParameter(0,10000.); f->SetParameter(1,JPsi_mass); f->SetParameter(2,0.03); f->SetParameter(3,1.0); f->SetParameter(4,1.0); f->SetParameter(5,10000); f->SetParameter(6,0.03); f->SetParLimits(2,0.01,0.1); f->SetParLimits(6,0.01,0.1); //fix alpha & n from MC f->FixParameter(4,alpha_fit[i]); f->FixParameter(3,n_fit[i]); f->FixParameter(1,JPsi_mass); //for first few attempt fix mean of gaussian to get reasonable estimation of other pars; later open it up h_data->Fit(Form("f_%d",i),"q","",fit_range_low,fit_range_high); h_data->Fit(Form("f_%d",i),"q","",fit_range_low,fit_range_high); f->ReleaseParameter(1); //now let gaussian mean float h_data->Fit(Form("f_%d",i),"L q","",fit_range_low,fit_range_high); h_data->Fit(Form("f_%d",i),"L q","",fit_range_low,fit_range_high); h_data->Fit(Form("f_%d",i),"L m","",fit_range_low,fit_range_high); //draw D0 signal separately TF1* f1 = new TF1(Form("f_sig_%d",i), crystalball_function_signal, fit_range_low, fit_range_high, 7); f1->SetLineColor(kOrange-3); f1->SetLineWidth(1); f1->SetLineStyle(2); f1->SetFillColorAlpha(kOrange-3,0.3); f1->SetFillStyle(1001); f1->FixParameter(0,f->GetParameter(0)); f1->FixParameter(1,f->GetParameter(1)); f1->FixParameter(2,f->GetParameter(2)); f1->FixParameter(3,f->GetParameter(3)); f1->FixParameter(4,f->GetParameter(4)); f1->FixParameter(5,f->GetParameter(5)); f1->FixParameter(6,f->GetParameter(6)); fmasssig[i] = (TF1*)f1->Clone(); fmasssig[i]->SetName(Form("masssigfcn_pt%d",i)); fmasssig[i]->Write(); f1->Draw("LSAME"); //draw poly bkg separately TF1* f3 = new TF1(Form("f_bkg_%d",i),"[7] + [8]*x + [9]*x*x + [10]*x*x*x", fit_range_low, fit_range_high); f3->SetLineColor(4); f3->SetLineWidth(1); f3->SetLineStyle(2); f3->FixParameter(7,f->GetParameter(7)); f3->FixParameter(8,f->GetParameter(8)); f3->FixParameter(9,f->GetParameter(9)); f3->FixParameter(10,f->GetParameter(10)); fmassbkg[i] = (TF1*)f3->Clone(); fmassbkg[i]->SetName(Form("massbkgfcn_pt%d",i)); fmassbkg[i]->Write(); f3->Draw("LSAME"); tex->DrawLatex(0.22,0.86,"185 #leq N_{trk}^{offline} < 250"); tex->DrawLatex(0.22,0.80,Form("%.1f < p_{T} < %.1f GeV",ptbin[i],ptbin[i+1])); tex->DrawLatex(0.22,0.74,"-2.86 < y_{cm} < -1.86 or 0.94 < y_{cm} < 1.94"); texCMS->DrawLatex(.18,.97,"#font[61]{CMS} #it{Preliminary}"); //texCMS->DrawLatex(.18,.97,"#font[61]{CMS}"); texCMS->DrawLatex(0.73,0.97, "#scale[0.8]{pPb 8.16 TeV}"); TLegend* leg = new TLegend(0.21,0.4,0.5,0.65,NULL,"brNDC"); leg->SetBorderSize(0); leg->SetTextSize(0.045); leg->SetTextFont(42); leg->SetFillStyle(0); leg->AddEntry(h_data,"data","p"); leg->AddEntry(f,"Fit","L"); leg->AddEntry(f1,"J/#psi Signal","f"); leg->AddEntry(f3,"Combinatorial","l"); leg->Draw("SAME"); sigfrac[i] = f1->Integral(2.94,3.24)/f->Integral(2.94,3.24); //c->Print(Form("plots/massfit_pt%d.pdf",i)); //fit vn //[9] is vn_sig //[10-11] is vn bkg, const + linear vn(pT) TGraphErrors* vn_data = (TGraphErrors*)file1->Get(Form("v2_mass_pt%d",i)); c[i]->cd(2); hist->Draw(); TF1* fmass_combinemassvnfit = new TF1(Form("fmass_combinemassvnfit_%d",i),crystalball_function_total, fit_range_low, fit_range_high, 11); TF1* fvn_combinemassvnfit = new TF1(Form("fvn_combinemassvnfit_%d",i), crystalball_function_v2, fit_range_low, fit_range_high, 15); fmass_combinemassvnfit->SetLineColor(2); fmass_combinemassvnfit->SetLineWidth(1); fvn_combinemassvnfit->SetLineColor(2); fvn_combinemassvnfit->SetLineWidth(1); ROOT::Math::WrappedMultiTF1 wfmass_combinemassvnfit(*fmass_combinemassvnfit,1); ROOT::Math::WrappedMultiTF1 wfvn_combinemassvnfit(*fvn_combinemassvnfit,1); ROOT::Fit::DataOptions opt; ROOT::Fit::DataRange range_massfit; range_massfit.SetRange(fit_range_low,fit_range_high); ROOT::Fit::BinData datamass(opt,range_massfit); ROOT::Fit::FillData(datamass, h_data); ROOT::Fit::DataRange range_vnfit; range_vnfit.SetRange(fit_range_low,fit_range_high); ROOT::Fit::BinData datavn(opt,range_vnfit); ROOT::Fit::FillData(datavn, vn_data); ROOT::Fit::Chi2Function chi2_B(datamass, wfmass_combinemassvnfit); ROOT::Fit::Chi2Function chi2_SB(datavn, wfvn_combinemassvnfit); GlobalChi2_poly3bkg_floatwidth globalChi2(chi2_B, chi2_SB); ROOT::Fit::Fitter fitter; const int Npar = 15; double par0[Npar]; for( int ipar = 0; ipar < f->GetNpar(); ipar++ ) par0[ipar] = f->GetParameter(ipar); par0[11] = 0.01; par0[12] = 0.10; par0[13] = 0.05; par0[14] = 0.01; fitter.Config().SetParamsSettings(Npar,par0); // fix parameter fitter.Config().ParSettings(0).Fix(); fitter.Config().ParSettings(1).Fix(); fitter.Config().ParSettings(2).Fix(); fitter.Config().ParSettings(3).Fix(); fitter.Config().ParSettings(4).Fix(); fitter.Config().ParSettings(5).Fix(); fitter.Config().ParSettings(6).Fix(); fitter.Config().ParSettings(7).Fix(); fitter.Config().ParSettings(8).Fix(); fitter.Config().ParSettings(9).Fix(); fitter.Config().ParSettings(10).Fix(); fitter.Config().MinimizerOptions().SetPrintLevel(0); fitter.Config().SetMinimizer("Minuit2","Migrad"); fitter.FitFCN(Npar,globalChi2,0,datamass.Size()+datavn.Size(),true); ROOT::Fit::FitResult result = fitter.Result(); result.Print(std::cout); fmass_combinemassvnfit->SetFitResult( result, iparmassfit_poly3bkg_floatwidth); fmass_combinemassvnfit->SetRange(range_massfit().first, range_massfit().second); fmass_combinemassvnfit->SetLineColor(kRed); h_data->GetListOfFunctions()->Add(fmass_combinemassvnfit); //c->cd(); //h_data->Draw(); fvn_combinemassvnfit->SetFitResult( result, iparvnfit_poly3bkg_floatwidth); fvn_combinemassvnfit->SetRange(range_vnfit().first, range_vnfit().second); fvn_combinemassvnfit->SetLineColor(2); //fvn_combinemassvnfit->SetLineStyle(2); vn_data->GetListOfFunctions()->Add(fvn_combinemassvnfit); vn_data->SetTitle(""); vn_data->SetMarkerSize(0.8); vn_data->SetLineWidth(1); //c1->cd(); vn_data->Draw("PESAME"); fvn[i] = (TF1*)fvn_combinemassvnfit->Clone(); fvn[i]->SetName(Form("vnfit_pt%d",i)); fvn[i]->Write(); fmasstotal[i] = (TF1*)fmass_combinemassvnfit->Clone(); fmasstotal[i]->SetName(Form("masstotalfcn_pt%d",i)); fmasstotal[i]->Write(); tex->DrawLatex(0.22,0.86,"185 #leq N_{trk}^{offline} < 250"); tex->DrawLatex(0.22,0.80,Form("%.1f < p_{T} < %.1f GeV",ptbin[i],ptbin[i+1])); //tex->DrawLatex(0.22,0.74,"1.4 < |y_{cm}+0.46| < 2.4"); tex->DrawLatex(0.22,0.74,"-2.86 < y_{cm} < -1.86 or 0.94 < y_{cm} < 1.94"); //tex->DrawLatex(0.22,0.68,"|#Delta#eta| > 2"); //texCMS->DrawLatex(.18,.97,"#font[61]{CMS}"); texCMS->DrawLatex(.18,.97,"#font[61]{CMS} #it{Preliminary}"); texCMS->DrawLatex(0.73,0.97, "#scale[0.8]{pPb 8.16 TeV}"); v2[i] = fvn_combinemassvnfit->GetParameter(11); v2e[i] = fvn_combinemassvnfit->GetParError(11); v2_bkg[i] = fvn_combinemassvnfit->GetParameter(12) + fvn_combinemassvnfit->GetParameter(13) * JPsi_mass; v2_ncq[i] = v2[i]/2.0; v2e_ncq[i] = v2e[i]/2.0; a[i] = fvn_combinemassvnfit->GetParameter(12); b[i] = fvn_combinemassvnfit->GetParameter(13); TF1* fvnbkg = new TF1(Form("fvnbkg_%d",1),"( [0] + [1] * x)", fit_range_low, fit_range_high); fvnbkg->FixParameter(0,fvn_combinemassvnfit->GetParameter(12)); fvnbkg->FixParameter(1,fvn_combinemassvnfit->GetParameter(13)); fvnbkg->SetName(Form("fvnbkg_fcn_pt%d",i)); fvnbkg->Write(); fvnbkg->SetLineStyle(7); //fvnbkg->Draw("LSAME"); TF1* fvnsig = new TF1(Form("fvnsig_%d",i),function_v2_sig,fit_range_low,fit_range_high,12); for(int k=0;k<12;k++) { fvnsig->FixParameter(k,fvn_combinemassvnfit->GetParameter(k)); } fvnsig->SetLineColor(kOrange-3); fvnsig->SetLineWidth(1); fvnsig->SetLineStyle(2); fvnsig->SetFillColorAlpha(kOrange-3,0.3); fvnsig->SetFillStyle(1001); //fvnsig->Draw("LSAME"); TLegend* leg1 = new TLegend(0.72,0.525,0.91,0.65,NULL,"brNDC"); leg1->SetBorderSize(0); leg1->SetTextSize(0.045); leg1->SetTextFont(42); leg1->SetFillStyle(0); leg1->AddEntry(h_data,"data","p"); leg1->AddEntry(fvn_combinemassvnfit,"Fit","l"); //leg1->AddEntry(fvnsig,"#alpha(#it{m}_{#mu#mu})v_{2}^{S}","f"); leg1->Draw("SAME"); double xmass[200]; double pullmass[200]; float Chi2=0; int ndf = (fit_range_high - fit_range_low)/0.01 - 8; for(int k=0;k<h_data->GetNbinsX();k++) { xmass[k] = h_data->GetBinCenter(k); pullmass[k] = (h_data->GetBinContent(k) - fmass_combinemassvnfit->Eval(xmass[k]))/h_data->GetBinError(k); if(fabs(pullmass[k])<5) { //cout<<pullmass[k]<<endl; Chi2 += pullmass[k]*pullmass[k]; } } c[i]->cd(1); tex->DrawLatex(0.22,0.67,Form("#chi^{2}/ndf = %.0f/%d",Chi2,ndf)); double xv2[200]; double pullv2[200]; double v2y[200]; float Chi2v2=0; int ndfv2 = 8 - 4; //Nbin - Npar for(int k=0;k<vn_data->GetN()-1;k++) { vn_data->GetPoint(k,xv2[k],v2y[k]); //xv2[k] = vn_dara->GetBinCenter(k); pullv2[k] = (v2y[k] - fvn_combinemassvnfit->Eval(xv2[k]))/vn_data->GetErrorY(k); cout<<k<<": "<<pullv2[k]<<endl; if(fabs(pullv2[k])<1000) { //cout<<pullmass[k]<<endl; Chi2v2 += pullv2[k]*pullv2[k]; } cout<<"fcn: "<<fvn_combinemassvnfit->Eval(xv2[k])<<endl; cout<<"data: "<<v2y[k]<<endl; } c[i]->cd(2); tex->DrawLatex(0.22,0.67,Form("#chi^{2}/ndf = %.1f/%d",Chi2v2,ndfv2)); } for(int i=0;i<npt;i++) { c[i]->Print(Form("plots/v30/eff/exp/JPsi_mass_vnfit_combine_pt%d.pdf",i)); c[i]->Print(Form("plots/v30/eff/exp/JPsi_mass_vnfit_combine_pt%d.gif",i)); } TGraphErrors* v2plot = new TGraphErrors(npt,pt,v2,0,v2e); TGraphErrors* v2ncqplot = new TGraphErrors(npt,KET_ncq,v2_ncq,0,v2e_ncq); TGraphErrors* v2bkgplot = new TGraphErrors(npt,pt,v2_bkg,0,0); v2plot->SetName("v2vspt"); v2ncqplot->SetName("v2vsKET_ncq"); v2bkgplot->SetName("v2bkgvspt"); v2plot->Write(); v2ncqplot->Write(); v2bkgplot->Write(); }
void DrawEff_DS(){ gStyle->SetOptStat(kFALSE); gStyle->SetErrorX(0); //bool isweight=kFALSE; bool isweight=kTRUE; bool isHF=kTRUE; //bool isHF=kFALSE; if(isweight) TString dir="weight"; else TString dir="noweight"; const int Nhist=4; const int NGen=1; const int Ncent=6; //const double HFbin[]={0,0.1,0.2,0.4,0.6,0.8,1,2,4,6,9,12,15,20,30,50,75,100}; const double xerr[Ncent]={0,0,0,0,0,0}; /* const double HFbin_cent[Nhist][Ncent+1]={ {0,2.92,10.1,19.3,23.7,30.2,100}, {0,1.03,5.00,11.6,15.0,20.3,100}, {0,2.7,12.6,28.6,36.9,49.6,100}}; */ const double HFbin_cent[Nhist][Ncent+1]={ {0,2.725,10.065,19.565,23.975,30.455,100}, {0,0.975,5.005,11.775,15.285,20.725,100}, {0,2.515,12.465,28.855,37.235,50.085,100}}; const double cent[Ncent]={95,75,45,25,15,5}; const int nHFbin=sizeof(HFbin)/sizeof(double)-1; //double color[NGen][Nhist]={{2,1,4},{2,1,4}}; //double Style[NGen][Nhist]={{20,24,28},{20,24,28}}; double color[NGen][Nhist]={{2,1,4}}; double Style[NGen][Nhist]={{20,24,28}}; //TString Gen[NGen]={"Hijing","Epos"}; TString Gen[NGen]={"Hijing"}; TString histoname[Nhist]={"HFEnergy4","HFEnergyPlus4","HFEnergyPlus","Ntrk"}; TString etarange[Nhist]={" HF E_{T} |#eta|>4"," HF E_{T} #eta>4"," HF E_{T} #eta>0",""}; TString filename[NGen]; TFile* f[NGen]; TH1F* h_or[NGen][Nhist]; TH1F* reh_or[NGen][Nhist]; TH1F* h_tr[NGen][Nhist]; TH1F* reh_tr[NGen][Nhist]; TH1F* h_ds[NGen][Nhist]; TH1F* reh_ds[NGen][Nhist]; TH1F* h_eff[NGen][Nhist]; TH1F* reh_eff[NGen][Nhist]; TLatex* T1[Nhist]; TLatex* T2; TLatex* T3[NGen]; TF1 *fitEff[NGen][Nhist]; //TGraphAsymmErrors *gEff[NGen][Nhist]; TGraph *gEff[NGen][Nhist]; c1 = new TCanvas("c1"," ",800,500); c2 = new TCanvas("c2"," ",800,700); makeMultiPanelCanvas(c1,NGen,1,0.03,0.03,0.14,0.14,0.03); makeMultiPanelCanvas(c2,1,1,0.03,0.03,0.03,0.03,0.03); //for |eta|>4 HFEnergy: /* for(int k=0;k<NGen;k++) for(int j=0;j<Nhist;j++) fitEff[k][j]= new TF1(Form("fitEff_%s%s",Gen[k].Data(),histoname[j]),"[0]-[1]*exp([2]*x)-[3]*exp(-[4]*x)",0,300); fitEff[0][0]->SetParameters(0.999876,0.44648,-1.78911,0.242036,0.549932); fitEff[0][1]->SetParameters(1.,0.367894,-3.36629,0.104605,0.690272); fitEff[0][2]->SetParameters(0.99981,0.697501,-2.59569,0.15323,0.411757); fitEff[1][0]->SetParameters(0.999918,0.691843,-0.785042,0.0352768,0.449521); fitEff[1][1]->SetParameters(0.999929,0.284,-2.25636,0.264114,0.951221); fitEff[1][2]->SetParameters(0.999887,0.5,-2.39395,0.373215,0.550851); */ for(int k=0;k<NGen;k++){ T3[k]=new TLatex(0.45,0.93,Gen[k]); T3[k]->SetNDC(); T3[k]->SetTextAlign(12); T3[k]->SetTextSize(0.05); T3[k]->SetTextColor(1); T3[k]->SetTextFont(42); } for(int j=0;j<Nhist;j++){ T1[j]=new TLatex(0.4,0.85,etarange[j]); T1[j]->SetNDC(); T1[j]->SetTextAlign(12); T1[j]->SetTextSize(0.05); T1[j]->SetTextColor(1); T1[j]->SetTextFont(42); } T2=new TLatex(0.2,0.25,"Double Side"); T2->SetNDC(); T2->SetTextAlign(12); T2->SetTextSize(0.06); T2->SetTextColor(1); T2->SetTextFont(42); j=3; for(int k=0;k<NGen;k++){ //for(int j=0;j<Nhist;j++){ filename[k]=Form("output/%s/pPbHist_%s_DS",dir.Data(),Gen[k].Data()); f[k]=TFile::Open(Form("%s.root",filename[k].Data())); h_or[k][j]=(TH1F*)f[k]->Get(Form("h%s",histoname[j].Data())); h_tr[k][j]=(TH1F*)f[k]->Get(Form("h%s_tr",histoname[j].Data())); h_ds[k][j]=(TH1F*)f[k]->Get(Form("h%s_DS",histoname[j].Data())); h_eff[k][j]=(TH1F*)f[k]->Get(Form("hEff_%s",histoname[j].Data())); fixedFontHist(h_or[k][j],1.8,2); fixedFontHist(h_tr[k][j],1.8,2); fixedFontHist(h_ds[k][j],1.8,2); //reh_or[k][j]=(TH1F*)h_or[k][j]->Clone(Form("re%s%s",Gen[k].Data(),histoname[j].Data())); //reh_tr[k][j]=(TH1F*)h_tr[k][j]->Clone(Form("re%s%s_tr",Gen[k].Data(),histoname[j].Data())); //reh_ds[k][j]=(TH1F*)h_ds[k][j]->Clone(Form("re%s%s_ds",Gen[k].Data(),histoname[j].Data())); //reh_or[k][j]=(TH1F*)h_or[k][j]->Rebin(Ncent,Form("re%s%s",Gen[k].Data(),histoname[j].Data()),HFbin_cent[j]); //reh_tr[k][j]=(TH1F*)h_tr[k][j]->Rebin(Ncent,Form("re%s%s_tr",Gen[k].Data(),histoname[j].Data()),HFbin_cent[j]); //reh_ds[k][j]=(TH1F*)h_ds[k][j]->Rebin(Ncent,Form("re%s%s_ds",Gen[k].Data(),histoname[j].Data()),HFbin_cent[j]); reh_or[k][j]=(TH1F*)h_or[k][j]->Rebin(nHFbin,Form("re%s%s",Gen[k].Data(),histoname[j].Data()),HFbin); reh_tr[k][j]=(TH1F*)h_tr[k][j]->Rebin(nHFbin,Form("re%s%s_tr",Gen[k].Data(),histoname[j].Data()),HFbin); reh_ds[k][j]=(TH1F*)h_ds[k][j]->Rebin(nHFbin,Form("re%s%s_ds",Gen[k].Data(),histoname[j].Data()),HFbin); //normalizeByBinWidth(reh_or[k][j]); //normalizeByBinWidth(reh_tr[k][j]); //normalizeByBinWidth(reh_ds[k][j]); //gEff[k][j]=new TGraphAsymmErrors(); gEff[k][j]=new TGraph(h_eff[k][j]); gEff[k][j]->SetPoint(0,0,1); gEff[k][j]->SetName(Form("gEff_%s%s",Gen[k].Data(),histoname[j].Data())); //gEff[k][j]->BayesDivide(reh_tr[k][j],reh_ds[k][j]); gEff[k][j]->SetMarkerColor(color[k][j]); gEff[k][j]->SetLineColor(color[k][j]); gEff[k][j]->SetMarkerStyle(Style[k][j]); gEff[k][j]->SetMarkerSize(1.2); gEff[k][j]->GetXaxis()->SetLimits(0.01,99.9); gEff[k][j]->SetTitle(""); //} } TH1D * hFrame = new TH1D("","",100,0,100.); if(!isHF){ hFrame->GetXaxis()->SetLabelOffset(999); hFrame->GetXaxis()->SetTickLength(0);} hFrame->GetYaxis()->SetTitle("Event Selection Efficiency"); hFrame->SetMaximum(1.09); hFrame->SetMinimum(0); if(isHF) hFrame->GetXaxis()->SetTitle("HF E_{T} (GeV/c)"); if(j==3) hFrame->GetXaxis()->SetTitle("track Mult"); hFrame->GetYaxis()->SetTitleSize(0.05); fixedFontHist(hFrame); hFrame->GetYaxis()->SetTitleOffset(1.5); for(k=0;k<NGen;k++){ if(isHF) c1->cd(k+1)->SetLogx(); else c1->cd(k+1); TLegend *leg=new TLegend(0.60,0.2,0.75,0.4); if(k!=0){ hFrame->GetYaxis()->SetTitle(""); hFrame->GetYaxis()->SetLabelSize(0); } hFrame->DrawCopy(); //for(j=0;j<Nhist;j++){ if(isHF) gEff[k][j]->Draw("Psame"); else{ ReverseXAxis(gEff[k][j],0.05); ReverseXGraph(gEff[k][j]); } //fitEff[k][j]->SetLineStyle(color[k][j]); //fitEff[k][j]->SetLineColor(color[k][j]); //fitEff[k][j]->Draw("same"); leg->AddEntry(gEff[k][j],etarange[j],"lp"); //} leg->SetTextSize(0.05); leg->SetBorderSize(0); leg->SetFillColor(0); TLine *l=new TLine(0,1,100,1); l->SetLineStyle(2); l->Draw("same"); leg->Draw("same"); T3[k]->Draw("same"); } if(isHF) c1->Print(Form("pic/OwnBinning/pPbHist_%s_DS_HF.png",dir.Data())); else c1->Print(Form("pic/OwnBinning/pPbHist_%s_DS_cent.png",dir.Data())); //------------------------------------------------------------------------------------------ if(isHF) //c2->cd()->SetLogx(); //else c2->cd(); TLegend *leg=new TLegend(0.7,0.2,0.85,0.4); hFrame->GetYaxis()->SetTitle("Event Selection Efficiency"); hFrame->GetYaxis()->SetLabelSize(18); hFrame->GetYaxis()->SetTitleOffset(1); hFrame->DrawCopy(); for(k=0;k<NGen;k++){ if(k==0){ gEff[k][j]->SetMarkerColor(1); gEff[k][j]->SetLineColor(1); gEff[k][j]->SetMarkerStyle(20); gEff[k][j]->SetMarkerSize(1.6); } else{ gEff[k][j]->SetMarkerColor(2); gEff[k][j]->SetLineColor(2); gEff[k][j]->SetMarkerStyle(24); gEff[k][j]->SetMarkerSize(1.6); } if(isHF) gEff[k][j]->Draw("Psame"); else{ ReverseXAxis(gEff[k][j],0.05); ReverseXGraph(gEff[k][j]); } leg->SetTextSize(0.05); leg->SetBorderSize(0); leg->SetFillColor(0); leg->AddEntry(gEff[k][j],Gen[k],"p"); TLine *l=new TLine(0,1,100,1); l->SetLineStyle(2); } T1[j]->Draw("same"); leg->Draw("same"); l->Draw("same"); if(isHF) c2->Print(Form("pic/OwnBinning/pPbHist_%s_DS_%s_HF.png",dir.Data(),histoname[j].Data())); else c2->Print(Form("pic/OwnBinning/pPbHist_%s_DS_%s_cent.png",dir.Data(),histoname[j].Data())); }
void drawCMSresponse() { // New style settings // #include "tdrstyle_mod14.C" setTDRStyle(); // call cmsPrel(iPeriod, iPos); // int iPeriod = 2; // 1=7TeV, 2=8TeV, 3=7+8TeV, 7=7+8+13TeV // second parameter in example_plot is iPos, which drives the position of the CMS logo in the plot // iPos=11 : top-left, left-aligned // iPos=33 : top-right, right-aligned // iPos=22 : center, centered // mode generally : // iPos = 10*(alignement 1/2/3) + position (1/2/3 = left/center/right) if (!_jec) { const char *sd = "CondFormats/JetMETObjects/data"; //const char *st = "Winter14_V5_MC"; //const char *st = "Winter14_V8_MC"; // 2012 //const char *st = "Winter14_V8_DATA"; //const char *st = "Summer15_25nsV3_DATA"; //const char *st = "Summer15_25nsV6_DATA"; //const char *st = "Summer15_25nsV7_DATA"; //const char *st = "Fall15_25nsV1_DATA"; //const char *st = "Spring16_25nsV3_MC"; //const char *st = "Summer16_23Sep2016GV3_DATA"; // 2017 //const char *st = "Summer16_03Feb2017G_V3_DATA"; // 2017 03FebV3 const char *st = "Summer16_03Feb2017BCD_V7_DATA"; // 2017 03FebV7 const char *s; //s = Form("%s/%s_L1FastJet_AK5PFchs.txt",sd,st); cout << s << endl; //JetCorrectorParameters *l1 = new JetCorrectorParameters(s); s = Form("%s/%s_L1FastJet_AK4PFchs.txt",sd,st); cout << s << endl; JetCorrectorParameters *l1 = new JetCorrectorParameters(s); //s = Form("%s/%s_L2Relative_AK5PFchs.txt",sd,st); cout << s << endl; s = Form("%s/%s_L2Relative_AK4PFchs.txt",sd,st); cout << s << endl; JetCorrectorParameters *l2 = new JetCorrectorParameters(s); //s = Form("%s/%s_L3Absolute_AK5PFchs.txt",sd,st); cout << s << endl; s = Form("%s/%s_L3Absolute_AK4PFchs.txt",sd,st); cout << s << endl; JetCorrectorParameters *l3 = new JetCorrectorParameters(s); s = Form("%s/%s_L2L3Residual_AK4PFchs.txt",sd,st); cout << s << endl; JetCorrectorParameters *l2l3 = new JetCorrectorParameters(s); vector<JetCorrectorParameters> v; v.push_back(l1); v.push_back(*l2); v.push_back(*l3); v.push_back(*l2l3); _jec = new FactorizedJetCorrector(v); } if (!_jecpt) { _jecpt = new TF1("jecpt",fJECPt,0,6500,3); } //double ergs[] = {30, 60, 110, 400, 2000}; //const int ne = sizeof(ergs)/sizeof(ergs[0]); double pts[] = {10, 30, 100, 400, 2000}; const int npt = sizeof(pts)/sizeof(pts[0]); const int neta = 48;//52; const int jeta = TMath::Pi()*0.4*0.4; const int mu = 0; TGraph *gs[npt]; //for (int ie = 0; ie != ne; ++ie) { for (int ipt = 0; ipt != npt; ++ipt) { //double energy = ergs[ie]; double pt = pts[ipt]; TGraph *g = new TGraph(0); gs[ipt] = g; for (int ieta = 0; ieta != neta; ++ieta) { double eta = (ieta+0.5)*0.1; //double pt = energy / cosh(eta); double energy = pt * cosh(eta); if (pt >= 10. && energy < 6500.) { // 13 TeV double jes = getResp(pt, eta, jeta, mu); int n = g->GetN(); g->SetPoint(n, eta, jes); } } // for ie } // for ieta // Draw results //TH1D *h = new TH1D("h",";Jet |#eta|;Simulated jet response",40,0,4.8); //TH1D *h = new TH1D("h",";Jet |#eta|;Data jet response",40,0,4.8); TH1D *h = new TH1D("h",";Jet |#eta|;Data response+offset",40,0,4.8); h->SetMaximum(1.25); h->SetMinimum(0.5); extraText = "Simulation"; //extraText = "Simulation Preliminary"; //extraText = "Preliminary"; lumi_8TeV = ""; lumi_13TeV = ""; //lumi_13TeV = "2.1 fb^{-1}"; //TCanvas *c1 = tdrCanvas("c1",h,2,0,kSquare); TCanvas *c1 = tdrCanvas("c1",h,4,0,kSquare); TLegend *leg1 = tdrLeg(0.25,0.25,0.55,0.30); TLegend *leg2 = tdrLeg(0.25,0.20,0.55,0.25); TLegend *leg3 = tdrLeg(0.25,0.15,0.55,0.20); TLegend *leg4 = tdrLeg(0.55,0.25,0.85,0.30); TLegend *leg5 = tdrLeg(0.55,0.20,0.85,0.25); TLegend *legs[npt] = {leg1, leg2, leg3, leg4, leg5}; int colors[] = {kGreen+2, kBlack, kOrange+1, kBlue, kRed+1}; int markers[] = {kFullCircle, kOpenCircle, kFullSquare, kOpenSquare, kFullTriangleUp}; for (int ipt = 0; ipt != npt; ++ipt) { TGraph *g = gs[ipt]; g->SetMarkerColor(colors[ipt]); g->SetMarkerStyle(markers[ipt]); g->Draw("SAMEP"); //TLegend *leg = (ie<3 ? leg1 : leg2); TLegend *leg = legs[ipt]; leg->SetTextColor(colors[ipt]); //leg->AddEntry(g, Form("E = %1.0f GeV",ergs[ie]), "P"); leg->AddEntry(g, Form("p_{T} = %1.0f GeV",pts[ipt]), "P"); } TLatex *tex = new TLatex(); tex->SetNDC(); tex->SetTextSize(0.045); TLine *l = new TLine(); l->DrawLine(1.3,0.7,1.3,1.1); l->DrawLine(2.5,0.7,2.5,1.1); l->DrawLine(3.0,0.7,3.0,1.1); l->DrawLine(4.5,0.7,4.5,1.1); l->SetLineStyle(kDashed); l->DrawLine(3.2,0.7,3.2,1.1); //tex->DrawLatex(0.23,0.86,"2012 JES: Anti-k_{t} R = 0.5, PF+CHS"); //tex->DrawLatex(0.30,0.86,"53X JES: Anti-k_{t} R = 0.5, PF+CHS"); //tex->DrawLatex(0.30,0.86,"74X JES: Anti-k_{t} R = 0.4, PF+CHS"); //tex->DrawLatex(0.30,0.86,"76X JES: Anti-k_{t} R = 0.4, PF+CHS"); //tex->DrawLatex(0.23,0.86,"2016 JES: Anti-k_{T} R=0.4, PF+CHS"); tex->DrawLatex(0.23,0.86,"2017 JES: Anti-k_{t} R = 0.4, PF+CHS"); //tex->DrawLatex(0.23,0.86,"2017 03FebV3: Anti-k_{t} R = 0.4, PF+CHS"); tex->DrawLatex(0.19,0.78,"Barrel"); tex->DrawLatex(0.47,0.78,"Endcap"); //0.42 tex->DrawLatex(0.73,0.78,"Forward"); tex->DrawLatex(0.21,0.73,"BB"); tex->DrawLatex(0.43,0.73,"EC1"); tex->DrawLatex(0.57,0.73,"EC2"); tex->DrawLatex(0.77,0.73,"HF"); c1->SaveAs("pdf/drawCMSresponse.pdf"); } // drawCMSresponse
void compareGen(std::string mcfile1, std::string mcfile2, std::string var1, std::string var2="", std::string xtitle, std::string output="test", std::string header="Z(#rightarrow ee)+#geq 1 jet", std::string mcName1="Data", std::string mcName2="Madgraph", float xmin=-9999.0, float xmax=-9999.0, bool logScale=true ) { setTDRStyle(); gStyle->SetOptStat(0); TH1F* h1; TH1F* h2; char tempName[300]; if(var2 == "" )var2=var1; // first get the histogram files TFile *fmc1 = TFile::Open(mcfile1.data()); TFile *fmc2 = TFile::Open(mcfile2.data()); h1 = (TH1F*)(fmc1->Get(var1.data())); h2 = (TH1F*)(fmc2->Get(var2.data())); TH1D* hscale =(TH1D*) h1->Clone("hscale"); hscale->SetYTitle(Form("%s/%s",mcName1.data(),mcName2.data())); h1->GetXaxis()->SetNdivisions(5); h1->GetYaxis()->SetDecimals(); h2->GetXaxis()->SetNdivisions(5); h2->GetYaxis()->SetDecimals(); hscale->GetXaxis()->SetNdivisions(5); hscale->GetYaxis()->SetDecimals(); h1->SetLineColor(2); h1->SetMarkerColor(2); h1->SetMarkerSize(1); h1->SetMarkerStyle(24); h2->SetLineColor(4); h2->SetMarkerColor(4); h2->SetMarkerSize(1); h2->SetMarkerStyle(21); // if normalizing to the same area, set the scale int binLo = -1; int binHi = -1; int nbins = h1->GetNbinsX(); if(xmin>-9999.0 && xmax>-9999.0) { binLo = h1->FindBin(xmin); binHi = h1->FindBin(xmax)-1; } else { binLo = 1; binHi = nbins; xmin = h1->GetBinLowEdge(1); xmax = h1->GetBinLowEdge(nbins+1); } float scale_mc = (float)h1->Integral(binLo,binHi)/(float)h2->Integral(binLo,binHi); // cout << "binLo = " << binLo << ", binHi = " << binHi << endl; // cout << "xmin = " << xmin << "xmax = " << xmax << endl; // h2->Sumw2(); // // scale_mc = 1000.0*4.890*3048.0/2.29809910000000000e+07; // h2->Scale(scale_mc); cout << "h2 integral = " << h2->Integral() << endl; cout << "h1 integral = " << h1->Integral() << endl;; // get the ratio double chi2 = 0; int realbin = 0; for(int i=1;i<= nbins;i++){ double nmc=h2->GetBinContent(i); double ndata=h1->GetBinContent(i); double nmcerr=h2->GetBinError(i); double ndataerr=h1->GetBinError(i); if(nmc<0 || ndata<0)continue; if(nmcerr==0 && ndataerr==0)continue; if(nmc==0 && ndata==0)continue; double chi2ndef = (nmc-ndata)*(nmc-ndata)/ ( nmcerr*nmcerr+ ndataerr*ndataerr); chi2 += chi2ndef; realbin++; cout << "Bin " << i << " : " << ndata << ", " << nmc; cout << " " << chi2ndef << endl; // now calculate the ratio if(nmc==0 || nmcerr==0 || ndata==0 || ndataerr==0) { hscale->SetBinContent(i,-9999); hscale->SetBinError(i,1e-4); continue; } cout << "Bin " << i << " ratio = " << ndata/nmc << endl; hscale->SetBinContent(i,ndata/nmc); double err = 0; err= (ndata/nmc)*sqrt(pow(nmcerr/nmc,2)+pow(ndataerr/ndata,2)); hscale->SetBinError(i,err); } for(int i=1;i<=hscale->GetNbinsX();i++) cout << i << ": " << hscale->GetBinContent(i) << endl; h1->GetXaxis()->SetRangeUser(xmin,xmax); h2->GetXaxis()->SetRangeUser(xmin,xmax); hscale->GetXaxis()->SetRangeUser(xmin,xmax); TCanvas* c1 = new TCanvas("c1","",700,1000); c1->Divide(1,2,0.01,0); c1->cd(1); if(logScale) gPad->SetLogy(1); gPad->SetTopMargin(0.01); gPad->SetBottomMargin(0); gPad->SetRightMargin(0.04); float max_data = h1->GetBinError(h1->GetMaximumBin()) + h1->GetMaximum(); float max_mc = h2->GetBinError(h2->GetMaximumBin()) + h2->GetMaximum(); if(max_data > max_mc) { h1->Draw("e"); h2->Draw("hesame"); } else { h2->Draw("he"); h1->Draw("esame"); } float x1NDC = 0.725; float y1NDC = 0.615; float x2NDC = 0.928; float y2NDC = 0.951; TLegend* leg = new TLegend(x1NDC,y1NDC,x2NDC,y2NDC); leg->SetHeader(header.data()); leg->SetFillColor(0); leg->SetFillStyle(0); leg->SetTextSize(0.04); leg->SetBorderSize(0); leg->AddEntry(h1, mcName1.data()); leg->AddEntry(h2, mcName2.data()); leg->Draw("same"); c1->cd(2); gStyle->SetStatW (0.3); gStyle->SetStatH (0.3); gStyle->SetStatX (0.879447); gStyle->SetStatY (0.939033); gStyle->SetStatFontSize(0.05); gStyle->SetStatBorderSize(0); gPad->SetRightMargin(0.04); gPad->SetTopMargin(0); gPad->SetBottomMargin(0.2); gPad->SetTickx(); gStyle->SetOptFit(1); hscale->SetTitle(""); hscale->GetXaxis()->SetTitle(xtitle.data()); // hscale->SetMaximum(3.0); // hscale->SetMinimum(0.1); hscale->SetMaximum(2.0); hscale->SetMinimum(0.5); hscale->SetTitleOffset(1.2,"Y"); hscale->Draw("e1"); TF1* fline = new TF1("fline","pol1"); TLine* l2 = new TLine(xmin,1.,xmax,1.); l2->SetLineColor(4); l2->SetLineStyle(3); fline->SetLineWidth(3); fline->SetLineColor(6); fline->SetNpx(2500); // hscale->Fit("fline","",""); l2->Draw("same"); string dirName = "compareGen"; gSystem->mkdir(dirName.data()); std::string filename; std::string psname = dirName + "/" + var1; if(output !="test") psname = dirName+ "/" + output; else psname = dirName+ "/" + var1; filename = psname + ".eps"; c1->Print(filename.data()); filename = psname + ".gif"; c1->Print(filename.data()); filename = psname + ".pdf"; c1->Print(filename.data()); // c1->Close(); }
void plotRBDphi( double dphiCut=3.026, // double dphiCut=2.094, double dphiCut2 = 3.026, TString infname = "data.root", TString pythia = "pythia.root", TString mix = "mix.root", bool useWeight = true, bool drawXLabel = false, bool drawLeg = true) { useWeight = 0; int threshold1 = 80; int threshold2 = 120; gStyle->SetErrorX(0); TString cut1=Form("abs(eta1) < 2 && abs(eta2) < 2 && et1>%d&&et2>50",threshold1); TString cut2=Form("abs(eta1) < 2 && abs(eta2) < 2 && et1>%d&&et2>50",threshold2); cout <<cut1.Data()<<endl; cout <<cut2.Data()<<endl; TString trigcut = ""; TString cstring = ""; // open the data file TFile *inf = new TFile(infname.Data()); TTree *nt =(TTree*)inf->FindObjectAny("nt"); // open the pythia (MC) file TFile *infPythia = new TFile(pythia.Data()); TTree *ntPythia = (TTree*) infPythia->FindObjectAny("nt"); // open the datamix file TFile *infMix = new TFile(mix.Data()); TTree *ntMix =(TTree*)infMix->FindObjectAny("nt"); // open output TFile *outfile = new TFile("output.root","recreate"); TNtuple *ntOut = new TNtuple("ntOut","","npart"); nt->SetAlias("et1","pt1"); nt->SetAlias("et2","pt2"); ntMix->SetAlias("et1","pt1"); ntMix->SetAlias("et2","pt2"); ntPythia->SetAlias("et1","pt1"); ntPythia->SetAlias("et2","pt2"); // ntMix->SetAlias("pt1","et1"); // ntMix->SetAlias("pt2","et2"); // ntPythia->SetAlias("pt1","et1"); // ntPythia->SetAlias("pt2","et2"); ntPythia->SetAlias("weight","1"); ntMix->SetAlias("weight","1"); const int nBin = 6; double m[nBin+1] = {-1.5,-0.5,3.5,7.5,11.5,20.5,40.5}; double npart[nBin] = {2,358.623,232.909,97.9521}; double npart2[nBin] = {2,358.623,232.909,97.9521}; double npartValue[40]; npartValue[0] = 393.633; npartValue[1] = 368.819; npartValue[2] = 343.073; npartValue[3] = 317.625; npartValue[4] = 292.932; npartValue[5] = 271.917; npartValue[6] = 249.851; npartValue[7] = 230.72; npartValue[8] = 212.465; npartValue[9] = 194.752; npartValue[10] = 178.571; npartValue[11] = 163.23; npartValue[12] = 149.187; npartValue[13] = 136.011; npartValue[14] = 123.414; npartValue[15] = 111.7; npartValue[16] = 100.831; npartValue[17] = 90.7831; npartValue[18] = 80.9823; npartValue[19] = 72.6236; npartValue[20] = 64.1508; npartValue[21] = 56.6284; npartValue[22] = 49.9984; npartValue[23] = 43.3034; npartValue[24] = 37.8437; npartValue[25] = 32.6659; npartValue[26] = 27.83; npartValue[27] = 23.7892; npartValue[28] = 20.1745; npartValue[29] = 16.8453; npartValue[30] = 14.0322; npartValue[31] = 11.602; npartValue[32] = 9.52528; npartValue[33] = 7.6984; npartValue[34] = 6.446; npartValue[35] = 4.96683; npartValue[36] = 4.23649; npartValue[37] = 3.50147; npartValue[38] = 3.16107; npartValue[39] = 2.7877; TH1D *hTmp = new TH1D("hTmp","",100,-10,400); TH1D *h = new TH1D("h","",nBin,m); TH1D *hCut = new TH1D("hCut","",nBin,m); TH1D *h2 = new TH1D("h2","",nBin,m); TH1D *h2Cut = new TH1D("h2Cut","",nBin,m); TH1D *hStat = new TH1D("hStat","",nBin,m); TH1D *hNpartSum = new TH1D("hNpartSum","",nBin,m); TH1D *hStat2 = new TH1D("hStat2","",nBin,m); TH1D *hNpartSum2 = new TH1D("hNpartSum2","",nBin,m); Float_t bin=0; Float_t et1=0; nt->SetBranchAddress("bin",&bin); nt->SetBranchAddress("pt1",&et1); for (int i=0;i<nt->GetEntries();i++) { nt->GetEntry(i); if (et1<threshold1) continue; if (et1>threshold2) { hNpartSum2->Fill(bin,npartValue[(int)bin]); hStat2->Fill(bin); if (et1>threshold1) { hNpartSum->Fill(bin,npartValue[(int)bin]); hStat->Fill(bin); } } } hNpartSum->Divide(hStat); hNpartSum2->Divide(hStat2); for (int i=1;i<nBin;i++) { cout <<hNpartSum->GetBinContent(i+1)<<endl; npart[i]=hNpartSum->GetBinContent(i+1); cout <<hNpartSum2->GetBinContent(i+1)<<endl; npart2[i]=hNpartSum2->GetBinContent(i+1); } nt->Draw("bin>>h",Form("abs(dphi)>%f&&%s",dphiCut,cut1.Data())); nt->Draw("bin>>hCut",Form("%s",cut1.Data())); TGraphAsymmErrors *g = calcEff(hCut,h,npart); g->SetMarkerSize(1.25); cout <<cut2.Data()<<endl; nt->Draw("bin>>h2",Form("abs(dphi)>%f&&%s",dphiCut2,cut2.Data())); nt->Draw("bin>>h2Cut",Form("%s",cut2.Data())); TGraphAsymmErrors *g2 = calcEff(h2Cut,h2,npart2); g2->SetMarkerSize(1.25); ntPythia->Draw("bin>>h",Form("abs(dphi)>%f&&%s",dphiCut2,cut2.Data())); ntPythia->Draw("bin>>hCut",Form("%s",cut2.Data())); TGraphAsymmErrors *gPythia = calcEffpythia(hCut,h,npart); gPythia->SetMarkerSize(1.7); if(useWeight){ ntMix->Draw("bin>>h",Form("weight*(abs(dphi)>%f&&%s)",dphiCut2,cut2.Data())); ntMix->Draw("bin>>hCut",Form("weight*(%s)",cut2.Data())); }else{ ntMix->Draw("bin>>h",Form("(abs(dphi)>%f&&%s)",dphiCut2,cut2.Data())); ntMix->Draw("bin>>hCut",Form("(%s)",cut2.Data())); } TGraphAsymmErrors *gMix = calcEff(hCut,h,npart); gMix->SetMarkerSize(1.25); TCanvas *c = new TCanvas("c","",500,500); // hTmp->SetMaximum(g->GetY()[0]*2.2); hTmp->SetMaximum(0.85); hTmp->SetMinimum(0.); hTmp->SetXTitle("N_{part}"); hTmp->SetYTitle(Form("R_{B}(#Delta#phi_{12} > %.3f)",dphiCut)); hTmp->GetXaxis()->CenterTitle(); hTmp->GetYaxis()->CenterTitle(); // hTmp->GetYaxis()->SetTitleOffset(1.2); // hTmp->GetYaxis()->SetTitleSize(0.055); hTmp->Draw(); double errorbar = 0.02; /* for(int i = 0; i < g->GetN(); ++i){ double *x = g->GetX(); double *y = g->GetY(); // DrawTick(y[i],0.18*y[i],0.18*y[i],x[i],0.012,8.1,16); } g->Draw("p same"); g2->SetMarkerStyle(4); */ for(int i = 0; i < g2->GetN(); ++i){ double *x = g2->GetX(); double *y = g2->GetY(); double err = 1.5*(0.0001129*x[i]); err = sqrt(err * err + 0.012*0.012); cout <<err/y[i]<<" "<<1.5*(0.0001129*x[i])/y[i]<<" "<<0.012/y[i]<<endl; double tickSize = 0.012; if (err<tickSize) tickSize=err; DrawTick(y[i],err,err,x[i],tickSize,8.1,dataColor); } gPythia->SetMarkerColor(4); gPythia->SetLineColor(4); gPythia->SetMarkerStyle(29); gMix->SetMarkerColor(4); gMix->SetLineColor(4); gMix->SetMarkerStyle(25); // gMix->Draw("p same"); gPythia->Draw("p same"); g2->SetLineColor(dataColor); g2->SetMarkerColor(dataColor); g2->Draw("p same"); TLine* pline = new TLine(0,gPythia->GetY()[0],400,gPythia->GetY()[0]); pline->SetLineColor(4); pline->SetLineStyle(4); pline->Draw(); if(drawLeg){ TLegend *t3=new TLegend(0.5,0.77,0.9,0.93); t3->AddEntry(g2,"PbPb #sqrt{s}_{_{NN}}=2.76 TeV","p"); // t3->AddEntry(gPythia,"PYTHIA","p"); // t3->AddEntry(gMix,"PYTHIA+DATA","p"); // t3->AddEntry(g,"2011","p"); // t3->AddEntry(gMix,"2010","p"); t3->AddEntry(gPythia,"pp #sqrt{s}=2.76 TeV","p"); t3->SetFillColor(0); t3->SetBorderSize(0); t3->SetFillStyle(0); t3->SetTextFont(63); t3->SetTextSize(15); t3->Draw(); } TLatex *cms = new TLatex(0.20,0.88,"CMS Preliminary"); cms->SetNDC(); cms->SetTextFont(63); cms->SetTextSize(18); cms->Draw(); TLatex tsel; tsel.SetNDC(); tsel.SetTextFont(63); tsel.SetTextSize(15); tsel.DrawLatex(0.25,0.35,"p_{T,1} > 120 GeV/c"); tsel.DrawLatex(0.25,0.275,"p_{T,2} > 30 GeV/c"); // tsel.DrawLatex(0.25,0.20,"#Delta#phi_{12} > #frac{2}{3}#pi rad"); TLatex *lumi = new TLatex(0.20,0.81,"#intL dt = 6.7 #mub^{-1}"); lumi->SetNDC(); lumi->SetTextFont(63); lumi->SetTextSize(15); lumi->Draw(); /* TF1 *f = new TF1("f","0.5+[0]*x"); gMix->Fit("f"); */ TCanvas *c2 = new TCanvas("c2","",500,500); TGraphAsymmErrors *gRatio = divideGraph(g2,gMix); gRatio->Draw("ap"); gRatio->Fit("pol1"); //gRatio->Fit("pol0"); c->Print(Form("fig/RB_dphi_%d_vs_Npart.eps",(int)(1000*dphiCut))); c->Print(Form("fig/RB_dphi_%d_vs_Npart.C",(int)(1000*dphiCut))); c->Print(Form("fig/RB_dphi_%d_vs_Npart.gif",(int)(1000*dphiCut))); c->Print(Form("fig/RB_dphi_%d_vs_Npart.pdf",(int)(1000*dphiCut))); }
Plot_searchBin_Data(string sample="stacked",string histname="searchH",int choice=1){ /////////////////////////////////////////////////////////////////////////////////////////// ////Some cosmetic work for official documents. // // Set basic style // gROOT->LoadMacro("tdrstyle.C"); setTDRStyle(); gStyle->SetPalette(1) ; // for better color output gROOT->LoadMacro("CMS_lumi_v2.C"); int W = 600; int H = 600; int H_ref = 600; int W_ref = 800; float T = 0.08*H_ref; float B = 0.12*H_ref; float L = 0.12*W_ref; float R = 0.08*W_ref; /////////////////////////////////////////////////////////////////////////////////////////// // // More specific style set, opening input files etc gStyle->SetOptStat(0); ///to avoid the stat. on the plots char tempname[200]; char xtitlename[200]; char ytitlename[200]; if(sample.find("stack")==string::npos)sprintf(tempname,"TauHad/GenInfo_HadTauEstimation_%s.root",sample.c_str()); else sprintf(tempname,"TauHad/Stack/GenInfo_HadTauEstimation_%s.root",sample.c_str()); //cout << "warning:\n Warning \n \n using elog195 for pre and exp \n \n "; TFile * GenFile = new TFile(tempname,"R"); sprintf(tempname,"TauHad2/Elog378_HadTauEstimation_data_SingleMuon_v15cd_.root"); TFile * EstFile = new TFile(tempname,"R"); // // Define legend // Float_t legendX1 = .55; //.50; Float_t legendX2 = .85; //.70; Float_t legendY1 = .75; //.65; Float_t legendY2 = .90; TLegend* catLeg1 = new TLegend(legendX1,legendY1,legendX2,legendY2); catLeg1->SetTextSize(0.032); catLeg1->SetTextFont(42); catLeg1->SetTextSize(0.042); catLeg1->SetTextFont(42); catLeg1->SetFillColor(0); catLeg1->SetLineColor(0); catLeg1->SetBorderSize(0); // // Define canvas // TCanvas *canvas = new TCanvas("canvas","canvas",10,10,W,H); canvas->SetFillColor(0); canvas->SetBorderMode(0); canvas->SetFrameFillStyle(0); canvas->SetFrameBorderMode(0); canvas->SetLeftMargin( L/W ); canvas->SetRightMargin( R/W ); canvas->SetRightMargin( 0.2 ); canvas->SetTopMargin( T/H ); canvas->SetBottomMargin( B/H ); canvas->SetTickx(0); canvas->SetTicky(0); canvas->Divide(1, 2); // // Define pads // TPad* canvas_up = (TPad*) canvas->GetListOfPrimitives()->FindObject("canvas_1"); TPad* canvas_dw = (TPad*) canvas->GetListOfPrimitives()->FindObject("canvas_2"); // define the size double up_height = 0.8; // please tune so that the upper figures size will meet your requirement double dw_correction = 1.30; // please tune so that the smaller canvas size will work in your environment double font_size_dw = 0.1; // please tune the font size parameter for bottom figure double dw_height = (1. - up_height) * dw_correction; double dw_height_offset = 0.040; // KH, added to put the bottom one closer to the top panel // set pad size canvas_up->SetPad(0., 1 - up_height, 0.97, 1.); canvas_dw->SetPad(0., dw_height_offset, 0.97, dw_height+dw_height_offset); canvas_up->SetFrameFillColor(0); canvas_up->SetFillColor(0); canvas_dw->SetFillColor(0); canvas_dw->SetFrameFillColor(0); canvas_dw->SetBottomMargin(0.25); // set top margin 0 for bottom figure canvas_dw->SetTopMargin(0); // draw top figure canvas_up->cd(); TH1D * GenHist, * EstHist,* thist; TH1D * histTemplate; THStack * tempstack; double HT_x_max=2500.; double HT_x_min=400.; double MHT_x_max=1000.; double NJet_x_max=15.; double NBtag_x_max=4.; double search_x_max=19.; double search_x_min=1.; sprintf(tempname,"%s",histname.c_str()); if(sample.find("stacked")!=string::npos){ EstHist=(TH1D*)EstFile->Get(tempname)->Clone(); tempstack=(THStack*)GenFile->Get(tempname)->Clone(); GenHist=(TH1D*) tempstack->GetStack()->Last(); EstHistD=(TH1D*) EstFile->Get(tempname)->Clone(); tempstack=(THStack*)GenFile->Get(tempname)->Clone(); GenHistD=(TH1D*) tempstack->GetStack()->Last(); } else{ EstHist=(TH1D*) EstFile->Get(tempname)->Clone(); GenHist=(TH1D*) GenFile->Get(tempname)->Clone(); EstHistD=(TH1D*) EstFile->Get(tempname)->Clone(); GenHistD=(TH1D*) GenFile->Get(tempname)->Clone(); } GenHist->SetLineColor(2); EstHist->SetLineColor(4); //GenHist->GetXaxis()->SetLabelFont(42); //GenHist->GetXaxis()->SetLabelOffset(0.007); //GenHist->GetXaxis()->SetLabelSize(0.04); GenHist->GetXaxis()->SetTitleSize(0.05); GenHist->GetXaxis()->SetTitleOffset(0.9); GenHist->GetXaxis()->SetTitleFont(42); //GenHist->GetYaxis()->SetLabelFont(42); //GenHist->GetYaxis()->SetLabelOffset(0.007); //GenHist->GetYaxis()->SetLabelSize(0.04); GenHist->GetYaxis()->SetTitleSize(0.05); GenHist->GetYaxis()->SetTitleOffset(1.25); GenHist->GetYaxis()->SetTitleFont(42); //EstHist->GetXaxis()->SetLabelFont(42); //EstHist->GetXaxis()->SetLabelOffset(0.007); //EstHist->GetXaxis()->SetLabelSize(0.04); EstHist->GetXaxis()->SetTitleSize(0.05); EstHist->GetXaxis()->SetTitleOffset(0.9); EstHist->GetXaxis()->SetTitleFont(42); //EstHist->GetYaxis()->SetLabelFont(42); //EstHist->GetYaxis()->SetLabelOffset(0.007); //EstHist->GetYaxis()->SetLabelSize(0.04); EstHist->GetYaxis()->SetTitleSize(0.05); EstHist->GetYaxis()->SetTitleOffset(1.25); EstHist->GetYaxis()->SetTitleFont(42); sprintf(xtitlename,"search bins"); sprintf(ytitlename,"Events"); gPad->SetLogy(); GenHist->SetMaximum(200000); GenHist->SetMinimum(0.1); GenHist->GetXaxis()->SetRangeUser(search_x_min,search_x_max); GenHist->SetFillStyle(3004); GenHist->SetFillColor(kGreen-3); GenHist->SetTitle(""); GenHist->Draw("e2"); //KH GenHist->Draw("same"); EstHist->Draw("same"); TH1D * GenHist_Clone = static_cast<TH1D*>(GenHist->Clone("denominator")); sprintf(tempname,"#tau_{hadronic} BG"); catLeg1->AddEntry(GenHist,tempname,"l"); sprintf(tempname,"Data"); catLeg1->AddEntry(EstHist,tempname,"l"); GenHist->GetXaxis()->SetTitle(xtitlename); GenHist->GetYaxis()->SetTitle(ytitlename); catLeg1->Draw(); TText * ttext = new TText(10. , 1700. , "4 fb-1"); // ttext->Draw(); // // Bottom ratio plot // // ---------- if(choice==0){ //KH -- flip the numerator and denominator EstHistD->Divide(GenHistD); // draw bottom figure canvas_dw->cd(); // font size EstHistD->GetXaxis()->SetLabelSize(font_size_dw); EstHistD->GetXaxis()->SetTitleSize(font_size_dw); EstHistD->GetYaxis()->SetLabelSize(font_size_dw); EstHistD->GetYaxis()->SetTitleSize(font_size_dw); // // Common to all bottom plots // sprintf(ytitlename,"Estimate / #tau_{had} BG"); EstHistD->SetMaximum(2.65); EstHistD->SetMinimum(0.0); // // Specific to each bottom plot // sprintf(xtitlename,"search bin"); EstHistD->GetXaxis()->SetRangeUser(search_x_min,search_x_max); TLine *tline = new TLine(search_x_min,1.,search_x_max,1.); // Setting style //EstHistD->SetMaximum(1.4); //EstHistD->GetXaxis()->SetLabelFont(42); //EstHistD->GetXaxis()->SetLabelOffset(0.007); //EstHistD->GetXaxis()->SetLabelSize(0.04); EstHistD->GetXaxis()->SetTitleSize(0.12); EstHistD->GetXaxis()->SetTitleOffset(0.9); EstHistD->GetXaxis()->SetTitleFont(42); //EstHistD->GetYaxis()->SetLabelFont(42); //EstHistD->GetYaxis()->SetLabelOffset(0.007); //EstHistD->GetYaxis()->SetLabelSize(0.04); EstHistD->GetYaxis()->SetTitleSize(0.13); EstHistD->GetYaxis()->SetTitleOffset(0.5); EstHistD->GetYaxis()->SetTitleFont(42); EstHistD->GetXaxis()->SetTitle(xtitlename); EstHistD->GetYaxis()->SetTitle(ytitlename); EstHistD->SetTitle(""); EstHistD->Draw(); tline->SetLineStyle(2); tline->Draw(); } if(choice==1){ /* TH1D * denominator = static_cast<TH1D*>(EstHist->Clone("denominator")); EstHistD->Add(GenHistD,-1); denominator->Divide(EstHistD,GenHistD,1,1,""); */ TH1D * denominator = static_cast<TH1D*>(EstHist->Clone("denominator")); //EstHistD->Add(GenHistD,-1); denominator->Divide(GenHistD,EstHistD,1,1,""); // draw bottom figure canvas_dw->cd(); // font size denominator->GetXaxis()->SetLabelSize(font_size_dw); denominator->GetXaxis()->SetTitleSize(font_size_dw); denominator->GetYaxis()->SetLabelSize(font_size_dw); denominator->GetYaxis()->SetTitleSize(font_size_dw); TLine *tline = new TLine(search_x_min,1.,search_x_max,1.); // // Common to all bottom plots // //sprintf(ytitlename,"#frac{Estimate - #tau_{had} BG}{#tau_{had} BG} "); sprintf(ytitlename,"#frac{Expectation}{Prediction} "); denominator->SetMaximum(2.65); denominator->SetMinimum(0.0); // // Specific to each bottom plot // // Setting style //denominator->SetMaximum(1.4); //denominator->GetXaxis()->SetLabelFont(42); //denominator->GetXaxis()->SetLabelOffset(0.007); //denominator->GetXaxis()->SetLabelSize(0.04); denominator->GetXaxis()->SetTitleSize(0.12); denominator->GetXaxis()->SetTitleOffset(0.9); denominator->GetXaxis()->SetTitleFont(42); //denominator->GetYaxis()->SetLabelFont(42); //denominator->GetYaxis()->SetLabelOffset(0.007); //denominator->GetYaxis()->SetLabelSize(0.04); denominator->GetYaxis()->SetTitleSize(0.13); denominator->GetYaxis()->SetTitleOffset(0.5); denominator->GetYaxis()->SetTitleFont(42); denominator->GetXaxis()->SetTitle(xtitlename); denominator->GetYaxis()->SetTitle(ytitlename); denominator->SetTitle(""); denominator->Draw(); tline->SetLineStyle(2); tline->Draw(); } sprintf(tempname,"%s_SearchBin_Plot.png",sample.c_str()); canvas->Print(tempname); }
void makeNice(TString fileName, TString nice = "nicePlot"){ TFile *f = TFile::Open(fileName); // TFile *f = TFile::Open("out_Parameters_bkg1_3vtx.root"); TGraphErrors * gRgre = (TGraphErrors*)f->Get("gR"); TGraphErrors * gXgre = (TGraphErrors*)f->Get("gX"); TGraphErrors * gYgre = (TGraphErrors*)f->Get("gY"); TGraphErrors * rRgre = (TGraphErrors*)f->Get("rR"); TGraphErrors * rXgre = (TGraphErrors*)f->Get("rX"); TGraphErrors * rYgre = (TGraphErrors*)f->Get("rY"); //=========Macro generated from canvas: c1_n2/c1_n2 //========= (Fri May 27 11:43:08 2011) by ROOT version5.27/06b TCanvas *c1_n2 = new TCanvas("c1_n2","c1_n2",700,1500); gStyle->SetOptFit(0); gStyle->SetOptStat(0); c1_n2->Range(0,0,1,1); c1_n2->SetFillColor(0); c1_n2->SetBorderMode(0); c1_n2->SetBorderSize(2); c1_n2->SetTickx(1); c1_n2->SetTicky(1); c1_n2->SetLeftMargin(0.13); c1_n2->SetRightMargin(0.05); c1_n2->SetTopMargin(0.05); c1_n2->SetBottomMargin(0.13); c1_n2->SetFrameFillStyle(0); c1_n2->SetFrameBorderMode(0); // ------------>Primitives in pad: c1_n2_1 TPad *c1_n2_1 = new TPad("c1_n2_1", "c1_n2_1",0.01,0.67,0.99,0.99); c1_n2_1->Draw(); c1_n2_1->cd(); c1_n2_1->Range(-52.68293,-0.03170732,44.87805,0.2121951); c1_n2_1->SetFillColor(0); c1_n2_1->SetBorderMode(0); c1_n2_1->SetBorderSize(2); c1_n2_1->SetTickx(1); c1_n2_1->SetTicky(1); c1_n2_1->SetLeftMargin(0.12); c1_n2_1->SetRightMargin(0.02); c1_n2_1->SetTopMargin(0.05); c1_n2_1->SetBottomMargin(0.2); c1_n2_1->SetFrameFillStyle(0); c1_n2_1->SetFrameBorderMode(0); c1_n2_1->SetFrameFillStyle(0); c1_n2_1->SetFrameBorderMode(0); TH1D *PLOTTERX = new TH1D("PLOTTERX","",1,-40,40); PLOTTERX->SetMinimum(-0.19); PLOTTERX->SetMaximum(+0.19); PLOTTERX->SetFillColor(63); PLOTTERX->SetLineStyle(0); PLOTTERX->SetMarkerStyle(20); PLOTTERX->GetXaxis()->SetLabelFont(42); PLOTTERX->GetXaxis()->SetLabelOffset(0.007); PLOTTERX->GetXaxis()->SetLabelSize(0.09); PLOTTERX->GetXaxis()->SetTitleSize(0.1); PLOTTERX->GetXaxis()->SetTitleOffset(0.9); PLOTTERX->GetXaxis()->SetTitleFont(42); PLOTTERX->GetXaxis()->SetTitle("z [cm]"); PLOTTERX->GetYaxis()->SetNdivisions(505); PLOTTERX->GetYaxis()->SetTitle("x_{0} [cm] "); PLOTTERX->GetYaxis()->SetLabelFont(42); PLOTTERX->GetYaxis()->SetLabelOffset(0.007); PLOTTERX->GetYaxis()->SetLabelSize(0.09); PLOTTERX->GetYaxis()->SetTitleSize(0.1); PLOTTERX->GetYaxis()->SetTitleOffset(0.5); PLOTTERX->GetYaxis()->SetTitleFont(42); PLOTTERX->GetZaxis()->SetLabelFont(42); PLOTTERX->GetZaxis()->SetLabelOffset(0.007); PLOTTERX->GetZaxis()->SetLabelSize(0.05); PLOTTERX->GetZaxis()->SetTitleSize(0.06); PLOTTERX->GetZaxis()->SetTitleFont(42); PLOTTERX->Draw(""); gXgre->SetFillColor(kBlack); gXgre->SetMarkerStyle(20); gXgre->SetMarkerColor(kBlack); gXgre->SetLineColor(kBlack); gXgre->GetListOfFunctions()->RemoveLast(); //to remove parameters panel... gXgre->GetListOfFunctions()->RemoveLast(); //...and old fit gXgre->SetLineWidth(2); gXgre->Draw("P"); rXgre->SetFillColor(kBlue); rXgre->SetMarkerStyle(20); rXgre->SetMarkerColor(kBlue); rXgre->SetLineColor(kBlue); rXgre->GetListOfFunctions()->RemoveLast(); //to remove parameters panel... rXgre->GetListOfFunctions()->RemoveLast(); //...and old fit rXgre->SetLineWidth(2); rXgre->Draw("P"); TLatex *CMSPrel = new TLatex(-37.0,PLOTTERX->GetMaximum()-0.025,"CMS Preliminary 2011"); CMSPrel->SetTextSize(0.06); // CMSPrel->Draw(); c1_n2_1->Modified(); c1_n2->cd(); // ------------>Primitives in pad: c1_n2_2 TPad *c1_n2_2 = new TPad("c1_n2_1", "c1_n2_1",0.01,0.34,0.99,0.66); // TPad *c1_n2_1 = new TPad("c1_n2_1", "c1_n2_1",0.01,0.01,0.99,0.33); c1_n2_2->Draw(); c1_n2_2->cd(); c1_n2_2->Range(-52.68293,-0.3317073,44.87805,-0.08780488); c1_n2_2->SetFillColor(0); c1_n2_2->SetBorderMode(0); c1_n2_2->SetBorderSize(2); c1_n2_2->SetTickx(1); c1_n2_2->SetTicky(1); c1_n2_2->SetLeftMargin(0.12); c1_n2_2->SetRightMargin(0.02); c1_n2_2->SetTopMargin(0.05); c1_n2_2->SetBottomMargin(0.2); c1_n2_2->SetFrameFillStyle(0); c1_n2_2->SetFrameBorderMode(0); c1_n2_2->SetFrameFillStyle(0); c1_n2_2->SetFrameBorderMode(0); TH1D *PLOTTERY = new TH1D("PLOTTERY","",1,-40,40); PLOTTERY->SetMinimum(-0.29); PLOTTERY->SetMaximum(+0.09); PLOTTERY->SetFillColor(63); PLOTTERY->SetLineStyle(0); PLOTTERY->SetMarkerStyle(20); PLOTTERY->GetXaxis()->SetLabelFont(42); PLOTTERY->GetXaxis()->SetLabelOffset(0.007); PLOTTERY->GetXaxis()->SetLabelSize(0.09); PLOTTERY->GetXaxis()->SetTitleSize(0.1); PLOTTERY->GetXaxis()->SetTitleFont(42); PLOTTERY->GetXaxis()->SetTitleOffset(0.9); PLOTTERY->GetXaxis()->SetTitle("z [cm]"); PLOTTERY->GetYaxis()->SetNdivisions(505); PLOTTERY->GetYaxis()->SetTitle("y_{0} [cm] "); PLOTTERY->GetYaxis()->SetLabelFont(42); PLOTTERY->GetYaxis()->SetLabelOffset(0.007); PLOTTERY->GetYaxis()->SetLabelSize(0.09); PLOTTERY->GetYaxis()->SetTitleSize(0.1); PLOTTERY->GetYaxis()->SetTitleOffset(0.5); PLOTTERY->GetYaxis()->SetTitleFont(42); PLOTTERY->GetZaxis()->SetLabelFont(42); PLOTTERY->GetZaxis()->SetLabelOffset(0.007); PLOTTERY->GetZaxis()->SetLabelSize(0.05); PLOTTERY->GetZaxis()->SetTitleSize(0.06); PLOTTERY->GetZaxis()->SetTitleFont(42); PLOTTERY->Draw(""); gYgre->SetFillColor(kBlack); gYgre->SetMarkerStyle(20); gYgre->SetMarkerColor(kBlack); gYgre->SetLineColor(kBlack); gYgre->GetListOfFunctions()->RemoveLast(); //to remove parameters panel... gYgre->GetListOfFunctions()->RemoveLast(); //...and old fit gYgre->SetLineWidth(2); gYgre->Draw("P"); rYgre->SetFillColor(kBlue); rYgre->SetMarkerStyle(20); rYgre->SetMarkerColor(kBlue); rYgre->SetLineColor(kBlue); rYgre->GetListOfFunctions()->RemoveLast(); //to remove parameters panel... rYgre->GetListOfFunctions()->RemoveLast(); //...and old fit rYgre->SetLineWidth(2); rYgre->Draw("P"); TLatex *CMSPrel = new TLatex(-37.0,PLOTTERY->GetMaximum()-0.025,"CMS Preliminary 2011"); CMSPrel->SetTextSize(0.06); // CMSPrel->Draw(); c1_n2_2->Modified(); c1_n2->cd(); // ------------>Primitives in pad: c1_n2_2 TPad *c1_n2_3 = new TPad("c1_n2_1", "c1_n2_1",0.01,0.01,0.99,0.33); // TPad *c1_n2_1 = new TPad("c1_n2_1", "c1_n2_1",0.01,0.01,0.99,0.33); c1_n2_3->Draw(); c1_n2_3->cd(); c1_n2_3->Range(-52.68293,-0.3317073,44.87805,-0.08780488); c1_n2_3->SetFillColor(0); c1_n2_3->SetBorderMode(0); c1_n2_3->SetBorderSize(2); c1_n2_3->SetTickx(1); c1_n2_3->SetTicky(1); c1_n2_3->SetLeftMargin(0.12); c1_n2_3->SetRightMargin(0.02); c1_n2_3->SetTopMargin(0.05); c1_n2_3->SetBottomMargin(0.2); c1_n2_3->SetFrameFillStyle(0); c1_n2_3->SetFrameBorderMode(0); c1_n2_3->SetFrameFillStyle(0); c1_n2_3->SetFrameBorderMode(0); TH1D *PLOTTERR = new TH1D("PLOTTERR","",1,-40,40); PLOTTERR->SetMinimum(2.87); PLOTTERR->SetMaximum(2.97); PLOTTERR->SetFillColor(63); PLOTTERR->SetLineStyle(0); PLOTTERR->SetMarkerStyle(20); PLOTTERR->GetXaxis()->SetLabelFont(42); PLOTTERR->GetXaxis()->SetLabelOffset(0.007); PLOTTERR->GetXaxis()->SetLabelSize(0.09); PLOTTERR->GetXaxis()->SetTitleSize(0.1); PLOTTERR->GetXaxis()->SetTitleFont(42); PLOTTERR->GetXaxis()->SetTitleOffset(0.9); PLOTTERR->GetXaxis()->SetTitle("z [cm]"); PLOTTERR->GetYaxis()->SetNdivisions(505); PLOTTERR->GetYaxis()->SetTitle("R [cm] "); PLOTTERR->GetYaxis()->SetLabelFont(42); PLOTTERR->GetYaxis()->SetLabelOffset(0.007); PLOTTERR->GetYaxis()->SetLabelSize(0.09); PLOTTERR->GetYaxis()->SetTitleSize(0.1); PLOTTERR->GetYaxis()->SetTitleOffset(0.5); PLOTTERR->GetYaxis()->SetTitleFont(42); PLOTTERR->GetZaxis()->SetLabelFont(42); PLOTTERR->GetZaxis()->SetLabelOffset(0.007); PLOTTERR->GetZaxis()->SetLabelSize(0.05); PLOTTERR->GetZaxis()->SetTitleSize(0.06); PLOTTERR->GetZaxis()->SetTitleFont(42); PLOTTERR->Draw(""); gRgre->SetFillColor(kBlack); gRgre->SetMarkerStyle(20); gRgre->SetMarkerColor(kBlack); gRgre->SetLineColor(kBlack); gRgre->GetListOfFunctions()->RemoveLast(); //to remove parameters panel... gRgre->GetListOfFunctions()->RemoveLast(); //...and old fit gRgre->SetLineWidth(2); gRgre->Draw("P"); rRgre->SetFillColor(kBlue); rRgre->SetMarkerStyle(20); rRgre->SetMarkerColor(kBlue); rRgre->SetLineColor(kBlue); rRgre->GetListOfFunctions()->RemoveLast(); //to remove parameters panel... rRgre->GetListOfFunctions()->RemoveLast(); //...and old fit rRgre->SetLineWidth(2); rRgre->Draw("P"); TLatex *CMSPrel = new TLatex(-37.0,PLOTTERR->GetMaximum()-0.025,"CMS Preliminary 2011"); CMSPrel->SetTextSize(0.06); // CMSPrel->Draw(); c1_n2_3->Modified(); c1_n2->cd(); TF1* fX = new TF1("fX", "[0]+[1]*x", -35, 35); TF1* fY = new TF1("fY", "[0]+[1]*x", -35, 35); TF1* fR = new TF1("fR", "[0]+[1]*x", -35, 35); fX->SetParameter(0, 0.1); fX->SetParameter(1, -0.0007); fY->SetParameter(0, -0.2); fY->SetParameter(1, +0.0007); fR->SetParameter(0, 2.94); fR->SetParameter(1, 0.0); gXgre->Fit(fX); gYgre->Fit(fY); gRgre->Fit(fR); // c1_n2->cd(); c1_n2->Modified(); c1_n2->cd(); c1_n2->SetSelected(c1_n2); c1_n2->SaveAs(nice+".png"); //!Serve!!!! c1_n2->SaveAs(nice+".gif"); c1_n2->SaveAs(nice+".png"); }
void EtaPhi::Loop() { if (fChain == 0) return; Long64_t nentries = fChain->GetEntriesFast(); Long64_t nbytes = 0, nb = 0; cout << "Choose event, -1 for no choice" << endl; int choice; cin >> choice; for (Long64_t jentry=0; jentry<nentries;jentry++) { Long64_t ientry = LoadTree(jentry); if (ientry < 0) break; fChain->GetEntry(jentry); bool stahp = false; int count = 0; vector<int> jets; double phi_sum = 0; if ( choice >= 0 && choice != jentry ) continue; cout << jentry << endl; for ( int j = 0; j < fJets; ++j ) { int fl = fFlav[j]; TLorentzVector t(fX[j],fY[j],fZ[j],fT[j]); if (fl < 0 || fl == 10) { continue; } jets.push_back(j); cout << " " << fl << endl; if ( fl != 0 ) ++count; if ( fabs(t.Rapidity()) > 3 && jets.size() < 3 ) { stahp = true; break; } phi_sum += t.Phi(); } if ( stahp || (count > 1 && choice == -1) ) { continue; } if ( !accept() ) continue; TCanvas* c1 = new TCanvas("c1", "c1", 1200, 1000); TH1D* th = new TH1D("","",100,-5.0,5.0); gStyle->SetOptStat(0); th->SetMinimum(-TMath::Pi()); th->SetMaximum(TMath::Pi()); th->SetXTitle("y"); th->SetYTitle("#phi"); th->Draw("P"); phi_sum /= jets.size(); for ( unsigned j = 0; j < jets.size(); ++j ) { TLorentzVector t(fX[jets[j]],fY[jets[j]],fZ[jets[j]],fT[jets[j]]); TEllipse *el = new TEllipse(t.Rapidity(),phif(t.Phi(),phi_sum),0.5,0.5); Color_t ell_col = kRed+1; if (j == 1) ell_col = kRed; else if (j == 2) ell_col = kMagenta; else if (j == 3) ell_col = kCyan+2; else if (j > 3) ell_col = kBlue; el->SetLineColor(ell_col); el->SetFillStyle(0); el->Draw("same"); } for ( int j = 0; j < fJets; ++j ) { int fl = fFlav[j]; TLorentzVector t(fX[j],fY[j],fZ[j],fT[j]); if (fl == 10) continue; fl *= -1; double saizu = TMath::Log10(t.Pt()/0.01); Color_t col; Style_t sty; if ( fl == 10 ) { col = kBlue; sty = kCircle; } else if ( fl == 11 ) { col = kAzure + 7; sty = kCircle; } else if ( fl == 12 ) { col = kRed; sty = kOpenSquare; } else if ( fl == 13 ) { col = kGreen-7; sty = kCircle; } else if ( fl == 14 ) { col = kYellow + 1; sty = kCircle; } else if ( fl == 15 ) { col = kGreen+2; sty = kOpenSquare; //} else if ( fl == 7 || fl == 8 ) { // col = kBlack; // sty = kOpenSquare; } else if ( fl == 9 ) { col = kMagenta; sty = kDiamond; } else { continue; } if (saizu < 0) continue; if ( fl == 13 || fl == 14 || fl == 15 || fl == 9 ) saizu *= 2; TGraph *f = new TGraph(1); f->SetPoint(0,t.Rapidity(),phif(t.Phi(),phi_sum)); f->SetMarkerStyle(sty); f->SetMarkerColor(col); f->SetMarkerSize(saizu); f->Draw("sameP"); } break; } }
void etaPlotter(){ double HFbins[6] = {0,10,15,20,30,70}; double multBins[7] = {0,35,60,90,110,150,1000}; TFile *f0 = new TFile("FullForest_v77_etaLT3_akPu3PF.root","OLD"); if(!f0){ cout << "You don't have this jet collection yet!!" << endl; exit(0);} TTree *dijetTree = (TTree*)f0->Get("dijetTree"); TFile *f2 = new TFile("PythiaPP_MC_akPu3PF.root","OLD"); TTree *ppTree = (TTree*)f2->Get("dijetTree"); TFile *f3 = new TFile("YaxianPPData_etaLT3_akPu3PF.root","OLD"); TTree *ppDatTree = (TTree*)f3->Get("dijetTree"); TFile *f4 = new TFile("PythiaMIT_out_v77_etaLT3_akPu3PF.root","OLD"); TTree *mcTree = (TTree*)f4->Get("dijetTree"); TFile *f5 = new TFile("PbPb_ReReco_Full_etaLT3_akPu3PF.root","OLD"); TTree *pbpbtree = (TTree*)f5->Get("dijetTree"); TH1D *etaDistropPb[6]; TH1D *etaDistroppData[6]; TH1D *etaDistroppMC[6]; TH1D *etaDistropPbMC[6]; TH1D *etaDistroPbPb[6]; TH2D *avgEtapPb[3]; TH2D *avgEtapp[3]; TH2D *avgEtapPbMC[3]; TH2D *avgEtappMC[3]; char* histoname = new char[30]; char* histotitle = new char[50]; for(int i=0; i<6; i++){ sprintf(histoname,"%s%d","etaDistropPb_",i+1); sprintf(histotitle,"%s%d","Dijet Eta distro, HF bin",i+1); if(i==5){ sprintf(histoname,"%s%d","etaDistropPb_",0); sprintf(histotitle,"%s%d","Dijet Eta distro, HF bin",0); } etaDistropPb[i] = new TH1D(histoname,histotitle,12,-3,3); etaDistropPb[i]->Sumw2(); sprintf(histoname,"%s%d","etaDistroppData_",i); etaDistroppData[i] = new TH1D(histoname,"",12,-3,3); etaDistroppData[i]->Sumw2(); etaDistroppData[i]->SetMarkerColor(2); etaDistroppData[i]->SetLineColor(2); sprintf(histoname,"%s%d","etaDistroppMC_",i); etaDistroppMC[i] = new TH1D(histoname,"",12,-3,3); etaDistroppMC[i]->Sumw2(); etaDistroppMC[i]->SetMarkerColor(4); etaDistroppMC[i]->SetLineColor(4); sprintf(histoname,"%s%d","etaDistropPbMC_",i); etaDistropPbMC[i] = new TH1D(histoname,"",12,-3,3); etaDistropPbMC[i]->Sumw2(); etaDistropPbMC[i]->SetMarkerColor(8); etaDistropPbMC[i]->SetLineColor(8); sprintf(histoname,"%s%d","etaDistroPbPb_",i); etaDistroPbPb[i] = new TH1D(histoname,"",12,-3,3); etaDistroPbPb[i]->Sumw2(); etaDistroPbPb[i]->SetMarkerColor(8); etaDistroPbPb[i]->SetLineColor(8); } for(int i=0; i<3; i++){ sprintf(histoname,"%s%d","avgEtapPb_",i); avgEtapPb[i] = new TH2D(histoname,"",6,-2,2,30,0,3.1415); avgEtapPb[i]->Sumw2(); sprintf(histoname,"%s%d","avgEtapp_",i); avgEtapp[i] = new TH2D(histoname,"",6,-2,2,30,0,3.1415); avgEtapp[i]->Sumw2(); sprintf(histoname,"%s%d","avgEtapPbMC_",i); avgEtapPbMC[i] = new TH2D(histoname,"",6,-2,2,30,0,3.1415); avgEtapPbMC[i]->Sumw2(); sprintf(histoname,"%s%d","avgEtappMC_",i); avgEtappMC[i] = new TH2D(histoname,"",6,-2,2,30,0,3.1415); avgEtappMC[i]->Sumw2(); } //pPb Data double pt1,pt2,phi1,phi2,eta1,eta2,hiHF,rawPt1,rawPt2, hiHFminus; bool PU; int tracks; dijetTree->SetBranchAddress("pt1",&pt1); dijetTree->SetBranchAddress("pt2",&pt2); dijetTree->SetBranchAddress("rawPt1",&rawPt1); dijetTree->SetBranchAddress("rawPt2",&rawPt2); dijetTree->SetBranchAddress("phi1",&phi1); dijetTree->SetBranchAddress("phi2",&phi2); dijetTree->SetBranchAddress("eta1",&eta1); dijetTree->SetBranchAddress("eta2",&eta2); dijetTree->SetBranchAddress("tracks",&tracks); dijetTree->SetBranchAddress("hiHFplusEta4",&hiHF); dijetTree->SetBranchAddress("hiHFminusEta4",&hiHFminus); dijetTree->SetBranchAddress("PUFilterGplus",&PU); for(int i=0; i<dijetTree->GetEntries(); i++){ dijetTree->GetEntry(i); if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && PU && hiHF<70){ avgEtapPb[0]->Fill(eta1,acos(cos(phi1-phi2))); avgEtapPb[1]->Fill(eta2,acos(cos(phi1-phi2))); avgEtapPb[2]->Fill((eta1+eta2)/2,acos(cos(phi1-phi2))); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && PU && /*tracks>=multBins[0] && tracks<multBins[1] && */hiHF+hiHFminus>=0 && hiHF+hiHFminus<20 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPb[0]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && PU && /*tracks>=multBins[2] && tracks<multBins[3] && */hiHF+hiHFminus>=20 && hiHF+hiHFminus<25 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPb[1]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && PU && /*tracks>=multBins[3] && tracks<multBins[4] && */hiHF+hiHFminus>=25 && hiHF+hiHFminus<30 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPb[2]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && PU && /*tracks>=multBins[4] && tracks<multBins[5] && */hiHF+hiHFminus>=30 && hiHF+hiHFminus<40 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPb[3]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && PU && /*tracks>=multBins[5] && tracks<multBins[6] && */hiHF+hiHFminus>=40 && hiHF+hiHFminus<90 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPb[4]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && PU && acos(cos(phi1-phi2))>2.0944){ etaDistropPb[5]->Fill((eta1+eta2)/2); } } //pPb MC double weight, MCentries, pthat; mcTree->SetBranchAddress("pt1",&pt1); mcTree->SetBranchAddress("pt2",&pt2); mcTree->SetBranchAddress("rawPt1",&rawPt1); mcTree->SetBranchAddress("rawPt2",&rawPt2); mcTree->SetBranchAddress("tracks",&tracks); mcTree->SetBranchAddress("pthat",&pthat); mcTree->SetBranchAddress("phi1",&phi1); mcTree->SetBranchAddress("phi2",&phi2); mcTree->SetBranchAddress("eta1",&eta1); mcTree->SetBranchAddress("eta2",&eta2); mcTree->SetBranchAddress("hiHFplusEta4",&hiHF); mcTree->SetBranchAddress("hiHFminusEta4",&hiHFminus); mcTree->SetBranchAddress("weight",&weight); mcTree->SetBranchAddress("MCpthatEntries",&MCentries); for(int i=0; i<mcTree->GetEntries(); i++){ mcTree->GetEntry(i); if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && pthat>50 && hiHF<70){ avgEtapPbMC[0]->Fill(eta1,acos(cos(phi1-phi2)),(weight/MCentries)); avgEtapPbMC[1]->Fill(eta2,acos(cos(phi1-phi2)),(weight/MCentries)); avgEtapPbMC[2]->Fill((eta1+eta2)/2,acos(cos(phi1-phi2)),(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && pthat>30 && /*tracks>=multBins[0] && tracks<multBins[1] &&*/ hiHF+hiHFminus>=0 && hiHF+hiHFminus<20 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPbMC[0]->Fill((eta1+eta2)/2,(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && pthat>30 && /*tracks>=multBins[2] && tracks<multBins[3] && */hiHF+hiHFminus>=20 && hiHF+hiHFminus<25 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPbMC[1]->Fill((eta1+eta2)/2,(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && pthat>30 && /*tracks>=multBins[3] && tracks<multBins[4] && */hiHF+hiHFminus>=25 && hiHF+hiHFminus<30 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPbMC[2]->Fill((eta1+eta2)/2,(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && pthat>30 && /*tracks>=multBins[4] && tracks<multBins[5] && */hiHF+hiHFminus>=30 && hiHF+hiHFminus<40 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPbMC[3]->Fill((eta1+eta2)/2,(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && pthat>30 && /*tracks>=multBins[5] && tracks<multBins[6] && */hiHF+hiHFminus>=40 && hiHF+hiHFminus<90 && acos(cos(phi1-phi2)) > 2.0944){ etaDistropPbMC[4]->Fill((eta1+eta2)/2,(weight/MCentries)); } } //pp MC ppTree->SetBranchAddress("pt1",&pt1); ppTree->SetBranchAddress("pt2",&pt2); ppTree->SetBranchAddress("rawPt1",&rawPt1); ppTree->SetBranchAddress("rawPt2",&rawPt2); ppTree->SetBranchAddress("weight",&weight); ppTree->SetBranchAddress("MCpthatEntries",&MCentries); ppTree->SetBranchAddress("phi1",&phi1); ppTree->SetBranchAddress("phi2",&phi2); ppTree->SetBranchAddress("eta1",&eta1); ppTree->SetBranchAddress("eta2",&eta2); ppTree->SetBranchAddress("hiHFplusEta4",&hiHF); ppTree->SetBranchAddress("hiHFminusEta4",&hiHFminus); for(int i=0; i<ppTree->GetEntries(); i++){ ppTree->GetEntry(i); if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && pthat>50 && hiHF<70 && acos(cos(phi1-phi2)>2.0944)){ avgEtappMC[0]->Fill(eta1,acos(cos(phi1-phi2)),(weight/MCentries)); avgEtappMC[1]->Fill(eta2,acos(cos(phi1-phi2)),(weight/MCentries)); avgEtappMC[2]->Fill((eta1+eta2)/2,acos(cos(phi1-phi2)),(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=0 && hiHF+hiHFminus<20 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppMC[0]->Fill((eta1+eta2)/2,(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=20 && hiHF+hiHFminus<25 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppMC[1]->Fill((eta1+eta2)/2,(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=25 && hiHF+hiHFminus<30 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppMC[2]->Fill((eta1+eta2)/2,(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=30 && hiHF+hiHFminus<40 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppMC[3]->Fill((eta1+eta2)/2,(weight/MCentries)); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=40 && hiHF+hiHFminus<90 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppMC[4]->Fill((eta1+eta2)/2,(weight/MCentries)); } } //pp data ppDatTree->SetBranchAddress("pt1",&pt1); ppDatTree->SetBranchAddress("pt2",&pt2); ppDatTree->SetBranchAddress("rawPt1",&rawPt1); ppDatTree->SetBranchAddress("rawPt2",&rawPt2); ppDatTree->SetBranchAddress("phi1",&phi1); ppDatTree->SetBranchAddress("phi2",&phi2); ppDatTree->SetBranchAddress("eta1",&eta1); ppDatTree->SetBranchAddress("eta2",&eta2); ppDatTree->SetBranchAddress("hiHFplusEta4",&hiHF); ppDatTree->SetBranchAddress("hiHFminusEta4",&hiHFminus); for(int i=0; i<ppDatTree->GetEntries(); i++){ ppDatTree->GetEntry(i); if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF<70){ avgEtapp[0]->Fill(eta1,acos(cos(phi1-phi2))); avgEtapp[1]->Fill(eta2,acos(cos(phi1-phi2))); avgEtapp[2]->Fill((eta1+eta2)/2,acos(cos(phi1-phi2))); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=0 && hiHF+hiHFminus<90 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppData[0]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=20 && hiHF+hiHFminus<25 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppData[1]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=25 && hiHF+hiHFminus<30 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppData[2]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=30 && hiHF+hiHFminus<40 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppData[3]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=40 && hiHF+hiHFminus<90 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroppData[4]->Fill((eta1+eta2)/2); } } pbpbtree->SetBranchAddress("pt1",&pt1); pbpbtree->SetBranchAddress("pt2",&pt2); pbpbtree->SetBranchAddress("rawPt1",&rawPt1); pbpbtree->SetBranchAddress("rawPt2",&rawPt2); pbpbtree->SetBranchAddress("phi1",&phi1); pbpbtree->SetBranchAddress("phi2",&phi2); pbpbtree->SetBranchAddress("eta1",&eta1); pbpbtree->SetBranchAddress("eta2",&eta2); pbpbtree->SetBranchAddress("hiHFplusEta4",&hiHF); pbpbtree->SetBranchAddress("hiHFminusEta4",&hiHFminus); for(int i=0; i<pbpbtree->GetEntries(); i++){ pbpbtree->GetEntry(i); if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=0 && hiHF+hiHFminus<25 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroPbPb[0]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=25 && hiHF+hiHFminus<50 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroPbPb[1]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=50 && hiHF+hiHFminus<90 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroPbPb[2]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=30 && hiHF+hiHFminus<40 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroPbPb[3]->Fill((eta1+eta2)/2); } if(pt1>120 && pt2>30 && rawPt1>15 && rawPt2>15 && hiHF+hiHFminus>=40 && hiHF+hiHFminus<90 && acos(cos(phi1-phi2)) > 2.0944){ etaDistroPbPb[4]->Fill((eta1+eta2)/2); } } TCanvas *c2 = new TCanvas("c2","",1400,800); c2->cd(); makeMultiPanelCanvas(c2,3,2,0.,0.,0.2,0.2,0.05); for(int i=0; i<5; i++){ c2->cd(i+1); cout << "pPb: " << etaDistropPb[i]->Integral() << endl; etaDistropPb[i]->Scale(1./etaDistropPb[i]->Integral()); etaDistropPb[i]->SetMaximum(0.2); etaDistropPb[i]->SetYTitle("Event Fraction"); etaDistropPb[i]->SetXTitle("(#eta_{1}+#eta_{2})/2"); //etaDistropPb[i]->SetXTitle("#eta_{leading}"); etaDistropPb[i]->Draw(); cout << "ppMC: " << etaDistroppMC[i]->Integral() << endl; etaDistroppMC[i]->Scale(1./etaDistroppMC[i]->Integral()); etaDistroppMC[i]->Draw("same"); etaDistropPbMC[i]->Scale(1./etaDistropPbMC[i]->Integral()); etaDistropPbMC[i]->Draw("same"); //if(etaDistroppData[i]->Integral() != 0){ cout << "pp: " << etaDistroppData[i]->Integral() << endl; etaDistroppData[i]->Scale(1./etaDistroppData[i]->Integral()); etaDistroppData[i]->Draw("same"); //} if(i==0){ TLatex *l1 = new TLatex(0.5, 0.15,"E_{T}^{|#eta|<4}<20"); l1->Draw(); } if(i==1){ TLatex *l2 = new TLatex(0.5, 0.15, "20#leqE_{T}^{|#eta|<4}<25"); l2->Draw(); } if(i==2){ TLatex *l3 = new TLatex(0.5, 0.15, "25#leqE_{T}^{|#eta|<4}<30"); l3->Draw(); } if(i==3){ TLatex *l4 = new TLatex(0.5, 0.15, "30#leqE_{T}^{|#eta|<4}<40"); l4->Draw(); } if(i==4){ TLatex *l5 = new TLatex(0.5, 0.15, "40#leqE_{T}^{|#eta|<4}"); l5->Draw(); } if(i==0){ TLegend *leg = new TLegend(0.2,0.77,0.80,0.91); leg->AddEntry(etaDistropPb[i],"pPb Data, #sqrt{s}=5 TeV"); leg->AddEntry(etaDistroppMC[i], "pp PYTHIA MC, #sqrt{s}=5 TeV"); leg->AddEntry(etaDistropPbMC[i], "pPb HIJING+PYTHIA MC, #sqrt{s}=5 TeV"); leg->AddEntry(etaDistroppData[i], "pp Data, #sqrt{s}=2.76 TeV"); leg->SetFillColor(0); leg->SetBorderSize(0); leg->Draw(); } } TCanvas *c3 = new TCanvas("c3","",1400,600); c3->Divide(3,1); TH1D *profpPb[3]; TH1D *profpp[3]; TH1D *profpPbMC[3]; TH1D *profppMC[3]; for(int i=0; i<3; i++){ c3->cd(i+1); profpPb[i] = avgEtapPb[i]->ProfileX(); profpPb[i]->SetMaximum(3.0); profpPb[i]->SetMinimum(2.81); if(i==0) profpPb[i]->SetXTitle("#eta_{leading}"); if(i==1) profpPb[i]->SetXTitle("#eta_{subleading}"); if(i==2) profpPb[i]->SetXTitle("(#eta_{1}+#eta_{2})/2"); profpPb[i]->SetYTitle("<#Delta#phi>"); //profpPb[i]->Scale(1./profpPb[i]->Integral()); profpPb[i]->Draw(); profpp[i] = avgEtapp[i]->ProfileX(); //profpp[i]->Scale(1./profpp[i]->Integral()); profpp[i]->SetMarkerColor(4); profpp[i]->SetLineColor(4); profpp[i]->Draw("same"); profpPbMC[i] = avgEtapPbMC[i]->ProfileX(); //profpPbMC[i]->Scale(1./profpPbMC[i]->Integral()); profpPbMC[i]->SetMarkerColor(2); profpPbMC[i]->SetLineColor(2); profpPbMC[i]->Draw("same"); profppMC[i] = avgEtappMC[i]->ProfileX(); // profppMC[i]->Scale(1./profppMC[i]->Integral()); profppMC[i]->SetMarkerColor(8); profppMC[i]->SetLineColor(8); profppMC[i]->Draw("same"); } //Plot mean /*Double_t pPb_nmult[5] = {5.658, 12.3924,17.3349,24.0448,36.3906}; Double_t pPb_avgPt[5] = {etaDistropPb[0]->GetMean(), etaDistropPb[1]->GetMean(), etaDistropPb[2]->GetMean(), etaDistropPb[3]->GetMean(), etaDistropPb[4]->GetMean()}; Double_t pPb_nmultErr[5] = {0.0097,0.01997,0.028038,0.0343,0.07198}; Double_t pPb_avgPtErr[5] = {etaDistropPb[0]->GetMeanError(), etaDistropPb[1]->GetMeanError(), etaDistropPb[2]->GetMeanError(), etaDistropPb[3]->GetMeanError(), etaDistropPb[4]->GetMeanError()}; Double_t MC_nmult[5] = {5.20261,12.3461,17.3005,23.8401,34.7769}; Double_t MC_avgPt[5] = {etaDistropPbMC[0]->GetMean(), etaDistropPbMC[1]->GetMean(), etaDistropPbMC[2]->GetMean(), etaDistropPbMC[3]->GetMean(), etaDistropPbMC[4]->GetMean()}; Double_t MC_nmultErr[5] = {0.0043,0.01139,0.01656.0.0211,0.0549}; Double_t MC_avgPtErr[5] = {etaDistropPbMC[0]->GetMeanError(), etaDistropPbMC[1]->GetMeanError(), etaDistropPbMC[2]->GetMeanError(), etaDistropPbMC[3]->GetMeanError(), etaDistropPbMC[4]->GetMeanError()}; Double_t PbPb_nmult[4] = {11.6405,30.6015,49.7908,64.897}; Double_t PbPb_avgPt[4] = {etaDistroPbPb[0]->GetMean(), etaDistroPbPb[1]->GetMean(), etaDistroPbPb[2]->GetMean(), etaDistroPbPb[3]->GetMean()}; Double_t PbPb_nmultErr[4] = {0.2618,0.2188,0.1961,0.1493}; Double_t PbPb_avgPtErr[4] = {etaDistroPbPb[0]->GetMeanError(), etaDistroPbPb[1]->GetMeanError(), etaDistroPbPb[2]->GetMeanError(), etaDistroPbPb[3]->GetMeanError()};*/ //Double_t pPb_nmult[5] = {5.658, 12.3924,17.3349,24.0448,36.3906}; //for hiHFplusEta4 Double_t pPb_nmult[5] = {12.699,22.424,27.356,34.192,47.624}; //for HFplusEta4 + HFminusEta4 Double_t pPb_avgPt[5] = {findDelPhiAngle(etaDistropPb[0],1), findDelPhiAngle(etaDistropPb[1],1), findDelPhiAngle(etaDistropPb[2],1), findDelPhiAngle(etaDistropPb[3],1), findDelPhiAngle(etaDistropPb[4],1)}; Double_t pPb_nmultErr[5] = {0.012, 0.0296, 0.0375, 0.0406, 0.0715}; Double_t pPb_avgPtErr[5] = {findDelPhiAngle(etaDistropPb[0],2), findDelPhiAngle(etaDistropPb[1],2), findDelPhiAngle(etaDistropPb[2],2), findDelPhiAngle(etaDistropPb[3],2), findDelPhiAngle(etaDistropPb[4],2)}; //Double_t MC_nmult[5] = {5.20261,12.3461,17.3005,23.8401,34.7769}; //for hiHFplusEta4 Double_t MC_nmult[5] = {11.9707, 22.4454, 27.4279, 34.4833, 47.2613}; //for hiHFplusEta4 + hiHFminusEta4 //Double_t MC_nmult[5] = {1,3,5,8,12}; //for signal only sample Double_t MC_avgPt[5] = {findDelPhiAngle(etaDistropPbMC[0],1), findDelPhiAngle(etaDistropPbMC[1],1), findDelPhiAngle(etaDistropPbMC[2],1), findDelPhiAngle(etaDistropPbMC[3],1), findDelPhiAngle(etaDistropPbMC[4],1)}; Double_t MC_nmultErr[5] = {0.004,0.013,0.015,0.015,0.022}; Double_t MC_avgPtErr[5] = {findDelPhiAngle(etaDistropPbMC[0],2), findDelPhiAngle(etaDistropPbMC[1],2), findDelPhiAngle(etaDistropPbMC[2],2), findDelPhiAngle(etaDistropPbMC[3],2), findDelPhiAngle(etaDistropPbMC[4],2)}; Double_t PbPb_nmult[3] = {15.1924, 37.45, 71.267}; Double_t PbPb_avgPt[3] = {findDelPhiAngle(etaDistroPbPb[0],1), findDelPhiAngle(etaDistroPbPb[1],1), findDelPhiAngle(etaDistroPbPb[2],1)}; Double_t PbPb_nmultErr[3] = {0.274, 0.296, 0.262}; Double_t PbPb_avgPtErr[3] = {findDelPhiAngle(etaDistroPbPb[0],2), findDelPhiAngle(etaDistroPbPb[1],2), findDelPhiAngle(etaDistroPbPb[2],2)}; Double_t pp_nmult[4] = {6.504, 21.78, 26.17, 31.65}; Double_t pp_avgPt[4] = {findDelPhiAngle(etaDistroppData[0],1), findDelPhiAngle(etaDistroppData[1],1), findDelPhiAngle(etaDistroppData[2],1), findDelPhiAngle(etaDistroppData[3],1)}; Double_t pp_nmultErr[4] = {0.04, 1.29, 3.62, 5.63}; Double_t pp_avgPtErr[4] = {findDelPhiAngle(etaDistroppData[0],2), findDelPhiAngle(etaDistroppData[1],2), findDelPhiAngle(etaDistroppData[2],2), findDelPhiAngle(etaDistroppData[3],2)}; /* TH1D *ppSum = etaDistroppData[0]->Clone("ppSum"); for(int i=1; i<5; i++){ ppSum->Add(etaDistroppData[i]); } Double_t pp_nmult[1] = {3.5}; Double_t pp_nmultErr[1] = {0.1}; Double_t pp_avgPt[1] = {findDelPhiAngle(ppSum,1)}; Double_t pp_avgPtErr[1] = {findDelPhiAngle(ppSum,2)};*/ TGraphErrors *centr2[3]; centr2[0] = new TGraphErrors(5,pPb_nmult, pPb_avgPt, pPb_nmultErr, pPb_avgPtErr); centr2[1] = new TGraphErrors(3,PbPb_nmult, PbPb_avgPt, PbPb_nmultErr, PbPb_avgPtErr); centr2[2] = new TGraphErrors(5,MC_nmult, MC_avgPt, MC_nmultErr, MC_avgPtErr); centr2[3] = new TGraphErrors(1,pp_nmult, pp_avgPt, pp_nmultErr, pp_avgPtErr); TLatex *label1 = new TLatex(40,0.1,"|#eta|< 3"); TH1D *temp = new TH1D("temp","",1,0,60); temp->SetMaximum(-0.1); temp->SetMinimum(-0.7); temp->SetXTitle("E_{T}^{HF[|#eta|>4]}"); temp->SetYTitle("((#eta_{1}+#eta_{2})/2)_{#mu}"); temp->GetXaxis()->CenterTitle(); temp->GetYaxis()->CenterTitle(); temp->GetYaxis()->SetLabelSize(0.08); temp->GetYaxis()->SetTitleOffset(0.5); temp->SetTitleSize(0.1, "y"); temp->GetXaxis()->SetLabelSize(0.08); //temp->GetXaxis()->SetTitleOffset(0.5); temp->SetTitleSize(0.1, "x"); TCanvas *c4 = new TCanvas("c4","",600,600); c4->cd(); temp->Draw(); centr2[0]->Draw("P,same"); centr2[1]->SetLineColor(8); centr2[1]->SetMarkerColor(8); centr2[1]->SetMarkerStyle(25); //centr2[1]->Draw("P,same"); centr2[2]->SetLineColor(2); centr2[2]->SetMarkerColor(2); centr2[2]->Draw("P,same"); centr2[3]->SetMarkerColor(4); centr2[3]->SetLineColor(4); centr2[3]->SetMarkerStyle(24); //centr2[3]->Draw("P,same"); //label1->Draw(); etaDistropPb[0]->Scale(1./etaDistropPb[0]->Integral()); TFile *fout = new TFile("hist_output_etaLT3_akPu3PF_ForPawan.root","UPDATE"); fout->cd(); for(int i=0; i<6; i++){ etaDistropPb[i]->Write(); } centr2[0]->SetNameTitle("dijEta","Dijet Eta vs Hf"); centr2[0]->Write(); fout->Close(); }
void plotr0vstheta(){ TFile *f; int isSum=0; const int ntotbin=5; const int trkpointmin[ntotbin] = {120,150,185,220,260}; const int trkpointmax[ntotbin] = {150,185,220,260,300}; int xbin=0; c1 = new TCanvas("c1"," ",1200,700); makeMultiPanelCanvas(c1,3,2,0,0,0.25,0.2,0.03); gStyle->SetOptFit(1); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); gStyle->SetErrorX(0); TH1D *hFrame = new TH1D("","",100,0,2); hFrame->SetTitle(""); hFrame->GetXaxis()->SetTitle("#theta"); hFrame->GetYaxis()->SetTitle("r_{0}"); hFrame->GetYaxis()->SetTitleOffset(1.1); hFrame->GetXaxis()->SetTitleSize(0.04); hFrame->GetYaxis()->SetTitleSize(0.04); hFrame->GetXaxis()->SetRangeUser(0,1.5); hFrame->SetMinimum(0.04); hFrame->SetMaximum(0.25); for(int trkbin=0;trkbin<ntotbin; trkbin++){ if(isSum==0){ f = TFile::Open(Form("M%d%d/mergedV_Prod.root",trkpointmax[trkbin],trkpointmin[trkbin])); } else{ f = TFile::Open(Form("M%d%d/mergedV_Sum.root",trkpointmax[trkbin],trkpointmin[trkbin])); } TVectorD* vecr0 = (TVectorD*)f->Get(Form("D_%d/D_0/r0",xbin)); double *r0 = vecr0->GetMatrixArray(); double r0mean = getmean(r0,ntheta); double theta[ntheta]; for(int itheta=0;itheta<ntheta;itheta++){ theta[itheta]=itheta*TMath::Pi()/ntheta/nn; } int maxper10 = findmaxper(r0,ntheta,r0mean); double maxper = (double)(maxper10+1)/10; c1->cd(trkbin+1); hFrame->Draw(); TGraph *gr0theta = new TGraph(ntheta,theta,r0); gr0theta->SetMarkerStyle(20); gr0theta->SetMarkerSize(1.3); gr0theta->SetMarkerColor(1); gr0theta->SetLineColor(1); gr0theta->Draw("Psame"); TLine *lup = new TLine(gr0theta->GetXaxis()->GetXmin(),r0mean*(1+maxper), gr0theta->GetXaxis()->GetXmax(),r0mean*(1+maxper)); TLine *ldown = new TLine(gr0theta->GetXaxis()->GetXmin(),r0mean*(1-maxper), gr0theta->GetXaxis()->GetXmax(),r0mean*(1-maxper)); TLine *l = new TLine(hFrame->GetXaxis()->GetXmin(),r0mean, hFrame->GetXaxis()->GetXmax(),r0mean); l->SetLineStyle(2); lup->SetLineStyle(2); ldown->SetLineStyle(2); l->SetLineWidth(1.2); lup->SetLineWidth(1.2); ldown->SetLineWidth(1.2); TLatex *tl = new TLatex(); // tl->SetNDC(); tl->SetTextFont(42); tl->SetTextSize(0.04); // tl->SetBorderStyle(0); tl->DrawLatex(0,r0mean*(1+maxper),Form("mean up %.f%%",maxper*100)); tl->DrawLatex(0,r0mean*(1-maxper),Form("mean down %.f%%",maxper*100)); tl->SetNDC(); tl->DrawLatex(0.7,0.85,Form("Multiplicity %d to %d",trkpointmin[trkbin],trkpointmax[trkbin])); l->Draw("same"); lup->Draw("same"); ldown->Draw("same"); } c1->cd(ntotbin+1); TLatex *tlx0 = new TLatex(0.12,0.3,Form("PF candidate")); TLatex *tlx1 = new TLatex(0.12,0.25,Form("%.1f<p_{T}<%.1f (GeV/c)",0.3,6.0)); tlx0->SetNDC(); tlx1->SetNDC(); tlx0->SetTextSize(0.045); tlx1->SetTextSize(0.045); hFrame->Draw(); tlx0->Draw("same"); tlx1->Draw("same"); if(isSum==0)c1->SaveAs("hr0theta_Prod.png"); else c1->SaveAs("hr0theta_Sum.png"); }
void calculateTriggerRates( TString inFile0Name = "root://eoscms//eos/cms/store/caf/user/velicanu/PA2013_merged_HiForest/pPb_hiForest2_pilotRun_200kHz_v3.root", // TString inFile0Name = "/castor/cern.ch/user/m/miheejo/openHLT/cms442/r181530_reco_v1_2/HIExpressPhysics_hiexp-hirun2011-r181530-reco-v1_2.root", // "/castor/cern.ch/user/k/kimy/openHLT//openhlt_run181531.root", // "/castor/cern.ch/user/v/velicanu/HIHLT_Validation_Test_GRIF_v10.root", Int_t runNum = 202792, TString outdir = "output", char *projectTitle = "HIpARun2013", string source = "data" ) { char szBuf[256]; int scale = 23; // event selectoin //Form("&&Run==%d&&LumiBlock>%d",runNum,goodLumiStart) // trigger under investigation // const int ntrigs = 8; // const char* triggerPath[ntrigs] = {"","HLT_HIMinBiasHfOrBSC", // "L1_SingleMu3_BptxAND","HLT_HIL1SingleMu3","HLT_HIL2Mu3", // "L1_DoubleMuOpen_BptxAND","HLT_HIL1DoubleMuOpen","HLT_HIL2DoubleMu3"}; /* const int ntrigs = 9; const char* triggerPath[ntrigs] = { "", "HLT_PAL1SingleMuOpen_v1", "HLT_PAL1SingleMu3_v1", "HLT_PAL1SingleMu7_v1", "HLT_PAL1SingleMu12_v1", "HLT_PAL1DoubleMu0_v1", "HLT_PADimuon0_NoVertexing_v1", "HLT_PAMu5_v1", "HLT_PAMu8_v1" }; */ //trigger list for singleMu rate plot const int ntrigs = 4 ; const char* triggerPath[ntrigs] = { "", "HLT_PAMu3_v1", "HLT_PAMu7_v1", "HLT_PAMu12_v1" }; /* //trigger list for DoubleMu rate plot const int ntrigs = 4 ; const char* triggerPath[ntrigs] = { "", "HLT_PAL1DoubleMuOpen_v1", "HLT_PAL1DoubleMu0_HighQ_v1", "HLT_PAL2DoubleMu3_v1" }; //trigger list fo bJet+Mu rate plot const int ntrigs =5; const char* triggerPath[ntrigs] = { "", "HLT_PAMu3PFJet20_v1", "HLT_PAMu3PFJet40_v1", "HLT_PAMu7PFJet20_v1", "HLT_PABTagMu_Jet20_Mu4_v1" };*/ TString str; TH1D *ahTemp[ntrigs]; double ahTempRate[ntrigs]; //Rates (Integrated over lumisections) // Load input TChain * HltTree = new TChain("hltanalysis/HltTree","HI OpenHLT Tree"); HltTree->Add(inFile0Name); cout << inFile0Name << endl; cout << " # entries: " << HltTree->GetEntries() << endl; int nEvents = HltTree->GetEntries(); for(int it=1; it<ntrigs; it++) { TH1D *ph = new TH1D("ph",";Lumi Section; Counts ",1100,0,1100); HltTree->Draw("LumiBlock>>ph",str.Format("%s",triggerPath[it])); TLegend *lTemp= new TLegend(0.2,0.8,0.8,0.9); lTemp->SetHeader(str.Format("Run : %d",runNum)); lTemp->SetMargin(0.05); lTemp->SetFillStyle(0); lTemp->SetLineColor(0); lTemp->SetLineWidth(5.0); lTemp->SetTextSize(0.03); lTemp->AddEntry(ph,str.Format("%s",triggerPath[it],"l")); lTemp->Draw("same"); c1->SaveAs(str.Format("%d_%s.pdf",runNum,triggerPath[it])); TH1D *phLumi = (TH1D*)gDirectory->Get("ph"); phLumi->SetDirectory(0); phLumi->Scale(1./(phLumi->GetBinWidth(1)*23));// 1lumi unit=23 sec ahTempRate[it] = phLumi->Integral()/phLumi->GetNbinsX(); ahTemp[it] = phLumi; cout<< triggerPath[it]<<"\t"<<phLumi->GetEntries()<< "\t" << ahTempRate[it] << endl; } //---------------------------- // drawing part // axis // TH1D * phLumiAxis = new TH1D("phLumiAxis",";Lumi Section;dEvt/dLumiSec",1100,0,1100); TH1D * phLumiAxis = new TH1D("phLumiAxis",";Lumi Section;Rate [Hz]",1,0,1200); phLumiAxis->SetMinimum(0.01); phLumiAxis->SetMaximum(1e+3); gStyle->SetOptStat(kFALSE); // legend TLegend *l0= new TLegend(0.2,0.7,0.8,0.9); l0->SetHeader(str.Format("Run : %d",runNum)); l0->SetMargin(0.03); l0->SetFillStyle(0); l0->SetLineColor(0); l0->SetLineWidth(1.0); l0->SetTextSize(0.03); // canvas TCanvas *pcLumi = new TCanvas("pcLumi","pcLumi"); pcLumi->cd(); phLumiAxis->Draw(); pcLumi->SetLogy(); for(int it=1; it<ntrigs; it++) { TH1 *phLocal = (TH1 *)(ahTemp[it]->Clone("phLocal")); phLocal->SetDirectory(0); phLocal->SetLineColor(it); if (it >= 10) phLocal->SetLineColor(it+20); if(it==5) phLocal->SetLineColor(kOrange+2); phLocal->Draw("same"); l0->AddEntry(phLocal,str.Format("%s: %.2f Hz",triggerPath[it],ahTempRate[it]),"l"); pcLumi->Update(); } l0->Draw("same"); pcLumi->SaveAs(str.Format("%d_ratedMu.png",runNum)); }
int main(int argc, char** argv){ // Set it to "true" if you do not want to see the histograms interactively gROOT->SetBatch(IS_BATCH); gStyle->SetOptStat(1111111); gStyle->SetOptFit(1111); // Open the input root file and set branches // On pcciet3a, pcciet3b, pccmscie6 //TString sampleFile = "/data4/Fall11_WplusC_Trees_July2012/TTbar.root"; // Just for some checks (there are selection cuts applied on the following file) //TString sampleFile = "/data4/Fall11_WplusC_Trees_July2012/TTbar_SSVHPNOMTNOISOreduced.root"; // Stop file // TString sampleFile = "/data4/Fall11_WplusC_Trees_July2012/Stop.root"; TString sampleFile = "dcap://gaeds015.ciemat.es:22125/pnfs/ciemat.es/data/cms/store/user/delacruz/STop2012/NTuplesFeb2013/v1/merge_stops_signalmc_T2tt_Mstop-225to1200_mLSP-0to1000_Pythia_new.root"; Event ev; Event* pointerToEvent = &ev; printf("Processing sample '%s'...\n", sampleFile.Data()); TFile input_sample(sampleFile,"READONLY"); TTree* tree = 0; input_sample.GetObject("MUTREE/MUTREE",tree); if (!tree) input_sample.GetObject("MUTREE",tree); tree->SetBranchAddress("event", &pointerToEvent); int nentriesInTree = tree->GetEntriesFast(); if (maxEventsUsed<0) maxEventsUsed = nentriesInTree; printf("\tThere are %d events in the file; running on %d events\n", nentriesInTree, maxEventsUsed); TH1D* hCosb = new TH1D("hCosb", "cos(#theta_{tb})", 50, -1.0, 1.0); printf("Input thetaEff for topPol %.3f is: %.3f\n", 1., GetThetaMixing(1., 950., 175., 425.)); printf("Input thetaEff for topPol %.3f is: %.3f\n", 0.5, GetThetaMixing(0.5, 950., 175., 425.)); printf("Input thetaEff for topPol %.3f is: %.3f\n", 0., GetThetaMixing(0., 950., 175., 425.)); printf("Input thetaEff for topPol %.3f is: %.3f\n", -0.5, GetThetaMixing(-0.5, 950., 175., 425.)); printf("Input thetaEff for topPol %.3f is: %.3f\n", -1., GetThetaMixing(-1., 950., 175., 425.)); // Event loop for (int iEvent=0; iEvent<maxEventsUsed; iEvent++) { if (tree->LoadTree(iEvent)<0) break; tree->GetEntry(iEvent); if (ev.genInfos.size()<=0) { printf("This is not a MC file, EXIT!!!\n"); return -1; } if (iEvent%1000000==0) printf("... event index %d\n", iEvent); unsigned int ngen = ev.genParticles.size(); //double m_stop = 0.; //double m_chi0 = 0.; //double m_top = 0.; std::vector<SUSYGenParticle> genParticles; for (unsigned int ig=0; ig<ngen; ++ig) { GenParticle gen = ev.genParticles[ig]; if (gen.status!=3) break; SUSYGenParticle part; part.pdgId = gen.pdgId; part.energy = gen.energy; part.pt = gen.pt; part.eta = gen.eta; part.phi = gen.phi; part.firstMother = -1; if (gen.mothers.size()>0) part.firstMother = gen.mothers[0]; //if (abs(gen.pdgId)==1000006) m_stop = sqrt(pow(gen.energy,2)-pow(gen.pt*cosh(gen.eta),2)); //if (abs(gen.pdgId)==1000022) m_chi0 = sqrt(pow(gen.energy,2)-pow(gen.pt*cosh(gen.eta),2)); //if (abs(gen.pdgId)==6) m_top = sqrt(pow(gen.energy,2)-pow(gen.pt*cosh(gen.eta),2)); genParticles.push_back(part); } //printf("m_stop: %.3f, m_top: %.3f, m_chi0: %.3f\n", m_stop, m_top, m_chi0); //double pol_new = POL; //double pol_new = AverageTopPolarization_Stop_to_TopChi0(-1.1, genParticles); //double weight = Reweight_Stop_to_TopChi0_TopOnshell (genParticles, 0., pol_new); // m_stop=950 GeV, m_chi0=425 GeV, m_top=175 GeV double thetaMixingTarget = -1.134; // Pol=-1 //double thetaMixingTarget = -0.437; // Pol=+1 double weight = Reweight_Stop_to_TopChi0_with_SUSYmodel (genParticles, thetaMixingTarget); for (unsigned int ig=0; ig<ngen; ++ig) { GenParticle gen = ev.genParticles[ig]; if (gen.status!=3) break; if (abs(gen.pdgId)!=5) continue; if (gen.mothers.size()!=1) continue; GenParticle genTop = ev.genParticles[gen.mothers[0]]; if (abs(genTop.pdgId)!=6) continue; if (genTop.pdgId*gen.pdgId<0) continue; double etop = genTop.energy; double pxtop = genTop.pt*cos(genTop.phi); double pytop = genTop.pt*sin(genTop.phi); double pztop = genTop.pt*sinh(genTop.eta); double ptop = sqrt(pxtop*pxtop+pytop*pytop+pztop*pztop); double mtop = sqrt(etop*etop-ptop*ptop); double pxb = gen.pt*cos(gen.phi); double pyb = gen.pt*sin(gen.phi); double pzb = gen.pt*sinh(gen.eta); double pb = sqrt(pxb*pxb+pyb*pyb+pzb*pzb); // We also need a stop if (genTop.mothers.size()==0) continue; GenParticle genStop = ev.genParticles[genTop.mothers[0]]; if (abs(genStop.pdgId)!=1000006) continue; // Move top and fermion to the stop center-of-mass frame TLorentzVector stop4; stop4.SetPtEtaPhiE(genStop.pt, genStop.eta, genStop.phi, genStop.energy); TVector3 betaS(-stop4.Px()/stop4.Energy(),-stop4.Py()/stop4.Energy(),-stop4.Pz()/stop4.Energy()); TLorentzVector topRef(pxtop,pytop,pztop,etop); topRef.Boost(betaS); // keept this vector to calculate costh TLorentzVector top4(pxtop,pytop,pztop,etop); top4.Boost(betaS); TLorentzVector b4(pxb,pyb,pzb,pb); b4.Boost(betaS); TVector3 betaV(-top4.Px()/top4.Energy(),-top4.Py()/top4.Energy(),-top4.Pz()/top4.Energy()); top4.Boost(betaV); b4.Boost(betaV); double costh = (topRef.Px()*b4.Px()+topRef.Py()*b4.Py()+topRef.Pz()*b4.Pz())/topRef.P()/b4.P(); hCosb->Fill(costh,weight); } } // To see things interactively (if IS_BATCH == false); TRint* app = new TRint("Wprime Analysis", &argc, argv); hCosb->SetMinimum(0.); hCosb->Draw(); // Fitting slope TF1* f1 = new TF1("f1","[0]*(1+[1]*x)"); f1->SetParName(0,"ValueAt0"); f1->SetParName(1,"Slope"); hCosb->Fit(f1,"","same"); gROOT->GetListOfCanvases()->At(0)->SaveAs("costhb.jpg"); app->Run(); return 0; }
void plottingmacro_IVF() { double fa = 0.46502; double fb = 0.53498; bool debug_ = true; // std::string path("Nov10thFall11Plots/"); // std::string path("Nov10Fall1160MTopSlimPlots/"); std::string path("Nov10Fall1160MTopIVFPlots_b/"); if(debug_) std::cout << "Init the style form setTDRStyle" << std::endl; setTDRStyle(); gStyle->SetErrorX(0.5); gROOT->ForceStyle(); initOptions(); if(debug_) std::cout << "Init the sample" << std::endl; // std::vector<Sample> s = Nov10thDiJetPtUpdatedSlimHistos(); //std::vector<Sample> s = Nov10Fall1160MTopSlimHistos(); std::vector<Sample> s = Nov10Fall1160MTopIVFHistos(); Sample data(1,"fake data","S1.root",0,true,1000); if(debug_) std::cout << "Init the data sample" << std::endl; for(size_t i=0;i< s.size();i++) if(s[i].data) {data=s[i];break;} if(debug_) std::cout << "Ls data sample" << std::endl; data.file()->ls(); if(debug_) std::cout << "Init the mc sample" << std::endl; for(size_t i=0;i< s.size();i++) s[i].dump(1,fa,fb); std::vector<std::string> names; if(debug_) std::cout << "Get List of Keys" << std::endl; TList * subs = data.file()->GetListOfKeys(); for(size_t i=0;i< subs->GetSize();i++) { TString nn = subs->At(i)->GetName(); if( nn.Contains(TRegexp("Count*")) ) continue; if(debug_) std::cout << "Get List of Keys in subdirs" << std::endl; TList * objs = ((TDirectoryFile *)data.file()->Get(subs->At(i)->GetName()))->GetListOfKeys(); for(size_t j=0;j< objs->GetSize();j++) { if(debug_) std::cout << "Name = " << subs->At(i)->GetName()+std::string("/") + objs->At(j)->GetName() << std::endl; names.push_back(subs->At(i)->GetName()+std::string("/") + objs->At(j)->GetName()); // std::cout << subs->At(i)->GetName() << "/" << objs->At(j)->GetName() << std::endl; //TODO: select plots via regexp } } if(debug_) std::cout << "Starting plotting" << std::endl; std::string process; for(size_t i = 0 ; i < names.size() ; i++) { std::map<std::string,TH1F *> grouped; TString n=names[i]; // if(!n.Contains(TRegexp("VlightRegionHZee/HiggsPtVlightRegionHZee"))) continue; // if(!n.Contains(TRegexp("VlightRegionHZee/ZPtVlightRegionHZee"))) continue; // if(!n.Contains(TRegexp("VlightRegionHZee"))) continue; // if(!n.Contains(TRegexp("ZSVRegionZmmSV"))) continue; // if(!n.Contains(TRegexp("ZSVRegionZeeSV"))) continue; // if(!n.Contains(TRegexp("ZSVRegionZcombSV"))) continue; // if(!n.Contains(TRegexp("ZSVPureRegionZcombSV"))) continue; // if(!n.Contains(TRegexp("ZSVTTbarPureRegionZcombSV"))) continue; if(!n.Contains(TRegexp("TTbarRegionZeeSVJets"))) continue; if(n.Contains(TRegexp("RegionHZcomb"))) process = "Z(l^{+}l^{-})H(b#bar{b})"; if(n.Contains(TRegexp("RegionHZmm"))) process = "Z(#mu^{+}#mu^{-})H(b#bar{b})"; if(n.Contains(TRegexp("RegionHZee"))) process = "Z(e^{+}e^{-})H(b#bar{b})"; if(debug_) std::cout << "Creating the Canvas" << std::endl; TCanvas *c = new TCanvas(); c->SetLogy(false); c->SetTitle(names[i].c_str()); if(debug_) std::cout << "Creating histograms" << std::endl; TH1F *hd = ((TH1F*)data.file()->Get(names[i].c_str())); hd->Sumw2(); Options o=options[names[i]]; // hd->Rebin(o.rebin); hd->SetMarkerStyle(20); hd->GetXaxis()->SetLabelOffset(99); hd->SetYTitle(o.yaxis.c_str()); double nbin = hd->GetNbinsX(); double min_bin = hd->GetXaxis()->GetXmin(); double max_bin = hd->GetXaxis()->GetXmax(); TH1F *hmc = new TH1F("hmc","hmc", nbin, min_bin, max_bin); hmc->SetFillColor(kWhite); hmc->Sumw2(); // hmc->Rebin(o.rebin); if(debug_) std::cout << "Creating the THStack and Legend" << std::endl; THStack * sta = new THStack("sta",hd->GetTitle()); TLegend * l = new TLegend(o.legendx1,o.legendy1,o.legendx2,o.legendy2); //0.7,0.1,0.9,0.6); l->SetFillColor(kWhite); l->SetBorderSize(0); l->SetTextFont(62); l->SetTextSize(0.03); if(debug_) std::cout << "Adding data to the legend" << std::endl; l->AddEntry(hd, "Data","P"); if(debug_) std::cout << "Adding MC to the THStack" << std::endl; //with the proper trigger eff // double SF[] = {1.01,1.03,1.00}; // double SF[] = {1.03,1.054,1.032}; double SF[] = {1.0,1.0,1.0}; if(debug_){ for(int i = 0; i< 3; ++i) std::cout << "SF [" << i << "] = " << SF[i] << std::endl; } double mcIntegral=0; for(size_t j=0;j< s.size() ;j++) { if(!s[j].data) { if(debug_) std::cout << "Creating TH1F from file " << s[j].name << std::endl; TH1F * h = ((TH1F*)s[j].file()->Get(names[i].c_str())); h->Sumw2(); if(debug_){ std::cout << "TH1F created from file " << s[j].name << std::endl; std::cout << "Scaling : " << s[j].scale(data.lumi(),fa,fb) << std::endl; std::cout << "Scaling with SF : " << s[j].scale(data.lumi(),fa,fb,SF) << std::endl; std::cout << "Histo integral before scaling = " << h->Integral() << std::endl; } h->Scale(s[j].scale(data.lumi(),fa,fb,SF)); if(debug_){ std::cout << "Histo integral after scaling = " << h->Integral() << std::endl; std::cout << "Managing style... " << std::endl; } h->SetLineWidth(1.); h->SetFillColor(s[j].color); h->SetLineColor(s[j].color); // h->Rebin(options[names[i]].rebin); if(debug_) std::cout << "Cloning and update legend " << std::endl; if(grouped.find(s[j].name) == grouped.end()){ l->AddEntry(h,s[j].name.c_str(),"F"); } std::cout << "Sample : " << s[j].name << " - Integral for plot " << names[i] << " = " << h->Integral(-10000,10000) << std::endl; mcIntegral += h->Integral(); sta->Add(h); hmc->Add(h); //TO FIX grouped map // sovrascrive histo con lo stesso nome tipo VV o ST etc... grouped[s[j].name]=(TH1F *)h->Clone(("_"+names[i]).c_str()); } } if(debug_){ std::cout << "Data total = " << hd->Integral() << std::endl; std::cout << "MC = " << mcIntegral << std::endl; std::cout << "Data/MC = " << hd->Integral()/mcIntegral << std::endl; } TPad * TopPad = new TPad("TopPad","Top Pad",0.,0.3,1.,1. ) ; TPad * BtmPad = new TPad("BtmPad","Bottom Pad",0.,0.,1.,0.313 ) ; TopPad->SetBottomMargin(0.02); BtmPad->SetTopMargin(0.0); BtmPad->SetFillStyle(4000); TopPad->SetFillStyle(4000); BtmPad->SetFillColor(0); BtmPad->SetBottomMargin(0.35); TopPad->Draw() ; BtmPad->Draw() ; std::cout << "hd maximum = " << hd->GetMaximum() << " sta maximum = " << sta->GetMaximum() << std::endl; double maxY; if(hd->GetMaximum() > sta->GetMaximum()) maxY = (hd->GetMaximum())*1.5; else maxY = (sta->GetMaximum())*1.5; TopPad->cd(); hd->Draw("E1X0"); sta->Draw("sameHIST"); hmc->Draw("sameE2"); hmc->SetFillColor(2); hmc->SetMarkerSize(0); hmc->SetFillStyle(3013); hd->Draw("E1X0same"); l->Draw("same"); std::cout << "Set Maximum to = " << maxY << std::endl; hd->GetYaxis()->SetRangeUser(0.,maxY); hd->GetXaxis()->SetRangeUser(options[names[i]].min,options[names[i]].max); BtmPad->cd(); std::cout << "Division" << std::endl; TH1D * divisionErrorBand = (TH1D*)(hmc)->Clone("divisionErrorBand"); divisionErrorBand->Sumw2(); divisionErrorBand->Divide(hmc); divisionErrorBand->Draw("E2"); divisionErrorBand->SetMaximum(2.49); divisionErrorBand->SetMinimum(0); divisionErrorBand->SetMarkerStyle(20); divisionErrorBand->SetMarkerSize(0.55); divisionErrorBand->GetXaxis()->SetTitleOffset(1.12); divisionErrorBand->GetXaxis()->SetLabelSize(0.12); divisionErrorBand->GetXaxis()->SetTitleSize(0.5); divisionErrorBand->GetYaxis()->SetTitle("Data/MC"); divisionErrorBand->GetYaxis()->SetLabelSize(0.12); divisionErrorBand->GetYaxis()->SetTitleSize(0.12); divisionErrorBand->GetYaxis()->SetTitleOffset(0.40); divisionErrorBand->GetYaxis()->SetNdivisions(505); //divisionErrorBand->UseCurrentStyle(); divisionErrorBand->SetFillColor(2); divisionErrorBand->SetFillStyle(3001); divisionErrorBand->SetMarkerSize(0.); TH1D * division = (TH1D*)(hd)->Clone("division"); division->Sumw2(); division->Divide(hmc); // division->SetMaximum(2.5); // division->SetMinimum(0); // division->SetMarkerStyle(20); // division->SetMarkerSize(0.55); // division->GetXaxis()->SetLabelSize(0.12); // division->GetXaxis()->SetTitleSize(0.14); // division->GetYaxis()->SetLabelSize(0.10); // division->GetYaxis()->SetTitleSize(0.10); // division->GetYaxis()->SetTitle("Data/MC"); Double_t min = division->GetXaxis()->GetXmin(); Double_t max = division->GetXaxis()->GetXmax(); division->Draw("E1X0same"); TLine *line = new TLine(min, 1.0, max, 1.0); line->SetLineColor(kRed); line->Draw("same"); TLegend * leg3 =new TLegend(0.50,0.86,0.69,0.96); leg3->AddEntry(divisionErrorBand,"MC uncert. (stat.)","f"); leg3->SetFillColor(0); leg3->SetLineColor(0); leg3->SetShadowColor(0); leg3->SetTextFont(62); leg3->SetTextSize(0.06); leg3->Draw(); TPaveText *pave = new TPaveText(0.15,0.85,0.32,0.96,"brNDC"); pave->SetTextAlign(12); pave->SetLineColor(0); pave->SetFillColor(0); pave->SetShadowColor(0); //TText *text = pave->AddText(Form("#chi_{#nu}^{2} = %.3f, K_{s} = %.3f",histDt->Chi2Test(histCopyMC5,"UWCHI2/NDF"),histDt->KolmogorovTest(histCopyMC5))); // stat + sys TText *text = pave->AddText(Form("#chi_{#nu}^{2} = %.3f, K_{s} = %.3f",hd->Chi2Test(hmc,"UWCHI2/NDF"),hd->KolmogorovTest(hmc))); // stat only text->SetTextFont(62); text->SetTextSize(0.08); pave->Draw(); TopPad->cd(); TLatex latex; latex.SetNDC(); latex.SetTextAlign(12); latex.SetTextSize(0.052); latex.DrawLatex(0.17,0.89,"CMS Preliminary"); latex.SetTextSize(0.04); latex.DrawLatex(0.17,0.84,"#sqrt{s} = 7 TeV, L = 4.7 fb^{-1}"); // latex.DrawLatex(0.17,0.79,"Z(e^{+}e^{-})H(b#bar{b})"); latex.DrawLatex(0.17,0.79,process.c_str()); c->Update(); std::string cName= hd->GetName(); cName += "_bare.pdf"; cName = path+cName; c->Print(cName.c_str(),"pdf"); // std::cout << names[i] << " d: " << hd->Integral() << " "; // THStack * sta2 = new THStack("sta2",hd->GetTitle()); // float tot=0; // float toterr2=0; // if(debug_) // std::cout << "Putting the iterator in the for loop" << std::endl; // for(std::map<std::string,TH1F *>::reverse_iterator it=grouped.rbegin(); it!=grouped.rend();++it) // { // if(debug_) // std::cout << "Using the iterator" << std::endl; // std::cout << (*it).first << " " << (*it).second->Integral() << " | " << std::endl ; // if((*it).second->GetEntries() > 0) { // float er=1.*sqrt((*it).second->GetEntries())/(*it).second->GetEntries()*(*it).second->Integral(); // toterr2+=er*er; // } // tot+=(*it).second->Integral(); // sta2->Add(it->second); // } // std::cout << " Tot: " << tot << "+-" << sqrt(toterr2) << " SF: " << hd->Integral()/tot << std::endl; // TCanvas *c2 = new TCanvas(); // c2->SetTitle(names[i].c_str()); // std::cout << "hd maximum = " << hd->GetMaximum() << " sta2 maximum = " << sta2->GetMaximum() << std::endl; // if(hd->GetMaximum() > sta2->GetMaximum()) maxY = hd->GetBinContent(hd->GetMaximumBin()) * 1.5; // else maxY = ( sta2->GetMaximum())*1.5; // // hd->Draw("E1"); // sta2->Draw("PADSHIST"); // // hd->Draw("E1same"); // // l->Draw("same"); // std::cout << "Set Maximum to = " << maxY << std::endl; // hd->GetYaxis()->SetRangeUser(0.,maxY); // hd->GetXaxis()->SetRangeUser(options[names[i]].min,options[names[i]].max); // c2->Update(); // std::string c2Name = hd->GetName(); // c2Name = path+c2Name; // c2Name += "_norm.pdf"; // c2->Print(c2Name.c_str(),"pdf"); } }