//-------------------------------------------------------------------------------------------------- // Draw the FakeRate histograms and fit functions //-------------------------------------------------------------------------------------------------- void drawFakeRatePlots( vector<TH1F*> fakeRateHistograms, vector<TF1*> fakeRateFits, vector<string> fakeRateLegendNames , string plotname ,Double_t MAXY = 0.2) { assert(fakeRateHistograms.size() == fakeRateFits.size()); assert(fakeRateHistograms.size() == fakeRateLegendNames.size()); TCanvas *cv = MakeCanvas("cv", plotname.c_str(), 800, 600); TLegend *leg1=0; leg1 = new TLegend(0.65,0.6,0.9,0.8); leg1->SetBorderSize(1); leg1->SetTextSize(0.03); for (UInt_t i=0; i<fakeRateHistograms.size() ; i++) { //fakeRateHistograms[i]->SetMarkerSize(0.5); fakeRateHistograms[i]->SetMarkerColor(COLORS[i]); fakeRateHistograms[i]->SetMinimum(0.0); fakeRateHistograms[i]->SetMaximum(MAXY); fakeRateHistograms[i]->SetLineColor(COLORS[i]); fakeRateFits[i]->SetLineColor(COLORS[i]); leg1->AddEntry(fakeRateFits[i], fakeRateLegendNames[i].c_str(), "LP"); if (i==0) { fakeRateHistograms[i]->Draw(); } else { fakeRateHistograms[i]->Draw("same"); } fakeRateFits[i]->Draw("same"); } leg1->Draw(); string filename = plotname + ".gif"; cv->SaveAs(filename.c_str()); cv->Delete(); }
void Make1DPlot(TH1F *hist1D, const TString str1D, bool logY, const int xlow, const int xhigh){ TCanvas *BBB = new TCanvas("BBB", "MET Response",600,450); BBB->cd(); hist1D->GetXaxis()->SetRangeUser(xlow, xhigh); gStyle->SetStatX(0.9); gStyle->SetStatY(0.88); gStyle->SetOptStat(111111); if(logY)BBB->SetLogy(); hist1D->Draw(); TString name1, name2; name1 = str1D+".eps"; name2 = str1D+".pdf"; BBB->SaveAs(name1); BBB->SaveAs(name2); BBB->Delete(); }
void getHltAcceptance(TString const& filename, particleProperties* prop, Int_t const& bins = 20) { uselhcbStyle(0.08,1.5); Double_t t_min(prop->t_min); Double_t t_max(prop->t_max); Double_t nStart(1000.); Int_t bins_M(40); TString particle = prop->GetName(); Double_t mass = prop->GetMass(); Double_t tau_PDG = prop->GetTau(); TObjArray* tokens = filename.Tokenize("/"); TString prefix(((TObjString*)tokens->At(tokens->GetEntriesFast()-1))->GetString()); prefix.ReplaceAll(".txt",""); prefix.ReplaceAll("_Stripping",""); prefix.ReplaceAll("Tuple","_StrippingPropertimeAcceptance"); TString outputname("ROOT/"); outputname += prefix; outputname += "_"; outputname += bins; outputname += "bins.root"; TFile* outputfile = new TFile(outputname,"RECREATE"); RooRealVar TAU("B_TAU",prop->plotName+" Decay Time #tau",t_min,t_max,"ps") ; TAU.setRange("total",t_min,t_max); RooRealVar M("B_s0_M","Mass",prop->mass_low_acc,prop->mass_high_acc,"MeV/c^{2}") ; RooRealVar Weight("Weight","Weight",-1000.,1000.,"") ; RooRealVar Weight2("Weight2","Weight2",-1000.,1000.,"") ; RooCategory CatA("CatA","Category A"); CatA.defineType("CatA0", 0); CatA.defineType("CatA1", 1); CatA.defineType("CatA2", 2); RooCategory CatB("CatB","Category B"); CatB.defineType("CatB0", 0); CatB.defineType("CatB1", 1); CatB.defineType("CatB2", 2); CatB.defineType("CatB3", 3); RooArgList list("list"); list.add(M); list.add(TAU); list.add(CatA); list.add(CatB); list.add(Weight); //RooBinning* binning = new RooBinning(bins,t_min,t_max); RooBinning* binning = new RooBinning(t_min,t_max); Double_t A(TMath::Exp(-t_max/tau_PDG)); Double_t B(TMath::Exp(-t_min/tau_PDG)); for(Int_t i(1); i< bins; i++){ binning->addBoundary(-TMath::Log(((Double_t)i*(A-B)/(Double_t)bins+B))*tau_PDG); } TAU.setBinning(*binning); RooDataSet* data_ = RooDataSet::read(filename, list); RooDataSet* data = new RooDataSet("data", "data", data_, list, 0, "Weight"); Double_t width_boundary; if(particle == "Bs" || particle == "Lambdab0") width_boundary = 8.; else if(particle == "Bd") width_boundary = 9.; else width_boundary = 11.; /* Double_t width_boundary_high; if(particle == "Bs" || particle == "BdJPsiKs" || particle == "Lambdab0") width_boundary_high = 15.; else if(particle == "Bd") width_boundary_high = 18.; else width_boundary_high = 22.; */ RooRealVar c0("c_{0}", "coefficient #0", -0.15,-1.0,1.0); RooRealVar Bmass = RooRealVar("#m_{B}", "Mean B mass", mass, mass-5.,mass+5., "MeV/c^{2}"); RooRealVar Bwidth1 = RooRealVar("Bwidth1", "B mass resolution", 7., 4., width_boundary-0.1, "MeV/c^{2}"); //RooRealVar Bwidth2 = RooRealVar("Bwidth2", "B mass resolution", 15., width_boundary+0.1, width_boundary_high, "MeV/c^{2}"); RooRealVar frac = RooRealVar("frac", "frac", prop->frac_M_sig, 0.3, 1.); RooRealVar rfrac = RooRealVar("rfrac", "rfrac", prop->rfrac_M_sig, 1.2, 4.); RooFormulaVar Bwidth2 = RooFormulaVar("#sigma_{B^{0}_{s,2}}", "B mass resolution", "Bwidth1*rfrac",RooArgList(Bwidth1,rfrac)); RooChebychev * pdf_J_Bmass = new RooChebychev("Bmass_J_bkg", "background PDF", M, RooArgList(c0)); RooGaussian * pdf_S_Bmass1 = new RooGaussian("Bmass_pdf_sig1", "B signal mass pdf", M, Bmass, Bwidth1); RooGaussian * pdf_S_Bmass2 = new RooGaussian("Bmass_pdf_sig2", "B signal mass pdf", M, Bmass, Bwidth2); RooAddPdf * pdf_S_Bmass = new RooAddPdf("Bmass_pdf_sig", "B signal mass pdf", RooArgSet(*pdf_S_Bmass1, *pdf_S_Bmass2), frac); RooRealVar ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S = RooRealVar("ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S","ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S",0.9, 0., 1.5); RooRealVar ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S = RooRealVar("ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S","ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S",0.3, -0.5, 1.5); RooRealVar n_A_1_S = RooRealVar("n_A_1_S","n_A_1_S",nStart, 0.0000001, 5000000.); RooRealVar n_A_2_S = RooRealVar("n_A_2_S","n_A_2_S",nStart, 0.0000001, 5000000.); RooRealVar n_B_1_S = RooRealVar("n_B_1_S","n_B_1_S",nStart, 0.0000001, 5000000.); RooRealVar n_B_2_S = RooRealVar("n_B_2_S","n_B_2_S",nStart, 0.0000001, 5000000.); RooFormulaVar n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_S = RooFormulaVar("n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_S","n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_S","n_A_1_S/ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S-n_A_1_S",RooArgList(ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S,n_A_1_S)); RooFormulaVar n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S = RooFormulaVar("n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S","n_B_1_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S","n_B_1_S/ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S-n_B_1_S",RooArgList(ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S,n_B_1_S)); RooRealVar ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B = RooRealVar("ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B","ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B",0.9, -0.5, 1.5); RooRealVar ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B = RooRealVar("ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B","ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B",0.9, -0.5, 1.5); RooRealVar n_A_1_B = RooRealVar("n_A_1_B","n_A_1_B",nStart, 0.0000001, 5000000.); RooRealVar n_A_2_B = RooRealVar("n_A_2_B","n_A_2_B",nStart, 0.0000001, 5000000.); RooRealVar n_B_1_B = RooRealVar("n_B_1_B","n_B_1_B",nStart, 0.0000001, 5000000.); RooRealVar n_B_2_B = RooRealVar("n_B_2_B","n_B_2_B",nStart, 0.0000001, 5000000.); RooFormulaVar n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_B = RooFormulaVar("n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_B","n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_B","n_A_1_B/ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B-n_A_1_B",RooArgList(ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B,n_A_1_B)); RooFormulaVar n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B = RooFormulaVar("n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B","n_B_1_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B","n_B_1_B/ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B-n_B_1_B",RooArgList(ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B,n_B_1_B)); RooAddPdf * model_A_1 = new RooAddPdf("model_A_1","model_A_1", RooArgList(*pdf_S_Bmass, *pdf_J_Bmass), RooArgList(n_A_1_S, n_A_1_B)); RooAddPdf * model_A_2 = new RooAddPdf("model_A_2","model_A_2", RooArgList(*pdf_S_Bmass, *pdf_J_Bmass), RooArgList(n_A_2_S, n_A_2_B)); RooAddPdf * model_B_1 = new RooAddPdf("model_B_1","model_B_1", RooArgList(*pdf_S_Bmass, *pdf_J_Bmass), RooArgList(n_B_1_S, n_B_1_B)); RooAddPdf * model_B_2 = new RooAddPdf("model_B_2","model_B_2", RooArgList(*pdf_S_Bmass, *pdf_J_Bmass), RooArgList(n_B_2_S, n_B_2_B)); RooAddPdf * model_A_2_Hlt1DiMuon_Hlt2DiMuonDetached = new RooAddPdf("model_A_2_Hlt1DiMuon_Hlt2DiMuonDetached","model_A_2_Hlt1DiMuon_Hlt2DiMuonDetached", RooArgList(*pdf_S_Bmass, *pdf_J_Bmass), RooArgList(n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_S, n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_B)); RooAddPdf * model_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached = new RooAddPdf("model_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached","model_B_1_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached", RooArgList(*pdf_S_Bmass, *pdf_J_Bmass), RooArgList(n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S, n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B)); RooDataHist * histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S_ = new RooDataHist("histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S_","histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S_",TAU); RooDataHist * histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S_ = new RooDataHist("histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S_","histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S_",TAU); RooDataHist * histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S_ = new RooDataHist("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S_","histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S_",TAU); RooDataHist * histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S_ = new RooDataHist("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S_","histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S_",TAU); RooDataHist * histo_Hlt1DiMuon_Hlt2DiMuonDetached_S_ = new RooDataHist("histo_Hlt1DiMuon_Hlt2DiMuonDetached_S_","histo_Hlt1DiMuon_Hlt2DiMuonDetached_S_",TAU); RooDataHist * histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S_ = new RooDataHist("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S_","histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S_",TAU); RooDataHist * histo_Hlt1DiMuon_Hlt2DiMuonDetached_B_ = new RooDataHist("histo_Hlt1DiMuon_Hlt2DiMuonDetached_B_","histo_Hlt1DiMuon_Hlt2DiMuonDetached_B_",TAU); RooDataHist * histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B_ = new RooDataHist("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B_","histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B_",TAU); RooHist * graph_Hlt1DiMuon_Hlt2DiMuonDetached_1_S = new RooHist(); RooHist * graph_Hlt1DiMuon_Hlt2DiMuonDetached_2_S = new RooHist(); RooHist * graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S = new RooHist(); RooHist * graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S = new RooHist(); RooHist * graph_Hlt1DiMuon_Hlt2DiMuonDetached_S = new RooHist(); RooHist * graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S = new RooHist(); RooHist * graph_Hlt1DiMuon_Hlt2DiMuonDetached_B = new RooHist(); RooHist * graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B = new RooHist(); TH1F* histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S = TAU.createHistogram("histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S", "Hlt Acceptance", *binning); TH1F* histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S = TAU.createHistogram("histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S", "Hlt Acceptance", *binning); TH1F* histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S = TAU.createHistogram("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S", "Hlt Acceptance", *binning); TH1F* histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S = TAU.createHistogram("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S", "Hlt Acceptance", *binning); TH1F* histo_Hlt1DiMuon_Hlt2DiMuonDetached_S = TAU.createHistogram("histo_Hlt1DiMuon_Hlt2DiMuonDetached_S", "Hlt Acceptance", *binning); TH1F* histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S = TAU.createHistogram("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S", "Hlt Acceptance", *binning); TH1F* histo_Hlt1DiMuon_Hlt2DiMuonDetached_B = TAU.createHistogram("histo_Hlt1DiMuon_Hlt2DiMuonDetached_B", "Hlt Acceptance", *binning); TH1F* histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B = TAU.createHistogram("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B", "Hlt Acceptance", *binning); TH1F* histo_Hlt1DiMuon_Hlt2DiMuonDetached_check_S = TAU.createHistogram("histo_Hlt1DiMuon_Hlt2DiMuonDetached_check_S", "Hlt Acceptance", *binning); TH1F* histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_check_S = TAU.createHistogram("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_check_S", "Hlt Acceptance", *binning); TString tmp; tmp = prefix; tmp += "_"; tmp += bins; tmp += "bins"; tmp += "_Hlt1DiMuon_Hlt2DiMuonDetached"; histo_Hlt1DiMuon_Hlt2DiMuonDetached_S->SetName(tmp); histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S->SetName(tmp+"_SetA"); histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S->SetName(tmp+"_SetB"); histo_Hlt1DiMuon_Hlt2DiMuonDetached_check_S->SetName(tmp+"_check"); tmp += "_AsymErrors"; graph_Hlt1DiMuon_Hlt2DiMuonDetached_S->SetName(tmp); graph_Hlt1DiMuon_Hlt2DiMuonDetached_1_S->SetName(tmp+"_SetA"); graph_Hlt1DiMuon_Hlt2DiMuonDetached_2_S->SetName(tmp+"_SetB"); tmp = particle; tmp += " Hlt1DiMuon_Hlt2DiMuonDetached Acceptance"; histo_Hlt1DiMuon_Hlt2DiMuonDetached_S->SetTitle(tmp); graph_Hlt1DiMuon_Hlt2DiMuonDetached_S->SetTitle(tmp); tmp = prefix; tmp += "_"; tmp += bins; tmp += "bins"; tmp += "_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached"; histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->SetName(tmp); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S->SetName(tmp+"_SetC"); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S->SetName(tmp+"_SetD"); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_check_S->SetName(tmp+"_check"); tmp += "_AsymErrors"; graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->SetName(tmp); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S->SetName(tmp+"_SetC"); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S->SetName(tmp+"_SetD"); tmp = particle; tmp += " Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached Acceptance"; histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->SetTitle(tmp); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->SetTitle(tmp); tmp = prefix; tmp += "_"; tmp += bins; tmp += "bins"; tmp += "_Hlt1DiMuon_Hlt2DiMuonDetached_Background"; histo_Hlt1DiMuon_Hlt2DiMuonDetached_B->SetName(tmp); tmp += "_AsymErrors"; graph_Hlt1DiMuon_Hlt2DiMuonDetached_B->SetName(tmp); tmp = particle; tmp += " Hlt1DiMuon_Hlt2DiMuonDetached UB Acceptance"; histo_Hlt1DiMuon_Hlt2DiMuonDetached_B->SetTitle(tmp); graph_Hlt1DiMuon_Hlt2DiMuonDetached_B->SetTitle(tmp); tmp = prefix; tmp += "_"; tmp += bins; tmp += "bins"; tmp += "_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_Background"; histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B->SetName(tmp); tmp += "_AsymErrors"; graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B->SetName(tmp); tmp = particle; tmp += " Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached Acceptance"; histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B->SetTitle(tmp); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B->SetTitle(tmp); RooDataSet* data_sub; RooDataSet* data_sub2; RooDataSet* data_sub_A_1; RooDataSet* data_sub_A_2; RooDataSet* data_sub_B_1; RooDataSet* data_sub_B_2; data_sub2 = ((RooDataSet*)data->reduce("CatB>0.")); n_A_1_S.setVal(TMath::Max(data_sub2->sumEntries()/2.,100.)); n_A_1_B.setVal(TMath::Max(data_sub2->sumEntries()/2.,100.)); model_A_1->fitTo(*data_sub2,RooFit::Minos(kFALSE),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); rfrac.setConstant(); frac.setConstant(); Bmass.setConstant(); c0.setConstant(); Bwidth1.setConstant(); data_sub2->Delete(); for(Int_t i(0); i< bins; i++){ tmp = "B_TAU < "; tmp += binning->binHigh(i); tmp += " && B_TAU > "; tmp += binning->binLow(i); data_sub = (RooDataSet*)data->reduce(tmp); data_sub2 = ((RooDataSet*)data_sub->reduce("CatB>0.")); data_sub_A_1 = ((RooDataSet*)data_sub->reduce("CatA==CatA::CatA1")); data_sub_A_2 = ((RooDataSet*)data_sub->reduce("CatA==CatA::CatA2")); data_sub_B_1 = ((RooDataSet*)data_sub->reduce("CatB==CatB::CatB1")); data_sub_B_2 = ((RooDataSet*)data_sub->reduce("CatB==CatB::CatB2")); TAU.setRange("fit",binning->binLow(i),binning->binHigh(i)); TAU.setBin(i); n_A_1_S.setVal(TMath::Max(data_sub_A_1->sumEntries()/2.,100.)); n_A_1_B.setVal(TMath::Max(data_sub_A_1->sumEntries()/2.,100.)); c0.setConstant(kFALSE); //Bwidth1.setConstant(kFALSE); //n_A_1_S.setMin(-1000.); model_A_1->fitTo(*data_sub2,RooFit::Minos(kFALSE),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); n_A_1_S.setMin(0.0000001); //c0.setConstant(); //Bwidth1.setConstant(); //n_A_1_S.setMin(-1000.); //n_A_2_S.setMin(-1000.); //n_B_1_S.setMin(-1000.); //n_B_2_S.setMin(-1000.); n_A_1_S.setVal(TMath::Max(data_sub_A_1->sumEntries()*n_A_1_S.getVal()/(n_A_1_S.getVal()+n_A_1_B.getVal()),100.)); n_A_2_S.setVal(TMath::Max(data_sub_A_2->sumEntries()*n_A_2_S.getVal()/(n_A_2_S.getVal()+n_A_2_B.getVal()),100.)); n_B_1_S.setVal(TMath::Max(data_sub_B_1->sumEntries()*n_B_1_S.getVal()/(n_B_1_S.getVal()+n_B_1_B.getVal()),100.)); n_B_2_S.setVal(TMath::Max(data_sub_B_2->sumEntries()*n_B_2_S.getVal()/(n_B_2_S.getVal()+n_B_2_B.getVal()),100.)); n_A_1_B.setVal(TMath::Max(data_sub_A_1->sumEntries()*n_A_1_B.getVal()/(n_A_1_B.getVal()+n_A_1_S.getVal()),100.)); n_A_2_B.setVal(TMath::Max(data_sub_A_2->sumEntries()*n_A_2_B.getVal()/(n_A_2_B.getVal()+n_A_2_S.getVal()),100.)); n_B_1_B.setVal(TMath::Max(data_sub_B_1->sumEntries()*n_B_1_B.getVal()/(n_B_1_B.getVal()+n_B_1_S.getVal()),100.)); n_B_2_B.setVal(TMath::Max(data_sub_B_2->sumEntries()*n_B_2_B.getVal()/(n_B_2_B.getVal()+n_B_2_S.getVal()),100.)); RooSimultaneous* simmodel_Hlt1DiMuon_Hlt2DiMuonDetached = new RooSimultaneous("simmodel_Hlt1DiMuon_Hlt2DiMuonDetached","simultaneous pdf",CatA) ; RooSimultaneous* simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached = new RooSimultaneous("simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached","simultaneous pdf",CatB) ; RooSimultaneous* simmodel_Hlt1DiMuon_Hlt2DiMuonDetached_ = new RooSimultaneous("simmodel_Hlt1DiMuon_Hlt2DiMuonDetached_","simultaneous pdf",CatA) ; RooSimultaneous* simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_ = new RooSimultaneous("simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_","simultaneous pdf",CatB) ; model_A_1->fitTo(*data_sub_A_1,RooFit::Minos(kFALSE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1DiMuon_Hlt2DiMuonDetached->addPdf(*model_A_1,"CatA1") ; simmodel_Hlt1DiMuon_Hlt2DiMuonDetached_->addPdf(*model_A_1,"CatA1") ; model_A_2->fitTo(*data_sub_A_2,RooFit::Minos(kFALSE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1DiMuon_Hlt2DiMuonDetached->addPdf(*model_A_2_Hlt1DiMuon_Hlt2DiMuonDetached,"CatA2") ; simmodel_Hlt1DiMuon_Hlt2DiMuonDetached_->addPdf(*model_A_2,"CatA2") ; model_B_1->fitTo(*data_sub_B_1,RooFit::Minos(kFALSE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached->addPdf(*model_B_1,"CatB1") ; simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_->addPdf(*model_B_1,"CatB1") ; model_B_2->fitTo(*data_sub_B_2,RooFit::Minos(kFALSE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached->addPdf(*model_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached,"CatB2") ; simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_->addPdf(*model_B_2,"CatB2") ; ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.setVal(n_A_1_S.getVal()/(n_A_1_S.getVal()+n_A_2_S.getVal())-0.001); ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.setVal(n_B_1_S.getVal()/(n_B_1_S.getVal()+n_B_2_S.getVal())-0.001); ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.setVal(n_A_1_B.getVal()/(n_A_1_B.getVal()+n_A_2_B.getVal())-0.001); ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.setVal(n_B_1_B.getVal()/(n_B_1_B.getVal()+n_B_2_B.getVal())-0.001); n_A_1_B.setConstant(); n_A_2_B.setConstant(); n_B_1_B.setConstant(); n_B_2_B.setConstant(); ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.setConstant(); ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.setConstant(); simmodel_Hlt1DiMuon_Hlt2DiMuonDetached->fitTo(*data_sub,RooFit::Minos(kTRUE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached->fitTo(*data_sub,RooFit::Minos(kTRUE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1DiMuon_Hlt2DiMuonDetached_->fitTo(*data_sub,RooFit::Minos(kTRUE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_->fitTo(*data_sub,RooFit::Minos(kTRUE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1DiMuon_Hlt2DiMuonDetached->fitTo(*data_sub,RooFit::Minos(kTRUE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached->fitTo(*data_sub,RooFit::Minos(kTRUE),RooFit::Strategy(1),Optimize(kFALSE),RooFit::SumW2Error(kTRUE)); TCanvas* canvas = new TCanvas("canvas","canvas", 1400, 800); gPad->SetLeftMargin(0.15); outputname = particle; outputname += " Mass"; canvas->Divide(2,1); canvas->cd(1); RooPlot* frame2 = M.frame(Bins(bins_M),Title(outputname)); data_sub_A_1->plotOn(frame2); model_A_1->plotOn(frame2); frame2->Draw(); canvas->cd(2); RooPlot* frame3 = M.frame(Bins(bins_M),Title(outputname)); data_sub_A_2->plotOn(frame3); model_A_2_Hlt1DiMuon_Hlt2DiMuonDetached->plotOn(frame3); frame3->Draw(); TString tmp("test_"); tmp += i; tmp += ".eps"; canvas->SaveAs(tmp); canvas->Delete(); n_A_1_B.setConstant(kFALSE); n_A_2_B.setConstant(kFALSE); n_B_1_B.setConstant(kFALSE); n_B_2_B.setConstant(kFALSE); ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.setConstant(kFALSE); ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.setConstant(kFALSE); n_A_1_S.setConstant(kFALSE); n_A_2_S.setConstant(kFALSE); n_B_1_S.setConstant(kFALSE); n_B_2_S.setConstant(kFALSE); ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.setConstant(kFALSE); ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.setConstant(kFALSE); histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S_->set(RooArgSet(TAU),n_A_1_S.getVal()/binning->binWidth(i),n_A_1_S.getError()/binning->binWidth(i)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S_->set(RooArgSet(TAU),n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_S.getVal()/binning->binWidth(i),n_A_2_S.getError()/binning->binWidth(i)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S_->set(RooArgSet(TAU),n_B_1_S.getVal()/binning->binWidth(i),n_B_1_S.getError()/binning->binWidth(i)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S_->set(RooArgSet(TAU),n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getVal()/binning->binWidth(i),n_B_2_S.getError()/binning->binWidth(i)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S->SetBinContent(i+1,n_A_1_S.getVal()/binning->binWidth(i)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S->SetBinError(i+1,n_A_1_S.getError()/binning->binWidth(i)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S->SetBinContent(i+1,n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_S.getVal()/binning->binWidth(i)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S->SetBinError(i+1,n_A_2_S.getError()/binning->binWidth(i)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S->SetBinContent(i+1,n_B_1_S.getVal()/binning->binWidth(i)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S->SetBinError(i+1,n_B_1_S.getError()/binning->binWidth(i)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S->SetBinContent(i+1,n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getVal()/binning->binWidth(i)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S->SetBinError(i+1,n_B_2_S.getError()/binning->binWidth(i)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_check_S->SetBinContent(i+1,n_A_1_S.getVal()/(n_A_1_S.getVal()+n_A_2_S.getVal())); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_check_S->SetBinContent(i+1,n_B_1_S.getVal()/n_B_2_S.getVal()); histo_Hlt1DiMuon_Hlt2DiMuonDetached_S_->set(RooArgSet(TAU),ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.getVal(),ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.getError()); histo_Hlt1DiMuon_Hlt2DiMuonDetached_S->SetBinContent(i+1,ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.getVal()); histo_Hlt1DiMuon_Hlt2DiMuonDetached_S->SetBinError(i+1,ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.getError()); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S_->set(RooArgSet(TAU),ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getVal(),ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getError()); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->SetBinContent(i+1,ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getVal()); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->SetBinError(i+1,ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getError()); histo_Hlt1DiMuon_Hlt2DiMuonDetached_B_->set(RooArgSet(TAU),ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.getVal(),ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.getError()); histo_Hlt1DiMuon_Hlt2DiMuonDetached_B->SetBinContent(i+1,ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.getVal()); histo_Hlt1DiMuon_Hlt2DiMuonDetached_B->SetBinError(i+1,ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.getError()); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B_->set(RooArgSet(TAU),ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.getVal(),ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.getError()); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B->SetBinContent(i+1,ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.getVal()); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B->SetBinError(i+1,ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.getError()); graph_Hlt1DiMuon_Hlt2DiMuonDetached_1_S->addBinWithError(TAU.getVal(),n_A_1_S.getVal(),TMath::Abs(n_A_1_S.getErrorLo()), n_A_1_S.getErrorHi(),TAU.getBinWidth(i)); graph_Hlt1DiMuon_Hlt2DiMuonDetached_2_S->addBinWithError(TAU.getVal(),n_A_2_Hlt1DiMuon_Hlt2DiMuonDetached_S.getVal(),TMath::Abs(n_A_2_S.getErrorLo()), n_A_2_S.getErrorHi(),TAU.getBinWidth(i)); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S->addBinWithError(TAU.getVal(),n_B_1_S.getVal(), TMath::Abs(n_B_1_S.getErrorLo()), n_B_1_S.getErrorHi(),TAU.getBinWidth(i)); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S->addBinWithError(TAU.getVal(),n_B_2_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getVal(), TMath::Abs(n_B_2_S.getErrorLo()), n_B_2_S.getErrorHi(),TAU.getBinWidth(i)); graph_Hlt1DiMuon_Hlt2DiMuonDetached_S->addBinWithError(TAU.getVal(),ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.getVal(),TMath::Abs(ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.getErrorLo()), ratio_Hlt1DiMuon_Hlt2DiMuonDetached_S.getErrorHi(),TAU.getBinWidth(i),1.,kFALSE); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->addBinWithError(TAU.getVal(),ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getVal(), TMath::Abs(ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getErrorLo()), ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S.getErrorHi(),TAU.getBinWidth(i),1.,kFALSE); graph_Hlt1DiMuon_Hlt2DiMuonDetached_B->addBinWithError(TAU.getVal(),ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.getVal(),TMath::Abs(ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.getErrorLo()), ratio_Hlt1DiMuon_Hlt2DiMuonDetached_B.getErrorHi(),TAU.getBinWidth(i),1.,kFALSE); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B->addBinWithError(TAU.getVal(),ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.getVal(), TMath::Abs(ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.getErrorLo()), ratio_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_B.getErrorHi(),TAU.getBinWidth(i),1.,kFALSE); simmodel_Hlt1DiMuon_Hlt2DiMuonDetached->Delete(); simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached->Delete(); simmodel_Hlt1DiMuon_Hlt2DiMuonDetached_->Delete(); simmodel_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_->Delete(); data_sub->Delete(); data_sub2->Delete(); data_sub_A_1->Delete(); data_sub_A_2->Delete(); data_sub_B_1->Delete(); data_sub_B_2->Delete(); } histo_Hlt1DiMuon_Hlt2DiMuonDetached_S->Write(); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->Write(); graph_Hlt1DiMuon_Hlt2DiMuonDetached_S->Write(); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S->Write(); histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S->Write(); histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S->Write(); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S->Write(); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S->Write(); graph_Hlt1DiMuon_Hlt2DiMuonDetached_1_S->Write(); graph_Hlt1DiMuon_Hlt2DiMuonDetached_2_S->Write(); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S->Write(); graph_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S->Write(); /* histo_Hlt1DiMuon_Hlt2DiMuonDetached_check_S->Write(); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_check_S->Write(); */ TCanvas* cdata = new TCanvas("cdata","cdata", 1600, 1000); cdata->Divide(2,2); cdata->cd(1); gPad->SetLeftMargin(0.15); outputname = ""; outputname += particle; outputname += " Decay Time used for Almost Unbiased Acceptance"; RooPlot* frame1 = TAU.frame(Bins(bins),Title(outputname)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S_->plotOn(frame1,Name("histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S_"), LineColor(kBlue), MarkerColor(kBlue)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S_->plotOn(frame1,Name("histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S_"), LineColor(kRed), MarkerColor(kRed)); frame1->GetYaxis()->SetTitle("Events / Bin Width (ps^{-1})"); frame1->Draw(); gPad->SetLogx(); TLegend* legend_1 = new TLegend(0.65,0.6,0.9,0.85); legend_1->SetFillColor(kWhite); legend_1->AddEntry((RooHist*)frame1->findObject("histo_Hlt1DiMuon_Hlt2DiMuonDetached_1_S_"),"Set A","lep"); legend_1->AddEntry((RooHist*)frame1->findObject("histo_Hlt1DiMuon_Hlt2DiMuonDetached_2_S_"),"Set B","lep"); legend_1->SetTextFont(132); legend_1->Draw(); cdata->cd(2); gPad->SetLeftMargin(0.15); outputname = "Almost Unbiased Acceptance VS "; outputname += particle; outputname += " Decay Time"; RooPlot* frame2 = TAU.frame(Bins(bins),Title(outputname)); histo_Hlt1DiMuon_Hlt2DiMuonDetached_S_->plotOn(frame2,Name("histo_Hlt1DiMuon_Hlt2DiMuonDetached_S_"), LineColor(kBlack), MarkerColor(kBlack)); frame2->SetMinimum(0.); //frame2->SetMinimum(0.85); frame2->SetMaximum(1.1); frame2->GetYaxis()->SetTitle("Acceptance"); frame2->Draw(); gPad->SetLogx(); TLegend* legend_2 = new TLegend(0.3,0.25,0.9,0.45); legend_2->SetFillColor(kWhite); legend_2->AddEntry((RooHist*)frame2->findObject("histo_Hlt1DiMuon_Hlt2DiMuonDetached_S_"),"Almost Unbiased Acceptance","lep"); legend_2->SetTextFont(132); legend_2->Draw(); cdata->cd(3); gPad->SetLeftMargin(0.15); outputname = ""; outputname += particle; outputname += " Decay Time used for Exclusively Biased Acceptance"; RooPlot* frame3 = TAU.frame(Bins(bins),Title(outputname)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S_->plotOn(frame3,Name("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S_"), LineColor(kBlue), MarkerColor(kBlue)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S_->plotOn(frame3,Name("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S_"), LineColor(kRed), MarkerColor(kRed)); frame3->GetYaxis()->SetTitle("Events / Bin Width (ps^{-1})"); frame3->Draw(); gPad->SetLogx(); TLegend* legend_3 = new TLegend(0.65,0.6,0.9,0.85); legend_3->SetFillColor(kWhite); legend_3->AddEntry((RooHist*)frame3->findObject("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_1_S_"),"Set A","lep"); legend_3->AddEntry((RooHist*)frame3->findObject("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_2_S_"),"Set B","lep"); legend_3->SetTextFont(132); legend_3->Draw(); cdata->cd(4); gPad->SetLeftMargin(0.15); outputname = "Exclusively Biased Acceptance VS "; outputname += particle; outputname += " Decay Time"; RooPlot* frame4 = TAU.frame(Bins(bins),Title(outputname)); histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S_->plotOn(frame4,Name("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S_"), LineColor(kBlack), MarkerColor(kBlack)); frame4->SetMinimum(0.); //frame4->SetMinimum(0.85); frame4->SetMaximum(1.1); frame4->GetYaxis()->SetTitle("Acceptance"); frame4->Draw(); gPad->SetLogx(); TLegend* legend_4 = new TLegend(0.3,0.25,0.9,0.45); legend_4->SetFillColor(kWhite); legend_4->AddEntry((RooHist*)frame4->findObject("histo_Hlt1TrackAndTrackMuonExcl_Hlt2DiMuonDetached_S_"),"Exclusively Biased Acceptance","lep"); legend_4->SetTextFont(132); legend_4->Draw(); outputname = "plots/"; outputname += prefix; outputname += "_"; outputname += bins; outputname += "bins.eps"; cdata->SaveAs(outputname); TCanvas* cdata1 = new TCanvas("cdata1","cdata1", 800, 500); frame2->Draw(); gPad->SetLogx(); legend_2->Draw(); outputname = "plots/"; outputname += prefix; outputname += "_"; outputname += bins; outputname += "bins_AlmostUnbiased.eps"; cdata1->SaveAs(outputname); TCanvas* cdata2 = new TCanvas("cdata2","cdata2", 800, 500); frame4->Draw(); gPad->SetLogx(); legend_4->Draw(); outputname = "plots/"; outputname += prefix; outputname += "_"; outputname += bins; outputname += "bins_ExclusivelyBiased.eps"; cdata2->SaveAs(outputname); TCanvas* cdata3 = new TCanvas("cdata3","cdata3", 800, 500); frame1->Draw(); gPad->SetLogx(); legend_1->Draw(); outputname = "plots/"; outputname += prefix; outputname += "_"; outputname += bins; outputname += "bins_AlmostUnbiasedYields.eps"; cdata3->SaveAs(outputname); TCanvas* cdata4 = new TCanvas("cdata4","cdata4", 800, 500); frame3->Draw(); gPad->SetLogx(); legend_3->Draw(); outputname = "plots/"; outputname += prefix; outputname += "_"; outputname += bins; outputname += "bins_ExclusivelyBiasedYields.eps"; cdata4->SaveAs(outputname); outputfile->Close(); }
void plotphi(int top, bool phi=kFALSE){ if (setup("vm","","pol__")==kFALSE) return; gStyle->SetOptFit(1111); //pcev = 1111 //gStyle->SetTitleW(1.5); int itop = top-1; TFile* fy = _fyexp[itop]; int nq2wbins = fy->GetNkeys(); TIter nextkey(fy->GetListOfKeys()); TKey *key; int iq2wbin = 0; while (key = (TKey*)nextkey()) { TString Q2Wdirname = key->GetName(); if(Q2Wdirname.EqualTo("hYW_Dir") || Q2Wdirname.EqualTo("hYW"))continue; cout << "Q2Wdirname = " << Q2Wdirname << endl; THStack* hs[10]; TF1 *fphi = new TF1("fphi", "([0] + [1]*cos(x*TMath::DegToRad()) + [2]*cos(2*x*TMath::DegToRad()) + [3]*sin(x*TMath::DegToRad()))",0, 360); fphi->SetParameter(0,1); fphi->SetParameter(1,10); fphi->SetParameter(2,20); fphi->SetParameter(3,100); fphi->SetParName(0, "A"); fphi->SetParName(1, "B"); fphi->SetParName(2, "C"); fphi->SetParName(3, "hPR"); for (int i = 0; i < 10; i++) { TString hname_unp = TString::Format("%s/hPhi/Varset1/theta/hphi_%02d",Q2Wdirname.Data(),i+1); TString hname_pos = TString::Format("%s/hPhi_POS/Varset1/theta/hphi_%02d",Q2Wdirname.Data(),i+1); TString hname_neg = TString::Format("%s/hPhi_NEG/Varset1/theta/hphi_%02d",Q2Wdirname.Data(),i+1); cout << "hname_unp = " << hname_unp << endl; cout << "hname_pos = " << hname_pos << endl; cout << "hname_neg = " << hname_neg << endl; TH1D* hunp = (TH1D*)fy->Get(hname_unp); TH1D* hpos = (TH1D*)fy->Get(hname_pos); TH1D* hneg = (TH1D*)fy->Get(hname_neg); if (hunp==NULL || hpos==NULL || hneg==NULL) cout << "histogram not found" << endl; hunp->SetLineColor(kBlack); hpos->SetLineColor(kRed); hneg->SetLineColor(kBlue); hunp->Fit(fphi); hpos->Fit(fphi); hneg->Fit(fphi); //! Modify titles TObjArray *tarr; char t[100]; TPaveText *ptunp = new TPaveText(0.0, 0.9, 1.0, 1, "NDC"); TString tunp = hunp->GetTitle(); tarr = tunp.Tokenize("|"); sprintf(t, "%s:%s:%s", tarr->At(1)->GetName(), tarr->At(2)->GetName(), tarr->At(3)->GetName()); ptunp->AddText(tarr->At(0)->GetName()); ptunp->AddText(t); hunp->SetTitle(""); TPaveText *ptpos = new TPaveText(0.0, 0.9, 1.0, 1, "NDC"); TString tpos = hpos->GetTitle(); tarr = tpos.Tokenize("|"); sprintf(t, "%s:%s:%s", tarr->At(1)->GetName(), tarr->At(2)->GetName(), tarr->At(3)->GetName()); ptpos->AddText(tarr->At(0)->GetName()); ptpos->AddText(t); hpos->SetTitle(""); TPaveText *ptneg = new TPaveText(0.0, 0.9, 1.0, 1, "NDC"); TString tneg = hneg->GetTitle(); tarr = tneg.Tokenize("|"); sprintf(t, "%s:%s:%s", tarr->At(1)->GetName(), tarr->At(2)->GetName(), tarr->At(3)->GetName()); ptneg->AddText(tarr->At(0)->GetName()); ptneg->AddText(t); hneg->SetTitle(""); //! Draw histograms TCanvas *c = new TCanvas(hpos->GetName(),hpos->GetName(),900, 600); c->Divide(3,1); c->cd(1); hunp->Draw(); ptunp->Draw(); c->cd(2); hpos->Draw(); ptpos->Draw(); c->cd(3); hneg->Draw(); ptneg->Draw(); TString dir = TString::Format("./polobs/top%d/%s/Varset1/theta", top, Q2Wdirname.Data()); gSystem->mkdir(dir,1); c->SaveAs(TString::Format("%s/%s.png", dir.Data(), c->GetName())); c->Close(); c->Delete(); } } }
//-------------------------------------------------------------------------------------------------- // Make plots of fake rates for different charges //-------------------------------------------------------------------------------------------------- void compareChargeDependantFakeRatesPythiaVsMadgraph(char *FakeRateFilename , int faketype, int chargetype ) { string fakeTypeString = ""; if (faketype == 11) { fakeTypeString = "Electron"; } else if (faketype == 13) { fakeTypeString = "Muon"; } else { cerr << "Error: faketype = " << faketype << " not recognized.\n"; assert(false); } //different charges string chargeTypeName = ""; if (chargetype == -1) chargeTypeName = "Minus"; else if (chargetype == 1) chargeTypeName = "Plus"; string plotname = chargeTypeName + fakeTypeString + "FakeRateComparisonPythiaVsMadgraph"; TCanvas *cv = MakeCanvas("cv", plotname.c_str(), 800, 600); TLegend *leg1=0; leg1 = new TLegend(0.65,0.6,0.9,0.8); leg1->SetBorderSize(1); leg1->SetTextSize(0.03); int color = 0; for (int eventType= -1; eventType <= 1; eventType += 2) { for (int sample=0;sample<=1;sample++) { //sample names string sampleName = ""; if (sample == 0) sampleName = "PythiaWJets"; else if (sample == 1) sampleName = "MadgraphWJets"; string LegendString = sampleName + " "; string eventTypeName = ""; if (eventType == -1) { eventTypeName = "MinusW"; LegendString += "-"; } else if (eventType == 1) { eventTypeName = "PlusW"; LegendString += "+"; } if (chargetype == -1) { LegendString += "-"; } else if (chargetype == 1) { LegendString += "+"; } TFile *file = new TFile(FakeRateFilename, "READ"); file->cd(); TH1F *tmp = (TH1F*)file->FindObjectAny((chargeTypeName + fakeTypeString + eventTypeName + "FakeRate_Pt_" + sampleName).c_str()); if (!tmp) { cerr << "can't find :" << chargeTypeName + fakeTypeString + eventTypeName + "FakeRate_Pt_" + sampleName << endl; assert(tmp); } tmp->SetLineColor(COLORS[color]); tmp->SetMarkerColor(COLORS[color]); color++; leg1->AddEntry(tmp, LegendString.c_str(), "LP"); if (sample == -1 && eventType == -1) tmp->Draw(); else tmp->Draw("same"); } } leg1->Draw(); string filename = plotname + ".gif"; cv->SaveAs(filename.c_str()); cv->Delete(); }
//-------------------------------------------------------------------------------------------------- // Make plots of fake rates for different charges //-------------------------------------------------------------------------------------------------- void compareChargeDependantFakeRates(char *FakeRateFilename , string sampleName, int denominatortype, int faketype, int onlychargetype = -1000, int onlyeventType = -1000 ) { string fakeTypeString = ""; if (faketype == 11) { fakeTypeString = "Electron"; } else if (faketype == 13) { fakeTypeString = "Muon"; } else { cerr << "Error: faketype = " << faketype << " not recognized.\n"; assert(false); } string denominatorTypeString = ""; if (denominatortype == 1) { denominatorTypeString = "TrackDenominator"; } string plotname = "ChargeDependant" + fakeTypeString + denominatorTypeString + "FakeRateComparison_" + sampleName; TCanvas *cv = MakeCanvas("cv", plotname.c_str(), 800, 600); TLegend *leg1=0; leg1 = new TLegend(0.65,0.6,0.9,0.8); leg1->SetBorderSize(1); leg1->SetTextSize(0.03); int color = 0; for (int chargetype = -1; chargetype <= 1; chargetype += 2) { for (int eventType= -1; eventType <= 1; eventType ++) { if (!(onlychargetype == chargetype || onlychargetype == -1000)) continue; if (onlyeventType == 0) { if (eventType != 0) continue; } else { if (eventType == 0) continue; } //different charges string chargeTypeName = ""; string LegendString = sampleName + " "; string eventTypeName = ""; if (eventType == -1) { eventTypeName = "MinusW"; LegendString += "-"; } else if (eventType == 1) { eventTypeName = "PlusW"; LegendString += "+"; } else if (eventType == 0) LegendString += "Fake"; if (chargetype == -1) { chargeTypeName = "Minus"; LegendString += "-"; } else if (chargetype == 1) { chargeTypeName = "Plus"; LegendString += "+"; } TFile *file = new TFile(FakeRateFilename, "READ"); file->cd(); TH1F *tmp = (TH1F*)file->FindObjectAny((chargeTypeName + fakeTypeString + eventTypeName + denominatorTypeString + "FakeRate_Pt_" + sampleName).c_str()); if (!tmp) { cerr << "can't find :" << chargeTypeName + fakeTypeString + eventTypeName + denominatorTypeString + "FakeRate_Pt_" + sampleName << endl; assert(tmp); } tmp->SetLineColor(COLORS[color]); tmp->SetMarkerColor(COLORS[color]); tmp->SetAxisRange(0,100); color++; leg1->AddEntry(tmp, LegendString.c_str(), "LP"); if (chargetype == -1 && eventType == -1) tmp->Draw(); else tmp->Draw("same"); } } leg1->Draw(); string filename = plotname + ".gif"; cv->SaveAs(filename.c_str()); cv->Delete(); }
//-------------------------------------------------------------------------------------------------- // Make plots of electron fake rate from many samples //-------------------------------------------------------------------------------------------------- void compareFakeRates(char *FakeRateFilename, int faketype , int chargetype , int eventType) { string fakeTypeString = ""; if (faketype == 11) { fakeTypeString = "Electron"; } else if (faketype == 13) { fakeTypeString = "Muon"; } else { cerr << "Error: faketype = " << faketype << " not recognized.\n"; assert(false); } //different charges string chargeTypeName = ""; if (chargetype == -1) chargeTypeName = "Minus"; else if (chargetype == 1) chargeTypeName = "Plus"; string eventTypeName = ""; if (eventType == -1) eventTypeName = "MinusW"; else if (eventType == 1) eventTypeName = "PlusW"; string plotname = chargeTypeName + fakeTypeString + eventTypeName + "FakeRateComparison"; TFile *file = new TFile(FakeRateFilename, "READ"); file->cd(); TCanvas *cv = MakeCanvas("cv", plotname.c_str(), 800, 600); TLegend *leg1=0; leg1 = new TLegend(0.65,0.6,0.9,0.8); leg1->SetBorderSize(1); leg1->SetTextSize(0.03); TH1F *electronFakeRate_pythiaWJets = (TH1F*)file->FindObjectAny((chargeTypeName + fakeTypeString + eventTypeName + "FakeRate_Pt_PythiaWJets").c_str()); TH1F *electronFakeRate_madgraphWJets = (TH1F*)file->FindObjectAny((chargeTypeName + fakeTypeString + eventTypeName + "FakeRate_Pt_MadgraphWJets").c_str()); TH1F *electronFakeRate_pythiaQCDEM = (TH1F*)file->FindObjectAny((chargeTypeName + fakeTypeString + eventTypeName + "FakeRate_Pt_PythiaQCDEM").c_str()); TH1F *electronFakeRate_madgraphQCD = (TH1F*)file->FindObjectAny((chargeTypeName + fakeTypeString + eventTypeName + "FakeRate_Pt_MadgraphQCD").c_str()); assert(electronFakeRate_pythiaWJets); assert(electronFakeRate_madgraphWJets); assert(electronFakeRate_pythiaQCDEM); assert(electronFakeRate_madgraphQCD); electronFakeRate_pythiaWJets->SetLineColor(kRed); electronFakeRate_pythiaWJets->SetMarkerColor(kRed); electronFakeRate_madgraphWJets->SetLineColor(kBlue); electronFakeRate_madgraphWJets->SetMarkerColor(kBlue); electronFakeRate_pythiaQCDEM->SetLineColor(kMagenta); electronFakeRate_pythiaQCDEM->SetMarkerColor(kMagenta); electronFakeRate_madgraphQCD->SetLineColor(kGreen); electronFakeRate_madgraphQCD->SetMarkerColor(kGreen); leg1->AddEntry(electronFakeRate_pythiaWJets, (chargeTypeName + fakeTypeString + eventTypeName + "PythiaWJets").c_str(), "LP"); leg1->AddEntry(electronFakeRate_madgraphWJets, (chargeTypeName + fakeTypeString + eventTypeName + "MadgraphWJets").c_str(), "LP"); leg1->AddEntry(electronFakeRate_pythiaQCDEM, (chargeTypeName + fakeTypeString + eventTypeName + "PythiaQCDEM").c_str(), "LP"); leg1->AddEntry(electronFakeRate_madgraphQCD, (chargeTypeName + fakeTypeString + eventTypeName + "MadgraphQCD").c_str(), "LP"); electronFakeRate_pythiaWJets->Draw(); electronFakeRate_madgraphWJets->Draw("same"); electronFakeRate_pythiaQCDEM->Draw("same"); electronFakeRate_madgraphQCD->Draw("same"); leg1->Draw(); string filename = plotname + ".gif"; cv->SaveAs(filename.c_str()); cv->Delete(); }