示例#1
0
文件: backgrounds.py 项目: xshi/dhad
def main(opts, args):
    parsed = parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    figname = '_'.join(args).replace('/', '_')

    org = UserFile()
    org.append(attr.fig_web_header)

    if 'allinone' in opts.set:
        msg = create_fig(datatype, label)
        org.append(msg)
    else:
        for mode in modes:
            msg = create_fig_mode(tag, datatype, mode, label)
            org.append(msg)
        
    org.append(attr.fig_web_footer)
    orgname = '%s.org' % figname
    orgfile = os.path.join(attr.figpath, orgname)
    org.output(orgfile)
    tools.org_export_as_html(orgfile)

    orglink = '[[./%s/fig/%s][figure]]' %(attr.analysis, orgname)
    sys.stdout.write('\n%s\n\n' % orglink)
示例#2
0
文件: parse.py 项目: zhixing1996/dhad
def events(args):
    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    unique_evt_label = label
    if _set and 'events' in _set:
        unique_evt_label = _set.split('=')[1]

    tab = DHadTable()

    row = ['Mode']
    row.extend(attr.datasets_281)
    tab.row_append(row)

    for mode in modes:
        modename = mode.replace('Single_', '')
        evtfile = get_unique_evtfile(datatype,
                                     mode,
                                     unique_evt_label,
                                     debug=_debug)
        f = EventsFile(evtfile)
        row = map(str, f.datasets_sorted)
        row.insert(0, modename)
        tab.row_append(row)

    tab.output(_tabname)
示例#3
0
def main(opts, args):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    figname = 'kpimass_' + '_'.join(args[:-1]).replace('/', '_')

    org = UserFile()
    org.append(attr.fig_web_header)

    binbase = parse_opts_set(opts.set, 'binbase')
    binwidth = parse_opts_set(opts.set, 'binwidth')
    numbins = parse_opts_set(opts.set, 'numbins')

    for i in xrange(numbins):
        lowmass = binbase + i * binwidth
        highmass = binbase + (i + 1) * binwidth

        for mode in modes:
            msg = create_fig_mode(opts, tag, datatype, mode, lowmass, highmass,
                                  label)
            org.append(msg)

    org.append(attr.fig_web_footer)
    orgname = '%s.org' % figname
    orgfile = os.path.join(attr.figpath, label, orgname)
    org.output(orgfile, verbose=1)

    orglink = '[[./fig/%s/%s][figure]]' % (label, orgname)
    sys.stdout.write('\n%s\n\n' % orglink)

    tools.org_export_as_html(orgfile)
示例#4
0
文件: kkmass.py 项目: xshi/dhad
def main(opts, args):
    parsed = parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    figname = 'kkmass_'+'_'.join(args[:-1]).replace('/', '_')

    org = UserFile()
    org.append(attr.fig_web_header)

    binbase = parse_opts_set(opts.set, 'binbase')
    binwidth =  parse_opts_set(opts.set, 'binwidth')
    numbins = parse_opts_set(opts.set, 'numbins')
    
    for i in xrange(numbins):
        lowmass = binbase+i*binwidth
        highmass = binbase+(i+1)*binwidth

        for mode in modes:
            msg = create_fig_mode(opts, tag, datatype, mode,
                                  lowmass, highmass, label)
            org.append(msg)
    
    org.append(attr.fig_web_footer)
    orgname = '%s.org' % figname
    orgfile = os.path.join(attr.figpath, label, orgname)
    org.output(orgfile, verbose=1)

    orglink = '[[./fig/%s/%s][figure]]' %(label, orgname)
    sys.stdout.write('\n%s\n\n' % orglink)

    tools.org_export_as_html(orgfile)
示例#5
0
def main(opts, args):

    if args[0] == 'peak':
        process_peak(opts, args[1:])
        return

    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            if 'generic' in datatype and tag == 'single':
                process_generic_single_mode(datatype, mode, label, opts.test)
            else:
                raise ValueError(tag)
            continue

        script, logfile, qjobname = create_script_logfile_jobname(
            datatype, tag, mode, label, opts.test)

        bash_file = yld.create_bash_file(script, 'get_backgrounds.sh')
        tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#6
0
文件: var.py 项目: xshi/dhad
def deltae(opts, args, figname):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    alt_deltae = {'decutl': -1, 'decuth': 1}

    canvas = ROOT.TCanvas("aCanvas", "Canvas", 1000, 1000)
    canvas.Divide(3,3)

    deltae_hist = {}
    
    hist = ROOT.TH1F('deltae', 'DeltaE', 100, -0.1, 0.1) 
    pad = 1
    for mode in modes:
        frametitle = tools.get_mode_root_name(mode)
        canvas.cd(pad)
        pad += 1
        
        modekey, sign = get_modekey_sign(mode)
        deltae_hist[modekey] = ROOT.TH1F('deltae-%s' % modekey,
                                         frametitle, 100, -0.1, 0.1) 

        rootfile = get_rootfile(datatype, mode, label)
        pt = add_rootfile(rootfile, debug=opts.debug)

        for pte in pt:
            d =chooseD(modekey, pte, sign, alt_deltae=alt_deltae)
            if d != None:
                deltae_hist[modekey].Fill(pte.ddeltae[d])
        deltae_hist[modekey].Draw()
    canvas_output(canvas, figname, opts.test)
示例#7
0
def events(args):

    parsed = yld.parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label_A   = parsed[3]
    label_B  = args[3]

    datpath = attr.datpath
    tab = DHadTable()
    tab.row_append(['Mode', label_A, label_B, 'Common',
                    'Unique(%s)' %label_A, 'Unique(%s)' %label_B ])
    tab.head = tab.data[0]
    for mode in modes:
        modename = mode.replace('Single_', '')
        evtname = datatype + '_' + mode + '.evt'
        evtpath_A = os.path.join(datpath, 'evt', label_A, 'events')
        evtfile_A = os.path.join(evtpath_A, evtname)
        f_A = UserFile(evtfile_A)
        events_A = Set(f_A.data)
        evtpath_B = os.path.join(datpath, 'evt', label_B, 'events')
        evtfile_B = os.path.join(evtpath_B, evtname)
        f_B = UserFile(evtfile_B)
        events_B = Set(f_B.data)
        events_inter = events_A & events_B
        entries_A = len(events_A)
        entries_B = len(events_B)
        common = len(events_inter)
        unique_A = len(events_A - events_inter)
        unique_B = len(events_B - events_inter)
        row = [modename, entries_A, entries_B, common, unique_A, unique_B]
        tab.row_append(map(str, row))
    tab.output(_tabname)
示例#8
0
文件: parse.py 项目: xshi/dhad
def events(args):
    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    unique_evt_label = label 
    if _set and 'events' in _set:
        unique_evt_label = _set.split('=')[1]

    tab = DHadTable()

    row = ['Mode']
    row.extend(attr.datasets_281)
    tab.row_append(row)

    for mode in modes:
        modename = mode.replace('Single_', '')
        evtfile = get_unique_evtfile(
            datatype, mode, unique_evt_label, debug=_debug)
        f = EventsFile(evtfile)
        row = map(str, f.datasets_sorted)
        row.insert(0, modename)
        tab.row_append(row)

    tab.output(_tabname)
示例#9
0
def main(opts, args):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    figname = '_'.join(args).replace('/', '_')

    org = UserFile()
    org.append(attr.fig_web_header)

    if 'allinone' in opts.set:
        msg = create_fig(datatype, label)
        org.append(msg)
    else:
        for mode in modes:
            msg = create_fig_mode(tag, datatype, mode, label)
            org.append(msg)

    org.append(attr.fig_web_footer)
    orgname = '%s.org' % figname
    orgfile = os.path.join(attr.figpath, orgname)
    org.output(orgfile)
    tools.org_export_as_html(orgfile)

    orglink = '[[./%s/fig/%s][figure]]' % (attr.analysis, orgname)
    sys.stdout.write('\n%s\n\n' % orglink)
示例#10
0
文件: var.py 项目: xshi/dhad
def momentum_pi(opts, args, figname):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if len(modes) > 1:
        raise ValueError(modes, 'Only handle one mode at this time!')

    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)
    modename = attr.modes[modekey]['uname']
    rootfile = get_rootfile(datatype, mode, label)
    pt = add_rootfile(rootfile, debug=opts.debug)
    canvas  =  ROOT.TCanvas("aCanvas", "Canvas", 600, 600)
    hist = ROOT.TH1F('pip', '#pi momentum in %s' %modename, 100, 0, 1) 
    num = 0
    for pte in pt:
        if opts.test and num >1000:
            break

        d =chooseD(modekey, pte, sign)
        if d != None:
            num += 1
            npi = pte.ddau2[d]
            pipx = pte.trpipx[npi]
            pipy = pte.trpipy[npi]
            pipz = pte.trpipz[npi]
            pip = sqrt(pipx**2 + pipy**2 + pipz**2) 
            hist.Fill(pip)

    hist.Draw()
    canvas_output(canvas, figname, opts.test)
    hist.Delete()
示例#11
0
文件: diff.py 项目: zhixing1996/dhad
def events(args):
    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label_A = parsed[3]
    label_B = args[3]

    for mode in modes:
        unique_file_A = get_unique_file(datatype, mode, label_A)
        unique_file_B = get_unique_file(datatype, mode, label_B)

        inputfile_A, outputfile_A = get_input_output_file(
            datatype, mode, label_A, 'sel/diff/events/%s' % label_B)

        inputfile_B, outputfile_B = get_input_output_file(
            datatype, mode, label_B, 'sel/diff/events/%s' % label_A)

        unique_file_A = get_unique_file(datatype, mode, label_A)
        unique_file_B = get_unique_file(datatype, mode, label_B)

        source = os.path.join(attr.srcselpath, 'DNTClass.C')

        ROOT.gROOT.ProcessLine('.L %s' % source)
        ROOT.gROOT.ProcessLine('DNTClass a("%s", "%s")' %
                               (inputfile_A, outputfile_A))
        ROOT.gROOT.ProcessLine('a.Skim("%s")' % unique_file_A)
        sys.stdout.write('Save as %s \n' % outputfile_A)

        ROOT.gROOT.ProcessLine('DNTClass b("%s", "%s")' %
                               (inputfile_B, outputfile_B))
        ROOT.gROOT.ProcessLine('b.Skim("%s")' % unique_file_B)
        sys.stdout.write('Save as %s \n' % outputfile_B)
示例#12
0
文件: backgrounds.py 项目: xshi/dhad
def main(opts, args):

    if args[0] == 'peak':
        process_peak(opts, args[1:])
        return

    parsed = yld.parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            if 'generic' in datatype and tag == 'single':
                process_generic_single_mode(datatype, mode, label, opts.test)
            else:
                raise ValueError(tag)
            continue
        
        script, logfile, qjobname = create_script_logfile_jobname(
            datatype, tag, mode, label, opts.test)

        bash_file = yld.create_bash_file(script, 'get_backgrounds.sh')
        tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#13
0
文件: diff.py 项目: xshi/dhad
def events(args):
    parsed = yld.parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label_A   = parsed[3]
    label_B  = args[3]

    for mode in modes:
        unique_file_A = get_unique_file(datatype, mode, label_A)
        unique_file_B = get_unique_file(datatype, mode, label_B)

        inputfile_A, outputfile_A = get_input_output_file(
            datatype, mode, label_A, 'sel/diff/events/%s' %label_B)

        inputfile_B, outputfile_B = get_input_output_file(
            datatype, mode, label_B, 'sel/diff/events/%s' %label_A)

        unique_file_A = get_unique_file(datatype, mode, label_A)
        unique_file_B = get_unique_file(datatype, mode, label_B)

        source = os.path.join(attr.srcselpath, 'DNTClass.C')

        ROOT.gROOT.ProcessLine('.L %s' % source )
        ROOT.gROOT.ProcessLine('DNTClass a("%s", "%s")'
                               %(inputfile_A, outputfile_A))
        ROOT.gROOT.ProcessLine('a.Skim("%s")' %unique_file_A)
        sys.stdout.write('Save as %s \n' % outputfile_A)        

        ROOT.gROOT.ProcessLine('DNTClass b("%s", "%s")'
                               %(inputfile_B, outputfile_B))
        ROOT.gROOT.ProcessLine('b.Skim("%s")' %unique_file_B)
        sys.stdout.write('Save as %s \n' % outputfile_B)
示例#14
0
文件: var.py 项目: xshi/dhad
def mbc(opts, args, figname):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if len(modes) > 1:
        raise ValueError(modes)

    labels = [label]
    if ',' in label:
        labels = label.split(',')

    figname = shorten_figname(figname)
    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)
    modename = attr.modes[modekey]['uname']
    frametitle = modename

    hnames = parse_opts_set(opts.set, 'legend')
    if hnames:
        hist_names = hnames.split(',')
    else:
        hist_names = labels

    nBins = 100
    Xmin = 1.83
    Xmax = 1.89
    
    hist_list = []
    for label, hist_name in zip(labels, hist_names):
        hist_title = frametitle
        hist = ROOT.TH1D(hist_name, hist_title, nBins, Xmin, Xmax)
        rootfile = get_rootfile(datatype, mode, label)
        pt = add_rootfile(rootfile, debug=opts.debug)

        ntotal = 0
        nselected = 0 
        for pte in pt:
            ntotal += 1
            d =chooseD(modekey, pte, sign, opt=label)
            if d != None:
                hist.Fill(pte.dmbc[d])
                nselected += 1
        sys.stdout.write('Selected %s out of %s. \n' %(nselected, ntotal))
        hist_list.append(hist)

    xtitle = 'mBC (GeV)' 
    legend = ROOT.TLegend(0.66, 0.8, 0.9, 0.9)
    canvas = draw_hist(hist_list, xtitle, legend)

    Logy = parse_opts_set(opts.set, 'SetLogy')
    if Logy != None:
        canvas.SetLogy(Logy)

    canvas_output(canvas, figname, opts.test)
    hist.Delete()
示例#15
0
文件: compare.py 项目: 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)
示例#16
0
def events(args):

    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if _set and 'events' in _set:
        unique_evt_label = _set.split('=')[1]

    for mode in modes:
        events = get_events_list(datatype,
                                 mode,
                                 unique_evt_label,
                                 debug=_debug)
        if _debug:
            sys.stdout.write('\ndebug: total events %s\n' % len(events))
        pt = chain_rootfile(datatype, mode, label)
        mode_key, sign = get_modekey_sign(mode)
        nselected = 0
        ntotal = len(events)
        for pte in pt:
            if found_this_event(events, pte.run, pte.event):
                d = chooseD(mode_key, pte, sign, opt=label)
                if d != None:
                    if _debug:
                        sys.stdout.write('\ndebug: selected %s %s \n' %
                                         (pte.run, pte.event))
                    nselected += 1

        sys.stdout.write(' selected %s out of %s.\n' % (nselected, ntotal))
        sys.exit()

        evtname = datatype + '_' + mode + '.evt'
        unique_A, unique_B = get_unique_list(evtname, label_A, label_B)

        for evt in unique_B:
            evt = evt.strip().split(' ')
            run = int(evt[0])
            event = int(evt[1])
            print run, event
            for pte in pt_A:
                if pte.run == run and pte.event == event:
                    print pte.ecm
            sys.exit()

        sys.exit()
        events_A, unique_file_A = get_events_set(datpath, evtname, label_A)
        events_B, unique_file_B = get_events_set(datpath, evtname, label_B)
        events_inter = events_A & events_B
        unique_A = events_A - events_inter
        unique_B = events_B - events_inter
        sys.stdout.write('Writing the unique events for mode %s ...' % mode)
        output_set_to_file(unique_A, unique_file_A)
        output_set_to_file(unique_B, unique_file_B)
        sys.stdout.write(' done.\n')
示例#17
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)
示例#18
0
文件: cuts.py 项目: xshi/dhad
def events(args):

    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if _set and 'events' in _set:
        unique_evt_label = _set.split('=')[1]

    for mode in modes:
        events = get_events_list(
            datatype, mode, unique_evt_label, debug=_debug)
        if _debug:
            sys.stdout.write('\ndebug: total events %s\n' %len(events))
        pt = chain_rootfile(datatype, mode, label)
        mode_key, sign = get_modekey_sign(mode)
        nselected = 0 
        ntotal = len(events)
        for pte in pt:
            if found_this_event(events, pte.run, pte.event):
                d = chooseD(mode_key, pte, sign, opt = label)
                if d != None:
                    if _debug:
                        sys.stdout.write('\ndebug: selected %s %s \n'
                                         % (pte.run, pte.event))
                    nselected += 1

        sys.stdout.write(' selected %s out of %s.\n' % (nselected, ntotal))
        sys.exit()

        evtname = datatype + '_' + mode + '.evt'
        unique_A, unique_B = get_unique_list(evtname, label_A, label_B)


        
        for evt in unique_B:
            evt = evt.strip().split(' ')
            run = int(evt[0])
            event = int(evt[1])
            print run, event
            for pte in pt_A:
                if pte.run == run and pte.event == event:
                    print pte.ecm
            sys.exit()
            
        sys.exit()
        events_A, unique_file_A = get_events_set(datpath, evtname, label_A)
        events_B, unique_file_B = get_events_set(datpath, evtname, label_B)
        events_inter = events_A & events_B
        unique_A = events_A - events_inter
        unique_B = events_B - events_inter
        sys.stdout.write('Writing the unique events for mode %s ...' %mode)
        output_set_to_file(unique_A, unique_file_A)
        output_set_to_file(unique_B, unique_file_B)
        sys.stdout.write(' done.\n')
示例#19
0
文件: var.py 项目: xshi/dhad
def momentum_pi0(opts, args, figname):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]


    if len(modes) > 1:
        raise ValueError(modes, 'Only handle one mode at this time!')

    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)
    modename = attr.modes[modekey]['uname']

    rootfile = get_rootfile(datatype, mode, label)
    pt = add_rootfile(rootfile, debug=opts.debug)
    #canvas  =  ROOT.TCanvas("aCanvas", "Canvas", 900, 900)

    var = 'pi0p'
    title = modename
    unit = 'GeV'
    nBins = 100
    Xmin = 0.
    Xmax = 1.
    xtitle = '#pi^{0} momentum (GeV)'
    ytitle = 'Events / (%s %s)' % ((Xmax-Xmin)/nBins, unit)

    hist = ROOT.TH1F(var, title, nBins, Xmin, Xmax)

    num = 0
    for pte in pt:
        if opts.test and num >1000:
            break

        d =chooseD(modekey, pte, sign)
        if d != None:
            num += 1
            if modekey == 1 or modekey == 203:
                npi0 = pte.ddau3[d]
            if modekey == 201:
                npi0 = pte.ddau4[d]

            pi0px = pte.pi0px[npi0]
            pi0py = pte.pi0py[npi0]
            pi0pz = pte.pi0pz[npi0]
            pi0p = sqrt(pi0px**2 + pi0py**2 + pi0pz**2) 
            hist.Fill(pi0p)

    canvas = draw_hist(hist, xtitle, ytitle)
    canvas_output(canvas, figname, label, test=opts.test)
示例#20
0
def kpimass(opts, args, figname):
    var = 'kpimass'
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if len(modes) > 1:
        raise ValueError(modes, 'Only handle one mode at this time!')

    mode = modes[0]

    if ',' in datatype:
        datatypes = datatype.split(',')
    else:
        datatypes = [datatype]

    hist_list = []
    nBins = 100
    Xmin = 0.5
    Xmax = 1.5

    labels = [label, label]
    hist_names = ['Signal MC', 'Data']

    modekey, sign = get_modekey_sign(mode)
    modename = attr.modes[modekey]['uname']
    hist_title = 'K^{-} #pi^{+} mass in %s' % modename
    for datatype, hist_name in zip(datatypes, hist_names):
        hist = ROOT.TH1D(hist_name, hist_title, nBins, Xmin, Xmax)
        evtfile = get_evtfile_kkmass(datatype,
                                     mode,
                                     label,
                                     var,
                                     test=opts.test)
        f = open(evtfile, 'r')

        for line in f:
            kpimass = float(line.split()[2])
            hist.Fill(kpimass)

        hist_list.append(hist)

    xtitle = 'M(K^{+}#pi^{-}) (GeV/c^{2})'

    legend = ROOT.TLegend(0.1, 0.8, 0.3, 0.9)
    canvas = tools.draw_hist(hist_list, xtitle, legend, reverse=True)

    canvas_output(canvas, figname, label, opts.test, outputhtml=False)
    hist.Delete()
示例#21
0
文件: backgrounds.py 项目: xshi/dhad
def bkg_names(opts, args):
    debug_ = opts.debug
    test_ = opts.test
    set_ = opts.set

    prefix = None
    if args[0] == 'peak':
        prefix = 'peak'
        args = args[1:]
    
    parsed = yld.parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    limit = None
    if set_ != None and 'min' in set_:
        min_ = set_.split('=')[1]
        limit = '>%s' %min_

    bkgmodes = 20
    if set_ != None and 'bkgmodes' in set_:
        bkgmodes = int(set_.split('=')[1])

    for mode in modes:
        tabname = 'bkg_names_%s_%s_%s'  %(
            datatype, mode, label)
        if prefix != None:
            tabname = 'bkg_names_%s_%s_%s_%s' %(
                prefix, datatype, mode, label)
        tabname = tabname.replace('/', '_')

        tab = DHadTable()
        modename = get_orgname_from_fname(mode)
        bkg_names, bkg_numbers = bkg_names_single_mode(
            datatype, mode, label, limit, bkgmodes, debug_, prefix)
        tab.column_append(bkg_names, title='Backgrounds for %s' %modename)
        tab.column_append(bkg_numbers, title='Number of Events')
        tab.sort_by_column('Number of Events', reverse=True)

        orgfooter = ': '+sys.argv[0].split('/')[-1]+\
                    ' tab backgrounds names %s %s %s ' %(
            datatype, mode, label)
        if prefix != None:
            orgfooter = ': '+sys.argv[0].split('/')[-1]+\
                        ' tab backgrounds names %s %s %s %s ' %(
                prefix, datatype, mode, label)
        
        tab.output(tabname, orgfooter=orgfooter, test=test_)
示例#22
0
文件: var.py 项目: xshi/dhad
def ksmass(opts, args, figname):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    var = 'ksmass'
    varname = 'K_{S} mass'
    unit = 'GeV'
    nBins = 100
    Xmin = 0.45
    Xmax = 0.55

    if len(modes) > 1:
        raise ValueError(modes, 'Only handle one mode at this time!')

    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)
    
    modename = attr.modes[modekey]['uname']
    histname = '%s in %s' %(varname, modename)
    rootfile = get_rootfile(datatype, mode, label)
    pt = add_rootfile(rootfile, debug=opts.debug)
    canvas  =  ROOT.TCanvas("aCanvas", "Canvas", 600, 600)
    hist = ROOT.TH1F(var, histname, nBins, Xmin, Xmax)

    ntotal = 0
    nselected = 0
    def alt_checkVetoes(mode, pte, index, opt='', sign=None):
        return True

    if modekey not in (202, 203, 204):
        raise ValueError(modekey)
    
    for pte in pt:
        ntotal += 1
        if opts.test and ntotal >1000:
            break
        
        d =chooseD(modekey, pte, sign, checkVetoes=alt_checkVetoes)
        if d != None:
            nselected += 1
            ksmass = pte.ksmass[pte.ddau1[d]]
            hist.Fill(ksmass)

    hist.Draw()
    canvas_output(canvas, figname, opts.test)
    hist.Delete()
    sys.stdout.write(' selected %s out of %s.\n' % (nselected, ntotal))
示例#23
0
def mctruth_names(opts, args):
    debug_ = opts.debug
    test_ = opts.test
    set_ = opts.set

    prefix = None
    if args[0] == 'peak':
        prefix = 'peak'
        args = args[1:]

    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    limit = None
    if set_ != None and 'min' in set_:
        min_ = set_.split('=')[1]
        limit = '>%s' % min_

    mctruthmodes = 50
    if set_ != None and 'mctruthmodes' in set_:
        mctruthmodes = int(set_.split('=')[1])

    for mode in modes:
        tabname = 'mctruth_names_%s_%s_%s' % (datatype, mode, label)
        if prefix != None:
            tabname = 'mctruth_names_%s_%s_%s_%s' % (prefix, datatype, mode,
                                                     label)
        tabname = tabname.replace('/', '_')

        tab = DHadTable()
        modename = get_orgname_from_fname(mode)
        mctruth_names, mctruth_numbers = mctruth_names_single_mode(
            datatype, mode, label, limit, mctruthmodes, debug_, prefix)

        tab.column_append(mctruth_names, title='MC Truth for %s' % modename)
        tab.column_append(mctruth_numbers, title='Number of Events')
        tab.sort_by_column('Number of Events', reverse=True)

        orgfooter = ': '+sys.argv[0].split('/')[-1]+\
                    ' tab mctruth names %s %s %s ' %(
            datatype, mode, label)
        if prefix != None:
            orgfooter = ': '+sys.argv[0].split('/')[-1]+\
                        ' tab mctruth names %s %s %s %s ' %(
                prefix, datatype, mode, label)

        tab.output(tabname, orgfooter=orgfooter, test=test_)
示例#24
0
def main(opts, args):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    debug = opts.debug
    test = opts.test

    for mode in modes:
        if opts.set and opts.set == 'interact':
            fit_sidebands_single_mode(datatype, mode, label, test)
        else:
            submit_batch_job(datatype, mode, label, opts)
示例#25
0
文件: kkmass.py 项目: xshi/dhad
def main(opts, args):
    parsed = parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    debug = opts.debug
    test = opts.test
    
    for mode in modes:
        if opts.set and opts.set == 'interact':
            single_tag_mode(datatype, mode, label, test)
        else:
            submit_batch_job(datatype, mode, label, opts)
示例#26
0
def main(opts, args):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    for mode in modes:
        sys.stdout.write('Processing mode %s ...' % mode)
        prefix = 'dir_%s' % label

        if mode == 'double_all_d0s':
            comname = '%s_%s' % (datatype, 'Double_all_D0s')
        elif mode == 'double_all_dps':
            comname = '%s_%s' % (datatype, 'Double_all_Dps')
        else:
            comname = '%s_%s' % (datatype, mode)
        finname = set_file('root',
                           comname=comname,
                           prefix=prefix,
                           extbase=attr.figpath)

        foutname = finname.replace('.root', '_trim.eps')

        comname1 = '%s_%s' % (datatype, mode.split('__')[0])
        #comname2 = '%s_%s_%s' %(datatype, tag, mode.split('__')[1])

        foutname1 = foutname.replace(comname, comname1)
        #foutname2 = foutname.replace(comname, comname2)
        #load_roofit_lib(datatype, label)
        fin = TFile.Open(finname, 'READ')

        if tag == 'single':
            canvas_name = 'canvas'
        else:
            canvas_name = 'c'

        canvas = fin.Get(canvas_name)

        pad1 = canvas.GetPrimitive(canvas_name + '_1')
        if mode == 'double_all_d0s' or mode == 'double_all_dps':
            pad1 = trim_pad2(pad1, opts)
        else:
            pad1 = trim_pad(pad1, opts)
        pad1.Draw()
        pad1.SaveAs(foutname1)
        eps2pdf(foutname1)
示例#27
0
文件: backgrounds.py 项目: xshi/dhad
def process_peak(opts, args):
    parsed = yld.parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            process_peak_generic_single_mode(datatype, mode, label, opts.test)
            continue

    script, logfile, qjobname = create_peak_script_logfile_jobname(
        datatype, tag, mode, label, opts.test)
    
    bash_file = yld.create_bash_file(script, 'get_backgrounds_peak.sh')
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#28
0
文件: multspec.py 项目: xshi/dhad
def main(opts, args):
    reweight = args[0]
    
    parsed = parse_args(args[1:])
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            if tag == 'single':
                single_tag_mode(reweight, datatype, mode, label, opts.test)
            else:
                raise ValueError(tag)
        else:
            submit_batch_job(reweight, datatype, tag, mode, label, opts)
示例#29
0
def process_peak(opts, args):
    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            process_peak_generic_single_mode(datatype, mode, label, opts.test)
            continue

    script, logfile, qjobname = create_peak_script_logfile_jobname(
        datatype, tag, mode, label, opts.test)

    bash_file = yld.create_bash_file(script, 'get_backgrounds_peak.sh')
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#30
0
def main(opts, args):
    reweight = args[0]

    parsed = parse_args(args[1:])
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            if tag == 'single':
                single_tag_mode(reweight, datatype, mode, label, opts.test)
            else:
                raise ValueError(tag)
        else:
            submit_batch_job(reweight, datatype, tag, mode, label, opts)
示例#31
0
文件: trim.py 项目: xshi/dhad
def main(opts, args):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    for mode in modes:
        sys.stdout.write('Processing mode %s ...' %mode)
        prefix = 'dir_%s' % label

        if mode == 'double_all_d0s':
            comname = '%s_%s' %(datatype, 'Double_all_D0s')
        elif mode == 'double_all_dps':
            comname = '%s_%s' %(datatype, 'Double_all_Dps')
        else:
            comname = '%s_%s' %(datatype, mode)
        finname = set_file('root', comname=comname,
                           prefix=prefix, extbase=attr.figpath)

        foutname = finname.replace('.root', '_trim.eps')
        
        comname1 = '%s_%s' %(datatype, mode.split('__')[0])
        #comname2 = '%s_%s_%s' %(datatype, tag, mode.split('__')[1])
        
        foutname1 = foutname.replace(comname, comname1)
        #foutname2 = foutname.replace(comname, comname2)
        #load_roofit_lib(datatype, label)
        fin = TFile.Open(finname, 'READ')

        if tag == 'single':
            canvas_name = 'canvas'
        else:
            canvas_name = 'c'

        canvas = fin.Get(canvas_name)
    
        pad1 = canvas.GetPrimitive(canvas_name+'_1')
        if mode == 'double_all_d0s' or mode == 'double_all_dps':
            pad1 = trim_pad2(pad1, opts)
        else:
            pad1 = trim_pad(pad1, opts)
        pad1.Draw()
        pad1.SaveAs(foutname1)
        eps2pdf(foutname1)
示例#32
0
文件: var.py 项目: xshi/dhad
def mass_kk(opts, args, figname):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if len(modes) > 1:
        raise ValueError(modes, 'Only handle one mode at this time!')

    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)
    modename = attr.modes[modekey]['uname']
    rootfile = get_rootfile(datatype, mode, label)

    pt = add_rootfile(rootfile, debug=opts.debug)
    canvas  =  ROOT.TCanvas("aCanvas", "Canvas", 600, 600)
    hist = ROOT.TH1F('kkmass', 'KK mass in %s' %modename, 100, 0, 2)
    hist.SetXTitle('M(K^{+}K^{-}) (GeV/c^{2})')
    num = 0
    for pte in pt:
        if opts.test and num >10000:
            break

        d =chooseD(modekey, pte, sign)
        if modekey != 205:
            raise NameError(modekey)
        
        if d != None:
            num += 1
            kaons = [pte.ddau1[d], pte.ddau2[d]]

            fourvecs = []
            for index in kaons:
                fourvecs.append([pte.trke[index], pte.trkpy[index],
                                 pte.trkpy[index], pte.trkpz[index]])

            kkmass = invmass(fourvecs[0], fourvecs[1])
            hist.Fill(kkmass)

    hist.Draw()
    canvas_output(canvas, figname, label, opts.test, outputroot=True)
    hist.Delete()
示例#33
0
文件: var.py 项目: 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)
示例#34
0
def main(opts, args):

    if args[0] == 'names':
        return mctruth_names(opts, args[1:])

    tabname = 'mctruth_' + '_'.join(args).replace('/', '_')
    debug = opts.debug
    test = opts.test

    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if args[0] == 'generic':
        return mctruth_generic_ddbar(tabname, datatype, tag, modes, label,
                                     test, debug)
    else:
        raise NameError(args)
示例#35
0
def main(opts, args):

    if args[0] == 'names':
        return bkg_names(opts, args[1:])

    tabname = 'bkg_' + '_'.join(args).replace('/', '_')
    debug = opts.debug
    test = opts.test

    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if args[0] == 'generic':
        return bkg_generic_ddbar(tabname, datatype, tag, modes, label, test,
                                 debug)
    elif args[0] == 'generic/cont':
        return bkg_generic_cont(tabname, datatype, tag, modes, label, test,
                                debug)
    elif args[0] == 'generic/ddbar':
        return bkg_generic_ddbar(tabname, datatype, tag, modes, label, test,
                                 debug)

    tab = DHadTable()
    row = [
        'Mode', 'Number of DDbar Backgrounds',
        'Number of Continuum Backgrounds'
    ]
    tab.row_append(row)
    for mode in modes:
        modename = mode.replace('Single_', '')
        ddbarnum = get_bkg_total('generic/ddbar', mode, label, debug)
        contnum = get_bkg_total('generic/cont', mode, label, debug)
        row = [modename, ddbarnum, contnum]
        tab.row_append(row)

    tab.column_trim('Number of DDbar Backgrounds', rnd='1')
    tab.column_trim('Number of Continuum Backgrounds', rnd='1')
    tab.output(tabname, test=test)
示例#36
0
文件: var.py 项目: xshi/dhad
def momentum_K(opts, args, figname):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if len(modes) > 1:
        raise ValueError(modes, 'Only handle one mode at this time!')

    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)
    modename = attr.modes[modekey]['uname']
    rootfile = get_rootfile(datatype, mode, label)
    pt = add_rootfile(rootfile, debug=opts.debug)
    canvas  =  ROOT.TCanvas("aCanvas", "Canvas")

    pmax = 1
    if modekey == 0:
        pmax = 1.5 
    
    hist = ROOT.TH1F('K', 'K momentum in %s' %modename, 100, 0, pmax) 
    num = 0
    for pte in pt:
        if opts.test and num >1000:
            break

        d =chooseD(modekey, pte, sign)
        if d != None:
            num += 1
            nK = pte.ddau1[d]            

            Kpx = pte.trkpx[nK]
            Kpy = pte.trkpy[nK]
            Kpz = pte.trkpz[nK]
            Kp = sqrt(Kpx**2 + Kpy**2 + Kpz**2) 
            hist.Fill(Kp)

    hist.Draw()
    canvas_output(canvas, figname, opts.test)
    hist.Delete()
示例#37
0
def main(opts, args):
    parsed = parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            if tag == 'single':
                single_tag_mode(datatype, mode, label, opts.test)
            else:
                raise ValueError(tag)
            continue

        script, logfile, qjobname = create_script_logfile_jobname(
            opts, datatype, tag, mode, label)

        bash_file = create_bash_file(opts, datatype, label,
                                     script, 'trkmtm.sh', 'sel')
        tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#38
0
文件: kssideband.py 项目: xshi/dhad
def main(opts, args):
    parsed = parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            if tag == 'single':
                single_tag_mode(datatype, mode, label, opts.test)
            else:
                raise ValueError(tag)
            continue

        script, logfile, qjobname = create_script_logfile_jobname(
            datatype, tag, mode, label, opts)

        bash_file = create_bash_file(opts, datatype, label,
                                     script, 'kssideband.sh', 'sel')
        tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#39
0
文件: diff.py 项目: xshi/dhad
def events(args):
    parsed = yld.parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label_A   = parsed[3]
    label_B  = args[3]

    datpath = attr.datpath
    for mode in modes:
        modename = mode.replace('Single_', '')
        evtname = datatype + '_' + mode + '.evt'
        events_A, unique_file_A = get_events_set(datpath, evtname, label_A)
        events_B, unique_file_B = get_events_set(datpath, evtname, label_B)
        events_inter = events_A & events_B
        unique_A = events_A - events_inter
        unique_B = events_B - events_inter
        sys.stdout.write('Writing the unique events for mode %s ...' %mode)
        output_set_to_file(unique_A, unique_file_A)
        output_set_to_file(unique_B, unique_file_B)
        sys.stdout.write(' done.\n')
示例#40
0
文件: diff.py 项目: zhixing1996/dhad
def events(args):
    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label_A = parsed[3]
    label_B = args[3]

    datpath = attr.datpath
    for mode in modes:
        modename = mode.replace('Single_', '')
        evtname = datatype + '_' + mode + '.evt'
        events_A, unique_file_A = get_events_set(datpath, evtname, label_A)
        events_B, unique_file_B = get_events_set(datpath, evtname, label_B)
        events_inter = events_A & events_B
        unique_A = events_A - events_inter
        unique_B = events_B - events_inter
        sys.stdout.write('Writing the unique events for mode %s ...' % mode)
        output_set_to_file(unique_A, unique_file_A)
        output_set_to_file(unique_B, unique_file_B)
        sys.stdout.write(' done.\n')
示例#41
0
文件: kkmass2.py 项目: xshi/dhad
def main(opts, args):
    parsed = parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    binbase = parse_opts_set(opts.set, 'binbase')
    binwidth =  parse_opts_set(opts.set, 'binwidth')
    numbins = parse_opts_set(opts.set, 'numbins')

    for i in xrange(numbins):
        lowmass = binbase+i*binwidth
        highmass = binbase+(i+1)*binwidth
        
        for mode in modes:
            if opts.set and 'interact' in opts.set:
                fit_single_mode(datatype, mode, label,
                                lowmass, highmass, opts.test)
            else:
                submit_batch_job(datatype, mode, label, lowmass,
                                 highmass, opts)
示例#42
0
文件: backgrounds.py 项目: xshi/dhad
def main(opts, args):
    parsed = parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    debug = opts.debug
    test = opts.test

    if 'allinone' in opts.set:
        if  'interact' in opts.set:
            fit_backgrounds_single(datatype, modes, label, test)
        else:
            submit_batch_job_allinone(datatype, modes, label, test)
        return
    
    for mode in modes:
        if opts.set and opts.set == 'interact':
            fit_backgrounds_single_mode(datatype, mode, label, test)
        else:
            submit_batch_job(datatype, mode, label, test)
示例#43
0
文件: backgrounds.py 项目: xshi/dhad
def main(opts, args):

    if args[0] == 'names':
        return bkg_names(opts, args[1:])
    
    tabname = 'bkg_' + '_'.join(args).replace('/', '_')
    debug = opts.debug
    test = opts.test

    parsed = yld.parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    if args[0] == 'generic':
        return bkg_generic_ddbar(tabname, datatype,
                                 tag, modes, label, test, debug)
    elif args[0] == 'generic/cont':
        return bkg_generic_cont(tabname, datatype,
                                tag, modes, label, test, debug)
    elif args[0] == 'generic/ddbar':
        return bkg_generic_ddbar(tabname, datatype,
                                tag, modes, label, test, debug)

    tab = DHadTable()
    row = ['Mode', 'Number of DDbar Backgrounds',
           'Number of Continuum Backgrounds']
    tab.row_append(row)
    for mode in modes:
        modename = mode.replace('Single_', '')
        ddbarnum = get_bkg_total('generic/ddbar', mode, label, debug)
        contnum = get_bkg_total('generic/cont', mode, label, debug)
        row = [modename, ddbarnum, contnum]
        tab.row_append(row)

    tab.column_trim('Number of DDbar Backgrounds', rnd='1')
    tab.column_trim('Number of Continuum Backgrounds', rnd='1')
    tab.output(tabname, test=test)
示例#44
0
def main(opts, args):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    debug = opts.debug
    test = opts.test

    if 'allinone' in opts.set:
        if 'interact' in opts.set:
            fit_backgrounds_single(datatype, modes, label, test)
        else:
            submit_batch_job_allinone(datatype, modes, label, test)
        return

    for mode in modes:
        if opts.set and opts.set == 'interact':
            fit_backgrounds_single_mode(datatype, mode, label, test)
        else:
            submit_batch_job(datatype, mode, label, test)
示例#45
0
def main(opts, args):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    binbase = parse_opts_set(opts.set, 'binbase')
    binwidth = parse_opts_set(opts.set, 'binwidth')
    numbins = parse_opts_set(opts.set, 'numbins')

    for i in xrange(numbins):
        lowmass = binbase + i * binwidth
        highmass = binbase + (i + 1) * binwidth

        for mode in modes:
            if opts.set and 'interact' in opts.set:
                fit_single_mode(datatype, mode, label, lowmass, highmass,
                                opts.test)
            else:
                submit_batch_job(datatype, mode, label, lowmass, highmass,
                                 opts)
示例#46
0
文件: var.py 项目: xshi/dhad
def mass_pi0(opts, args, figname):
    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    if len(modes) > 1:
        raise ValueError(modes, 'Only handle one mode at this time!')

    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)
    modename = attr.modes[modekey]['uname']
    rootfile = get_rootfile(datatype, mode, label)
    print rootfile, label
    sys.exit()
    pt = add_rootfile(rootfile, debug=opts.debug)
    canvas  =  ROOT.TCanvas("aCanvas", "Canvas")
    hist = ROOT.TH1F('pi0mass', '#pi^{0} mass in %s' %modename, 100, 0.1, 0.2) 
    num = 0
    for pte in pt:
        if opts.test and num >1000:
            break

        d =chooseD(modekey, pte, sign)
        if d != None:
            num += 1
            if modekey == 1 or modekey == 203:
                npi0 = pte.ddau3[d]
            if modekey == 201:
                npi0 = pte.ddau4[d]

            pi0mass = pte.pi0mass[npi0]
            hist.Fill(pi0mass)

    hist.Draw()
    canvas_output(canvas, figname, opts.test)
    hist.Delete()
示例#47
0
文件: crossfeeds.py 项目: xshi/dhad
def entry(opts, args):

    parsed = yld.parse_args(args)

    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]

    for mode in modes:
        if opts.set and opts.set == 'interact':
            if datatype == 'signal' and tag == 'single':
                process_signal_single_mode(mode, label, opts.test)
            else:
                raise ValueError(tag)
            continue
        
        script, logfile, qjobname = create_script_logfile_jobname(
            opts, datatype, tag, mode, label)

        bash_file = yld.create_bash_file(
            opts, datatype, label, script, 'get_crossfeeds.sh')
        tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#48
0
def main(opts, args):

    var = args[0]
    parsed = yld.parse_args(args[1:])

    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]
    
    for mode in modes:
        if opts.set and opts.set == 'interact':
            if tag == 'single':
                single_tag_mode(var, datatype, mode, label, opts.test)
            else:
                raise ValueError(tag)
            continue

        script, logfile, qjobname = create_script_logfile_jobname(
            var, datatype, tag, mode, label, opts.test)

        bash_file = yld.create_bash_file(script, 'get_var.sh')
        tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#49
0
文件: parse.py 项目: xshi/dhad
def runs(args):
    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    unique_evt_label = label 

    datatype = 'data'
    run_event_set = Set([])
    for mode in attr.single_mode_list:
        evtname = '%s_%s_unqiue_%s.evt' %(datatype, mode, label)
        evtpath = os.path.join(attr.datpath, 'evt', label, 'events')
        unique_file = os.path.join(evtpath, evtname)
        f = UserFile(unique_file)
        events = Set(f.data)
        run_event_set.update(events)


    fe = EventsFile()
    fe.data = list(run_event_set)
    fe.parse()

    tab = DHadTable()
    row = ['Dataset', 'Run', 'Number of Events']
    tab.row_append(row)
    for run, num in sorted(fe.runs.iteritems()):
        dataset = get_dataset_by_run(run)
        row = [dataset, run, num]
        tab.row_append(map(str, row))

    if _test:
        tab.output()
        sys.stdout.write('\ntest: Will write to %s\n' %_tabname)
    else:
        tab.output(_tabname)
示例#50
0
文件: parse.py 项目: zhixing1996/dhad
def runs(args):
    parsed = yld.parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]

    unique_evt_label = label

    datatype = 'data'
    run_event_set = Set([])
    for mode in attr.single_mode_list:
        evtname = '%s_%s_unqiue_%s.evt' % (datatype, mode, label)
        evtpath = os.path.join(attr.datpath, 'evt', label, 'events')
        unique_file = os.path.join(evtpath, evtname)
        f = UserFile(unique_file)
        events = Set(f.data)
        run_event_set.update(events)

    fe = EventsFile()
    fe.data = list(run_event_set)
    fe.parse()

    tab = DHadTable()
    row = ['Dataset', 'Run', 'Number of Events']
    tab.row_append(row)
    for run, num in sorted(fe.runs.iteritems()):
        dataset = get_dataset_by_run(run)
        row = [dataset, run, num]
        tab.row_append(map(str, row))

    if _test:
        tab.output()
        sys.stdout.write('\ntest: Will write to %s\n' % _tabname)
    else:
        tab.output(_tabname)
示例#51
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')
示例#52
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)
示例#53
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)
示例#54
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)