Exemplo n.º 1
0
def process_signal_single_mode(mode, label, test):
    datatype = 'signal'
    prefix = 'dir_'+label
    sys.stdout.write('Processing crossfeeds for %s ...\n' %mode)
    sys.stdout.flush()
    
    files = {}
    for dbarmode in attr.single_mode_list:
        bkgname = '%s_%s_fakes_%s.evt' % (datatype, mode, dbarmode)
        bkgfile  = tools.set_file(
            extbase=attr.bkgpath, prefix=prefix, comname=bkgname)
        files[dbarmode] = open(bkgfile, 'w')

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

    modekey, sign = tools.get_modekey_sign(mode)

    t_iterstart = time.time()
    entries = 0
    for pte in ifilter(lambda x: x.ecm > 3.7, pt):
        entries += 1
        if test and entries > 1000:
            break

        otherside = tools.mcDmodeFixRad(tools.makeDDecaySubTree(pte, -sign)[0].mcDmode())
        for dbarmode in attr.single_mode_list:
            dbarmodekey, dbarsign = tools.get_modekey_sign(dbarmode)
            x = (modekey, sign)
            y = (dbarmodekey, dbarsign)
            considerevt = considerThisEvent(x, y, otherside)
            if not considerevt:
                continue
            mbc = 1.84
            d = tools.cuts.chooseD(y[0], pte, y[1])
            passed = False
            if d != None and tools.cuts.passDE(d, pte):
                passed = True; mbc = pte.dmbc[d]
            if x == (1,1) and y == (1,-1) and passed:
                print tools.mcdmodetostring(pte.mcdmode), tools.mcdmodetostring(pte.mcdbmode)

            files[dbarmode].write('%.5f %.5f %d\n' % (mbc, pte.ecm/2, int(passed)))

    pt.Delete()
    for f in files.values():
        f.close()

    dur = tools.duration_human(time.time()-t_iterstart)
    sys.stdout.write(' done %s.\n' %dur)
Exemplo n.º 2
0
def output_kssideband(pt, mode, selfile, label, test=False):
    ntotal = 0
    nselected = 0
    mode_key, sign = tools.get_modekey_sign(mode)
    opt = 'kssideband'
    if '/srs' in label:
        opt += '_srs'
    fo = open(selfile , 'w')
    for pte in pt:
        ntotal += 1
        if test and nselected >= 30:
            break 
        if pte.ecm < 3.7:
            continue
        if sign != None: # single tag
            d = tools.cuts.chooseD(mode_key, pte, sign, opt=opt)
            if d != None:
                mbc = pte.dmbc[d]
                if mbc > 1.83 and mbc < 1.89: 
                    fo.write('%.5f %.5f %d\n' % (mbc, pte.ecm/2, pte.dcsign[d]))
                    nselected = nselected + 1
                    
        else: # double tag
            raise "Not ready!"

    fo.close()
    sys.stdout.write('Saved as %s \n' %selfile)
    pt.Delete()

    return nselected, ntotal
Exemplo n.º 3
0
def output_var_pi0mass(pt, mode, evtfile, label, test=False):
    nselected = 0
    ntotal = 0
    modekey, sign = tools.get_modekey_sign(mode)
    alt_deltae = None
    opt = ''
    if '/desideband' in label:
        side = label.split('/desideband_')[1]
        alt_deltae = attr.desideband(modekey, side)

    fo = open(evtfile, 'w')
    for pte in pt:
        if test and nselected > 10:
            break

        ntotal += 1
        if sign != None:  # single tag
            d = chooseD(modekey, pte, sign, alt_deltae=alt_deltae, opt=opt)
            if d != None:
                nselected += 1
                if modekey == 1 or modekey == 203:
                    npi0 = pte.ddau3[d]
                if modekey == 201:
                    npi0 = pte.ddau4[d]

                pi0mass = pte.pi0mass[npi0]
                fo.write('%s\n' % pi0mass)
        else:  # double tag
            raise NameError
    fo.close()
    return nselected, ntotal
Exemplo n.º 4
0
def output_var_mass_kk(pt, mode, evtfile, label, test=False):
    nselected = 0
    ntotal = 0
    modekey, sign = tools.get_modekey_sign(mode)
    alt_deltae = None
    opt = ''

    modedict = {}
    fo = open(evtfile, 'w')
    for pte in pt:
        if test and nselected > 10:
            break

        ntotal += 1
        if sign == None:
            raise ValueError(sign)

        d = chooseD(modekey, pte, sign, alt_deltae=alt_deltae, opt=opt)
        if d != None:
            nselected += 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])
            fo.write('%s\n' % kkmass)

    fo.close()
    pt.Delete()
    return nselected, ntotal
Exemplo n.º 5
0
def output_var_mctruth(pt, mode, evtfile, label, test=False):
    nselected = 0
    ntotal = 0
    modekey, sign = tools.get_modekey_sign(mode)
    alt_deltae = None
    opt = ''
    if '/desideband' in label:
        side = label.split('/desideband_')[1]
        alt_deltae = attr.desideband(modekey, side)

    if '/kssideband' in label:
        opt = 'kssideband'

    modedict = {}
    for pte in pt:
        if test and nselected > 10:
            break

        ntotal += 1
        if sign != None:  # single tag
            d = chooseD(modekey, pte, sign, alt_deltae=alt_deltae, opt=opt)
            if d != None:
                nselected += 1
                count_mcdmodes(modedict, pte.mcdmode, pte.mcdbmode)

        else:  # double tag
            raise NameError

    pt.Delete()
    output_modedict(modedict, evtfile)
    return nselected, ntotal
Exemplo n.º 6
0
def output_trkmtm(pt, mode, selfile, label, test=False):
    modekey, signs = tools.get_modekey_sign(mode)
    sname = attr.modes[modekey]['sname'].lower()

    if sname == 'kpipi0':
        nselected, ntotal = output_trkmtm_kpipi0(
            pt, mode, selfile, label, test)
    elif sname == 'k3pi':
        nselected, ntotal = output_trkmtm_k3pi(
            pt, mode, selfile, label, test)
    elif sname == 'kpipi':
        nselected, ntotal = output_trkmtm_kpipi(
            pt, mode, selfile, label, test)
    elif sname == 'kpipipi0':
        nselected, ntotal = output_trkmtm_kpipipi0(
            pt, mode, selfile, label, test)
    elif sname == 'kspipi0':
        nselected, ntotal = output_trkmtm_kspipi0(
            pt, mode, selfile, label, test)
    elif sname == 'ks3pi':
        nselected, ntotal = output_trkmtm_ks3pi(
            pt, mode, selfile, label, test)
    elif sname == 'kkpi':
        nselected, ntotal = output_trkmtm_kkpi(
            pt, mode, selfile, label, test)
    else:
        raise NameError(sname)

    return nselected, ntotal
Exemplo n.º 7
0
def create_python_script(opts, datatype, mode, label, lowmass, highmass):
    content = '''#!/usr/bin/env python

from fit import kkmass2

kkmass2.fit_single_mode("%s", "%s", "%s", %s, %s, %s)

''' % (datatype, mode, label, lowmass, highmass, opts.test)

    mode_sign = tools.get_modekey_sign(mode)

    ms = tools.pair_to_str(mode_sign)

    filename = 'fit-%s.py' % ms

    filename = filename.replace('/', '-')

    file_ = os.path.join(attr.datpath, datatype, label, 'src',
                         'kkmass2/%s_%s' % (lowmass, highmass), filename)

    verbose = opts.verbose
    if opts.test:
        verbose = 1

    f = UserFile()
    f.append(content)
    f.output(file_, verbose=verbose)
    os.chmod(file_, 0755)
    return filename
Exemplo n.º 8
0
def create_python_script(opts, dt_type, mode, label):
    content = '''#!/usr/bin/env python

from fit import sidebands

sidebands.fit_sidebands_single_mode("%s", "%s", "%s", %s)

''' % (dt_type, mode, label, opts.test)

    mode_sign = tools.get_modekey_sign(mode)

    ms = tools.pair_to_str(mode_sign)

    filename = 'sidebands-%s-%s-%s.py' % (dt_type, ms, label)

    filename = filename.replace('/', '-')

    file_ = os.path.join(attr.datpath, dt_type, label, 'src', filename)

    verbose = opts.verbose
    if opts.test:
        verbose = 1

    f = UserFile()
    f.append(content)
    f.output(file_, verbose=verbose)
    os.chmod(file_, 0755)
    return filename
Exemplo n.º 9
0
Arquivo: var.py Projeto: 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)
Exemplo n.º 10
0
def main(opts, args):
    sys.stdout.write('dhad.gen.subset ... ')
    sys.stdout.flush()

    parsed = parse_args(args)
    datatype = parsed[0]
    tag = parsed[1]
    modes = parsed[2]
    label = parsed[3]
    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)

    input_label = label.split('/')[0]
    children = label.split('/')[1]

    infile = get_rootfile(datatype, mode, input_label)
    outfile = get_rootfile(datatype, mode, label, opt='Create')

    if opts.test:
        outfile += '.test'
        sys.stdout.write('Input rootfile: %s \n' % infile)
        sys.stdout.write('Output rootfile: %s \n' % outfile)

    pt = add_rootfile(infile)
    nselected, ntotal = copy_events(pt, outfile, sign, children, opts.test)
    sys.stdout.write(' selected %s out of %s.\n' % (nselected, ntotal))
    sys.stdout.flush()
Exemplo n.º 11
0
def create_script_logfile_jobname(var, datatype, tag, mode, label, test):
    logname = '%s_%s.log' %(datatype, mode)
    logpath = os.path.join(attr.yldlogpath, label, 'var', var)
    logfile = tools.set_file(extbase=logpath, comname=logname)

    content =  '''#!/usr/bin/env python

from yld import var

var.single_tag_mode("%s", "%s", "%s", "%s", test=%s)

'''% (var, datatype, mode, label, test)

    mode, sign = tools.get_modekey_sign(mode)

    if tag == 'single':
        if sign == 1:
            sign = 'p'
        else:
            sign = 'm'
        filename = 'var-%s-%s-m%s-%s-%s.py' % (datatype, tag, mode, sign, label)
        qjobname = 'var%s,%s' % (mode, sign)
    else:
        filename = 'var-%s-%s-m%s-%s-%s.py' % (datatype, tag, mode[0], mode[1], label)
        qjobname = 'var%s,%s' % (mode[0], mode[1])

    file_ = os.path.join(attr.base, 'src', attr.src, 'yld', filename)

    f = UserFile()
    f.data.append(content) 
    f.output(file_)
    os.chmod(file_, 0755)

    return filename, logfile, qjobname
Exemplo n.º 12
0
Arquivo: kkmass2.py Projeto: xshi/dhad
def create_python_script(opts, datatype, mode, label, lowmass, highmass):
    content =  '''#!/usr/bin/env python

from fit import kkmass2

kkmass2.fit_single_mode("%s", "%s", "%s", %s, %s, %s)

'''% (datatype, mode, label, lowmass, highmass, opts.test)

    mode_sign = tools.get_modekey_sign(mode)

    ms = tools.pair_to_str(mode_sign)

    filename = 'fit-%s.py' % ms

    filename = filename.replace('/', '-')
    
    file_ = os.path.join(attr.datpath, datatype, label, 'src',
                         'kkmass2/%s_%s' % (lowmass, highmass) , filename)

    verbose = opts.verbose
    if opts.test:
        verbose = 1
        
    f = UserFile()
    f.append(content) 
    f.output(file_, verbose=verbose)
    os.chmod(file_, 0755)
    return filename
Exemplo n.º 13
0
Arquivo: var.py Projeto: 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()
Exemplo n.º 14
0
def create_python_script(opts, dt_type, mode, label):
    content =  '''#!/usr/bin/env python

from fit import sidebands

sidebands.fit_sidebands_single_mode("%s", "%s", "%s", %s)

'''% (dt_type, mode, label, opts.test)

    mode_sign = tools.get_modekey_sign(mode)

    ms = tools.pair_to_str(mode_sign)

    filename = 'sidebands-%s-%s-%s.py' % (dt_type, ms, label)

    filename = filename.replace('/', '-')
    
    file_ = os.path.join(attr.datpath, dt_type, label, 'src', filename)
    
    verbose = opts.verbose
    if opts.test:
        verbose = 1

    f = UserFile()
    f.append(content) 
    f.output(file_, verbose=verbose)
    os.chmod(file_, 0755)
    return filename
Exemplo n.º 15
0
Arquivo: subset.py Projeto: xshi/dhad
def main(opts, args):
    sys.stdout.write('dhad.gen.subset ... ')
    sys.stdout.flush()
    
    parsed = parse_args(args)
    datatype  = parsed[0]
    tag       = parsed[1]
    modes     = parsed[2]
    label     = parsed[3]
    mode = modes[0]
    modekey, sign = get_modekey_sign(mode)

    input_label = label.split('/')[0]
    children = label.split('/')[1]
        
    infile = get_rootfile(datatype, mode, input_label)
    outfile = get_rootfile(datatype, mode, label, opt='Create')

    if opts.test:
        outfile += '.test'
        sys.stdout.write('Input rootfile: %s \n' % infile)
        sys.stdout.write('Output rootfile: %s \n' % outfile)
    
    pt = add_rootfile(infile)
    nselected, ntotal = copy_events(pt, outfile, sign, children, opts.test)
    sys.stdout.write(' selected %s out of %s.\n' % (nselected, ntotal))
    sys.stdout.flush()
Exemplo n.º 16
0
Arquivo: var.py Projeto: 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()
Exemplo n.º 17
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')
Exemplo n.º 18
0
Arquivo: cuts.py Projeto: 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')
Exemplo n.º 19
0
Arquivo: var.py Projeto: 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)
Exemplo n.º 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()
Exemplo n.º 21
0
Arquivo: var.py Projeto: 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))
Exemplo n.º 22
0
def submit_batch_job(datatype, tag, mode, label, opts):
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)
    pyline = 'from sel import multcand; multcand.%s_tag_mode("%s", "%s", "%s", test=%s)'% (tag, datatype, mode, label, opts.test)

    bash_file_name = 'multcand-%s.sh' % ms 
    bash_file = create_bash_file_pyline(opts, label, datatype, pyline,
                                        bash_file_name, subdir='sel')
    logname = '%s_%s.txt' %(datatype.replace('/', '_'), mode)
    logpath = os.path.join(attr.logpath, label, 'multcand')
    logfile = tools.set_file(extbase=logpath, comname=logname)
    qjobname = 'sel%s' % ms

    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 23
0
def submit_batch_job(datatype, tag, mode, label, opts):
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    pyline = 'import yld; yld.%s_tag_mode("%s", "%s", "%s", test=%s)'% (
        tag, datatype, mode, label, opts.test)

    bash_file_name = 'get-yld.sh' 
    bash_file = create_bash_file_pyline(opts, label, datatype, pyline,
                                        bash_file_name)
    logname = '%s_%s.txt' %(datatype.replace('/', '_'), mode)
    logpath = os.path.join(attr.logpath, label, 'yld')
    logfile = tools.set_file(extbase=logpath, comname=logname)
    qjobname = 'sel%s' % ms

    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 24
0
Arquivo: kpimass.py Projeto: xshi/dhad
def submit_batch_job(datatype, mode, label, lowmass, highmass, opts):
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    pyline = 'from fit import kpimass; kpimass.fit_single_mode("%s", "%s", "%s", %s, %s, %s)' % (datatype, mode, label, lowmass, highmass, opts.test)

    bash_file_name = 'kpimass-fit-%s.sh' % ms
    
    bash_file = create_bash_file_pyline(opts, label, datatype, pyline,
                                        bash_file_name)
    logname = '%s_%s.txt' %(datatype.replace('/', '_'), mode)
    
    prefix='dir_%s/kpimass/%s_%s' % (label, lowmass, highmass)
    logfile = tools.set_file(extbase=attr.logpath, prefix=prefix, comname=logname)
    qjobname = 'kpi%s' % ms
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 25
0
Arquivo: kkmass2.py Projeto: xshi/dhad
def submit_batch_job(datatype, mode, label, lowmass, highmass, opts):
    script = create_python_script(opts, datatype, mode, label, lowmass, highmass)

    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    bash_file_name = 'fit-%s.sh' % ms
    bash_file = create_bash_file(opts, label, datatype, script, bash_file_name,
                                 subdir='kkmass2/%s_%s' % (lowmass, highmass))

    logname = '%s_%s.txt' %(datatype.replace('/', '_'), mode)
    
    prefix='dir_%s/kkmass2/%s_%s' % (label, lowmass, highmass)
    logfile = tools.set_file(extbase=attr.logpath, prefix=prefix, comname=logname)
    qjobname = 'kkm%s' % ms
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 26
0
Arquivo: kkmass.py Projeto: xshi/dhad
def submit_batch_job(datatype, mode, label, opts):
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    script_name =  'kkmass-%s.py' % ms 
    script = create_python_script(opts, script_name, datatype, mode, label)
    
    bash_file_name = 'kkmass-%s.sh' % ms
    bash_file = create_bash_file(opts, label, datatype, script, bash_file_name,
                                 subdir='sel')

    logname = '%s_%s.txt' %(datatype.replace('/', '_'), mode)
    logpath = os.path.join(attr.logpath, label, 'sel', 'kkmass')
    logfile = tools.set_file(extbase=logpath, comname=logname)
    qjobname = 'sel%s' % ms

    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 27
0
def submit_batch_job(datatype, mode, label, opts):
    script = create_python_script(opts, datatype, mode, label)
    
    dt =  datatype.replace('/', '-')
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    bash_file_name = 'fit-sidebands-%s-%s.sh' % (dt, ms)
    #bash_file = create_bash_file(script, bash_file_name, 'setpyroot l')
    bash_file = create_bash_file(opts, label, datatype, script, bash_file_name)

    logname = '%s_%s.txt' %(datatype.replace('/', '_'), mode)
    logfile = tools.set_file(extbase=attr.logpath, prefix='dir_'+label,
                             comname=logname)
    qjobname = 'sdb%s' % ms

    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 28
0
def output_mbc_ebeam(pt, mode, label, bkgfile, test):
    cut_opt = 'nosig'
    if 'noxfeed' in label:
        cut_opt += '_noxfeed'

    modekey, sign = tools.get_modekey_sign(mode)

    ntotal = 0
    npassed = 0 
    nfaked = 0

    fakemodes = {}
    modefile = bkgfile.replace('.evt', '.txt')
    
    if test:
        bkgfile = '%s.test' % bkgfile
        modefile = '%s.test' % modefile
        sys.stdout.write('\ntest: bkgfile %s\n' %bkgfile)
        sys.stdout.write('\ntest: modefile %s\n' %modefile)

    fo = open(bkgfile , 'w')

    for pte in pt:
        ntotal += 1
        if sign != None: # single tag 
            d = tools.cuts.chooseD(modekey, pte, sign)
            if d != None:
                npassed +=  1
            d = tools.cuts.chooseD(modekey, pte, sign, opt=cut_opt)
            if d != None:
                nfaked += 1
                mbc = tools.cuts.get_mBC(modekey, pte, d, opt = '')                
                fo.write('%.5f %.5f %d\n' % (mbc, pte.ecm/2, pte.dcsign[d]))
                count_fakemodes(fakemodes, pte.mcdmode, pte.mcdbmode)
        else: 
            raise NameError(sign)

        if test and ntotal > 1000:
            break

    fo.close()
    pt.Delete()
    output_fakemodes(fakemodes, modefile)
    
    return nfaked, npassed, ntotal
Exemplo n.º 29
0
def output_mbc_ebeam(pt, mode, label, bkgfile, test):
    cut_opt = 'nosig'
    if 'noxfeed' in label:
        cut_opt += '_noxfeed'

    modekey, sign = tools.get_modekey_sign(mode)

    ntotal = 0
    npassed = 0
    nfaked = 0

    fakemodes = {}
    modefile = bkgfile.replace('.evt', '.txt')

    if test:
        bkgfile = '%s.test' % bkgfile
        modefile = '%s.test' % modefile
        sys.stdout.write('\ntest: bkgfile %s\n' % bkgfile)
        sys.stdout.write('\ntest: modefile %s\n' % modefile)

    fo = open(bkgfile, 'w')

    for pte in pt:
        ntotal += 1
        if sign != None:  # single tag
            d = tools.cuts.chooseD(modekey, pte, sign)
            if d != None:
                npassed += 1
            d = tools.cuts.chooseD(modekey, pte, sign, opt=cut_opt)
            if d != None:
                nfaked += 1
                mbc = tools.cuts.get_mBC(modekey, pte, d, opt='')
                fo.write('%.5f %.5f %d\n' % (mbc, pte.ecm / 2, pte.dcsign[d]))
                count_fakemodes(fakemodes, pte.mcdmode, pte.mcdbmode)
        else:
            raise NameError(sign)

        if test and ntotal > 1000:
            break

    fo.close()
    pt.Delete()
    output_fakemodes(fakemodes, modefile)

    return nfaked, npassed, ntotal
Exemplo n.º 30
0
def output_run_event(pt, mode, test=False):

    run_event_list = []
    mode_key, sign = tools.get_modekey_sign(mode)
    nselected = 0
    for pte in pt:
        if sign != None: # single tag 
            d = tools.cuts.chooseD(mode_key, pte, sign, opt = '')
            if d != None:
                nselected += 1
                run_event_list.append('%s:%s' %(pte.run, pte.event))
        else:
            raise NameError

        if test and nselected > 10:
            break

    return run_event_list
Exemplo n.º 31
0
def submit_batch_job(datatype, mode, label, opts):
    script = create_python_script(opts, datatype, mode, label)

    dt = datatype.replace('/', '-')
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    bash_file_name = 'fit-sidebands-%s-%s.sh' % (dt, ms)
    #bash_file = create_bash_file(script, bash_file_name, 'setpyroot l')
    bash_file = create_bash_file(opts, label, datatype, script, bash_file_name)

    logname = '%s_%s.txt' % (datatype.replace('/', '_'), mode)
    logfile = tools.set_file(extbase=attr.logpath,
                             prefix='dir_' + label,
                             comname=logname)
    qjobname = 'sdb%s' % ms

    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 32
0
def create_script_logfile_jobname(datatype, tag, mode, label, opts):
    logname = '%s_%s.log' %(datatype, mode)
    logpath = os.path.join(attr.sellogpath, label, 'kssideband')
    logfile = tools.set_file(extbase=logpath, comname=logname)

    content =  '''#!/usr/bin/env python

from sel import kssideband

kssideband.single_tag_mode("%s", "%s", "%s", test=%s)

'''% (datatype, mode, label, opts.test)

    mode, sign = tools.get_modekey_sign(mode)

    if tag == 'single':
        if sign == [-1, 1]:
            filename = 'sel-%s-%s-m%s-%s.py' % (datatype, tag, mode, label)
            qjobname = 'sel%s' % mode 
        else:
            if sign == 1:
                sign = 'p'
            else: 
                sign = 'm'
            filename = 'sel-%s-%s-m%s-%s-%s.py' % (
                datatype, tag, mode, sign, label)
            qjobname = 'sel%s,%s' % (mode, sign)
            
    else:
        filename = 'sel-%s-%s-m%s-%s-%s.py' % (
            datatype, tag, mode[0], mode[1], label)
        qjobname = 'sel%s,%s' % (mode[0], mode[1])

    file_ = os.path.join(attr.datpath, datatype, label, 'src', 'sel', filename)

    verbose = opts.verbose
    if opts.test:
        verbose = 1
    f = UserFile()
    f.data.append(content) 
    f.output(file_, verbose=verbose)
    os.chmod(file_, 0755)

    return filename, logfile, qjobname
Exemplo n.º 33
0
Arquivo: kkmass.py Projeto: xshi/dhad
def single_tag_mode(datatype, mode, label, test):
    rootfile = tools.get_rootfile(datatype, mode, label)
    if test:
        sys.stdout.write('rootfile: %s \n' %rootfile)

    pt = tools.add_rootfile(rootfile)

    evtfile = get_evtfile(datatype, mode, label, 'kkmass', test=test)

    nselected = 0 
    ntotal = 0 
    modekey, sign = tools.get_modekey_sign(mode)
    if sign == None:
        raise ValueError(sign)

    sys.stdout.write('Saving %s ...' %evtfile)
    sys.stdout.flush()
    
    fo = open(evtfile , 'w')
    for pte in pt:
        ntotal += 1
        if test and nselected > 100:
            break

        d = chooseD(modekey, pte, sign)
        
        if d != None:
            dcand = ptobj(pte, d)
            mbc = dcand.dmbc
            if mbc > 1.83 and mbc < 1.89:

                k1 = trkFourTuple(ptobj(pte, dcand.ddau1), 'k')
                k2 = trkFourTuple(ptobj(pte, dcand.ddau2), 'k')
                pi = trkFourTuple(ptobj(pte, dcand.ddau3), 'pi')

                kkmass = invmass(k1,k2)
                
                fo.write('%.5f %.5f %.5f %d\n' % (mbc, pte.ecm/2,
                                                  kkmass, pte.dcsign[d]))
                nselected += 1

    fo.close()

    sys.stdout.write(' selected %s out of %s.\n' % (nselected, ntotal))
Exemplo n.º 34
0
def single_tag_mode(datatype, mode, label, test):
    rootfile = tools.get_rootfile(datatype, mode, label)
    if test:
        sys.stdout.write('rootfile: %s \n' % rootfile)

    pt = tools.add_rootfile(rootfile)

    evtfile = get_evtfile(datatype, mode, label, 'kpimass', test=test)

    nselected = 0
    ntotal = 0
    modekey, sign = tools.get_modekey_sign(mode)
    if sign == None:
        raise ValueError(sign)

    sys.stdout.write('Saving %s ...' % evtfile)
    sys.stdout.flush()

    fo = open(evtfile, 'w')
    for pte in pt:
        ntotal += 1
        if test and nselected > 100:
            break

        d = chooseD(modekey, pte, sign)

        if d != None:
            dcand = ptobj(pte, d)
            mbc = dcand.dmbc
            if mbc > 1.83 and mbc < 1.89:

                k1 = trkFourTuple(ptobj(pte, dcand.ddau1), 'k')
                k2 = trkFourTuple(ptobj(pte, dcand.ddau2), 'k')
                pi = trkFourTuple(ptobj(pte, dcand.ddau3), 'pi')

                kpimass = invmass(k1, pi)

                fo.write('%.5f %.5f %.5f %d\n' %
                         (mbc, pte.ecm / 2, kpimass, pte.dcsign[d]))
                nselected += 1

    fo.close()

    sys.stdout.write(' selected %s out of %s.\n' % (nselected, ntotal))
Exemplo n.º 35
0
Arquivo: var.py Projeto: 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()
Exemplo n.º 36
0
def submit_batch_job(datatype, mode, label, lowmass, highmass, opts):
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    pyline = 'from fit import kpimass; kpimass.fit_single_mode("%s", "%s", "%s", %s, %s, %s)' % (
        datatype, mode, label, lowmass, highmass, opts.test)

    bash_file_name = 'kpimass-fit-%s.sh' % ms

    bash_file = create_bash_file_pyline(opts, label, datatype, pyline,
                                        bash_file_name)
    logname = '%s_%s.txt' % (datatype.replace('/', '_'), mode)

    prefix = 'dir_%s/kpimass/%s_%s' % (label, lowmass, highmass)
    logfile = tools.set_file(extbase=attr.logpath,
                             prefix=prefix,
                             comname=logname)
    qjobname = 'kpi%s' % ms
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 37
0
def submit_batch_job(reweight, datatype, tag, mode, label, opts):
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)
    pyline = 'from sel import multspec; multspec.%s_tag_mode("%s", "%s", "%s", "%s", test=%s)' % (
        tag, reweight, datatype, mode, label, opts.test)

    bash_file_name = 'multspec-%s.sh' % ms
    bash_file = create_bash_file_pyline(opts,
                                        label,
                                        datatype,
                                        pyline,
                                        bash_file_name,
                                        subdir='sel')
    logname = '%s_%s.txt' % (datatype.replace('/', '_'), mode)
    logpath = os.path.join(attr.logpath, label, 'multspec')
    logfile = tools.set_file(extbase=logpath, comname=logname)
    qjobname = 'sel%s' % ms

    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 38
0
def output_var_deltae(pt, mode, evtfile, label, test=False):
    nselected = 0 
    ntotal = 0 
    modekey, sign = tools.get_modekey_sign(mode)
    alt_deltae = {'decutl': -1, 'decuth': 1}
    fo = open(evtfile , 'w')
    for pte in pt:
        ntotal += 1
        if sign != None: # single tag 
            d = tools.cuts.chooseD(modekey, pte, sign, alt_deltae=alt_deltae)
            if d != None:
                nselected = nselected + 1
                fo.write('%s\n' % pte.ddeltae[d])
        else: # double tag 
            raise NameError
            
        if test and nselected > 10:
            break
    fo.close()
    return nselected, ntotal
Exemplo n.º 39
0
def submit_batch_job(datatype, tag, mode, label, opts):
    mode_sign = tools.get_modekey_sign(mode)
    if mode_sign[1] == None:
        ms = '%s_%s' %(mode_sign[0])
    else:
        ms = tools.pair_to_str(mode_sign)

    pyline = 'import fit; fit.%s_tag_mode("%s", "%s", "%s", test=%s)'% (
        tag, datatype, mode, label, opts.test)

    bash_file_name = 'fit-mbc.sh' 
    bash_file = create_bash_file_pyline(opts, label, datatype, pyline,
                                        bash_file_name)
    #logname = '%s_%s.txt' %(datatype.replace('/', '_'), mode)
    #logpath = os.path.join(attr.logpath, label)#, 'yld')
    #logfile = tools.set_file(extbase=logpath, comname=logname)
    logfile = tools.set_file('txt', datatype, mode_sign[0], tag,
                             prefix='dir_'+label, extbase=attr.logpath)
    qjobname = 'fit%s' % ms
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 40
0
Arquivo: var.py Projeto: 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()
Exemplo n.º 41
0
def submit_batch_job(datatype, mode, label, opts):
    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    script_name = 'kkmass-%s.py' % ms
    script = create_python_script(opts, script_name, datatype, mode, label)

    bash_file_name = 'kkmass-%s.sh' % ms
    bash_file = create_bash_file(opts,
                                 label,
                                 datatype,
                                 script,
                                 bash_file_name,
                                 subdir='sel')

    logname = '%s_%s.txt' % (datatype.replace('/', '_'), mode)
    logpath = os.path.join(attr.logpath, label, 'sel', 'kkmass')
    logfile = tools.set_file(extbase=logpath, comname=logname)
    qjobname = 'sel%s' % ms

    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 42
0
Arquivo: events.py Projeto: xshi/dhad
def output_run_event(pt, mode, evtfile, label, test=False):
    nselected = 0 
    ntotal = 0 
    mode_key, sign = tools.get_modekey_sign(mode)

    fo = open(evtfile , 'w')
    for pte in pt:
        ntotal += 1

        if sign != None: # single tag 
            d = tools.cuts.chooseD(mode_key, pte, sign, opt = label)
            if d != None:
                nselected = nselected + 1
                fo.write('%s %s\n' % (pte.run, pte.event))
        else: # double tag 
            raise NameError
            
        if test and nselected > 10:
            break
    fo.close()
    return nselected, ntotal
Exemplo n.º 43
0
def output_run_event(pt, mode, evtfile, label, test=False):
    nselected = 0
    ntotal = 0
    mode_key, sign = tools.get_modekey_sign(mode)

    fo = open(evtfile, 'w')
    for pte in pt:
        ntotal += 1

        if sign != None:  # single tag
            d = tools.cuts.chooseD(mode_key, pte, sign, opt=label)
            if d != None:
                nselected = nselected + 1
                fo.write('%s %s\n' % (pte.run, pte.event))
        else:  # double tag
            raise NameError

        if test and nselected > 10:
            break
    fo.close()
    return nselected, ntotal
Exemplo n.º 44
0
def create_peak_script_logfile_jobname(datatype, tag, mode, label, test):
    prefix = 'dir_' + label
    logname = 'peak_bkg_%s_%s.log' % (datatype, mode)
    logname = logname.replace('/', '_')

    logfile = tools.set_file(extbase=attr.yldlogpath,
                             prefix=prefix,
                             comname=logname)

    content = '''#!/usr/bin/env python

from yld import backgrounds

backgrounds.process_peak_generic_single_mode("%s", "%s", "%s", test=%s)

''' % (datatype, mode, label, test)

    mode, sign = tools.get_modekey_sign(mode)

    if tag == 'single':
        if sign == 1:
            sign = 'p'
        else:
            sign = 'm'
        filename = 'peak-bkg-%s-%s-m%s-%s-%s.py' % (datatype, tag, mode, sign,
                                                    label)
        qjobname = 'bkg%s%s' % (mode, sign)
    else:
        filename = 'peak-bkg-%s-%s-m%s-%s-%s.py' % (datatype, tag, mode[0],
                                                    mode[1], label)
        qjobname = 'bkg%s,%s' % (mode[0], mode[1])

    file_ = os.path.join(attr.base, 'src', attr.src, 'yld', filename)

    f = UserFile()
    f.data.append(content)
    f.output(file_)
    os.chmod(file_, 0755)

    return filename, logfile, qjobname
Exemplo n.º 45
0
def create_peak_script_logfile_jobname(datatype, tag, mode, label, test):
    prefix = 'dir_'+label
    logname = 'peak_bkg_%s_%s.log' %(datatype, mode)
    logname = logname.replace('/', '_')
    
    logfile = tools.set_file(
        extbase=attr.yldlogpath, prefix=prefix,
        comname=logname)

    content =  '''#!/usr/bin/env python

from yld import backgrounds

backgrounds.process_peak_generic_single_mode("%s", "%s", "%s", test=%s)

'''% (datatype, mode, label, test)

    mode, sign = tools.get_modekey_sign(mode)

    if tag == 'single':
        if sign == 1:
            sign = 'p'
        else:
            sign = 'm'
        filename = 'peak-bkg-%s-%s-m%s-%s-%s.py' % (
            datatype, tag, mode, sign, label)
        qjobname = 'bkg%s%s' % (mode, sign)
    else:
        filename = 'peak-bkg-%s-%s-m%s-%s-%s.py' % (
            datatype, tag, mode[0], mode[1], label)
        qjobname = 'bkg%s,%s' % (mode[0], mode[1])

    file_ = os.path.join(attr.base, 'src', attr.src, 'yld', filename)
    
    f = UserFile()
    f.data.append(content) 
    f.output(file_)
    os.chmod(file_, 0755)

    return filename, logfile, qjobname
Exemplo n.º 46
0
Arquivo: var.py Projeto: 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()
Exemplo n.º 47
0
def create_script_logfile_jobname(opts, datatype, tag, mode, label):
    prefix = 'dir_'+label
    logname = 'bkg_%s_%s.log' %(datatype, mode)
    logfile = tools.set_file(
        extbase=attr.yldlogpath, prefix=prefix,
        comname=logname)

    content =  '''#!/usr/bin/env python

from yld import crossfeeds

crossfeeds.process_signal_single_mode("%s", "%s", test=%s)

'''% (mode, label, opts.test)

    mode, sign = tools.get_modekey_sign(mode)

    if tag == 'single':
        if sign == 1:
            sign = 'p'
        else:
            sign = 'm'
        filename = 'csf-%s-%s-m%s-%s.py' % (datatype, tag, mode, sign)
        qjobname = 'csf%s,%s' % (mode, sign)
    else:
        filename = 'csf-%s-%s-m%s-%s.py' % (datatype, tag, mode[0], mode[1])
        qjobname = 'csf%s,%s' % (mode[0], mode[1])

    file_ = os.path.join(attr.datpath, datatype, label, 'src', 'yld', filename)
    verbose = opts.verbose
    if opts.test:
        verbose = 1
    f = UserFile()
    f.data.append(content) 
    f.output(file_, verbose=verbose)
    os.chmod(file_, 0755)

    return filename, logfile, qjobname
Exemplo n.º 48
0
def submit_batch_job(datatype, mode, label, lowmass, highmass, opts):
    script = create_python_script(opts, datatype, mode, label, lowmass,
                                  highmass)

    mode_sign = tools.get_modekey_sign(mode)
    ms = tools.pair_to_str(mode_sign)

    bash_file_name = 'fit-%s.sh' % ms
    bash_file = create_bash_file(opts,
                                 label,
                                 datatype,
                                 script,
                                 bash_file_name,
                                 subdir='kkmass2/%s_%s' % (lowmass, highmass))

    logname = '%s_%s.txt' % (datatype.replace('/', '_'), mode)

    prefix = 'dir_%s/kkmass2/%s_%s' % (label, lowmass, highmass)
    logfile = tools.set_file(extbase=attr.logpath,
                             prefix=prefix,
                             comname=logname)
    qjobname = 'kkm%s' % ms
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 49
0
def submit_batch_job(datatype, tag, mode, label, opts):
    mode_sign = tools.get_modekey_sign(mode)
    if mode_sign[1] == None:
        ms = '%s_%s' % (mode_sign[0])
    else:
        ms = tools.pair_to_str(mode_sign)

    pyline = 'import fit; fit.%s_tag_mode("%s", "%s", "%s", test=%s)' % (
        tag, datatype, mode, label, opts.test)

    bash_file_name = 'fit-mbc.sh'
    bash_file = create_bash_file_pyline(opts, label, datatype, pyline,
                                        bash_file_name)
    #logname = '%s_%s.txt' %(datatype.replace('/', '_'), mode)
    #logpath = os.path.join(attr.logpath, label)#, 'yld')
    #logfile = tools.set_file(extbase=logpath, comname=logname)
    logfile = tools.set_file('txt',
                             datatype,
                             mode_sign[0],
                             tag,
                             prefix='dir_' + label,
                             extbase=attr.logpath)
    qjobname = 'fit%s' % ms
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
Exemplo n.º 50
0
def create_script_logfile_jobname(opts, datatype, tag, mode, label, test):
    logfile = tools.set_file('log', datatype, mode, tag,
                             prefix='dir_'+label, extbase=attr.yldlogpath)

    content =  '''#!/usr/bin/env python

import yld

yld.%s_tag_mode("%s", "%s", "%s", test=%s)

'''% (tag, datatype, mode, label, test)

    mode, sign = tools.get_modekey_sign(mode)

    if tag == 'single':
        if sign == 1:
            sign = 'p'
        else:
            sign = 'm'
        filename = '%s-%s-m%s-%s.py' % (datatype, tag, mode, sign)
        qjobname = 'yld%s,%s' % (mode, sign)
    else:
        filename = '%s-%s-m%s-%s.py' % (datatype, tag, mode[0], mode[1])
        qjobname = 'yld%s,%s' % (mode[0], mode[1])

    file_ = os.path.join(attr.datpath, datatype, label, 'src', 'yld', filename)
    verbose = opts.verbose
    if opts.test:
        verbose = 1
        sys.stdout.write('logfile: %s\n' %logfile)
    f = UserFile()
    f.data.append(content) 
    f.output(file_, verbose=verbose)
    os.chmod(file_, 0755)

    return filename, logfile, qjobname
Exemplo n.º 51
0
def create_python_script(dt_type, mode, label, test):
    content =  '''#!/usr/bin/env python

from fit import backgrounds

backgrounds.fit_backgrounds_single_mode("%s", "%s", "%s", %s)

'''% (dt_type, mode, label, test)

    mode_sign = tools.get_modekey_sign(mode)

    ms = tools.pair_to_str(mode_sign)

    filename = 'backgrounds-%s-%s-%s.py' % (dt_type, ms, label)

    filename = filename.replace('/', '-')
    
    file_ = os.path.join(attr.srcfitpath, filename)
    
    f = UserFile()
    f.append(content) 
    f.output(file_)
    os.chmod(file_, 0755)
    return filename
Exemplo n.º 52
0
def create_python_script(dt_type, mode, label, test):
    content = '''#!/usr/bin/env python

from fit import backgrounds

backgrounds.fit_backgrounds_single_mode("%s", "%s", "%s", %s)

''' % (dt_type, mode, label, test)

    mode_sign = tools.get_modekey_sign(mode)

    ms = tools.pair_to_str(mode_sign)

    filename = 'backgrounds-%s-%s-%s.py' % (dt_type, ms, label)

    filename = filename.replace('/', '-')

    file_ = os.path.join(attr.srcfitpath, filename)

    f = UserFile()
    f.append(content)
    f.output(file_)
    os.chmod(file_, 0755)
    return filename
Exemplo n.º 53
0
def output_trkmtm_ks3pi(pt, mode, selfile, label, test=False):
    nselected = 0 
    ntotal = 0

    modekey, signs = tools.get_modekey_sign(mode)

    f = TFile(selfile, 'recreate')
    efffile = selfile.replace('.root', '.db')
    effs = shelve.open(efffile)

    if signs != None: # single tag
        if not isinstance(signs, list):
            signs = [signs] 

    mbc = {}; kpi1 = {} ; kpi2 = {}; pipih = {}; pipil = {}; pipipi = {}
    kpim = {}; kpipih = {}; kpipil = {}
    h_pks = {}; h_ppi1 = {}; h_ppi2 = {}; h_ppim = {}
    h_angks = {}; h_angpi1 = {}; h_angpi2 = {}; h_angpim = {}
    real_ks_pmag = 0 ; real_p1_pmag = 0 ; real_p2_pmag = 0 ; real_pm_pmag = 0

    h_ks_dp = TH1F('h_ks_dp', 'K_{S} delta p', 100, -0.05, 0.05)
    h_p1_dp = TH1F('h_p1_dp', 'pi1 delta p', 100, -0.05, 0.05)
    h_p2_dp = TH1F('h_p2_dp', 'pi2 delta p', 100, -0.05, 0.05)
    h_pm_dp = TH1F('h_pm_dp', 'pi- delta p', 100, -0.05, 0.05)

    for type in ('mc', 'mctruth'):
        mbc[type] = TH1F('mbc_' + type, 'mbc', 100, 1.83, 1.89)
        h_pks[type] = TH1F('h_pk_' + type, 'K_{S} momentum', 20, 0, 1)
        h_ppi1[type] = TH1F('h_ppi1_' + type, '#pi^{+}_{1} momentum', 20, 0, 1)
        h_ppi2[type] = TH1F('h_ppi2_' + type, '#pi^{+}_{2} momentum', 20, 0, 1)
        h_ppim[type] = TH1F('h_ppim_' + type, '#pi^{-} momentum', 20, 0, 1)

    args_p = (12, 0.1, 0.95, 4, 0.05, 0.9, 8, 0.05, 0.75, 4, 0.05, 0.9)
    args_a = (6, 0, 1, 6, 0, 1, 6, 0, 1, 6, 0, 1)
    boxes_num_p = histBox(*args_p)
    boxes_denom_p = histBox(*args_p)
    boxes_num_a = histBox(*args_a)
    boxes_denom_a = histBox(*args_a)

    for pte in pt:
        if test and nselected > 10:
            break

        ntotal += 1
        for sign in signs:
            loctree = makeDDecaySubTree(pte, sign)
            if sign == 1 and mcDmodeFixRad(
                loctree[0].mcDmode()) != modes[204]['mcdmode']:
                continue
            if sign == -1 and mcDmodeFixRad(
                loctree[0].mcDmode()) != modes[204]['mcdbmode']:
                continue
            mc_ks = None; mc_pi1 = None; mc_pi2 = None; mc_pim = None; mc_kl = None
            reald = loctree[0]

            nodes_of_interest = reald.interestingDescendants()
            for node in nodes_of_interest:
                if node.pdgid == sign*pdgid_KS:
                    mc_ks = node
                elif node.pdgid == sign*pdgid_KL:
                    mc_kl = node
                elif node.pdgid == sign*pdgid_pip:
                    if not mc_pi1:
                        mc_pi1 = node
                    else:
                        if mc_pi2:
                            print 'ERROR'
                            print len(nodes_of_interest)
                            print mc_pi1
                            print mc_pi2
                            print node
                            print ' ---- '
                            for nnode in nodes_of_interest:
                                print nnode
                                print '-'
                            print '================='
                        mc_pi2 = node
                elif node.pdgid == sign*pdgid_pim:
                    mc_pim = node

            if not mc_ks or not mc_pi1 or not mc_pi2 or not mc_pim:
                if mc_kl:
                    continue
                else:
                    print 'ERROR2', mc_ks, mc_pi1, mc_pi2, mc_pim
            else:
                pass
            
            ks = mc_ks.index ; pip1 = mc_pi1.index ; pip2 = mc_pi2.index
            pim = mc_pim.index
            pks = (pte.mce[ks], pte.mcpx[ks], pte.mcpy[ks],
                   pte.mcpz[ks])
            ppip1 = (pte.mce[pip1], pte.mcpx[pip1], pte.mcpy[pip1],
                     pte.mcpz[pip1])
            ppip2 = (pte.mce[pip2], pte.mcpx[pip2], pte.mcpy[pip2],
                     pte.mcpz[pip2])
            ppim = (pte.mce[pim], pte.mcpx[pim], pte.mcpy[pim],
                    pte.mcpz[pim])
            real_ks_pmag = pmag(pks) ; real_pm_pmag = pmag(ppim)
            zhat = (0,1,0,0)
            ang_ks = abs(cosangle(pks,zhat))
            ang_pim = abs(cosangle(ppim,zhat))
            h_pks['mctruth'].Fill(real_ks_pmag)
            h_ppim['mctruth'].Fill(real_pm_pmag)
            mag_ppi1 = pmag(ppip1); mag_ppi2 = pmag(ppip2)
            if max(mag_ppi1, mag_ppi2) == mag_ppi1:
                h_ppi1['mctruth'].Fill(mag_ppi1)
                h_ppi2['mctruth'].Fill(mag_ppi2)
                real_p1_pmag = mag_ppi1 ; real_p2_pmag = mag_ppi2
                ang_pi1 = abs(cosangle(ppip1,zhat));
                ang_pi2 = abs(cosangle(ppip2,zhat))
            else:
                h_ppi1['mctruth'].Fill(mag_ppi2)
                h_ppi2['mctruth'].Fill(mag_ppi1)
                real_p1_pmag = mag_ppi2 ; real_p2_pmag = mag_ppi1
                ang_pi1 = abs(cosangle(ppip2,zhat));
                ang_pi2 = abs(cosangle(ppip1,zhat))

            boxes_denom_p.fill(real_ks_pmag, real_p1_pmag, real_p2_pmag,
                               real_pm_pmag)
            boxes_denom_a.fill(ang_ks, ang_pi1, ang_pi2, ang_pim)
            
            choice = chooseD(204, pte, sign)
            if choice != None: # and passDE(choice, pte):
                nselected += 1
                mbc['mc'].Fill(pte.dmbc[choice])
                if not 1.865 < pte.dmbc[choice] < 1.875:
                    continue
                ks = pte.ddau1[choice]; pip1 = pte.ddau2[choice];
                pip2 = pte.ddau3[choice]; pim = pte.ddau4[choice]
                pks = (pte.kse[ks], pte.kspx[ks], pte.kspy[ks],
                       pte.kspz[ks])
                ppip1 = (pte.trpie[pip1], pte.trpipx[pip1], pte.trpipy[pip1],
                         pte.trpipz[pip1])
                ppip2 = (pte.trpie[pip2], pte.trpipx[pip2], pte.trpipy[pip2],
                         pte.trpipz[pip2])
                ppim = (pte.trpie[pim], pte.trpipx[pim], pte.trpipy[pim],
                        pte.trpipz[pim])
                h_ks_dp.Fill(pmag(pks)-real_ks_pmag)
                h_pm_dp.Fill(pmag(ppim)-real_pm_pmag)
                h_pks['mc'].Fill(pmag(pks))
                h_ppim['mc'].Fill(pmag(ppim))
                try:
                    ang_ks = abs(pte.trcosth[ks])
                    ang_pim = abs(pte.trcosth[pim])
                except IndexError:
                    pass
                
                mag_ppi1 = pmag(ppip1); mag_ppi2 = pmag(ppip2)
                if max(mag_ppi1, mag_ppi2) == mag_ppi1:
                    h_ppi1['mc'].Fill(mag_ppi1)
                    h_ppi2['mc'].Fill(mag_ppi2)
                    h_p1_dp.Fill(mag_ppi1 - real_p1_pmag)
                    h_p2_dp.Fill(mag_ppi2 - real_p2_pmag)
                    ang_pi1 = abs(pte.trcosth[pip1])
                    ang_pi2 = abs(pte.trcosth[pip2])
                else:
                    h_ppi1['mc'].Fill(mag_ppi2)
                    h_ppi2['mc'].Fill(mag_ppi1)
                    h_p1_dp.Fill(mag_ppi2 - real_p1_pmag)
                    h_p2_dp.Fill(mag_ppi1 - real_p2_pmag)
                    ang_pi1 = abs(pte.trcosth[pip2])
                    ang_pi2 = abs(pte.trcosth[pip1])
                boxes_num_p.fill(pmag(pks), min(mag_ppi2, mag_ppi1),
                                 max(mag_ppi2, mag_ppi1),
                                 pmag(ppim))
                boxes_num_a.fill(ang_ks, ang_pi1, ang_pi2, ang_pim)

    effs['boxes_num_p'] = boxes_num_p
    effs['boxes_denom_p'] = boxes_denom_p
    effs['boxes_num_a'] = boxes_num_a
    effs['boxes_denom_a'] = boxes_denom_a
    effs.close()
    f.Write()
    f.Close()
    pt.Delete()

    return nselected, ntotal
Exemplo n.º 54
0
def output_trkmtm_kspipi0(pt, mode, selfile, label, test=False):
    nselected = 0 
    ntotal = 0 
    modekey, signs = tools.get_modekey_sign(mode)

    f = TFile(selfile, 'recreate')
    efffile = selfile.replace('.root', '.db')
    effs = shelve.open(efffile)

    if signs != None: # single tag
        if not isinstance(signs, list):
            signs = [signs] 

    mbc = {}; kpi1 = {} ; kpi2 = {}; pipih = {}; pipil = {}; pipipi = {}
    kpiz = {}; kpipih = {}; kpipil = {}
    h_pks = {}; h_ppi1 = {}; h_ppiz = {}
    h_angks = {}; h_angpi1 = {}; h_angpi2 = {}; h_angpiz = {}
    real_ks_pmag = 0 ; real_p1_pmag = 0 ;  real_pz_pmag = 0

    h_ks_dp = TH1F('h_ks_dp', 'K_{S} delta p', 100, -0.05, 0.05)
    h_p1_dp = TH1F('h_p1_dp', '#pi^{+} delta p', 100, -0.05, 0.05)
    h_pz_dp = TH1F('h_pz_dp', '#pi^{0} delta p', 100, -0.05, 0.05)
    
    h_dalitz = TH2F('h_dalitz', 'K_{S} #pi^{+} #pi^{0} Dalitz plot',
                    100, 0, 2, 100, 0, 3)
    for type in ('mc', 'mctruth'):
        mbc[type] = TH1F('mbc_' + type, 'mbc', 100, 1.83, 1.89)
        h_pks[type] = TH1F('h_pks_' + type, 'K_{S} momentum', 20, 0, 1)
        h_ppi1[type] = TH1F('h_ppi1_' + type, '#pi^{+} momentum', 20, 0, 1)
        h_ppiz[type] = TH1F('h_ppiz_' + type, '#pi^{0} momentum', 20, 0, 1)

    args = (11, 0, 1.1, 8, 0, 1.0, 8, 0, 1.0)
    boxes_num = histBox(*args)
    boxes_denom = histBox(*args)
    for pte in pt:
        if test and nselected > 10:
            break
        ntotal += 1
        for sign in signs:
            loctree = makeDDecaySubTree(pte, sign)
            if sign == 1 and mcDmodeFixRad(
                loctree[0].mcDmode()) != modes[203]['mcdmode']:
                continue
            if sign == -1 and mcDmodeFixRad(
                loctree[0].mcDmode()) != modes[203]['mcdbmode']:
                continue
            mc_ks = None; mc_pi1 = None; mc_piz = None
            reald = loctree[0]
            nodes_of_interest = reald.interestingDescendants()

            for node in nodes_of_interest:
                if node.pdgid == pdgid_KS or node.pdgid == pdgid_KL:
                    mc_ks = node
                elif node.pdgid == sign*pdgid_pip:
                    if not mc_pi1:
                        mc_pi1 = node
                    else:
                        print 'ERROR'
                elif node.pdgid == pdgid_piz:
                    mc_piz = node

            if mc_ks and mc_ks.pdgid == pdgid_KL:
                continue
            if not mc_ks or not mc_pi1 or not mc_piz:
                print 'ERROR2', mc_ks, mc_pi1, mc_piz
                for node in nodes_of_interest:
                    print node
            else:
                pass

            ks = mc_ks.index ; pip1 = mc_pi1.index ; 
            piz = mc_piz.index
            pks = (pte.mce[ks], pte.mcpx[ks], pte.mcpy[ks],
                  pte.mcpz[ks])
            ppip1 = (pte.mce[pip1], pte.mcpx[pip1], pte.mcpy[pip1],
                     pte.mcpz[pip1])
            ppiz = (pte.mce[piz], pte.mcpx[piz], pte.mcpy[piz],
                    pte.mcpz[piz])
            real_ks_pmag = pmag(pks) ; real_pz_pmag = pmag(ppiz)
            if pmag(ppiz) >0:
                # print 'K0+piz give', invmass(pks, ppiz)
                # print 'piz+pip give', invmass(ppiz, ppip1)
                h_dalitz.Fill(invmasssq(ppiz, ppip1),
                              invmasssq(pks, ppiz))
            h_pks['mctruth'].Fill(real_ks_pmag)
            h_ppiz['mctruth'].Fill(real_pz_pmag)
            mag_ppi1 = pmag(ppip1)
            h_ppi1['mctruth'].Fill(mag_ppi1)
            real_p1_pmag = mag_ppi1

            boxes_denom.fill(real_ks_pmag, real_p1_pmag,
                             real_pz_pmag)
            
            choice = chooseD(203, pte, sign)
            if choice != None: # and passDE(choice, pte):
                nselected += 1
                mbc['mc'].Fill(pte.dmbc[choice])
                if not 1.86 < pte.dmbc[choice] < 1.87:
                    continue
                ks = pte.ddau1[choice]; pip1 = pte.ddau2[choice];
                piz = pte.ddau3[choice]
                pks = (pte.kse[ks], pte.kspx[ks], pte.kspy[ks],
                      pte.kspz[ks])
                ppip1 = (pte.trpie[pip1], pte.trpipx[pip1], pte.trpipy[pip1],
                         pte.trpipz[pip1])
                ppiz = (pte.pi0e[piz], pte.pi0px[piz], pte.pi0py[piz],
                        pte.pi0pz[piz])
                h_ks_dp.Fill(pmag(pks)-real_ks_pmag)
                h_pz_dp.Fill(pmag(ppiz)-real_pz_pmag)
                h_pks['mc'].Fill(pmag(pks))
                h_ppiz['mc'].Fill(pmag(ppiz))
                mag_ppi1 = pmag(ppip1);
                h_ppi1['mc'].Fill(mag_ppi1)
                h_p1_dp.Fill(mag_ppi1 - real_p1_pmag)

                boxes_num.fill(pmag(pks), mag_ppi1, pmag(ppiz))

    effs['boxes_num'] = boxes_num
    effs['boxes_denom'] = boxes_denom 
    effs.close()
    f.Write()
    f.Close()
    pt.Delete()

    return nselected, ntotal
Exemplo n.º 55
0
def output_trkmtm_kkpi(pt, mode, selfile, label, test=False):
    nselected = 0 
    ntotal = 0

    modekey, signs = tools.get_modekey_sign(mode)

    f = TFile(selfile, 'recreate')
    efffile = selfile.replace('.root', '.db')
    effs = shelve.open(efffile)

    if signs != None: # single tag
        if not isinstance(signs, list):
            signs = [signs] 

    mbc = {}; kpi1 = {} ; kpi2 = {}; pipih = {}; pipil = {}; pipipi = {}
    kpiz = {}; kpipih = {}; kpipil = {}
    h_pkp = {}; h_pkm = {}; h_ppi = {}
    h_angkp = {}; h_angkm = {}; h_angpi = {};

    real_kp_pmag = 0 ; real_km_pmag = 0 ;  real_pi_pmag = 0

    h_kp_dp = TH1F('h_kp_dp', 'K^{+} delta p', 100, -0.05, 0.05)
    h_km_dp = TH1F('h_km_dp', 'K^{-} delta p', 100, -0.05, 0.05)
    h_pi_dp = TH1F('h_pi_dp', '#pi^{+} delta p', 100, -0.05, 0.05)
    
    for type in ('mc', 'mctruth'):
        mbc[type] = TH1F('mbc_' + type, 'mbc', 100, 1.83, 1.89)
        h_pkp[type] = TH1F('h_pkp_' + type, 'K^{+} momentum', 20, 0, 1)
        h_pkm[type] = TH1F('h_pkm_' + type, 'K^{-} momentum', 20, 0, 1)
        h_ppi[type] = TH1F('h_ppi_' + type, '#pi^{+} momentum', 20, 0, 1)

    args = (11, 0, 1.1, 8, 0, 1.0, 8, 0, 1.0)
    boxes_num = histBox(*args)
    boxes_denom = histBox(*args)

    for pte in pt:
        if test and nselected > 10:
            break

        ntotal += 1
        for sign in signs:
            loctree = makeDDecaySubTree(pte, sign)
            if sign == 1 and mcDmodeFixRad(
                loctree[0].mcDmode()) != modes[205]['mcdmode']:
                continue
            if sign == -1 and mcDmodeFixRad(
                loctree[0].mcDmode()) != modes[205]['mcdbmode']:
                continue
            mc_kp = None; mc_km = None; mc_pi = None
            reald = loctree[0]
            nodes_of_interest = reald.interestingDescendants()
            for node in nodes_of_interest:
                if node.pdgid == sign*pdgid_Kp:
                    mc_kp = node
                elif node.pdgid == sign*pdgid_Km:
                    mc_km = node
                elif node.pdgid == sign*pdgid_pip:
                    mc_pi = node

            if not mc_kp or not mc_km or not mc_pi:
                print 'ERROR2', mc_kp, mc_km, mc_pi
            else:
                pass

            kp = mc_kp.index ; km = mc_km.index ; 
            pi = mc_pi.index
            pkp = (pte.mce[kp], pte.mcpx[kp], pte.mcpy[kp],
                   pte.mcpz[kp])
            pkm = (pte.mce[km], pte.mcpx[km], pte.mcpy[km],
                   pte.mcpz[km])
            ppi = (pte.mce[pi], pte.mcpx[pi], pte.mcpy[pi],
                   pte.mcpz[pi])
            real_kp_pmag = pmag(pkp) ; real_km_pmag = pmag(pkm)
            real_pi_pmag = pmag(ppi)
            h_pkp['mctruth'].Fill(real_kp_pmag)
            h_pkm['mctruth'].Fill(real_km_pmag)
            h_ppi['mctruth'].Fill(real_pi_pmag)

            boxes_denom.fill(real_kp_pmag, real_km_pmag,
                             real_pi_pmag)

            choice = chooseD(205, pte, sign)
            if choice != None: # and passDE(choice, pte):
                nselected += 1
                mbc['mc'].Fill(pte.dmbc[choice])
                if not 1.865 < pte.dmbc[choice] < 1.875:
                    continue
                km = pte.ddau1[choice]; kp = pte.ddau2[choice];
                pi = pte.ddau3[choice]
                pkp = (pte.trke[kp], pte.trkpx[kp], pte.trkpy[kp],
                       pte.trkpz[kp])
                pkm = (pte.trke[km], pte.trkpx[km], pte.trkpy[km],
                       pte.trkpz[km])
                ppi = (pte.trpie[pi], pte.trpipx[pi], pte.trpipy[pi],
                       pte.trpipz[pi])
                h_kp_dp.Fill(pmag(pkp)-real_kp_pmag)
                h_km_dp.Fill(pmag(pkm)-real_km_pmag)
                h_pi_dp.Fill(pmag(ppi) - real_pi_pmag)
                h_pkm['mc'].Fill(pmag(pkm))
                h_pkp['mc'].Fill(pmag(pkp))
                h_ppi['mc'].Fill(pmag(ppi))

                boxes_num.fill(pmag(pkp), pmag(pkm), pmag(ppi))

    effs['boxes_num'] = boxes_num
    effs['boxes_denom'] = boxes_denom 
    effs.close()
    f.Write()
    f.Close()
    pt.Delete()

    return nselected, ntotal