def q2mumu(args, figname): datatype = args[0] label = args[1] test = get_options(args, "test") batch = get_options(args, "batch") if batch: cmd = create_batch_cmd() bashname = "%s.sh" % figname bashfile = create_bashfile_cmd(cmd, bashname, label, test=test) logfile = set_logfile("fig", datatype, label, figname) jobname = "effq2mm" bsub_jobs(logfile, jobname, bashfile, test) return figfile = set_figfile(figname, label, ".pdf", test=test) rootfile = atr.rootfile(datatype, label, test=test) obj = atr.root_tree_obj(datatype, label) chain = root_chain(rootfile, obj) canvas = TCanvas("aCanvas", "Canvas", 600, 600) # h_mm_gen = TH1F('mumumass_gen', '#mu^{+} #mu^{-} mass', 100, 0, 25) # h_mm_reco = TH1F('mumumass_reco', '#mu^{+} #mu^{-} mass', 100, 0, 25) lower = array("f", [0, 2, 4.3, 8.68, 10.09, 12.86, 14.18, 16, 19, 25]) h_mm_gen = TH1F("mumumass_gen", "#mu^{+} #mu^{-} mass", 9, lower) h_mm_reco = TH1F("mumumass_reco", "#mu^{+} #mu^{-} mass", 9, lower) if "B2KstarMuMu/RECO_100M_v1.1" in label: Gen_muonPos_P4_ = TClonesArray("TLorentzVector") chain.SetBranchAddress("Gen_muonPos_P4", AddressOf(Gen_muonPos_P4_)) Gen_muonNeg_P4_ = TClonesArray("TLorentzVector") chain.SetBranchAddress("Gen_muonNeg_P4", AddressOf(Gen_muonNeg_P4_)) MuPP4_ = TClonesArray("TLorentzVector") chain.SetBranchAddress("MuPP4", AddressOf(MuPP4_)) MuMP4_ = TClonesArray("TLorentzVector") chain.SetBranchAddress("MuMP4", AddressOf(MuMP4_)) KstarP4_ = TClonesArray("TLorentzVector") chain.SetBranchAddress("KstarP4", AddressOf(KstarP4_)) elif ( "B2KstarMuMu/RECO_100M_v1.2" in label or "B2KstarMuMu/RECO_100M_v1.4" in label or "B2KstarMuMu/RECO_100M_v1.5" in label ): Gen_muonPos_P4_ = TClonesArray("TLorentzVector") chain.SetBranchAddress("Gen_muonPos_P4", AddressOf(Gen_muonPos_P4_)) Gen_muonNeg_P4_ = TClonesArray("TLorentzVector") chain.SetBranchAddress("Gen_muonNeg_P4", AddressOf(Gen_muonNeg_P4_)) reco_mup_p4_ = TLorentzVector() chain.SetBranchAddress("reco_mup_p4", AddressOf(reco_mup_p4_)) reco_mum_p4_ = TLorentzVector() chain.SetBranchAddress("reco_mum_p4", AddressOf(reco_mum_p4_)) else: raise NameError(label) ntot = chain.GetEntries() if test: ntot = 1000 if ( "B2KstarMuMu/RECO_100M_v1.2" in label or "B2KstarMuMu/RECO_100M_v1.4" in label or "B2KstarMuMu/RECO_100M_v1.5" in label ): cuts_label = "5ifbv2.6.2" cuts = select_b0s(cuts_label) sys.stdout.write("Processing %s events ...\n" % ntot) sys.stdout.flush() nfill_gen = 0 nfill_reco = 0 for i in xrange(ntot): chain.LoadTree(i) chain.GetEntry(i) if len(chain.Gen_muonPos_P4) > 0: mup4_gen = chain.Gen_muonPos_P4[0] mum4_gen = chain.Gen_muonNeg_P4[0] try: mumu_gen = mup4_gen + mum4_gen except TypeError: continue h_mm_gen.Fill(mumu_gen.M2()) nfill_gen += 1 if "/HLT" in label and not cuts.pass_trigger(chain): continue if "OfflineHLT" in label and not chain.offline_hlt_passed: continue if "MCmatched" in label and not chain.mc_matched: continue if "B2KstarMuMu/RECO_100M_v1.1" in label and chain.nXcand > 0: if label in ["B2KstarMuMu/RECO_100M_v1.1/Kstar"] and not cuts.pass_kstarmass(chain, 0): continue if label in ["B2KstarMuMu/RECO_100M_v1.1/lxysig"] and not cuts.pass_lxysig(chain, 0): continue mup4 = chain.MuPP4[0] mum4 = chain.MuMP4[0] mumu = mup4 + mum4 h_mm_reco.Fill(mumu.M2()) nfill_reco += 1 if "B2KstarMuMu/RECO_100M_v1.2" in label: mup4 = chain.reco_mup_p4 mum4 = chain.reco_mum_p4 mumu = mup4 + mum4 h_mm_reco.Fill(mumu.M2()) nfill_reco += 1 if "B2KstarMuMu/RECO_100M_v1.4" in label or "B2KstarMuMu/RECO_100M_v1.5" in label: h_mm_reco.Fill(mumu_gen.M2()) nfill_reco += 1 sys.stdout.write("Filled events: GEN: %s, RECO: %s. \n" % (nfill_gen, nfill_reco)) hist = h_mm_reco hist.Divide(h_mm_gen) hist.SetTitle("RECO Efficiency") hist.GetXaxis().SetTitle("q^{2} (GeV^{2}/c^{2})") hist.Draw() canvas.SaveAs(figfile) hist.Delete()
def q2mumu(args, figname): datatype = args[0] label = args[1] test = get_options(args, 'test') batch = get_options(args, 'batch') if batch: cmd = create_batch_cmd() bashname = '%s.sh' % figname bashfile = create_bashfile_cmd(cmd, bashname, label, test=test) logfile = set_logfile('fig', datatype, label, figname) jobname = 'effq2mm' bsub_jobs(logfile, jobname, bashfile, test) return figfile = set_figfile(figname, label, '.pdf', test=test) rootfile = atr.rootfile(datatype, label, test=test) obj = atr.root_tree_obj(datatype, label) chain = root_chain(rootfile, obj) canvas = TCanvas("aCanvas", "Canvas", 600, 600) #h_mm_gen = TH1F('mumumass_gen', '#mu^{+} #mu^{-} mass', 100, 0, 25) #h_mm_reco = TH1F('mumumass_reco', '#mu^{+} #mu^{-} mass', 100, 0, 25) lower = array('f', [0, 2, 4.3, 8.68, 10.09, 12.86, 14.18, 16, 19, 25]) h_mm_gen = TH1F('mumumass_gen', '#mu^{+} #mu^{-} mass', 9, lower) h_mm_reco = TH1F('mumumass_reco', '#mu^{+} #mu^{-} mass', 9, lower) if 'B2KstarMuMu/RECO_100M_v1.1' in label: Gen_muonPos_P4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('Gen_muonPos_P4', AddressOf(Gen_muonPos_P4_)) Gen_muonNeg_P4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('Gen_muonNeg_P4', AddressOf(Gen_muonNeg_P4_)) MuPP4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('MuPP4', AddressOf(MuPP4_)) MuMP4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('MuMP4', AddressOf(MuMP4_)) KstarP4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('KstarP4', AddressOf(KstarP4_)) elif 'B2KstarMuMu/RECO_100M_v1.2' in label or \ 'B2KstarMuMu/RECO_100M_v1.4' in label or \ 'B2KstarMuMu/RECO_100M_v1.5' in label: Gen_muonPos_P4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('Gen_muonPos_P4', AddressOf(Gen_muonPos_P4_)) Gen_muonNeg_P4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('Gen_muonNeg_P4', AddressOf(Gen_muonNeg_P4_)) reco_mup_p4_ = TLorentzVector() chain.SetBranchAddress('reco_mup_p4', AddressOf(reco_mup_p4_)) reco_mum_p4_ = TLorentzVector() chain.SetBranchAddress('reco_mum_p4', AddressOf(reco_mum_p4_)) else: raise NameError(label) ntot = chain.GetEntries() if test: ntot = 1000 if 'B2KstarMuMu/RECO_100M_v1.2' in label or \ 'B2KstarMuMu/RECO_100M_v1.4' in label or \ 'B2KstarMuMu/RECO_100M_v1.5' in label: cuts_label = '5ifbv2.6.2' cuts = select_b0s(cuts_label) sys.stdout.write('Processing %s events ...\n' % ntot) sys.stdout.flush() nfill_gen = 0 nfill_reco = 0 for i in xrange(ntot): chain.LoadTree(i) chain.GetEntry(i) if len(chain.Gen_muonPos_P4) > 0: mup4_gen = chain.Gen_muonPos_P4[0] mum4_gen = chain.Gen_muonNeg_P4[0] try: mumu_gen = mup4_gen + mum4_gen except TypeError: continue h_mm_gen.Fill(mumu_gen.M2()) nfill_gen += 1 if '/HLT' in label and not cuts.pass_trigger(chain): continue if 'OfflineHLT' in label and not chain.offline_hlt_passed: continue if 'MCmatched' in label and not chain.mc_matched: continue if 'B2KstarMuMu/RECO_100M_v1.1' in label and chain.nXcand > 0: if label in ['B2KstarMuMu/RECO_100M_v1.1/Kstar'] and \ not cuts.pass_kstarmass(chain, 0): continue if label in ['B2KstarMuMu/RECO_100M_v1.1/lxysig'] and \ not cuts.pass_lxysig(chain, 0): continue mup4 = chain.MuPP4[0] mum4 = chain.MuMP4[0] mumu = mup4 + mum4 h_mm_reco.Fill(mumu.M2()) nfill_reco += 1 if 'B2KstarMuMu/RECO_100M_v1.2' in label: mup4 = chain.reco_mup_p4 mum4 = chain.reco_mum_p4 mumu = mup4 + mum4 h_mm_reco.Fill(mumu.M2()) nfill_reco += 1 if 'B2KstarMuMu/RECO_100M_v1.4' in label or \ 'B2KstarMuMu/RECO_100M_v1.5' in label: h_mm_reco.Fill(mumu_gen.M2()) nfill_reco += 1 sys.stdout.write('Filled events: GEN: %s, RECO: %s. \n' % (nfill_gen, nfill_reco)) hist = h_mm_reco hist.Divide(h_mm_gen) hist.SetTitle('RECO Efficiency') hist.GetXaxis().SetTitle('q^{2} (GeV^{2}/c^{2})') hist.Draw() canvas.SaveAs(figfile) hist.Delete()
def output_evt_mass_b0(chain, datatype, label, job, test=False, pbar=False): selfile = set_selfile(datatype, label, 'tree', job=job, test=test) f = TFile.Open(selfile, 'RECREATE') t = TTree('sel', 'sel') s = SelTree(t) cuts = select_b0s(label) pass_trigger = cuts.pass_trigger pass_b0s = cuts.pass_b0s pass_jpsimass = cuts.pass_jpsimass pass_psi2smass = cuts.pass_psi2smass nsel = 0 ntot = 0 xp4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('xP4', AddressOf(xp4_)) kstarp4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('KstarP4', AddressOf(kstarp4_)) entries = chain.GetEntries() if test: entries = 3000 if pbar: pb = get_progressbar(maxval=entries) for i in xrange(entries): ntot += 1 if pbar: pb.update(i+1) ientry = chain.LoadTree(i) if ientry < 0: break nb = chain.GetEntry(i) if nb <= 0: continue if not pass_trigger(chain): continue chain.LoadTree(i) chain.GetEntry(i) b0s = pass_b0s(chain) if b0s == []: continue s.run[0] = chain.runNb s.event[0] = chain.eventNb #nb0 = 0 #nj = 0 #np = 0 #nout = 0 for i in b0s: #nb0 += 1 b0p4 = chain.xP4[i] kstarp4 = chain.KstarP4[i] oniap4 = b0p4 - kstarp4 s.b0mass[0] = b0p4.M() s.oniamass[0] = oniap4.M() s.b0massinjpsi[0] = 0 s.b0massinpsi2s[0] = 0 s.b0massout[0] = 0 if pass_jpsimass(oniap4.M()): s.b0massinjpsi[0] = b0p4.M() #nj += 1 elif pass_psi2smass(oniap4.M()): s.b0massinpsi2s[0] = b0p4.M() #np += 1 else: s.b0massout[0] = b0p4.M() #nout += 1 #print '%s + %s + %s = %s' %(nj, np, nout, nb0) t.Fill() nsel += 1 if nsel > 100 and test: break f.Write() f.Close() if pbar: pb.finish() return ntot, nsel, selfile
def mup(args, figname): datatype = args[0] label = args[1] test = get_options(args, 'test') batch = get_options(args, 'batch') if batch: cmd = create_batch_cmd() bashname = '%s.sh' %figname bashfile = create_bashfile_cmd(cmd, bashname, label, test=test) logfile = set_logfile('fig', datatype, label, figname) jobname = 'figptmu' bsub_jobs(logfile, jobname, bashfile, test) return figfile = set_figfile(figname, label, '.pdf', test=test) rootfile = atr.rootfile(datatype, label, test=test) obj = atr.root_tree_obj(datatype, label) chain = root_chain(rootfile, obj) canvas = TCanvas("aCanvas", "Canvas", 600, 600) hist = TH1F('mupt', '#mu^{+} p_{T}', 100, 0, 20) if 'B2KstarMuMu/RECO_100M_v1.1' in label or \ 'B2KstarMuMu/RECO_100M_v1.2' in label: Gen_muonPos_P4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('Gen_muonPos_P4', AddressOf(Gen_muonPos_P4_)) MuPP4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('MuPP4', AddressOf(MuPP4_)) if 'B2KstarMuMu/RECO_100M_v1.3' in label or \ 'B2KstarMuMu/RECO_100M_v1.4' in label or \ 'B2KstarMuMu/RECO_100M_v1.5' in label: Gen_muonPos_P4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('Gen_muonPos_P4', AddressOf(Gen_muonPos_P4_)) Gen_muonNeg_P4_ = TClonesArray('TLorentzVector') chain.SetBranchAddress('Gen_muonNeg_P4', AddressOf(Gen_muonNeg_P4_)) reco_mup_p4_ = TLorentzVector() chain.SetBranchAddress('reco_mup_p4', AddressOf(reco_mup_p4_)) reco_mum_p4_ = TLorentzVector() chain.SetBranchAddress('reco_mum_p4', AddressOf(reco_mum_p4_)) ntot = chain.GetEntries() if test: ntot = 1000 if label in ['B2KstarMuMu/RECO_100M_v1.1/HLT', 'B2KstarMuMu/RECO_100M_v1.2/HLT', 'B2KstarMuMu/RECO_100M_v1.3/HLT', 'B2KstarMuMu/RECO_100M_v1.3/MCmatched/HLT', 'B2KstarMuMu/RECO_100M_v1.4/MCmatched/HLT', 'B2KstarMuMu/RECO_100M_v1.5/MCmatched/OfflineHLT', ]: cuts_label = '5ifbv2.6.2' cuts = select_b0s(cuts_label) sys.stdout.write('Processing %s events ...\n' %ntot) sys.stdout.flush() nfill = 0 for i in xrange(ntot): chain.LoadTree(i) chain.GetEntry(i) if label in ['B2KstarMuMu/RECO_100M_v1.1/HLT', 'B2KstarMuMu/RECO_100M_v1.2/HLT', 'B2KstarMuMu/RECO_100M_v1.3/HLT', 'B2KstarMuMu/RECO_100M_v1.3/MCmatched/HLT', 'B2KstarMuMu/RECO_100M_v1.4/MCmatched/HLT', ] and \ not cuts.pass_trigger(chain): continue if label in ['B2KstarMuMu/RECO_100M_v1.5/MCmatched/OfflineHLT', ] and \ not chain.offline_hlt_passed: continue if 'GEN' in label: if 'B2KstarMuMu/RECO_100M_v1.5' in label: # need others if necessary for backward compatibility. mup4 = chain.Gen_muonPos_P4[0] elif 'B2KstarMuMu/RECO_100M_v1.6' in label: mup4 = TVector3(chain.genMupPx, chain.genMupPy, chain.genMupPz) else: raise NameError(label) if 'MCmatched' in label and not chain.mc_matched: continue if 'B2KstarMuMu/RECO_100M_v1.1' in label: if chain.nXcand <= 0: continue mup4 = chain.MuPP4[0] if 'B2KstarMuMu/RECO_100M_v1.2' in label or \ 'B2KstarMuMu/RECO_100M_v1.3' in label or \ 'B2KstarMuMu/RECO_100M_v1.4' in label or \ 'B2KstarMuMu/RECO_100M_v1.5' in label: mup4 = chain.reco_mup_p4 hist.Fill(mup4.Pt()) nfill += 1 sys.stdout.write('Filled %s events. \n' %nfill) hist.GetXaxis().SetTitle('p_{T} (GeV/c)') hist.Draw() canvas.SaveAs(figfile) hist.Delete()