示例#1
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)
示例#2
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)
示例#3
0
def submit_batch_job(opts, dt_type, stage, label, mode, sign):

    script = create_python_script(opts, dt_type, stage, label, mode, sign)
    bash_file = create_bash_file(opts, label, dt_type, script,
                                 'fit-crossfeeds-%s.sh' %stage, subdir='csf')

    logfile = tools.set_file(extbase=attr.logpath,
                             prefix='dir_'+label+'/crossfeeds',
                             comname='stage_%s_%s_%s.txt' %(stage, mode, sign))

    qjobname = '%s%s%s' % (stage, mode, sign)
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#4
0
文件: backgrounds.py 项目: xshi/dhad
def submit_batch_job_allinone(datatype, modes, label, test):
    script = create_python_script_allinone(datatype, modes, label, test)
    dt =  datatype.replace('/', '-')
    bash_file_name = 'fit-backgrounds-%s-allinone.sh' % dt 
    bash_file = create_bash_file(script, bash_file_name, 'setpyroot l')

    logname = '%s_allinone.txt' % datatype.replace('/', '_')
    logfile = tools.set_file(extbase=attr.logpath,
                             prefix='dir_'+label+'/backgrounds',
                             comname=logname)
    qn = datatype.split('/')[-1]
    qjobname = 'bkg%s' % qn
    tools.qsub_jobs(logfile, qjobname, bash_file, test)
示例#5
0
def submit_batch_job_allinone(datatype, modes, label, test):
    script = create_python_script_allinone(datatype, modes, label, test)
    dt = datatype.replace('/', '-')
    bash_file_name = 'fit-backgrounds-%s-allinone.sh' % dt
    bash_file = create_bash_file(script, bash_file_name, 'setpyroot l')

    logname = '%s_allinone.txt' % datatype.replace('/', '_')
    logfile = tools.set_file(extbase=attr.logpath,
                             prefix='dir_' + label + '/backgrounds',
                             comname=logname)
    qn = datatype.split('/')[-1]
    qjobname = 'bkg%s' % qn
    tools.qsub_jobs(logfile, qjobname, bash_file, test)
示例#6
0
文件: multcand.py 项目: xshi/dhad
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)
示例#7
0
def submit_batch_job_nondiag(opts, dt_type, stage, label, x, y):
    script = create_python_script_nondiag(opts, dt_type, stage, label, x, y)
    bash_file = create_bash_file(opts, label, dt_type, script,
                                 'fit-crossfeeds-%s.sh' %stage, subdir='csf')

    xstr = pair_to_str(x)
    ystr = pair_to_str(y)

    logfile = tools.set_file(extbase=attr.logpath,
                             prefix='dir_'+label+'/crossfeeds',
                             comname='stage_%s_%s_%s.txt' %(stage, xstr, ystr))

    qjobname = 'x%s%s' % (xstr, ystr)
    tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)
示例#8
0
文件: kpimass.py 项目: 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)
示例#9
0
文件: kkmass2.py 项目: 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)
示例#10
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)
示例#11
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)
示例#12
0
文件: sidebands.py 项目: xshi/dhad
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)
示例#13
0
文件: kkmass.py 项目: 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)
示例#14
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)
示例#15
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)
示例#16
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)
示例#17
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)
示例#18
0
文件: __init__.py 项目: xshi/dhad
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)
示例#19
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)
示例#20
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)
示例#21
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)
示例#22
0
def ntuple_generic(opts, args):
    grade = args[0]
    skim = args[1]
    label = args[2]

    datasets = []
    if 'data' in label:
        datasets.append(label)

    elif '281ipb' in label:
        numbers = ['31', '32', '33', '35', '36', '37']
        for num in numbers:
            dataset = 'data' + num
            datasets.append(dataset)

    elif '537ipb' in label:
        numbers = ['43', '44', '45', '46']
        for num in numbers:
            dataset = 'data' + num
            datasets.append(dataset)
    else:
        raise NameError(label)

    for dataset in datasets:
        if not opts.set or 'jobs' not in opts.set:
            update_dataselection_tcl('generic', dataset, grade, skim)
            logfile, qjobname, bash_file = create_bash_dtuple_generic(
                dataset, grade, skim, label)
            qsub_jobs(logfile, qjobname, bash_file, _test)
            continue

        njobs = parse_opts_set(opts.set, 'njobs')

        update_dataselection_tcl('generic', dataset, grade, skim, njobs)

        for job in range(njobs):
            subdataset = '%s_%s_%s' % (dataset, njobs, job + 1)
            logfile, qjobname, bash_file = create_bash_dtuple_generic(
                subdataset, grade, skim, label)
            qsub_jobs(logfile, qjobname, bash_file, _test)
示例#23
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)
示例#24
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)
示例#25
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)
示例#26
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)
示例#27
0
def main(opts, args):
    if args[0] == 'crossfeeds':
        import crossfeeds
        crossfeeds.main(opts, args[1:])
        return

    if args[0] == 'backgrounds':
        import backgrounds
        backgrounds.main(opts, args[1:])
        return

    if args[0] == 'sidebands':
        import sidebands
        sidebands.main(opts, args[1:])
        return

    if args[0] == 'kkmass':
        import kkmass
        kkmass.main(opts, args[1:])
        return

    if args[0] == 'kkmass2':
        import kkmass2
        kkmass2.main(opts, args[1:])
        return

    if args[0] == 'kpimass':
        import kpimass
        kpimass.main(opts, args[1:])
        return

    ROOT.gROOT.SetBatch(1)
    ROOT.gROOT.SetStyle("Plain")

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

    if modes == ['double_all_d0s']:
        mode = modes[0]
        if opts.set and opts.set == 'interact':
            double_all_d0s(dt_type, mode, label, test=opts.test)
        else:
            pyline = 'import fit; fit.%s("%s", "%s", "%s", test=%s)' % (
                mode, dt_type, mode, label, opts.test)

            bash_file_name = 'fit-mbc.sh'
            bash_file = create_bash_file_pyline(opts, label, dt_type, pyline,
                                                bash_file_name)
            logfile = tools.set_file('txt',
                                     dt_type,
                                     mode,
                                     tag,
                                     prefix='dir_' + label,
                                     extbase=attr.logpath)
            qjobname = 'fitd0s'
            tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)

        return

    if modes == ['double_all_dps']:
        mode = modes[0]
        if opts.set and opts.set == 'interact':
            double_all_dps(dt_type, mode, label, test=opts.test)
        else:
            pyline = 'import fit; fit.%s("%s", "%s", "%s", test=%s)' % (
                mode, dt_type, mode, label, opts.test)

            bash_file_name = 'fit-mbc.sh'
            bash_file = create_bash_file_pyline(opts, label, dt_type, pyline,
                                                bash_file_name)
            logfile = tools.set_file('txt',
                                     dt_type,
                                     mode,
                                     tag,
                                     prefix='dir_' + label,
                                     extbase=attr.logpath)
            qjobname = 'fitdps'
            tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)

        return

    for mode in modes:
        if opts.set and opts.set == 'interact':

            if tag == 'single':
                single_tag_mode(dt_type,
                                mode,
                                label,
                                interact=True,
                                test=opts.test)
            elif tag == 'double':
                double_tag_mode(dt_type,
                                mode,
                                label,
                                interact=True,
                                test=opts.test)
            else:
                raise ValueError(tag)
            continue

        else:
            submit_batch_job(dt_type, tag, mode, label, opts)
示例#28
0
文件: __init__.py 项目: xshi/dhad
def main(opts, args):
    if args[0] == 'crossfeeds':
        import crossfeeds
        crossfeeds.main(opts, args[1:])
        return

    if args[0] == 'backgrounds':
        import backgrounds
        backgrounds.main(opts, args[1:])
        return

    if args[0] == 'sidebands':
        import sidebands
        sidebands.main(opts, args[1:])
        return

    if args[0] == 'kkmass':
        import kkmass
        kkmass.main(opts, args[1:])
        return
    
    if args[0] == 'kkmass2':
        import kkmass2
        kkmass2.main(opts, args[1:])
        return

    if args[0] == 'kpimass':
        import kpimass
        kpimass.main(opts, args[1:])
        return
    
    ROOT.gROOT.SetBatch(1)
    ROOT.gROOT.SetStyle("Plain")

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

    if modes == ['double_all_d0s']:
        mode = modes[0]
        if opts.set and opts.set == 'interact':
            double_all_d0s(dt_type, mode, label, test=opts.test)
        else:
            pyline = 'import fit; fit.%s("%s", "%s", "%s", test=%s)'% (
                mode, dt_type, mode, label, opts.test)
        
            bash_file_name = 'fit-mbc.sh' 
            bash_file = create_bash_file_pyline(opts, label, dt_type, pyline,
                                                bash_file_name)
            logfile = tools.set_file('txt', dt_type, mode, tag,
                                     prefix='dir_'+label, extbase=attr.logpath)
            qjobname = 'fitd0s'
            tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)

        return

    if modes == ['double_all_dps']:
        mode = modes[0]
        if opts.set and opts.set == 'interact':
            double_all_dps(dt_type, mode, label, test=opts.test)
        else:
            pyline = 'import fit; fit.%s("%s", "%s", "%s", test=%s)'% (
                mode, dt_type, mode, label, opts.test)
        
            bash_file_name = 'fit-mbc.sh' 
            bash_file = create_bash_file_pyline(opts, label, dt_type, pyline,
                                                bash_file_name)
            logfile = tools.set_file('txt', dt_type, mode, tag,
                                     prefix='dir_'+label, extbase=attr.logpath)
            qjobname = 'fitdps'
            tools.qsub_jobs(logfile, qjobname, bash_file, opts.test)

        return


    for mode in modes:
        if opts.set and opts.set == 'interact':

            if tag == 'single':
                single_tag_mode(dt_type, mode, label, interact=True,
                                test=opts.test)
            elif tag == 'double':
                double_tag_mode(dt_type, mode, label, interact=True,
                                test=opts.test)
            else:
                raise ValueError(tag)
            continue

        else:
            submit_batch_job(dt_type, tag, mode, label, opts)