def main(opts, args): tools.set_root_style(stat=1, grid=0) parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] figpath = os.path.join(attr.figpath, label, 'trkmtm') for mode in modes: modekey = tools.get_modekey(mode) sname = attr.modes[modekey]['sname'].lower() if sname == 'kpipi0': draw_momenta_kpipi0(datatype, mode, label, test=opts.test) elif sname == 'k3pi': draw_momenta_k3pi(datatype, mode, label, test=opts.test) elif sname == 'kpipi': draw_momenta_kpipi(datatype, mode, label, test=opts.test) elif sname == 'kpipipi0': draw_momenta_kpipipi0(datatype, mode, label, test=opts.test) elif sname == 'kspipi0': draw_momenta_kspipi0(datatype, mode, label, test=opts.test) elif sname == 'ks3pi': draw_momenta_ks3pi(datatype, mode, label, test=opts.test) elif sname == 'kkpi': draw_momenta_kkpi(figpath, datatype, mode, label, test=opts.test) else: raise NameError(sname)
def create_fig_mode(opts, tag, datatype, mode, lowmass, highmass, label): modekey = tools.get_modekey(mode) comname = '%s_%s' %(datatype.replace('/', '_'), mode) prefix = 'dir_%s/kkmass/%s_%s' % (label, lowmass, highmass) epsfile = tools.set_file('eps', datatype, modekey, tag, prefix=prefix, extbase=attr.figpath) txtfile = tools.set_file('txt', datatype, modekey, tag, prefix=prefix, extbase=attr.fitpath) head, figname = os.path.split(epsfile) figname = figname.replace('.eps', '') subdir = 'kkmass/%s_%s' % (lowmass, highmass) pdflink = './%s/%s.pdf' %(subdir, figname) pnglink = './%s/%s.png' %(subdir, figname) loglink = '[[../../log/%s/%s/%s.txt][log]]' %(label, subdir, comname) figlink = '[[%s][%s]]' %(pdflink, pnglink) modename = tools.get_orgname_from_fname(mode) secname = 'KK mass: %s - %s' % (lowmass, highmass) tablink = '' if os.access(txtfile, os.F_OK): orgtabfile = txtfile.replace('.txt', '.org') tab = DHadTable(txtfile) tab.output_org(orgtabfile) tablink = '#+INCLUDE: "%s"\n' % orgtabfile msg = '\n* %s \n %s \n\n%s\n %s\n' % ( secname, figlink, tablink, loglink) return msg
def main(opts, args): tools.set_root_style(stat=1, grid=0) parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] figpath = os.path.join(attr.figpath, label, 'trkmtm') for mode in modes: modekey = tools.get_modekey(mode) sname = attr.modes[modekey]['sname'].lower() if sname == 'kpipi0': draw_momenta_kpipi0(datatype, mode, label, test=opts.test) elif sname == 'k3pi': draw_momenta_k3pi(datatype, mode, label, test=opts.test) elif sname == 'kpipi': draw_momenta_kpipi(datatype, mode, label, test=opts.test) elif sname == 'kpipipi0': draw_momenta_kpipipi0(datatype, mode, label, test=opts.test) elif sname == 'kspipi0': draw_momenta_kspipi0(datatype, mode, label, test=opts.test) elif sname == 'ks3pi': draw_momenta_ks3pi(datatype, mode, label, test=opts.test) elif sname == 'kkpi': draw_momenta_kkpi(figpath, datatype, mode, label, test=opts.test) else: raise NameError(sname)
def fit_single_mode(datatype, mode, label, lowmass, highmass, test): evtpath = os.path.join(attr.datpath, 'sel', label, 'kkmass') modekey = tools.get_modekey(mode) tag = 'single' evtfile = tools.set_file('evt', datatype, modekey, tag, prefix='', forceCombine=1, extbase=evtpath) load_roofit_lib(datatype, label) cuts = '%f<kkmass && kkmass<%f' % (lowmass, highmass) #err_type = 'ASYM' err_type = 'SYMM' setGamma, setMres, setR, mc = get_common_parameters(datatype, label) Sigma, Fa, Fb, Sa, Sb = get_resolution_paras(modekey, label) N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1, xi = init_paras_single( label, datatype, 's', modekey) title1 = '%s : %s < KK mass < %s ' %(attr.modes[modekey]['uname'], lowmass, highmass) title2 = '%s : %s < KK mass < %s ' %(attr.modes[modekey]['unamebar'], lowmass, highmass) prefix='dir_%s/kkmass2/%s_%s' % (label, lowmass, highmass) epsfile = tools.set_file('eps', datatype, modekey, tag, prefix=prefix, extbase=attr.figpath) txtfile = tools.set_file('txt', datatype, modekey, tag, prefix=prefix, extbase=attr.fitpath) #mbc_gau_che(evtfile, mc, setMres, setGamma, setR, sigmap1, Sa, Sb, Fa, mbc_dline_che(evtfile, mc, setMres, setGamma, setR, sigmap1, Sa, Sb, Fa, Fb, md, p, xi, N1, N2, Nbkgd1, Nbkgd2, title1, title2, epsfile, txtfile, cuts=cuts, err_type=err_type, test=test) if not test: tools.eps2png(epsfile) tools.eps2pdf(epsfile)
def kpimass0(opts, args, figname): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] mode = modes[0] modekey = tools.get_modekey(mode) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') dbfile = os.path.join(attr.figpath, label, figname + '.db') fullrangedata, fullrangemc = get_fullrange_data_mc(opts, dbfile, label, 'kpimass', modekey, tag, binbase, binwidth, numbins) scaledict(fullrangedata, 1 / sumdict(fullrangedata)) scaledict(fullrangemc, 1 / sumdict(fullrangemc)) gdata = TGraph(len(fullrangedata['x']), getarray('x', fullrangedata), getarray('y', fullrangedata)) gmc = TGraph(len(fullrangemc['x']), getarray('x', fullrangemc), getarray('y', fullrangemc)) c1 = TCanvas('c', 'kpi', 600, 600) c1.SetLeftMargin(0.15) c1.SetRightMargin(0.05) c1.SetBottomMargin(0.15) c1.SetTopMargin(0.05) hr = c1.DrawFrame(0.5, 0.0, 1.5, 0.04) hr.GetYaxis().SetTitle('Yield (arbitrary units)') hr.GetXaxis().SetTitle('M(K^{-} #pi^{+}) (GeV/#font[72]{c}^{2})') hr.GetYaxis().SetTitleOffset(1.4) hr.GetYaxis().SetTitleSize(0.05) hr.GetXaxis().SetTitleOffset(1.3) hr.GetXaxis().SetTitleSize(0.05) gmc.SetMarkerStyle(21) gmc.SetMarkerColor(kRed) gmc.SetMarkerSize(0.6) gmc.SetLineColor(kRed) gmc.Draw("PL") gdata.SetMarkerStyle(20) gdata.SetMarkerColor(kBlue) gdata.SetMarkerSize(0.6) gdata.Draw("P") leg = TLegend(0.6, 0.75, 0.95, 0.95) leg.AddEntry(gdata, 'Data', 'pl') leg.AddEntry(gmc, 'MC', 'pl') leg.Draw() canvas_output(c1, figname, label, opts.test)
def kpimass0(opts, args, figname): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] mode = modes[0] modekey = tools.get_modekey(mode) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') dbfile = os.path.join(attr.figpath, label, figname+'.db') fullrangedata, fullrangemc = get_fullrange_data_mc( opts, dbfile, label, 'kpimass', modekey, tag, binbase, binwidth, numbins) scaledict(fullrangedata, 1/sumdict(fullrangedata)) scaledict(fullrangemc, 1/sumdict(fullrangemc)) gdata = TGraph(len(fullrangedata['x']), getarray('x', fullrangedata), getarray('y', fullrangedata)) gmc = TGraph(len(fullrangemc['x']), getarray('x', fullrangemc), getarray('y', fullrangemc)) c1 = TCanvas('c','kpi', 600, 600) c1.SetLeftMargin(0.15) c1.SetRightMargin(0.05) c1.SetBottomMargin(0.15) c1.SetTopMargin(0.05) hr = c1.DrawFrame(0.5, 0.0, 1.5, 0.04) hr.GetYaxis().SetTitle('Yield (arbitrary units)') hr.GetXaxis().SetTitle('M(K^{-} #pi^{+}) (GeV/#font[72]{c}^{2})') hr.GetYaxis().SetTitleOffset(1.4) hr.GetYaxis().SetTitleSize(0.05) hr.GetXaxis().SetTitleOffset(1.3) hr.GetXaxis().SetTitleSize(0.05) gmc.SetMarkerStyle(21) gmc.SetMarkerColor(kRed) gmc.SetMarkerSize(0.6) gmc.SetLineColor(kRed) gmc.Draw("PL") gdata.SetMarkerStyle(20) gdata.SetMarkerColor(kBlue) gdata.SetMarkerSize(0.6) gdata.Draw("P") leg = TLegend(0.6, 0.75, 0.95, 0.95) leg.AddEntry(gdata, 'Data', 'pl') leg.AddEntry(gmc, 'MC', 'pl') leg.Draw() canvas_output(c1, figname, label, opts.test)
def draw_momenta_kkpi(figpath, datatype, mode, label, test): modekey = tools.get_modekey(mode) sname = attr.modes[modekey]['sname'].lower() figname = '%s_momenta' % sname epsfile = set_file(extbase=figpath, comname=figname, ext='eps') #tab = DHadTable() #tab.row_append(['Name', 'Data/MC']) # -------------------------------------------------- h_pkm = {}; h_pkp = {}; h_ppi = {} h_pkm_c = {}; h_pkp_c = {}; h_ppi_c = {} for datatype in [datatype]: selfile = get_selfile(datatype, mode, label, test=test) selfile = selfile.replace('/trkmtm/', '/trkmtm2/') f = TFile(selfile) if datatype == 'signal': # or datatype == 'generic': tp = 'mc' #if datatype == 'data': # tp = 'data' h_pkm[tp]= f.Get('h_pk'+tp) h_pkp[tp]= f.Get('h_ppi1'+tp) h_ppi[tp]= f.Get('h_ppiz'+tp) h_pkm_c[tp]= f.Get('h_pk_c'+tp) h_pkp_c[tp]= f.Get('h_ppi1_c'+tp) h_ppi_c[tp]= f.Get('h_ppiz_c'+tp) f.Clear() #ratio = h_pkm['data'].Integral()/h_pkm['mc'].Integral() c1 = TCanvas('c1', 'canvas', 900, 900) c1.Divide(2,2) c1.cd(1) h_pkm['mc'].Draw() #h_pkm['data'].Draw('PE') #h_pkm['mc'].Scale(ratio) #h_pkm['mc'].Draw('SAME') c1.cd(2) h_pkp['mc'].Draw() #h_pkp['data'].Draw('PE') #h_pkp['mc'].Scale(ratio) #h_pkp['mc'].Draw('SAME') c1.cd(3) c1.cd(4) h_ppi['mc'].Draw() #h_ppi['data'].Draw('PE') #h_ppi['mc'].Scale(ratio) #h_ppi['mc'].Draw('SAME') c1.Print(epsfile) tools.eps2pdf(epsfile)
def pi0mass(opts, args, figname): var = 'pi0mass' varname = '#pi^{0} mass' unit = 'GeV' nBins = 100 Xmin = 0.115 Xmax = 0.16 parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] figname = shorten_figname(figname) mode = modes[0] modekey = get_modekey(mode) modename = attr.modes[modekey]['uname'] frametitle = '#pi^{0} mass in %s' % modename labels = [label] if ',' in label: labels = label.split(',') hnames = parse_opts_set(opts.set, 'legend') if hnames: hist_names = hnames.split(',') else: hist_names = labels hist_list = [] for label, hist_name in zip(labels, hist_names): hist_title = frametitle hist = ROOT.TH1D(hist_name, hist_title, nBins, Xmin, Xmax) evtfile = get_evtfile(datatype, mode, label, var, test=False) hist = tools.fill_hist_evtfile(hist, evtfile) hist_list.append(hist) xtitle = '%s (%s)' %(varname, unit) legend = ROOT.TLegend(0.66, 0.8, 0.9, 0.9) canvas = draw_hist(hist_list, xtitle, legend) canvas_output(canvas, figname, test=opts.test)
def create_fig_mode(opts, tag, datatype, mode, lowmass, highmass, label): modekey = tools.get_modekey(mode) comname = '%s_%s' % (datatype.replace('/', '_'), mode) prefix = 'dir_%s/kpimass/%s_%s' % (label, lowmass, highmass) epsfile = tools.set_file('eps', datatype, modekey, tag, prefix=prefix, extbase=attr.figpath) txtfile = tools.set_file('txt', datatype, modekey, tag, prefix=prefix, extbase=attr.fitpath) head, figname = os.path.split(epsfile) figname = figname.replace('.eps', '') subdir = 'kpimass/%s_%s' % (lowmass, highmass) pdflink = './%s/%s.pdf' % (subdir, figname) pnglink = './%s/%s.png' % (subdir, figname) loglink = '[[../../log/%s/%s/%s.txt][log]]' % (label, subdir, comname) figlink = '[[%s][%s]]' % (pdflink, pnglink) modename = tools.get_orgname_from_fname(mode) secname = 'Kpi mass: %s - %s' % (lowmass, highmass) tablink = '' if os.access(txtfile, os.F_OK): orgtabfile = txtfile.replace('.txt', '.org') tab = DHadTable(txtfile) tab.output_org(orgtabfile) tablink = '#+INCLUDE: "%s"\n' % orgtabfile msg = '\n* %s \n %s \n\n%s\n %s\n' % (secname, figlink, tablink, loglink) return msg
def kkmass0_old(opts, args): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] mode = modes[0] modekey = tools.get_modekey(mode) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') figname = 'kkmass0_'+'_'.join(args[:-1]).replace('/', '_') figname = figname.replace(',', '_')+'.eps' epsfile = os.path.join(attr.figpath, label, figname) fullrangedata = {} init_dict(fullrangedata) fullrangemc = {} init_dict(fullrangemc) evtpath = os.path.join(attr.datpath, 'sel', label, 'kkmass') evtfiledata = tools.set_file('evt', 'data', modekey, tag, prefix='', forceCombine=1, extbase=evtpath) evtfilemc = tools.set_file('evt', 'signal', modekey, tag, prefix='', forceCombine=1, extbase=evtpath) for i in xrange(numbins): lowmass = binbase+i*binwidth highmass = binbase+(i+1)*binwidth parse_evtfile(evtfiledata, lowmass, highmass, fullrangedata) parse_evtfile(evtfilemc, lowmass, highmass, fullrangemc) scaledict(fullrangedata, 1/sumdict(fullrangedata)) scaledict(fullrangemc, 1/sumdict(fullrangemc)) gdata = TGraph(len(fullrangedata['x']), getarray('x', fullrangedata), getarray('y', fullrangedata)) gmc = TGraph(len(fullrangemc['x']), getarray('x', fullrangemc), getarray('y', fullrangemc)) c1 = TCanvas('c','kk',600,600) c1.SetLeftMargin(0.15) c1.SetRightMargin(0.05) c1.SetBottomMargin(0.15) c1.SetTopMargin(0.05) #hr = c1.DrawFrame(0.95, 0.0, 1.95, 0.12) hr = c1.DrawFrame(0.9, 0.0, 1.8, 0.1) hr.GetYaxis().SetTitle('Yield (arbitrary units)') hr.GetXaxis().SetTitle('M(K^{-} K^{+}) (GeV/#font[72]{c}^{2})') hr.GetYaxis().SetTitleOffset(1.4) hr.GetYaxis().SetTitleSize(0.05) hr.GetXaxis().SetTitleOffset(1.3) hr.GetXaxis().SetTitleSize(0.05) gmc.SetMarkerStyle(21) gmc.SetMarkerColor(kRed) gmc.SetMarkerSize(0.6) gmc.SetLineColor(kRed) gmc.Draw("PL") gdata.SetMarkerStyle(20) gdata.SetMarkerColor(kBlue) gdata.SetMarkerSize(0.6) gdata.Draw("P") leg = TLegend(0.6, 0.75, 0.95, 0.95) leg.AddEntry(gdata, 'Data', 'pl') leg.AddEntry(gmc, 'MC', 'pl') leg.Draw() c1.Print(epsfile) eps2pdf(epsfile)
def kkmass0_old(opts, args): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] mode = modes[0] modekey = tools.get_modekey(mode) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') figname = 'kkmass0_' + '_'.join(args[:-1]).replace('/', '_') figname = figname.replace(',', '_') + '.eps' epsfile = os.path.join(attr.figpath, label, figname) fullrangedata = {} init_dict(fullrangedata) fullrangemc = {} init_dict(fullrangemc) evtpath = os.path.join(attr.datpath, 'sel', label, 'kkmass') evtfiledata = tools.set_file('evt', 'data', modekey, tag, prefix='', forceCombine=1, extbase=evtpath) evtfilemc = tools.set_file('evt', 'signal', modekey, tag, prefix='', forceCombine=1, extbase=evtpath) for i in xrange(numbins): lowmass = binbase + i * binwidth highmass = binbase + (i + 1) * binwidth parse_evtfile(evtfiledata, lowmass, highmass, fullrangedata) parse_evtfile(evtfilemc, lowmass, highmass, fullrangemc) scaledict(fullrangedata, 1 / sumdict(fullrangedata)) scaledict(fullrangemc, 1 / sumdict(fullrangemc)) gdata = TGraph(len(fullrangedata['x']), getarray('x', fullrangedata), getarray('y', fullrangedata)) gmc = TGraph(len(fullrangemc['x']), getarray('x', fullrangemc), getarray('y', fullrangemc)) c1 = TCanvas('c', 'kk', 600, 600) c1.SetLeftMargin(0.15) c1.SetRightMargin(0.05) c1.SetBottomMargin(0.15) c1.SetTopMargin(0.05) #hr = c1.DrawFrame(0.95, 0.0, 1.95, 0.12) hr = c1.DrawFrame(0.9, 0.0, 1.8, 0.1) hr.GetYaxis().SetTitle('Yield (arbitrary units)') hr.GetXaxis().SetTitle('M(K^{-} K^{+}) (GeV/#font[72]{c}^{2})') hr.GetYaxis().SetTitleOffset(1.4) hr.GetYaxis().SetTitleSize(0.05) hr.GetXaxis().SetTitleOffset(1.3) hr.GetXaxis().SetTitleSize(0.05) gmc.SetMarkerStyle(21) gmc.SetMarkerColor(kRed) gmc.SetMarkerSize(0.6) gmc.SetLineColor(kRed) gmc.Draw("PL") gdata.SetMarkerStyle(20) gdata.SetMarkerColor(kBlue) gdata.SetMarkerSize(0.6) gdata.Draw("P") leg = TLegend(0.6, 0.75, 0.95, 0.95) leg.AddEntry(gdata, 'Data', 'pl') leg.AddEntry(gmc, 'MC', 'pl') leg.Draw() c1.Print(epsfile) eps2pdf(epsfile)
def kkmass2(opts, args): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] mode = modes[0] modekey = tools.get_modekey(mode) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') fullrangedata = {} init_dict(fullrangedata) fullrangemc = {} init_dict(fullrangemc) evtpath = os.path.join(attr.datpath, 'sel', label, 'kkmass') evtfilemc = tools.set_file('evt', 'signal', modekey, tag, prefix='', forceCombine=1, extbase=evtpath) for i in xrange(numbins): lowmass = binbase+i*binwidth highmass = binbase+(i+1)*binwidth prefix = 'dir_%s/kkmass/%s_%s' % (label, lowmass, highmass) datafile = tools.set_file('txt', 'data', modekey, tag, prefix=prefix, extbase=attr.fitpath) #mcfile = tools.set_file('txt', 'signal', modekey, tag, # prefix=prefix, extbase=attr.fitpath) if os.access(datafile, os.F_OK): # and os.access(mcfile, os.F_OK): parsefile(datafile, lowmass, highmass, fullrangedata) parse_evtfile(evtfilemc, lowmass, highmass, fullrangemc) else: sys.stdout.write('Skipped %s %s ...\n' % (lowmass, highmass)) scaledict(fullrangedata, 1/sumdict(fullrangedata)) scaledict(fullrangemc, 1/sumdict(fullrangemc)) gdata = TGraphAsymmErrors(len(fullrangedata['x']), getarray('x', fullrangedata), getarray('y', fullrangedata), getarray('exl', fullrangedata), getarray('exh', fullrangedata), getarray('eyl', fullrangedata), getarray('eyh', fullrangedata)) gmc = TGraph(len(fullrangemc['x']), getarray('x', fullrangemc), getarray('y', fullrangemc)) c1 = TCanvas('c','kk',600,600) c1.SetLeftMargin(0.15) c1.SetRightMargin(0.05) c1.SetBottomMargin(0.15) c1.SetTopMargin(0.05) #hr = c1.DrawFrame(0.95, 0.0, 1.95, 0.12) hr = c1.DrawFrame(0.9, 0.0, 1.8, 0.1) hr.GetYaxis().SetTitle('Yield (arbitrary units)') hr.GetXaxis().SetTitle('M(K^{-} K^{+}) (GeV/#font[72]{c}^{2})') hr.GetYaxis().SetTitleOffset(1.4) hr.GetYaxis().SetTitleSize(0.05) hr.GetXaxis().SetTitleOffset(1.3) hr.GetXaxis().SetTitleSize(0.05) gmc.SetMarkerStyle(21); gmc.SetMarkerColor(kRed); gmc.SetMarkerSize(0.6) gmc.SetLineColor(kRed) gmc.Draw("PL") gdata.SetMarkerStyle(20); gdata.SetMarkerColor(kBlue); gdata.SetMarkerSize(0.6) gdata.Draw("P") leg = TLegend(0.6, 0.75, 0.95, 0.95) leg.AddEntry(gdata, 'Data', 'pl') leg.AddEntry(gmc, 'MC', 'pl') leg.Draw() c1.Print('comparison.eps') eps2pdf('comparison.eps')
def fit_single_mode(datatype, mode, label, lowmass, highmass, test): evtpath = os.path.join(attr.datpath, 'sel', label, 'kpimass') modekey = tools.get_modekey(mode) tag = 'single' evtfile = tools.set_file('evt', datatype, modekey, tag, prefix='', forceCombine=1, extbase=evtpath) load_roofit_lib(datatype, label) cuts = '%f<kpimass && kpimass<%f' % (lowmass, highmass) err_type = 'ASYM' setGamma, setMres, setR, mc = get_common_parameters(datatype, label) Sigma, Fa, Fb, Sa, Sb = get_resolution_paras(modekey, label) N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1, xi = init_paras_single( label, datatype, 's', modekey) title1 = '%s : %s < Kpi mass < %s ' % (attr.modes[modekey]['uname'], lowmass, highmass) title2 = '%s : %s < Kpi mass < %s ' % (attr.modes[modekey]['unamebar'], lowmass, highmass) prefix = 'dir_%s/kpimass/%s_%s' % (label, lowmass, highmass) epsfile = tools.set_file('eps', datatype, modekey, tag, prefix=prefix, extbase=attr.figpath) txtfile = tools.set_file('txt', datatype, modekey, tag, prefix=prefix, extbase=attr.fitpath) mbc_single_3s(evtfile, mc, setMres, setGamma, setR, sigmap1, Sa, Sb, Fa, Fb, md, p, xi, N1, N2, Nbkgd1, Nbkgd2, title1, title2, epsfile, txtfile, cuts=cuts, err_type=err_type, test=test) #mbc_gau_che(evtfile, mc, setMres, setGamma, setR, sigmap1, Sa, Sb, Fa, # Fb, md, p, xi, N1, N2, Nbkgd1, Nbkgd2, title1, title2, # epsfile, txtfile, cuts=cuts, err_type=err_type, test=test) if not test: tools.eps2png(epsfile) tools.eps2pdf(epsfile)
def fit_sidebands_single_mode(datatype, mode, label, test): load_roofit_lib(datatype, label) dt_type=datatype.replace('/', '_') modekey = tools.get_modekey(mode) comname = '%s_%s' %(dt_type, mode) input_label = label sdbpath = os.path.join(attr.evtpath, input_label) sdbfile = set_file(extbase=sdbpath, comname=comname, ext='evt') has_charge_conjugate = False if '__' in mode: has_charge_conjugate = True if not os.access(sdbfile, os.F_OK): if has_charge_conjugate: sdbfile = set_file(extbase=sdbpath, dt_type=dt_type, tag='s', mode=modekey, comname=comname, ext='evt', forceCombine=1) else: raise ValueError(sdbfile) epspath = os.path.join(attr.figpath, label) epsfile = set_file(extbase=epspath, comname=comname, ext='eps') txtpath = os.path.join(attr.fitpath, label) txtfile = set_file(extbase=txtpath, comname=comname, ext='txt') if test: epsfile = epsfile + '.test' txtfile = txtfile + '.test' ROOT.gROOT.SetBatch(1) ROOT.gROOT.SetStyle('Plain') mbc = ROOT.RooRealVar('mbc', 'Beam constrained mass', 1.83, 1.89, 'GeV') mbc_aset = ROOT.RooArgSet(mbc) ebeam = ROOT.RooRealVar('ebeam', 'Ebeam', 1.8815, 1.892, 'GeV') dflav = ROOT.RooCategory('dflav','D0 flavor') dflav.defineType('dflav',1) dflav.defineType('dbarflav',-1) dataset_args = ROOT.RooArgList(mbc, ebeam, dflav) dataset = ROOT.RooDataSet.read(sdbfile, dataset_args) arg_cutoff = ebeam arg_slope = ROOT.RooRealVar('arg_slope', 'Argus slope', -10, -100, -1) arg_power = ROOT.RooRealVar('arg_power', 'Argus power', 0.5, 0.1, 1.5) yld = ROOT.RooRealVar('yield', 'D yield', 100, 0, 200000) bkg = ROOT.RooRealVar('bkg', 'Background', 100, 0, 1000000) sigma = ROOT.RooRealVar('sigma', 'D width', 0.0001, 0.005, 'GeV') pars = [arg_slope, arg_power, bkg, sigma, yld] mbc_d0 = ROOT.RooRealVar('mbc_d0', 'D0 Mbc', 1.8647, 'GeV') mbc_dp = ROOT.RooRealVar('mbc_dp', 'D+ Mbc', 1.8694, 'GeV') gauss_d0 = ROOT.RooGaussian('gauss_d0', 'D0 gaussian', mbc, mbc_d0, sigma) gauss_dp = ROOT.RooGaussian('gauss_dp', 'D+ gaussian', mbc, mbc_dp, sigma) argus = ROOT.RooArgusBG('argus', 'Argus BG', mbc, arg_cutoff, arg_slope, arg_power) sumpdf_d0 = ROOT.RooAddPdf('sumpdf_d0', 'D0 sum pdf', ROOT.RooArgList(gauss_d0, argus), ROOT.RooArgList(yld, bkg)) sumpdf_dp = ROOT.RooAddPdf('sumpdf_dp', 'Dp sum pdf', ROOT.RooArgList(gauss_dp, argus), ROOT.RooArgList(yld, bkg)) Extended = ROOT.RooFit.Extended(ROOT.kTRUE) # e Save = ROOT.RooFit.Save(ROOT.kTRUE) # r Hesse = ROOT.RooFit.Hesse(ROOT.kFALSE) # no h Verbose = ROOT.RooFit.Verbose(ROOT.kFALSE) # no q if 'D0' in mode: pdf = sumpdf_d0 else: pdf = sumpdf_dp if has_charge_conjugate: yld_bar = ROOT.RooRealVar('yield_bar', 'Dbar yield', 100, 0, 200000) bkg_bar = ROOT.RooRealVar('bkg_bar', 'Background Bar', 100, 0, 1000000) pars.extend([yld_bar, bkg_bar]) mbc_d0bar = ROOT.RooRealVar('mbc_d0bar', 'D0Bar Mbc', 1.8647, 'GeV') mbc_dm = ROOT.RooRealVar('mbc_dm', 'D- Mbc', 1.8694, 'GeV') gauss_d0bar = ROOT.RooGaussian('gauss_d0bar', 'D0bar gaussian', mbc, mbc_d0bar, sigma) gauss_dm = ROOT.RooGaussian('gauss_dm', 'D- gaussian', mbc, mbc_dm, sigma) sumpdf_d0bar = ROOT.RooAddPdf('sumpdf_d0bar', 'D0bar sum pdf', ROOT.RooArgList(gauss_d0bar, argus), ROOT.RooArgList(yld_bar, bkg_bar)) sumpdf_dm = ROOT.RooAddPdf('sumpdf_dm', 'Dm sum pdf', ROOT.RooArgList(gauss_dm, argus), ROOT.RooArgList(yld_bar, bkg_bar)) pdf = ROOT.RooSimultaneous('totalPdf', 'totalPdf', dflav) if 'D0' in mode: pdf.addPdf(sumpdf_d0, 'dflav') pdf.addPdf(sumpdf_d0bar, 'dbarflav') else: pdf.addPdf(sumpdf_dp, 'dflav') pdf.addPdf(sumpdf_dm, 'dbarflav') if 'nogaus' in label: yld.setVal(1) yld.setConstant(ROOT.kTRUE) pars.remove(yld) if 'floatsigma' not in label: datatype = 'data' tag = 'single' if '818ipb' in label: prefix = 'dir_818ipbv12' frame_max = 1500 #bkg_generic_ddbar_818_max[mode] else: raise NameError(label) tabfile = set_file('txt', datatype, modekey, tag, prefix=prefix, extbase=attr.fitpath) sys.stdout.write('Using width from %s \n' %tabfile) tab = DHadTable(tabfile) sigmap1 = float(tab.cell_get('sigmap1', 'Value')) sigma.setVal(sigmap1) sigma.setConstant(ROOT.kTRUE) pars.remove(sigma) #res = pdf.fitTo(dataset, Extended, Save, Verbose) res = pdf.fitTo(dataset, 'emr') #Migrad only, no MINOS res.Print('v') if not has_charge_conjugate: canvas = ROOT.TCanvas('canvas', 'canvas1', 600, 600) canvas.SetFixedAspectRatio(0) xframe = mbc.frame() xframe.SetMaximum(frame_max) xframe.SetMarkerSize(0.3) dataset.plotOn(xframe) pdf.plotOn(xframe) nfitParam = len(pars) chisq_ndof = xframe.chiSquare(nfitParam) nbin = xframe.GetNbinsX() ndof = nbin - nfitParam chisq = chisq_ndof * ndof chisqbox = ROOT.TPaveText(0.1, 0.1, 0.4, 0.15, 'BRNDC') chisqbox.SetFillColor(0) chisqbox.SetBorderSize(1) chisqbox.AddText('#chi^{2}/ndof = %.2f/%d = %.2f' % (chisq, ndof, chisq_ndof)) xframe.addObject(chisqbox) pdf.paramOn(xframe, dataset) xframe.SetTitle('Sidebands of %s' % mode) xframe.GetYaxis().SetTitleSize(0.03) xframe.GetYaxis().SetLabelSize(0.03) xframe.GetYaxis().SetTitleOffset(1.8) xframe.GetXaxis().SetTitleSize(0.03) xframe.GetXaxis().SetLabelSize(0.03) xframe.GetXaxis().SetTitleOffset(1.2) xframe.Draw() else: canvas = ROOT.TCanvas('canvas','mbc', 1200, 400); canvas.Divide(3,1) title1 = attr.modes[modekey]['uname'] title2 = attr.modes[modekey]['unamebar'] canvas_1 = canvas.GetListOfPrimitives().FindObject('canvas_1') canvas_2 = canvas.GetListOfPrimitives().FindObject('canvas_2') canvas_1.SetLogy() canvas_2.SetLogy() ebeam.setBins(900) canvas.cd(1) mbcFrame=mbc.frame() mbcFrame=mbc.frame(60) dflav.setLabel('dflav') ebeam_aset = ROOT.RooArgSet(ebeam, dflav) ebeamdata = ROOT.RooDataHist("ebeamdata", "ebeamdata", ebeam_aset, dataset) Cut = ROOT.RooFit.Cut("dflav==dflav::dflav") LineColor = ROOT.RooFit.LineColor(ROOT.kRed) LineWidth = ROOT.RooFit.LineWidth(1) #Slice = ROOT.RooFit.Slice(dflav, 'dflav') Slice = ROOT.RooFit.Slice(dflav) ProjWData = ROOT.RooFit.ProjWData(ebeam_aset, ebeamdata) dataset.plotOn(mbcFrame, Cut) mbcFrame.getAttMarker().SetMarkerSize(0.6) mbcFrame.Draw() pdf.plotOn(mbcFrame, LineColor, LineWidth, Slice, ProjWData) nfitParam = len(pars) - 2 chisq_ndof = mbcFrame.chiSquare(nfitParam) nbin = mbcFrame.GetNbinsX() ndof = nbin - nfitParam chisq = chisq_ndof * ndof chisqbox = ROOT.TPaveText(0.1, 0.1, 0.55, 0.2, 'BRNDC') chisqbox.SetFillColor(0) chisqbox.SetBorderSize(1) chisqbox.AddText('#chi^{2}/ndof = %.2f/%d = %.2f' % (chisq, ndof, chisq_ndof)) mbcFrame.addObject(chisqbox) mbcFrame.SetTitle(title1) mbcFrame.Draw() canvas.cd(2) mbcFrame = mbc.frame() mbcFrame=mbc.frame(60) dflav.setLabel('dbarflav') ebeam_aset = ROOT.RooArgSet(ebeam, dflav) ebeamdata = ROOT.RooDataHist("ebeamdata", "ebeamdata", ebeam_aset, dataset) Cut = ROOT.RooFit.Cut("dflav==dflav::dbarflav") LineColor = ROOT.RooFit.LineColor(ROOT.kRed) LineWidth = ROOT.RooFit.LineWidth(1) #Slice = ROOT.RooFit.Slice(dflav, 'dbarflav') Slice = ROOT.RooFit.Slice(dflav) ProjWData = ROOT.RooFit.ProjWData(ebeam_aset, ebeamdata) dataset.plotOn(mbcFrame, Cut) mbcFrame.getAttMarker().SetMarkerSize(0.6) mbcFrame.Draw() pdf.plotOn(mbcFrame, LineColor, LineWidth, Slice, ProjWData) nfitParam = len(pars) - 2 chisq_ndof = mbcFrame.chiSquare(nfitParam) nbin = mbcFrame.GetNbinsX() ndof = nbin - nfitParam chisq = chisq_ndof * ndof chisqbox = ROOT.TPaveText(0.1, 0.1, 0.55, 0.2, 'BRNDC') chisqbox.SetFillColor(0) chisqbox.SetBorderSize(1) chisqbox.AddText('#chi^{2}/ndof = %.2f/%d = %.2f' % (chisq, ndof, chisq_ndof)) mbcFrame.addObject(chisqbox) mbcFrame.SetTitle(title2) mbcFrame.Draw() canvas.cd(3) mbcFrame = mbc.frame() paramWin1 = pdf.paramOn(mbcFrame,dataset, "",2,"NELU",0.1,0.9,0.9) mbcFrame.GetXaxis().SetLabelSize(0) mbcFrame.GetXaxis().SetTickLength(0) mbcFrame.GetXaxis().SetLabelSize(0) mbcFrame.GetXaxis().SetTitle("") mbcFrame.GetXaxis().CenterTitle() mbcFrame.GetYaxis().SetLabelSize(0) mbcFrame.GetYaxis().SetTitleSize(0.03) mbcFrame.GetYaxis().SetTickLength(0) paramWin1.getAttText().SetTextSize(0.06) mbcFrame.Draw() mbcFrame.SetTitle("Fit Parameters") mbcFrame.Draw() canvas.Print(epsfile) tools.save_fit_result(pars, txtfile) if not test: tools.eps2png(epsfile) tools.eps2pdf(epsfile)
def double_tag_mode(dt_type, mode, label, interact=False, test=False): mode = get_modekey(mode) tag = 'double' prefix = 'dir_' + label evtprefix = get_evtprefix(dt_type, label) mode1 = mode[0] mode2 = mode[1] title1 = attr.modes[mode1]['uname'] title2 = attr.modes[mode2]['unamebar'] code1 = attr.interfacecodes[mode1] code2 = attr.interfacecodes[mode2] forceCombine = None # Different from single tag case Gamma, Mres, R, mc = get_common_parameters(dt_type, label) Sigma1, F1a, F1b, S1a, S1b = get_resolution_paras(mode1, label) Sigma2, F2a, F2b, S2a, S2b = get_resolution_paras(mode2, label) opt, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat = get_double_paras(label) epsfile = tools.set_file('eps', dt_type, mode, tag, prefix=prefix, extbase=attr.figpath) fitpath = attr.fitpath outfile = tools.set_file('txt', dt_type, mode, tag, prefix=prefix, extbase=fitpath) evtpath = attr.evtpath evtfile = tools.set_file('evt', dt_type, mode, tag, prefix=evtprefix, forceCombine=forceCombine, extbase=evtpath) if not os.access(evtfile, os.F_OK): if '818ipb' in evtprefix: evtfile_281ipb = evtfile.replace('818ipb', '281ipb') evtfile_537ipb = evtfile.replace('818ipb', '537ipb') combine_files(evtfile_281ipb, evtfile_537ipb, evtfile) else: raise ValueError(evtfile) tools.print_sep() par_str = '("%s", %f, %f, %f, %f, %f, "%s", %f, %f, %f, \ %f, %f, "%s", "%s", "%s", %d, "%s", "%s", "%s", %f,\ %f, %f, %f, %f, %f, %f, %f)' par_tuple = (code1, Sigma1, F1a, F1b, S1a, S1b, code2, Sigma2, F2a, F2b, S2a, S2b, evtfile, epsfile, outfile, mc, opt, title1, title2, Gamma, Mres, R, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat) par = par_str % par_tuple print_paras_double(par_tuple) load_roofit_lib(dt_type, label) sourcename = 'lineshapefit2d.C' #if interact: source = os.path.join(attr.srcfitpath, sourcename) tools.print_sep() sys.stdout.write(' ROOT macro: %s \n' % source) tools.print_sep() if test: return ROOT.gROOT.Macro(source + par) sys.stdout.write('Save output in %s\n' % outfile) tools.eps2png(epsfile) tools.eps2pdf(epsfile)
def draw_momenta_ks3pi(datatype, mode, label, test): modekey = tools.get_modekey(mode) sname = attr.modes[modekey]['sname'].lower() figname = '%s_momenta' % sname figpath = os.path.join(attr.figpath, label, 'trkmtm') epsfile = set_file(extbase=figpath, comname=figname, ext='eps') tab = DHadTable() tab.row_append(['Name', 'Data/MC']) # -------------------------------------------------- h_pks = {}; h_ppi1 = {}; h_ppi2 = {}; h_ppim = {} h_pks_c = {}; h_ppi1_c = {}; h_ppi2_c = {}; h_ppim_c = {} for datatype in datatype.split('/'): selfile = get_selfile(datatype, mode, label, test=test) selfile = selfile.replace('/trkmtm/', '/trkmtm2/') f = TFile(selfile) if datatype == 'signal' or datatype == 'generic': tp = 'mc' if datatype == 'data': tp = 'data' h_pks[tp]= f.Get('h_pks'+tp) h_ppi1[tp]= f.Get('h_ppi1'+tp) h_ppi2[tp]= f.Get('h_ppi2'+tp) h_ppim[tp]= f.Get('h_ppim'+tp) h_pks_c[tp]= f.Get('h_pk_c'+tp) h_ppi1_c[tp]= f.Get('h_ppi1_c'+tp) h_ppi2_c[tp]= f.Get('h_ppi2_c'+tp) h_ppim_c[tp]= f.Get('h_ppim_c'+tp) f.Clear() ratio = h_pks['data'].Integral()/h_pks['mc'].Integral() c1 = TCanvas('c1', 'canvas', 900, 900) c1.Divide(2,2) c1.cd(1) h_pks['data'].Draw('PE') h_pks['mc'].Scale(ratio) h_pks['mc'].Draw('SAME') c1.cd(2) h_ppi1['data'].Draw('PE') h_ppi1['mc'].Scale(ratio) h_ppi1['mc'].Draw('SAME') c1.cd(3) h_ppi2['data'].Draw('PE') h_ppi2['mc'].Scale(ratio) h_ppi2['mc'].Draw('SAME') c1.cd(4) h_ppim['data'].Draw('PE') h_ppim['mc'].Scale(ratio) h_ppim['mc'].Draw('SAME') c1.Print(epsfile) tools.eps2pdf(epsfile) # -------------------------------------------------- c1.Clear() c1.Divide(2,2) c1.cd(1) h_pks_c['data'].Draw('PE') lratio = h_pks_c['data'].Integral()/h_pks_c['mc'].Integral() #print 'k:', lratio/ratio tab.row_append(['K', lratio/ratio]) h_pks_c['mc'].Scale(lratio) h_pks_c['mc'].Draw('SAME,HIST') c1.cd(2) h_ppi1_c['data'].Draw('PE') lratio = h_ppi1_c['data'].Integral()/h_ppi1_c['mc'].Integral() #print 'pi1:', lratio/ratio tab.row_append(['pi1', lratio/ratio]) h_ppi1_c['mc'].Scale(lratio) h_ppi1_c['mc'].Draw('SAME,HIST') c1.cd(3) h_ppi2_c['data'].Draw('PE') lratio = h_ppi2_c['data'].Integral()/h_ppi2_c['mc'].Integral() #print 'pi2:', lratio/ratio tab.row_append(['pi2', lratio/ratio]) h_ppi2_c['mc'].Scale(lratio) h_ppi2_c['mc'].Draw('SAME,HIST') c1.cd(4) h_ppim_c['data'].Draw('PE') lratio = h_ppim_c['data'].Integral()/h_ppim_c['mc'].Integral() #print 'pim:', lratio/ratio tab.row_append(['pim', lratio/ratio]) h_ppim_c['mc'].Scale(lratio) h_ppim_c['mc'].Draw('SAME,HIST') tab.column_trim('Data/MC', rnd='.0001') figname = '%s_momentacor' % sname epsfile = set_file(extbase=figpath, comname=figname, ext='eps') c1.Print(epsfile) tools.eps2pdf(epsfile) tabname = '%s_syst' % sname tab.output(tabname, label=label, export_html=False)
def kkmass1(opts, args, figname): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] mode = modes[0] modekey = tools.get_modekey(mode) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') nohtml = parse_opts_set(opts.set, 'nohtml') if nohtml == None: outputhtml = True else: outputhtml = False dbfile = os.path.join(attr.figpath, label, figname + '.db') alldata, fullrangemc = get_fullrange_data_mc(opts, dbfile, label, 'kkmass', modekey, tag, binbase, binwidth, numbins) fullrangedata = {} init_dict(fullrangedata) evtpath = os.path.join(attr.datpath, 'sel', label, 'kkmass') evtfilemc = tools.set_file('evt', 'signal', modekey, tag, prefix='', forceCombine=1, extbase=evtpath) for i in xrange(numbins): lowmass = binbase + i * binwidth highmass = binbase + (i + 1) * binwidth prefix = 'dir_%s/kkmass/%s_%s' % (label, lowmass, highmass) datafile = tools.set_file('txt', 'data', modekey, tag, prefix=prefix, extbase=attr.fitpath) if os.access(datafile, os.F_OK): parsefile(datafile, lowmass, highmass, fullrangedata) else: sys.stdout.write('Skipped %s %s ...\n' % (lowmass, highmass)) scaledict(fullrangedata, 1 / sumdict(fullrangedata)) scaledict(fullrangemc, 1 / sumdict(fullrangemc)) gdata = TGraphAsymmErrors(len(fullrangedata['x']), getarray('x', fullrangedata), getarray('y', fullrangedata), getarray('exl', fullrangedata), getarray('exh', fullrangedata), getarray('eyl', fullrangedata), getarray('eyh', fullrangedata)) gmc = TGraph(len(fullrangemc['x']), getarray('x', fullrangemc), getarray('y', fullrangemc)) c1 = TCanvas('c', 'kk', 600, 600) c1.SetLeftMargin(0.15) c1.SetRightMargin(0.05) c1.SetBottomMargin(0.15) c1.SetTopMargin(0.05) #hr = c1.DrawFrame(0.5, 0.0, 1.5, 0.04) hr = c1.DrawFrame(0.9, 0.0, 1.8, 0.1) hr.GetYaxis().SetTitle('Yield (arbitrary units)') hr.GetXaxis().SetTitle('M(K^{-} #pi^{+}) (GeV/#font[72]{c}^{2})') hr.GetYaxis().SetTitleOffset(1.4) hr.GetYaxis().SetTitleSize(0.05) hr.GetXaxis().SetTitleOffset(1.3) hr.GetXaxis().SetTitleSize(0.05) gmc.SetMarkerStyle(21) gmc.SetMarkerColor(kRed) gmc.SetMarkerSize(0.6) gmc.SetLineColor(kRed) gmc.Draw("PL") gdata.SetMarkerStyle(20) gdata.SetMarkerColor(kBlue) gdata.SetMarkerSize(0.6) gdata.Draw("P") leg = TLegend(0.6, 0.75, 0.92, 0.92) leg.AddEntry(gdata, 'Data', 'pl') leg.AddEntry(gmc, 'MC', 'pl') leg.SetFillColor(0) leg.SetBorderSize(0) leg.Draw() canvas_output(c1, figname, label, opts.test, outputhtml=outputhtml)
def double_tag_mode(dt_type, mode, label, interact=False, test=False): mode = get_modekey(mode) tag = 'double' prefix = 'dir_'+label evtprefix = get_evtprefix(dt_type, label) mode1 = mode[0] mode2 = mode[1] title1 = attr.modes[mode1]['uname'] title2 = attr.modes[mode2]['unamebar'] code1 = attr.interfacecodes[mode1] code2 = attr.interfacecodes[mode2] forceCombine = None # Different from single tag case Gamma, Mres, R, mc = get_common_parameters(dt_type, label) Sigma1, F1a, F1b, S1a, S1b = get_resolution_paras(mode1, label) Sigma2, F2a, F2b, S2a, S2b = get_resolution_paras(mode2, label) opt, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat = get_double_paras(label) epsfile = tools.set_file('eps', dt_type, mode, tag, prefix=prefix, extbase=attr.figpath) fitpath = attr.fitpath outfile = tools.set_file('txt', dt_type, mode, tag, prefix=prefix, extbase=fitpath) evtpath = attr.evtpath evtfile = tools.set_file('evt', dt_type, mode, tag, prefix=evtprefix, forceCombine=forceCombine, extbase=evtpath) if not os.access(evtfile, os.F_OK): if '818ipb' in evtprefix: evtfile_281ipb = evtfile.replace('818ipb', '281ipb') evtfile_537ipb = evtfile.replace('818ipb', '537ipb') combine_files(evtfile_281ipb, evtfile_537ipb, evtfile) else: raise ValueError(evtfile) tools.print_sep() par_str = '("%s", %f, %f, %f, %f, %f, "%s", %f, %f, %f, \ %f, %f, "%s", "%s", "%s", %d, "%s", "%s", "%s", %f,\ %f, %f, %f, %f, %f, %f, %f)' par_tuple = (code1, Sigma1, F1a, F1b, S1a, S1b, code2, Sigma2, F2a, F2b, S2a, S2b, evtfile, epsfile, outfile, mc, opt, title1, title2, Gamma, Mres, R, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat) par = par_str % par_tuple print_paras_double(par_tuple) load_roofit_lib(dt_type, label) sourcename = 'lineshapefit2d.C' #if interact: source = os.path.join(attr.srcfitpath, sourcename) tools.print_sep() sys.stdout.write(' ROOT macro: %s \n' % source) tools.print_sep() if test: return ROOT.gROOT.Macro( source + par) sys.stdout.write('Save output in %s\n' % outfile) tools.eps2png(epsfile) tools.eps2pdf(epsfile)
def fit_sidebands_single_mode(datatype, mode, label, test): load_roofit_lib(datatype, label) dt_type = datatype.replace('/', '_') modekey = tools.get_modekey(mode) comname = '%s_%s' % (dt_type, mode) input_label = label sdbpath = os.path.join(attr.evtpath, input_label) sdbfile = set_file(extbase=sdbpath, comname=comname, ext='evt') has_charge_conjugate = False if '__' in mode: has_charge_conjugate = True if not os.access(sdbfile, os.F_OK): if has_charge_conjugate: sdbfile = set_file(extbase=sdbpath, dt_type=dt_type, tag='s', mode=modekey, comname=comname, ext='evt', forceCombine=1) else: raise ValueError(sdbfile) epspath = os.path.join(attr.figpath, label) epsfile = set_file(extbase=epspath, comname=comname, ext='eps') txtpath = os.path.join(attr.fitpath, label) txtfile = set_file(extbase=txtpath, comname=comname, ext='txt') if test: epsfile = epsfile + '.test' txtfile = txtfile + '.test' ROOT.gROOT.SetBatch(1) ROOT.gROOT.SetStyle('Plain') mbc = ROOT.RooRealVar('mbc', 'Beam constrained mass', 1.83, 1.89, 'GeV') mbc_aset = ROOT.RooArgSet(mbc) ebeam = ROOT.RooRealVar('ebeam', 'Ebeam', 1.8815, 1.892, 'GeV') dflav = ROOT.RooCategory('dflav', 'D0 flavor') dflav.defineType('dflav', 1) dflav.defineType('dbarflav', -1) dataset_args = ROOT.RooArgList(mbc, ebeam, dflav) dataset = ROOT.RooDataSet.read(sdbfile, dataset_args) arg_cutoff = ebeam arg_slope = ROOT.RooRealVar('arg_slope', 'Argus slope', -10, -100, -1) arg_power = ROOT.RooRealVar('arg_power', 'Argus power', 0.5, 0.1, 1.5) yld = ROOT.RooRealVar('yield', 'D yield', 100, 0, 200000) bkg = ROOT.RooRealVar('bkg', 'Background', 100, 0, 1000000) sigma = ROOT.RooRealVar('sigma', 'D width', 0.0001, 0.005, 'GeV') pars = [arg_slope, arg_power, bkg, sigma, yld] mbc_d0 = ROOT.RooRealVar('mbc_d0', 'D0 Mbc', 1.8647, 'GeV') mbc_dp = ROOT.RooRealVar('mbc_dp', 'D+ Mbc', 1.8694, 'GeV') gauss_d0 = ROOT.RooGaussian('gauss_d0', 'D0 gaussian', mbc, mbc_d0, sigma) gauss_dp = ROOT.RooGaussian('gauss_dp', 'D+ gaussian', mbc, mbc_dp, sigma) argus = ROOT.RooArgusBG('argus', 'Argus BG', mbc, arg_cutoff, arg_slope, arg_power) sumpdf_d0 = ROOT.RooAddPdf('sumpdf_d0', 'D0 sum pdf', ROOT.RooArgList(gauss_d0, argus), ROOT.RooArgList(yld, bkg)) sumpdf_dp = ROOT.RooAddPdf('sumpdf_dp', 'Dp sum pdf', ROOT.RooArgList(gauss_dp, argus), ROOT.RooArgList(yld, bkg)) Extended = ROOT.RooFit.Extended(ROOT.kTRUE) # e Save = ROOT.RooFit.Save(ROOT.kTRUE) # r Hesse = ROOT.RooFit.Hesse(ROOT.kFALSE) # no h Verbose = ROOT.RooFit.Verbose(ROOT.kFALSE) # no q if 'D0' in mode: pdf = sumpdf_d0 else: pdf = sumpdf_dp if has_charge_conjugate: yld_bar = ROOT.RooRealVar('yield_bar', 'Dbar yield', 100, 0, 200000) bkg_bar = ROOT.RooRealVar('bkg_bar', 'Background Bar', 100, 0, 1000000) pars.extend([yld_bar, bkg_bar]) mbc_d0bar = ROOT.RooRealVar('mbc_d0bar', 'D0Bar Mbc', 1.8647, 'GeV') mbc_dm = ROOT.RooRealVar('mbc_dm', 'D- Mbc', 1.8694, 'GeV') gauss_d0bar = ROOT.RooGaussian('gauss_d0bar', 'D0bar gaussian', mbc, mbc_d0bar, sigma) gauss_dm = ROOT.RooGaussian('gauss_dm', 'D- gaussian', mbc, mbc_dm, sigma) sumpdf_d0bar = ROOT.RooAddPdf('sumpdf_d0bar', 'D0bar sum pdf', ROOT.RooArgList(gauss_d0bar, argus), ROOT.RooArgList(yld_bar, bkg_bar)) sumpdf_dm = ROOT.RooAddPdf('sumpdf_dm', 'Dm sum pdf', ROOT.RooArgList(gauss_dm, argus), ROOT.RooArgList(yld_bar, bkg_bar)) pdf = ROOT.RooSimultaneous('totalPdf', 'totalPdf', dflav) if 'D0' in mode: pdf.addPdf(sumpdf_d0, 'dflav') pdf.addPdf(sumpdf_d0bar, 'dbarflav') else: pdf.addPdf(sumpdf_dp, 'dflav') pdf.addPdf(sumpdf_dm, 'dbarflav') if 'nogaus' in label: yld.setVal(1) yld.setConstant(ROOT.kTRUE) pars.remove(yld) if 'floatsigma' not in label: datatype = 'data' tag = 'single' if '818ipb' in label: prefix = 'dir_818ipbv12' frame_max = 1500 #bkg_generic_ddbar_818_max[mode] else: raise NameError(label) tabfile = set_file('txt', datatype, modekey, tag, prefix=prefix, extbase=attr.fitpath) sys.stdout.write('Using width from %s \n' % tabfile) tab = DHadTable(tabfile) sigmap1 = float(tab.cell_get('sigmap1', 'Value')) sigma.setVal(sigmap1) sigma.setConstant(ROOT.kTRUE) pars.remove(sigma) #res = pdf.fitTo(dataset, Extended, Save, Verbose) res = pdf.fitTo(dataset, 'emr') #Migrad only, no MINOS res.Print('v') if not has_charge_conjugate: canvas = ROOT.TCanvas('canvas', 'canvas1', 600, 600) canvas.SetFixedAspectRatio(0) xframe = mbc.frame() xframe.SetMaximum(frame_max) xframe.SetMarkerSize(0.3) dataset.plotOn(xframe) pdf.plotOn(xframe) nfitParam = len(pars) chisq_ndof = xframe.chiSquare(nfitParam) nbin = xframe.GetNbinsX() ndof = nbin - nfitParam chisq = chisq_ndof * ndof chisqbox = ROOT.TPaveText(0.1, 0.1, 0.4, 0.15, 'BRNDC') chisqbox.SetFillColor(0) chisqbox.SetBorderSize(1) chisqbox.AddText('#chi^{2}/ndof = %.2f/%d = %.2f' % (chisq, ndof, chisq_ndof)) xframe.addObject(chisqbox) pdf.paramOn(xframe, dataset) xframe.SetTitle('Sidebands of %s' % mode) xframe.GetYaxis().SetTitleSize(0.03) xframe.GetYaxis().SetLabelSize(0.03) xframe.GetYaxis().SetTitleOffset(1.8) xframe.GetXaxis().SetTitleSize(0.03) xframe.GetXaxis().SetLabelSize(0.03) xframe.GetXaxis().SetTitleOffset(1.2) xframe.Draw() else: canvas = ROOT.TCanvas('canvas', 'mbc', 1200, 400) canvas.Divide(3, 1) title1 = attr.modes[modekey]['uname'] title2 = attr.modes[modekey]['unamebar'] canvas_1 = canvas.GetListOfPrimitives().FindObject('canvas_1') canvas_2 = canvas.GetListOfPrimitives().FindObject('canvas_2') canvas_1.SetLogy() canvas_2.SetLogy() ebeam.setBins(900) canvas.cd(1) mbcFrame = mbc.frame() mbcFrame = mbc.frame(60) dflav.setLabel('dflav') ebeam_aset = ROOT.RooArgSet(ebeam, dflav) ebeamdata = ROOT.RooDataHist("ebeamdata", "ebeamdata", ebeam_aset, dataset) Cut = ROOT.RooFit.Cut("dflav==dflav::dflav") LineColor = ROOT.RooFit.LineColor(ROOT.kRed) LineWidth = ROOT.RooFit.LineWidth(1) #Slice = ROOT.RooFit.Slice(dflav, 'dflav') Slice = ROOT.RooFit.Slice(dflav) ProjWData = ROOT.RooFit.ProjWData(ebeam_aset, ebeamdata) dataset.plotOn(mbcFrame, Cut) mbcFrame.getAttMarker().SetMarkerSize(0.6) mbcFrame.Draw() pdf.plotOn(mbcFrame, LineColor, LineWidth, Slice, ProjWData) nfitParam = len(pars) - 2 chisq_ndof = mbcFrame.chiSquare(nfitParam) nbin = mbcFrame.GetNbinsX() ndof = nbin - nfitParam chisq = chisq_ndof * ndof chisqbox = ROOT.TPaveText(0.1, 0.1, 0.55, 0.2, 'BRNDC') chisqbox.SetFillColor(0) chisqbox.SetBorderSize(1) chisqbox.AddText('#chi^{2}/ndof = %.2f/%d = %.2f' % (chisq, ndof, chisq_ndof)) mbcFrame.addObject(chisqbox) mbcFrame.SetTitle(title1) mbcFrame.Draw() canvas.cd(2) mbcFrame = mbc.frame() mbcFrame = mbc.frame(60) dflav.setLabel('dbarflav') ebeam_aset = ROOT.RooArgSet(ebeam, dflav) ebeamdata = ROOT.RooDataHist("ebeamdata", "ebeamdata", ebeam_aset, dataset) Cut = ROOT.RooFit.Cut("dflav==dflav::dbarflav") LineColor = ROOT.RooFit.LineColor(ROOT.kRed) LineWidth = ROOT.RooFit.LineWidth(1) #Slice = ROOT.RooFit.Slice(dflav, 'dbarflav') Slice = ROOT.RooFit.Slice(dflav) ProjWData = ROOT.RooFit.ProjWData(ebeam_aset, ebeamdata) dataset.plotOn(mbcFrame, Cut) mbcFrame.getAttMarker().SetMarkerSize(0.6) mbcFrame.Draw() pdf.plotOn(mbcFrame, LineColor, LineWidth, Slice, ProjWData) nfitParam = len(pars) - 2 chisq_ndof = mbcFrame.chiSquare(nfitParam) nbin = mbcFrame.GetNbinsX() ndof = nbin - nfitParam chisq = chisq_ndof * ndof chisqbox = ROOT.TPaveText(0.1, 0.1, 0.55, 0.2, 'BRNDC') chisqbox.SetFillColor(0) chisqbox.SetBorderSize(1) chisqbox.AddText('#chi^{2}/ndof = %.2f/%d = %.2f' % (chisq, ndof, chisq_ndof)) mbcFrame.addObject(chisqbox) mbcFrame.SetTitle(title2) mbcFrame.Draw() canvas.cd(3) mbcFrame = mbc.frame() paramWin1 = pdf.paramOn(mbcFrame, dataset, "", 2, "NELU", 0.1, 0.9, 0.9) mbcFrame.GetXaxis().SetLabelSize(0) mbcFrame.GetXaxis().SetTickLength(0) mbcFrame.GetXaxis().SetLabelSize(0) mbcFrame.GetXaxis().SetTitle("") mbcFrame.GetXaxis().CenterTitle() mbcFrame.GetYaxis().SetLabelSize(0) mbcFrame.GetYaxis().SetTitleSize(0.03) mbcFrame.GetYaxis().SetTickLength(0) paramWin1.getAttText().SetTextSize(0.06) mbcFrame.Draw() mbcFrame.SetTitle("Fit Parameters") mbcFrame.Draw() canvas.Print(epsfile) tools.save_fit_result(pars, txtfile) if not test: tools.eps2png(epsfile) tools.eps2pdf(epsfile)
def main(opts, args): if args[0] == 'backgrounds': import backgrounds backgrounds.main(opts, args[1:]) return if args[0] == 'brs': import brs brs.main(opts, args[1:]) return if args[0] == 'compare': import compare compare.main(opts, args[1:]) return if args[0] == 'cbx': import cbx cbx.main(opts, args[1:]) return if args[0] == 'crossfeeds': import crossfeeds crossfeeds.main(opts, args[1:]) return if args[0] == 'evt': import evt evt.main(opts, args[1:]) return if args[0] == 'fun': import fun fun.main(opts, args[1:]) return if args[0] == 'kkmass': import kkmass kkmass.main(opts, args[1:]) return if args[0] == 'kpimass': import kpimass kpimass.main(opts, args[1:]) return if args[0] == 'trim': import trim trim.main(opts, args[1:]) return if args[0] == 'trkmtm': import trkmtm trkmtm.main(opts, args[1:]) return if args[0] == 'trkmtm1': import trkmtm1 trkmtm1.main(opts, args[1:]) return if args[0] == 'trkmtm2': import trkmtm2 trkmtm2.main(opts, args[1:]) return if args[0] == 'var': import var var.main(opts, args[1:]) return figname = '_'.join(args).replace('/', '_') parsed = parse_args(args) dt_type = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] sqrt = False if opts.set and opts.set == 'sqrt': sqrt = True linr = False if opts.set and opts.set == 'linr': linr = True org = UserFile() org.append(attr.fig_web_header) for mode in modes: if mode == 'double_all_d0s' or mode == 'double_all_dps': modekey = mode else: modekey = get_modekey(mode) if sqrt: sqrt_fig_mode(tag, dt_type, modekey, label) sys.stdout.write('Creating %s ...' % mode) sys.stdout.flush() msg = create_fig_mode(tag, dt_type, modekey, label) sys.stdout.write(' OK.\n') org.append(msg) org.append(attr.fig_web_footer) figlabel = label.split('/')[0] figname = figname.replace(figlabel, '') figname = figname.replace('__', '_') orgname = figname + '.org' orgname = orgname.replace('_.org', '.org') orgpath = os.path.join(attr.figpath, figlabel) orgfile = tools.check_and_join(orgpath, orgname) verbose = opts.verbose if opts.test: verbose = 1 org.output(orgfile, verbose=verbose) orglink = '[[./fig/%s/%s][figure]]' % (figlabel, orgname) sys.stdout.write('\n%s\n\n' % orglink) if opts.test: return tools.org_export_as_html(orgfile)
def draw_momenta_kkpi(figpath, datatype, mode, label, test): modekey = tools.get_modekey(mode) sname = attr.modes[modekey]['sname'].lower() figname = '%s_momenta' % sname epsfile = set_file(extbase=figpath, comname=figname, ext='eps') #tab = DHadTable() #tab.row_append(['Name', 'Data/MC']) # -------------------------------------------------- h_pkm = {} h_pkp = {} h_ppi = {} h_pkm_c = {} h_pkp_c = {} h_ppi_c = {} for datatype in [datatype]: selfile = get_selfile(datatype, mode, label, test=test) selfile = selfile.replace('/trkmtm/', '/trkmtm2/') f = TFile(selfile) if datatype == 'signal': # or datatype == 'generic': tp = 'mc' #if datatype == 'data': # tp = 'data' h_pkm[tp] = f.Get('h_pk' + tp) h_pkp[tp] = f.Get('h_ppi1' + tp) h_ppi[tp] = f.Get('h_ppiz' + tp) h_pkm_c[tp] = f.Get('h_pk_c' + tp) h_pkp_c[tp] = f.Get('h_ppi1_c' + tp) h_ppi_c[tp] = f.Get('h_ppiz_c' + tp) f.Clear() #ratio = h_pkm['data'].Integral()/h_pkm['mc'].Integral() c1 = TCanvas('c1', 'canvas', 900, 900) c1.Divide(2, 2) c1.cd(1) h_pkm['mc'].Draw() #h_pkm['data'].Draw('PE') #h_pkm['mc'].Scale(ratio) #h_pkm['mc'].Draw('SAME') c1.cd(2) h_pkp['mc'].Draw() #h_pkp['data'].Draw('PE') #h_pkp['mc'].Scale(ratio) #h_pkp['mc'].Draw('SAME') c1.cd(3) c1.cd(4) h_ppi['mc'].Draw() #h_ppi['data'].Draw('PE') #h_ppi['mc'].Scale(ratio) #h_ppi['mc'].Draw('SAME') c1.Print(epsfile) tools.eps2pdf(epsfile)
def kkmass1(opts, args, figname): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] mode = modes[0] modekey = tools.get_modekey(mode) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') nohtml = parse_opts_set(opts.set, 'nohtml') if nohtml == None: outputhtml = True else: outputhtml = False dbfile = os.path.join(attr.figpath, label, figname+'.db') alldata, fullrangemc = get_fullrange_data_mc( opts, dbfile, label, 'kkmass', modekey, tag, binbase, binwidth, numbins) fullrangedata = {} init_dict(fullrangedata) evtpath = os.path.join(attr.datpath, 'sel', label, 'kkmass') evtfilemc = tools.set_file('evt', 'signal', modekey, tag, prefix='', forceCombine=1, extbase=evtpath) for i in xrange(numbins): lowmass = binbase+i*binwidth highmass = binbase+(i+1)*binwidth prefix = 'dir_%s/kkmass/%s_%s' % (label, lowmass, highmass) datafile = tools.set_file('txt', 'data', modekey, tag, prefix=prefix, extbase=attr.fitpath) if os.access(datafile, os.F_OK): parsefile(datafile, lowmass, highmass, fullrangedata) else: sys.stdout.write('Skipped %s %s ...\n' % (lowmass, highmass)) scaledict(fullrangedata, 1/sumdict(fullrangedata)) scaledict(fullrangemc, 1/sumdict(fullrangemc)) gdata = TGraphAsymmErrors(len(fullrangedata['x']), getarray('x', fullrangedata), getarray('y', fullrangedata), getarray('exl', fullrangedata), getarray('exh', fullrangedata), getarray('eyl', fullrangedata), getarray('eyh', fullrangedata)) gmc = TGraph(len(fullrangemc['x']), getarray('x', fullrangemc), getarray('y', fullrangemc)) c1 = TCanvas('c','kk', 600, 600) c1.SetLeftMargin(0.15) c1.SetRightMargin(0.05) c1.SetBottomMargin(0.15) c1.SetTopMargin(0.05) #hr = c1.DrawFrame(0.5, 0.0, 1.5, 0.04) hr = c1.DrawFrame(0.9, 0.0, 1.8, 0.1) hr.GetYaxis().SetTitle('Yield (arbitrary units)') hr.GetXaxis().SetTitle('M(K^{-} #pi^{+}) (GeV/#font[72]{c}^{2})') hr.GetYaxis().SetTitleOffset(1.4) hr.GetYaxis().SetTitleSize(0.05) hr.GetXaxis().SetTitleOffset(1.3) hr.GetXaxis().SetTitleSize(0.05) gmc.SetMarkerStyle(21); gmc.SetMarkerColor(kRed); gmc.SetMarkerSize(0.6) gmc.SetLineColor(kRed) gmc.Draw("PL") gdata.SetMarkerStyle(20); gdata.SetMarkerColor(kBlue); gdata.SetMarkerSize(0.6) gdata.Draw("P") leg = TLegend(0.6, 0.75, 0.92, 0.92) leg.AddEntry(gdata, 'Data', 'pl') leg.AddEntry(gmc, 'MC', 'pl') leg.SetFillColor(0) leg.SetBorderSize(0) leg.Draw() canvas_output(c1, figname, label, opts.test, outputhtml=outputhtml)
def draw_momenta_kpipi0(datatype, mode, label, test): modekey = tools.get_modekey(mode) sname = attr.modes[modekey]['sname'].lower() figname = '%s_momenta' % sname figpath = os.path.join(attr.figpath, label, 'trkmtm') epsfile = set_file(extbase=figpath, comname=figname, ext='eps') h_mbc = {}; kpi1 = {} ; pipih = {}; kpiz = {}; kpipih = {}; h_pk = {}; h_ppi1 = {}; h_ppiz = {} h_pk_c = {}; h_ppi1_c = {}; h_ppiz_c = {} h_pk_sb = {}; h_ppi1_sb = {}; h_ppiz_sb = {} h_pk_sb_c = {}; h_ppi1_sb_c = {}; h_ppiz_sb_c = {} h_angk = {}; h_angpi1 = {}; h_angpiz = {} for datatype in datatype.split('/'): selfile = get_selfile(datatype, mode, label, test=test) selfile = selfile.replace('/trkmtm/', '/trkmtm2/') f = TFile(selfile) if datatype == 'signal' or datatype == 'generic': tp = 'mc' if datatype == 'data': tp = 'data' h_mbc[tp]= f.Get('h_mbc_'+tp) kpi1[tp]= f.Get('kpi1_'+tp) pipih[tp]= f.Get('pipih_'+tp) kpiz[tp]= f.Get('kpiz_'+tp) kpipih[tp]= f.Get('kpipih_'+tp) h_pk[tp]= f.Get('h_pk_'+tp) h_ppi1[tp]= f.Get('h_ppi1_'+tp) h_ppiz[tp]= f.Get('h_ppiz_'+tp) h_pk_c[tp]= f.Get('h_pk_c_'+tp) h_ppi1_c[tp]= f.Get('h_ppi1_c_'+tp) h_ppiz_c[tp]= f.Get('h_ppiz_c_'+tp) h_pk_sb[tp]= f.Get('h_pk_sb_'+tp) h_ppi1_sb[tp]= f.Get('h_ppi1_sb_'+tp) h_ppiz_sb[tp]= f.Get('h_ppiz_sb_'+tp) h_pk_sb_c[tp]= f.Get('h_pk_sb_c_'+tp) h_ppi1_sb_c[tp]= f.Get('h_ppi1_sb_c_'+tp) h_ppiz_sb_c[tp]= f.Get('h_ppiz_sb_c_'+tp) h_angk[tp]= f.Get('h_angk_'+tp) h_angpi1[tp]= f.Get('h_angpi1_'+tp) h_angpiz[tp]= f.Get('h_angpiz_'+tp) f.Clear() ratio = h_pk['data'].Integral()/h_pk['mc'].Integral() c1 = TCanvas('c1', 'canvas', 900, 900) c1.Divide(2,2) c1.cd(1) h_pk['data'].Draw('PE') h_pk['mc'].Scale(ratio) h_pk['mc'].Draw('SAME') c1.cd(2) h_ppi1['data'].Draw('PE') h_ppi1['mc'].Scale(ratio) h_ppi1['mc'].Draw('SAME') c1.cd(3) c1.cd(4) h_ppiz['data'].Draw('PE') h_ppiz['mc'].Scale(ratio) h_ppiz['mc'].Draw('SAME') c1.Print(epsfile) tools.eps2pdf(epsfile) tab = DHadTable() tab.row_append(['Name', 'Data/MC']) c1.Clear() c1.Divide(2,2) c1.cd(1) h_pk_c['data'].Draw('PE') lratio = h_pk_c['data'].Integral()/h_pk_c['mc'].Integral() #print 'k:', lratio/ratio tab.row_append(['K', lratio/ratio]) h_pk_c['mc'].Scale(lratio) h_pk_c['mc'].Draw('SAME') c1.cd(2) h_ppi1_c['data'].Draw('PE') lratio = h_ppi1_c['data'].Integral()/h_ppi1_c['mc'].Integral() #print 'pi1:', lratio/ratio tab.row_append(['pi1', lratio/ratio]) h_ppi1_c['mc'].Scale(lratio) h_ppi1_c['mc'].Draw('SAME') c1.cd(3) c1.cd(4) h_ppiz_c['data'].Draw('PE') lratio = h_ppiz_c['data'].Integral()/h_ppiz_c['mc'].Integral() #print 'piz:', lratio/ratio tab.row_append(['piz', lratio/ratio]) h_ppiz_c['mc'].Scale(lratio) h_ppiz_c['mc'].Draw('SAME') tab.column_trim('Data/MC', rnd='.0001') figname = '%s_momentacor' % sname epsfile = set_file(extbase=figpath, comname=figname, ext='eps') c1.Print(epsfile) tools.eps2pdf(epsfile) tabname = '%s_syst' % sname tab.output(tabname, label=label, export_html=False)
def kkmass2(opts, args): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] mode = modes[0] modekey = tools.get_modekey(mode) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') fullrangedata = {} init_dict(fullrangedata) fullrangemc = {} init_dict(fullrangemc) evtpath = os.path.join(attr.datpath, 'sel', label, 'kkmass') evtfilemc = tools.set_file('evt', 'signal', modekey, tag, prefix='', forceCombine=1, extbase=evtpath) for i in xrange(numbins): lowmass = binbase + i * binwidth highmass = binbase + (i + 1) * binwidth prefix = 'dir_%s/kkmass/%s_%s' % (label, lowmass, highmass) datafile = tools.set_file('txt', 'data', modekey, tag, prefix=prefix, extbase=attr.fitpath) #mcfile = tools.set_file('txt', 'signal', modekey, tag, # prefix=prefix, extbase=attr.fitpath) if os.access(datafile, os.F_OK): # and os.access(mcfile, os.F_OK): parsefile(datafile, lowmass, highmass, fullrangedata) parse_evtfile(evtfilemc, lowmass, highmass, fullrangemc) else: sys.stdout.write('Skipped %s %s ...\n' % (lowmass, highmass)) scaledict(fullrangedata, 1 / sumdict(fullrangedata)) scaledict(fullrangemc, 1 / sumdict(fullrangemc)) gdata = TGraphAsymmErrors(len(fullrangedata['x']), getarray('x', fullrangedata), getarray('y', fullrangedata), getarray('exl', fullrangedata), getarray('exh', fullrangedata), getarray('eyl', fullrangedata), getarray('eyh', fullrangedata)) gmc = TGraph(len(fullrangemc['x']), getarray('x', fullrangemc), getarray('y', fullrangemc)) c1 = TCanvas('c', 'kk', 600, 600) c1.SetLeftMargin(0.15) c1.SetRightMargin(0.05) c1.SetBottomMargin(0.15) c1.SetTopMargin(0.05) #hr = c1.DrawFrame(0.95, 0.0, 1.95, 0.12) hr = c1.DrawFrame(0.9, 0.0, 1.8, 0.1) hr.GetYaxis().SetTitle('Yield (arbitrary units)') hr.GetXaxis().SetTitle('M(K^{-} K^{+}) (GeV/#font[72]{c}^{2})') hr.GetYaxis().SetTitleOffset(1.4) hr.GetYaxis().SetTitleSize(0.05) hr.GetXaxis().SetTitleOffset(1.3) hr.GetXaxis().SetTitleSize(0.05) gmc.SetMarkerStyle(21) gmc.SetMarkerColor(kRed) gmc.SetMarkerSize(0.6) gmc.SetLineColor(kRed) gmc.Draw("PL") gdata.SetMarkerStyle(20) gdata.SetMarkerColor(kBlue) gdata.SetMarkerSize(0.6) gdata.Draw("P") leg = TLegend(0.6, 0.75, 0.95, 0.95) leg.AddEntry(gdata, 'Data', 'pl') leg.AddEntry(gmc, 'MC', 'pl') leg.Draw() c1.Print('comparison.eps') eps2pdf('comparison.eps')
def draw_momenta_kkpi(figpath, datatype, mode, label, test): modekey = tools.get_modekey(mode) sname = attr.modes[modekey]['sname'].lower() figname = '%s_momenta' % sname epsfile = set_file(extbase=figpath, comname=figname, ext='eps') tab = DHadTable() tab.row_append(['Name', 'Data/MC']) # -------------------------------------------------- h_pkm = {}; h_pkp = {}; h_ppi = {} h_pkm_c = {}; h_pkp_c = {}; h_ppi_c = {} for datatype in datatype.split('/'): selfile = get_selfile(datatype, mode, label, test=test) selfile = selfile.replace('/trkmtm/', '/trkmtm2/') f = TFile(selfile) if datatype == 'signal' or datatype == 'generic': tp = 'mc' if datatype == 'data': tp = 'data' h_pkm[tp]= f.Get('h_pk'+tp) h_pkp[tp]= f.Get('h_ppi1'+tp) h_ppi[tp]= f.Get('h_ppiz'+tp) h_pkm_c[tp]= f.Get('h_pk_c'+tp) h_pkp_c[tp]= f.Get('h_ppi1_c'+tp) h_ppi_c[tp]= f.Get('h_ppiz_c'+tp) f.Clear() ratio = h_pkm['data'].Integral()/h_pkm['mc'].Integral() c1 = TCanvas('c1', 'canvas', 900, 900) c1.Divide(2,2) c1.cd(1) h_pkm['data'].Draw('PE') h_pkm['mc'].Scale(ratio) h_pkm['mc'].Draw('SAME') c1.cd(2) h_pkp['data'].Draw('PE') h_pkp['mc'].Scale(ratio) h_pkp['mc'].Draw('SAME') c1.cd(3) c1.cd(4) h_ppi['data'].Draw('PE') h_ppi['mc'].Scale(ratio) h_ppi['mc'].Draw('SAME') c1.Print(epsfile) tools.eps2pdf(epsfile) # -------------------------------------------------- c1.Clear() c1.Divide(2,2) c1.cd(1) h_pkm_c['data'].Draw('PE') lratio = h_pkm_c['data'].Integral()/h_pkm_c['mc'].Integral() #print 'km:', lratio/ratio tab.row_append(['Km', lratio/ratio]) h_pkm_c['mc'].Scale(lratio) h_pkm_c['mc'].Draw('SAME') c1.cd(2) h_pkp_c['data'].Draw('PE') lratio = h_pkp_c['data'].Integral()/h_pkp_c['mc'].Integral() #print 'kp:', lratio/ratio tab.row_append(['Kp', lratio/ratio]) h_pkp_c['mc'].Scale(lratio) h_pkp_c['mc'].Draw('SAME') c1.cd(3) c1.cd(4) h_ppi_c['data'].Draw('PE') lratio = h_ppi_c['data'].Integral()/h_ppi_c['mc'].Integral() #print 'pi:', lratio/ratio tab.row_append(['pi', lratio/ratio]) h_ppi_c['mc'].Scale(lratio) h_ppi_c['mc'].Draw('SAME') tab.column_trim('Data/MC', rnd='.0001') figname = '%s_momentacor' % sname epsfile = set_file(extbase=figpath, comname=figname, ext='eps') c1.Print(epsfile) tools.eps2pdf(epsfile) tabname = '%s_syst' % sname tab.output(tabname, label=label, export_html=False)
def main(opts, args): tools.set_root_style(stat=1, grid=0, PadTopMargin=0.1, PadLeftMargin = 0.15) parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] if tag != 'single': # only deal with single tag raise NameError(tag) figpath = os.path.join(attr.figpath, label, 'trkmtm') for mode in modes: modekey = tools.get_modekey(mode) selfile = get_selfile(datatype, mode, label, test=opts.test) efffile = selfile.replace('.root', '.db') sname = attr.modes[modekey]['sname'].lower() f = TFile(selfile) effs = shelve.open(efffile) if sname == 'kpipi0': h_pk = {}; h_ppi1 = {}; h_ppiz = {} for tp in ('mc', 'mctruth'): h_pk[tp] = f.Get('h_pk_' + tp) h_ppi1[tp] = f.Get('h_ppi1_' + tp) h_ppiz[tp] = f.Get('h_ppiz_' + tp) draw_effmomenta_kpipi0(figpath, effs, sname, h_pk, h_ppi1, h_ppiz) elif sname == 'k3pi': h_pk = {}; h_ppi1 = {}; h_ppi2 = {}; h_ppim = {} for tp in ('mc', 'mctruth'): h_pk[tp] = f.Get('h_pk_' + tp) h_ppi1[tp] = f.Get('h_ppi1_' + tp) h_ppi2[tp] = f.Get('h_ppi2_' + tp) h_ppim[tp] = f.Get('h_ppim_' + tp) draw_effmomenta_k3pi(figpath, effs, sname, h_pk, h_ppi1, h_ppi2, h_ppim) elif sname == 'kpipi': h_pk = {}; h_ppi1 = {}; h_ppi2 = {} for tp in ('mc', 'mctruth'): h_pk[tp] = f.Get('h_pk_' + tp) h_ppi1[tp] = f.Get('h_ppi1_' + tp) h_ppi2[tp] = f.Get('h_ppi2_' + tp) draw_effmomenta_kpipi(figpath, effs, sname, h_pk, h_ppi1, h_ppi2) elif sname == 'kpipipi0': h_pk = {}; h_ppi1 = {}; h_ppi2 = {}; h_ppiz = {} for tp in ('mc', 'mctruth'): h_pk[tp] = f.Get('h_pk_' + tp) h_ppi1[tp] = f.Get('h_ppi1_' + tp) h_ppi2[tp] = f.Get('h_ppi2_' + tp) h_ppiz[tp] = f.Get('h_ppim_' + tp) draw_effmomenta_kpipipi0(figpath, effs, sname, h_pk, h_ppi1, h_ppi2, h_ppiz) elif sname == 'kspipi0': h_pks = {}; h_ppi1 = {}; h_ppiz = {} for tp in ('mc', 'mctruth'): h_pks[tp] = f.Get('h_pks_' + tp) h_ppi1[tp] = f.Get('h_ppi1_' + tp) h_ppiz[tp] = f.Get('h_ppiz_' + tp) draw_effmomenta_kspipi0(figpath, effs, sname, h_pks, h_ppi1, h_ppiz) elif sname == 'ks3pi': h_pks = {}; h_ppi1 = {}; h_ppi2 = {}; h_ppim = {} for tp in ('mc', 'mctruth'): h_pks[tp] = f.Get('h_pk_' + tp) h_ppi1[tp] = f.Get('h_ppi1_' + tp) h_ppi2[tp] = f.Get('h_ppi2_' + tp) h_ppim[tp] = f.Get('h_ppim_' + tp) draw_effmomenta_ks3pi(figpath, effs, sname, h_pks, h_ppi1, h_ppi2, h_ppim) elif sname == 'kkpi': h_pkm = {}; h_pkp = {}; h_ppi = {} for tp in ('mc', 'mctruth'): h_pkm[tp] = f.Get('h_pkm_' + tp) h_pkp[tp] = f.Get('h_pkp_' + tp) h_ppi[tp] = f.Get('h_ppi_' + tp) draw_effmomenta_kkpi(figpath, effs, sname, h_pkp, h_pkm, h_ppi) else: raise NameError(sname)
def single_tag_mode(dt_type, mode, label, interact=False, test=False): mode = get_modekey(mode) tag = 'single' prefix = 'dir_' + label evtprefix = get_evtprefix(dt_type, label) Gamma, Mres, R, mc = get_common_parameters(dt_type, label) Sigma, Fa, Fb, Sa, Sb = get_resolution_paras(mode, label) N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1, xi = init_paras_single( label, dt_type, tag, mode) # ------------------- Parameters for the fit ---------- title1 = attr.modes[mode]['uname'] title2 = attr.modes[mode]['unamebar'] num_fcn = 3 # : 0 for only background xi_side = 0.0 p_side = 0.0 int_d = 1 optstr = 'p' # To plot, f : fast, w: fixwidth floatwidth = 0 Min = 0.5 options = "" MINUIT = "ermh4" # ------------------------------------------------- if '/p/0.5' in label: p_side = 0.5 if '/argus' in label: options = 'fix_xi,fix_p' xi, p = get_argus_paras_single(label, dt_type, tag, mode) if '/fix_sigmap1' in label: options = 'fix_sigmap1' if '/kssideband' in label: sys.stdout.write('Fixing the sigmap1 as %s ...\n' % Sigma) sigmap1 = Sigma if '/fix_n1n2' in label and '/desideband' in label: options = 'fix_n1n2' N1 = 1 N2 = 1 if dt_type == 'signal' and mode in [0, 200, 202]: p_side = 0.5 tools.print_sep() forceCombine = 1 epsfile = tools.set_file('eps', dt_type, mode, tag, prefix=prefix, extbase=attr.figpath) fitpath = attr.fitpath outfile = tools.set_file('txt', dt_type, mode, tag, prefix=prefix, extbase=fitpath) evtpath = attr.evtpath evtfile = tools.set_file('evt', dt_type, mode, tag, prefix=evtprefix, forceCombine=forceCombine, extbase=evtpath) tools.print_sep() par_str = '( "%s", "%s", "%s", "%s", "%s", %d, %d, %f, %f, %f, %f, \ %f, %f, %f, %d, "%s", %f, %d, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, \ %f, "%s", "%s" )' par_tuple = (title1, title2, evtfile, epsfile, outfile, mc, num_fcn, xi_side, p_side, Sigma, Sa, Sb, Fa, Fb, int_d, optstr, Gamma, floatwidth, R, Mres, N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1, xi, Min, options, MINUIT) par = par_str % par_tuple print_paras(par_tuple) load_roofit_lib(dt_type, label) sourcename = 'mbc_singletag_3s.C' #if interact: source = os.path.join(attr.srcfitpath, sourcename) tools.print_sep() sys.stdout.write(' ROOT macro: %s \n' % source) tools.print_sep() if test: return ROOT.gROOT.Macro(source + par) if test: evtfile = evtfile + '.test' epsfile = epsfile + '.test' outfile = outfile + '.test' # fit_mbc_single(title1, title2, evtfile, epsfile, outfile, mc, num_fcn, # xi_side, p_side, Sigma, Sa, Sb, Fa, Fb, int_d, optstr, # Gamma, floatwidth, R, Mres, N1, N2, Nbkgd1, Nbkgd2, md, # p, sigmap1, xi, Min, options, MINUIT) sys.stdout.write('Save output in %s\n' % outfile) if not test: tools.eps2png(epsfile) tools.eps2pdf(epsfile)
def main(opts, args): if args[0] == 'backgrounds': import backgrounds backgrounds.main(opts, args[1:]) return if args[0] == 'brs': import brs brs.main(opts, args[1:]) return if args[0] == 'compare': import compare compare.main(opts, args[1:]) return if args[0] == 'cbx': import cbx cbx.main(opts, args[1:]) return if args[0] == 'crossfeeds': import crossfeeds crossfeeds.main(opts, args[1:]) return if args[0] == 'evt': import evt evt.main(opts, args[1:]) return if args[0] == 'fun': import fun fun.main(opts, args[1:]) return if args[0] == 'kkmass': import kkmass kkmass.main(opts, args[1:]) return if args[0] == 'kpimass': import kpimass kpimass.main(opts, args[1:]) return if args[0] == 'trim': import trim trim.main(opts, args[1:]) return if args[0] == 'trkmtm': import trkmtm trkmtm.main(opts, args[1:]) return if args[0] == 'trkmtm1': import trkmtm1 trkmtm1.main(opts, args[1:]) return if args[0] == 'trkmtm2': import trkmtm2 trkmtm2.main(opts, args[1:]) return if args[0] == 'var': import var var.main(opts, args[1:]) return figname = '_'.join(args).replace('/', '_') parsed = parse_args(args) dt_type = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] sqrt = False if opts.set and opts.set == 'sqrt': sqrt = True linr = False if opts.set and opts.set == 'linr': linr = True org = UserFile() org.append(attr.fig_web_header) for mode in modes: if mode == 'double_all_d0s' or mode == 'double_all_dps' : modekey = mode else: modekey = get_modekey(mode) if sqrt: sqrt_fig_mode(tag, dt_type, modekey, label) sys.stdout.write('Creating %s ...' % mode) sys.stdout.flush() msg = create_fig_mode(tag, dt_type, modekey, label) sys.stdout.write(' OK.\n') org.append(msg) org.append(attr.fig_web_footer) figlabel = label.split('/')[0] figname = figname.replace(figlabel, '') figname = figname.replace('__', '_') orgname = figname+'.org' orgname = orgname.replace('_.org', '.org') orgpath = os.path.join(attr.figpath, figlabel) orgfile = tools.check_and_join(orgpath, orgname) verbose = opts.verbose if opts.test: verbose = 1 org.output(orgfile, verbose=verbose) orglink = '[[./fig/%s/%s][figure]]' %(figlabel, orgname) sys.stdout.write('\n%s\n\n' % orglink) if opts.test: return tools.org_export_as_html(orgfile)
def single_tag_mode(dt_type, mode, label, interact=False, test=False): mode = get_modekey(mode) tag = 'single' prefix = 'dir_' + label evtprefix = get_evtprefix(dt_type, label) Gamma, Mres, R, mc = get_common_parameters(dt_type, label) Sigma, Fa, Fb, Sa, Sb = get_resolution_paras(mode, label) N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1, xi = init_paras_single( label, dt_type, tag, mode) # ------------------- Parameters for the fit ---------- title1 = attr.modes[mode]['uname'] title2 = attr.modes[mode]['unamebar'] num_fcn = 3 # : 0 for only background xi_side = 0.0 p_side = 0.0 int_d = 1 optstr = 'p' # To plot, f : fast, w: fixwidth floatwidth = 0 Min = 0.5 options = "" MINUIT = "ermh4" # ------------------------------------------------- if '/p/0.5' in label: p_side = 0.5 if '/argus' in label: options = 'fix_xi,fix_p' xi, p = get_argus_paras_single(label, dt_type, tag, mode) if '/fix_sigmap1' in label: options = 'fix_sigmap1' if '/kssideband' in label: sys.stdout.write('Fixing the sigmap1 as %s ...\n' %Sigma) sigmap1 = Sigma if '/fix_n1n2' in label and '/desideband' in label: options = 'fix_n1n2' N1 = 1 N2 = 1 if dt_type == 'signal' and mode in [0, 200, 202]: p_side = 0.5 tools.print_sep() forceCombine = 1 epsfile = tools.set_file('eps', dt_type, mode, tag, prefix=prefix, extbase=attr.figpath) fitpath = attr.fitpath outfile = tools.set_file('txt', dt_type, mode, tag, prefix=prefix, extbase=fitpath) evtpath = attr.evtpath evtfile = tools.set_file('evt', dt_type, mode, tag, prefix=evtprefix, forceCombine=forceCombine, extbase=evtpath) tools.print_sep() par_str = '( "%s", "%s", "%s", "%s", "%s", %d, %d, %f, %f, %f, %f, \ %f, %f, %f, %d, "%s", %f, %d, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, \ %f, "%s", "%s" )' par_tuple = (title1, title2, evtfile, epsfile, outfile, mc, num_fcn, xi_side, p_side, Sigma, Sa, Sb, Fa, Fb, int_d, optstr, Gamma, floatwidth, R, Mres, N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1, xi, Min, options, MINUIT) par = par_str % par_tuple print_paras(par_tuple) load_roofit_lib(dt_type, label) sourcename = 'mbc_singletag_3s.C' #if interact: source = os.path.join(attr.srcfitpath, sourcename) tools.print_sep() sys.stdout.write(' ROOT macro: %s \n' % source) tools.print_sep() if test: return ROOT.gROOT.Macro( source + par) if test: evtfile = evtfile + '.test' epsfile = epsfile + '.test' outfile = outfile + '.test' # fit_mbc_single(title1, title2, evtfile, epsfile, outfile, mc, num_fcn, # xi_side, p_side, Sigma, Sa, Sb, Fa, Fb, int_d, optstr, # Gamma, floatwidth, R, Mres, N1, N2, Nbkgd1, Nbkgd2, md, # p, sigmap1, xi, Min, options, MINUIT) sys.stdout.write('Save output in %s\n' % outfile) if not test: tools.eps2png(epsfile) tools.eps2pdf(epsfile)