Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
Archivo: kkmass.py Proyecto: xshi/dhad
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
Ejemplo n.º 3
0
Archivo: trkmtm1.py Proyecto: xshi/dhad
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)
Ejemplo n.º 4
0
Archivo: kkmass2.py Proyecto: xshi/dhad
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
Archivo: compare.py Proyecto: xshi/dhad
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)
Ejemplo n.º 7
0
Archivo: trkmtm1.py Proyecto: xshi/dhad
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)
Ejemplo n.º 8
0
Archivo: var.py Proyecto: xshi/dhad
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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
Archivo: compare.py Proyecto: xshi/dhad
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
Archivo: compare.py Proyecto: xshi/dhad
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')
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
Archivo: trkmtm1.py Proyecto: xshi/dhad
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)
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
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)
Ejemplo n.º 20
0
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)
Ejemplo n.º 21
0
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)
Ejemplo n.º 22
0
Archivo: compare.py Proyecto: xshi/dhad
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)
Ejemplo n.º 23
0
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)
Ejemplo n.º 24
0
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')
Ejemplo n.º 25
0
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)
Ejemplo n.º 26
0
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)
Ejemplo n.º 27
0
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)
Ejemplo n.º 28
0
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)
Ejemplo n.º 29
0
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)