Esempio n. 1
0
def stage_nondiag(dt_type, label, x, y, interact=False):
    if label != '281ipbv0.2':
        load_roofit_lib(dt_type, label)

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

    # STAGE 1: fit for non-diagonal
    sys.stdout.write('Stage 1: fit non-diagonal.\n')

    single_modes = [(pair, sign) for pair in modes for sign in [-1, 1]]

    prefix='dir_'+label+'/crossfeeds'
    
    #for x, y  in [(x, y) for x in single_modes for y in single_modes if x!=y]:
    if x[1] == 1:
        uname = modes[x[0]]['uname']
        fname = modes[x[0]]['fname']
    else:
        uname = modes[x[0]]['unamebar']
        fname = modes[x[0]]['fnamebar']
    if y[1] == 1:
        unameb = modes[y[0]]['uname']
        fnameb = modes[y[0]]['fname']
    else:
        unameb = modes[y[0]]['unamebar']
        fnameb = modes[y[0]]['fnamebar']

    title  = '%s fakes %s' % (uname, unameb)

    bkgname = ('%s_Single_%s_fakes_Single_%s.evt' %(dt_type, fname, fnameb))
    bkgfile = get_bkgfile(bkgname, label)

    epsname = '%s_Single_%s_fakes_Single_%s.eps' % (dt_type, fname, fnameb)
    epsfile  = tools.set_file(extbase=attr.figpath, prefix=prefix, comname=epsname)
    
    txtname = '%s_Single_%s_fakes_Single_%s.txt' % (dt_type, fname, fnameb)
    txtfile  = tools.set_file(extbase=attr.fitpath, prefix=prefix, comname=txtname)
    
    alpha, mass, n, sigma = get_paras(dt_type, label, fnameb)
    
    par_str = '("%s", "%s", "%s", "%s", %s, %s, %s, %s)'
    par_tuple = (title, bkgfile, epsfile, txtfile, alpha, mass, n, sigma)
    par = par_str % par_tuple
    
    source = 'crossfeeds_nondiag.C'
    #if interact:
    source = os.path.join(attr.srcfitpath, source)

    tools.print_sep()
    sys.stdout.write('       ROOT macro: %s \n' % source)
    tools.print_sep()
    ROOT.gROOT.Macro(source + par)
    
    tools.eps2png(epsfile)
    tools.eps2pdf(epsfile)
Esempio n. 2
0
def stage_diag(dt_type, label, mode, sign, interact=False):

    if label != '281ipbv0.2':
        load_roofit_lib(dt_type, label)

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

    sys.stdout.write('Stage 0: Do fits for diagonal. Mode: (%s, %s) \n' %(mode, sign))

    prefix='dir_'+label+'/crossfeeds'

    if sign == 1:
        uname = modes[mode]['uname']
        fname = modes[mode]['fname']
    else:
        uname = modes[mode]['unamebar']
        fname = modes[mode]['fnamebar']

    title  = '%s correct reco' % uname

    bkgname = ('%s_Single_%s_fakes_Single_%s.evt' %(dt_type, fname, fname))
    bkgfile = get_bkgfile(bkgname, label)

    epsname = '%s_Single_%s_fakes_Single_%s.eps' % (dt_type, fname, fname)
    epsfile  = tools.set_file(extbase=attr.figpath, prefix=prefix, comname=epsname)
    
    txtname = '%s_Single_%s_fakes_Single_%s.txt' % (dt_type, fname, fname)
    txtfile  = tools.set_file(extbase=attr.fitpath, prefix=prefix, comname=txtname)

    par_str = '("%s", "%s", "%s", "%s")'
    par_tuple = (title, bkgfile, epsfile, txtfile)
    par = par_str % par_tuple
    
    source = 'crossfeeds.C'
    #if interact:
    source = os.path.join(attr.srcfitpath, source)
        
    tools.print_sep()
    sys.stdout.write('       ROOT macro: %s \n' % source)
    tools.print_sep()

    ROOT.gROOT.Macro(source + par)
    tools.eps2png(epsfile)
    tools.eps2pdf(epsfile)
Esempio n. 3
0
def print_paras(paras):

    sys.stdout.write('  title1  = %s\n' % paras[0])
    sys.stdout.write('  title2  = %s\n' % paras[1])
    sys.stdout.write('  evtfile = %s\n' % paras[2])
    sys.stdout.write('  epsfile = %s\n' % paras[3])
    sys.stdout.write('  outfile = %s\n' % paras[4])
    sys.stdout.write('  mc      = %s\n' % paras[5])
    sys.stdout.write('  num_fcn = %s\n' % paras[6])
    sys.stdout.write('  xi_side = %s\n' % paras[7])
    sys.stdout.write('  p_side  = %s\n' % paras[8])
    sys.stdout.write('  Sigma   = %s\n' % paras[9])
    sys.stdout.write('  Sa      = %s\n' % paras[10])
    sys.stdout.write('  Sb      = %s\n' % paras[11])
    sys.stdout.write('  Fa      = %s\n' % paras[12])
    sys.stdout.write('  Fb      = %s\n' % paras[13])
    sys.stdout.write('  int_d   = %s\n' % paras[14])
    sys.stdout.write('  optstr  = %s\n' % paras[15])
    sys.stdout.write('  Gamma   = %s\n' % paras[16])
    sys.stdout.write('  floatwidth = %s\n' % paras[17])
    sys.stdout.write('  R       = %s\n' % paras[18])
    sys.stdout.write('  Mres    = %s\n' % paras[19])
    tools.print_sep()

    sys.stdout.write('  N1      = %s\n' % paras[20])
    sys.stdout.write('  N2      = %s\n' % paras[21])
    sys.stdout.write('  Nbkgd1  = %s\n' % paras[22])
    sys.stdout.write('  Nbkgd2  = %s\n' % paras[23])
    sys.stdout.write('  md      = %s\n' % paras[24])
    sys.stdout.write('  p       = %s\n' % paras[25])
    sys.stdout.write('  sigmap1 = %s\n' % paras[26])
    sys.stdout.write('  xi      = %s\n' % paras[27])
    tools.print_sep()

    sys.stdout.write('  Min     = %s\n' % paras[28])
    sys.stdout.write('  options = %s\n' % paras[29])
    sys.stdout.write('  MINUIT  = %s\n' % paras[30])
Esempio n. 4
0
def print_paras(paras):

    sys.stdout.write( '  title1  = %s\n'     %paras[0])
    sys.stdout.write( '  title2  = %s\n'     %paras[1])
    sys.stdout.write( '  evtfile = %s\n'     %paras[2])
    sys.stdout.write( '  epsfile = %s\n'     %paras[3])
    sys.stdout.write( '  outfile = %s\n'     %paras[4])
    sys.stdout.write( '  mc      = %s\n'     %paras[5])
    sys.stdout.write( '  num_fcn = %s\n'     %paras[6])
    sys.stdout.write( '  xi_side = %s\n'     %paras[7])
    sys.stdout.write( '  p_side  = %s\n'     %paras[8])
    sys.stdout.write( '  Sigma   = %s\n'     %paras[9])
    sys.stdout.write( '  Sa      = %s\n'     %paras[10])
    sys.stdout.write( '  Sb      = %s\n'     %paras[11])
    sys.stdout.write( '  Fa      = %s\n'     %paras[12])
    sys.stdout.write( '  Fb      = %s\n'     %paras[13])
    sys.stdout.write( '  int_d   = %s\n'     %paras[14])
    sys.stdout.write( '  optstr  = %s\n'     %paras[15])
    sys.stdout.write( '  Gamma   = %s\n'     %paras[16])
    sys.stdout.write( '  floatwidth = %s\n'  %paras[17])
    sys.stdout.write( '  R       = %s\n'     %paras[18])
    sys.stdout.write( '  Mres    = %s\n'     %paras[19]) 
    tools.print_sep()

    sys.stdout.write( '  N1      = %s\n'     %paras[20])
    sys.stdout.write( '  N2      = %s\n'     %paras[21])
    sys.stdout.write( '  Nbkgd1  = %s\n'     %paras[22])
    sys.stdout.write( '  Nbkgd2  = %s\n'     %paras[23])
    sys.stdout.write( '  md      = %s\n'     %paras[24])
    sys.stdout.write( '  p       = %s\n'     %paras[25])
    sys.stdout.write( '  sigmap1 = %s\n'     %paras[26])
    sys.stdout.write( '  xi      = %s\n'     %paras[27])   
    tools.print_sep()

    sys.stdout.write( '  Min     = %s\n'     %paras[28])
    sys.stdout.write( '  options = %s\n'     %paras[29])
    sys.stdout.write( '  MINUIT  = %s\n'     %paras[30]) 
Esempio n. 5
0
def double_tag_mode(dt_type, mode, label, interact=False, test=False):
    mode = get_modekey(mode)
    tag = 'double'
    prefix = 'dir_' + label
    evtprefix = get_evtprefix(dt_type, label)

    mode1 = mode[0]
    mode2 = mode[1]

    title1 = attr.modes[mode1]['uname']
    title2 = attr.modes[mode2]['unamebar']

    code1 = attr.interfacecodes[mode1]
    code2 = attr.interfacecodes[mode2]

    forceCombine = None  # Different from single tag case

    Gamma, Mres, R, mc = get_common_parameters(dt_type, label)

    Sigma1, F1a, F1b, S1a, S1b = get_resolution_paras(mode1, label)
    Sigma2, F2a, F2b, S2a, S2b = get_resolution_paras(mode2, label)

    opt, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat = get_double_paras(label)

    epsfile = tools.set_file('eps',
                             dt_type,
                             mode,
                             tag,
                             prefix=prefix,
                             extbase=attr.figpath)
    fitpath = attr.fitpath
    outfile = tools.set_file('txt',
                             dt_type,
                             mode,
                             tag,
                             prefix=prefix,
                             extbase=fitpath)
    evtpath = attr.evtpath
    evtfile = tools.set_file('evt',
                             dt_type,
                             mode,
                             tag,
                             prefix=evtprefix,
                             forceCombine=forceCombine,
                             extbase=evtpath)
    if not os.access(evtfile, os.F_OK):
        if '818ipb' in evtprefix:
            evtfile_281ipb = evtfile.replace('818ipb', '281ipb')
            evtfile_537ipb = evtfile.replace('818ipb', '537ipb')
            combine_files(evtfile_281ipb, evtfile_537ipb, evtfile)
        else:
            raise ValueError(evtfile)

    tools.print_sep()

    par_str = '("%s", %f, %f, %f, %f, %f, "%s", %f, %f, %f, \
    %f, %f, "%s", "%s", "%s", %d, "%s", "%s", "%s", %f,\
    %f, %f,  %f, %f, %f, %f, %f)'

    par_tuple = (code1, Sigma1, F1a, F1b, S1a, S1b, code2, Sigma2, F2a, F2b,
                 S2a, S2b, evtfile, epsfile, outfile, mc, opt, title1, title2,
                 Gamma, Mres, R, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat)

    par = par_str % par_tuple

    print_paras_double(par_tuple)

    load_roofit_lib(dt_type, label)

    sourcename = 'lineshapefit2d.C'
    #if interact:
    source = os.path.join(attr.srcfitpath, sourcename)

    tools.print_sep()
    sys.stdout.write('       ROOT macro: %s \n' % source)
    tools.print_sep()
    if test:
        return

    ROOT.gROOT.Macro(source + par)

    sys.stdout.write('Save output in %s\n' % outfile)
    tools.eps2png(epsfile)
    tools.eps2pdf(epsfile)
Esempio n. 6
0
def double_all_dps(dt_type, mode, label, test=False):
    tag = 'double'
    prefix = 'dir_' + label
    evtprefix = get_evtprefix(dt_type, label)

    if label == '818ipbv12.1':
        label = '818ipbv12'

    mode1 = 200
    mode2 = 200

    title1 = attr.modes[mode1]['uname']
    title2 = attr.modes[mode2]['unamebar']

    code1 = attr.interfacecodes[mode1]
    code2 = attr.interfacecodes[mode2]

    Gamma, Mres, R, mc = get_common_parameters(dt_type, label)

    Sigma1, F1a, F1b, S1a, S1b = get_resolution_paras(mode1, label)
    Sigma2, F2a, F2b, S2a, S2b = get_resolution_paras(mode2, label)

    opt, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat = get_double_paras(label)

    epsfile = tools.set_file('eps',
                             dt_type,
                             mode,
                             tag,
                             prefix=prefix,
                             extbase=attr.figpath)
    fitpath = attr.fitpath
    outfile = tools.set_file('txt',
                             dt_type,
                             mode,
                             tag,
                             prefix=prefix,
                             extbase=fitpath)
    evtpath = attr.evtpath
    evtfile = tools.set_file('evt',
                             dt_type,
                             mode,
                             tag,
                             prefix=evtprefix,
                             forceCombine=0,
                             extbase=evtpath)

    if not os.access(evtfile, os.F_OK):
        forceCombine = 'all_dps'
        evtfile = tools.set_file('evt',
                                 dt_type,
                                 mode,
                                 tag,
                                 prefix=evtprefix,
                                 forceCombine=forceCombine,
                                 extbase=evtpath)
    tools.print_sep()

    par_str = '("%s", %f, %f, %f, %f, %f, "%s", %f, %f, %f, \
    %f, %f, "%s", "%s", "%s", %d, "%s", "%s", "%s", %f,\
    %f, %f,  %f, %f, %f, %f, %f)'

    par_tuple = (code1, Sigma1, F1a, F1b, S1a, S1b, code2, Sigma2, F2a, F2b,
                 S2a, S2b, evtfile, epsfile, outfile, mc, opt, title1, title2,
                 Gamma, Mres, R, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat)

    par = par_str % par_tuple

    print_paras_double(par_tuple)

    load_roofit_lib(dt_type, label)

    sourcename = 'lineshapefit2d.C'
    if prefix == 'dir_818ipbv12.1':
        sourcename = 'lineshapefit2d_1.C'
    #if interact:
    source = os.path.join(attr.srcfitpath, sourcename)

    tools.print_sep()
    sys.stdout.write('       ROOT macro: %s \n' % source)
    tools.print_sep()
    if test:
        return

    ROOT.gROOT.Macro(source + par)

    sys.stdout.write('Save output in %s\n' % outfile)
    tools.eps2png(epsfile)
    tools.eps2pdf(epsfile)
Esempio n. 7
0
def single_tag_mode(dt_type, mode, label, interact=False, test=False):
    mode = get_modekey(mode)
    tag = 'single'
    prefix = 'dir_' + label
    evtprefix = get_evtprefix(dt_type, label)
    Gamma, Mres, R, mc = get_common_parameters(dt_type, label)
    Sigma, Fa, Fb, Sa, Sb = get_resolution_paras(mode, label)
    N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1, xi = init_paras_single(
        label, dt_type, tag, mode)
    # ------------------- Parameters for the fit ----------
    title1 = attr.modes[mode]['uname']
    title2 = attr.modes[mode]['unamebar']
    num_fcn = 3  # : 0 for only background
    xi_side = 0.0
    p_side = 0.0
    int_d = 1
    optstr = 'p'  # To plot,  f : fast, w: fixwidth
    floatwidth = 0
    Min = 0.5
    options = ""
    MINUIT = "ermh4"
    # -------------------------------------------------

    if '/p/0.5' in label:
        p_side = 0.5

    if '/argus' in label:
        options = 'fix_xi,fix_p'
        xi, p = get_argus_paras_single(label, dt_type, tag, mode)

    if '/fix_sigmap1' in label:
        options = 'fix_sigmap1'
        if '/kssideband' in label:
            sys.stdout.write('Fixing the sigmap1 as %s ...\n' % Sigma)
            sigmap1 = Sigma

    if '/fix_n1n2' in label and '/desideband' in label:
        options = 'fix_n1n2'
        N1 = 1
        N2 = 1

    if dt_type == 'signal' and mode in [0, 200, 202]:
        p_side = 0.5
        tools.print_sep()

    forceCombine = 1
    epsfile = tools.set_file('eps',
                             dt_type,
                             mode,
                             tag,
                             prefix=prefix,
                             extbase=attr.figpath)
    fitpath = attr.fitpath
    outfile = tools.set_file('txt',
                             dt_type,
                             mode,
                             tag,
                             prefix=prefix,
                             extbase=fitpath)
    evtpath = attr.evtpath
    evtfile = tools.set_file('evt',
                             dt_type,
                             mode,
                             tag,
                             prefix=evtprefix,
                             forceCombine=forceCombine,
                             extbase=evtpath)
    tools.print_sep()
    par_str = '( "%s", "%s", "%s", "%s", "%s", %d, %d, %f, %f, %f, %f, \
    %f, %f, %f, %d, "%s", %f, %d, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, \
    %f, "%s", "%s" )'

    par_tuple = (title1, title2, evtfile, epsfile, outfile, mc, num_fcn,
                 xi_side, p_side, Sigma, Sa, Sb, Fa, Fb, int_d, optstr, Gamma,
                 floatwidth, R, Mres, N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1,
                 xi, Min, options, MINUIT)
    par = par_str % par_tuple
    print_paras(par_tuple)
    load_roofit_lib(dt_type, label)
    sourcename = 'mbc_singletag_3s.C'
    #if interact:
    source = os.path.join(attr.srcfitpath, sourcename)
    tools.print_sep()
    sys.stdout.write('       ROOT macro: %s \n' % source)
    tools.print_sep()
    if test:
        return
    ROOT.gROOT.Macro(source + par)

    if test:
        evtfile = evtfile + '.test'
        epsfile = epsfile + '.test'
        outfile = outfile + '.test'

    # fit_mbc_single(title1, title2, evtfile, epsfile, outfile, mc, num_fcn,
    #                xi_side, p_side, Sigma, Sa, Sb, Fa, Fb, int_d, optstr,
    #                Gamma, floatwidth, R, Mres, N1, N2, Nbkgd1, Nbkgd2, md,
    #                p, sigmap1, xi, Min, options, MINUIT)

    sys.stdout.write('Save output in %s\n' % outfile)
    if not test:
        tools.eps2png(epsfile)
        tools.eps2pdf(epsfile)
Esempio n. 8
0
def double_tag_mode(dt_type, mode, label, interact=False, test=False):
    mode = get_modekey(mode)
    tag = 'double'
    prefix = 'dir_'+label
    evtprefix = get_evtprefix(dt_type, label)

    mode1 = mode[0]
    mode2 = mode[1]

    title1 = attr.modes[mode1]['uname']
    title2 = attr.modes[mode2]['unamebar']

    code1 = attr.interfacecodes[mode1]
    code2 = attr.interfacecodes[mode2]
    
    forceCombine = None # Different from single tag case

    Gamma, Mres, R, mc = get_common_parameters(dt_type, label)

    Sigma1, F1a, F1b, S1a, S1b = get_resolution_paras(mode1, label)
    Sigma2, F2a, F2b, S2a, S2b = get_resolution_paras(mode2, label)

    opt, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat = get_double_paras(label)
    
    epsfile =  tools.set_file('eps', dt_type, mode, tag,
                              prefix=prefix, extbase=attr.figpath)
    fitpath = attr.fitpath 
    outfile =  tools.set_file('txt', dt_type, mode, tag,
                              prefix=prefix, extbase=fitpath)
    evtpath = attr.evtpath
    evtfile =  tools.set_file('evt', dt_type, mode, tag, prefix=evtprefix,
                              forceCombine=forceCombine, extbase=evtpath)
    if not os.access(evtfile, os.F_OK):
        if '818ipb' in evtprefix:
            evtfile_281ipb = evtfile.replace('818ipb', '281ipb')
            evtfile_537ipb = evtfile.replace('818ipb', '537ipb')
            combine_files(evtfile_281ipb, evtfile_537ipb, evtfile)
        else:
            raise ValueError(evtfile)

    tools.print_sep()

    par_str = '("%s", %f, %f, %f, %f, %f, "%s", %f, %f, %f, \
    %f, %f, "%s", "%s", "%s", %d, "%s", "%s", "%s", %f,\
    %f, %f,  %f, %f, %f, %f, %f)'

    par_tuple = (code1, Sigma1, F1a, F1b, S1a, S1b,
                 code2, Sigma2, F2a, F2b, S2a, S2b,
                 evtfile, epsfile, outfile, mc, opt, title1, title2,
                 Gamma, Mres, R, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat)
    
    par = par_str % par_tuple
        
    print_paras_double(par_tuple)

    load_roofit_lib(dt_type, label)

    sourcename = 'lineshapefit2d.C'
    #if interact:
    source = os.path.join(attr.srcfitpath, sourcename)
        
    tools.print_sep()
    sys.stdout.write('       ROOT macro: %s \n' % source)
    tools.print_sep()
    if test:
        return

    ROOT.gROOT.Macro( source + par)
    
    sys.stdout.write('Save output in %s\n'  % outfile)
    tools.eps2png(epsfile)
    tools.eps2pdf(epsfile)
Esempio n. 9
0
def double_all_dps(dt_type, mode, label, test=False):
    tag = 'double'
    prefix = 'dir_'+label
    evtprefix = get_evtprefix(dt_type, label)

    if label == '818ipbv12.1':
         label = '818ipbv12'

    mode1 = 200
    mode2 = 200

    title1 = attr.modes[mode1]['uname']
    title2 = attr.modes[mode2]['unamebar']

    code1 = attr.interfacecodes[mode1]
    code2 = attr.interfacecodes[mode2]
    
    Gamma, Mres, R, mc = get_common_parameters(dt_type, label)

    Sigma1, F1a, F1b, S1a, S1b = get_resolution_paras(mode1, label)
    Sigma2, F2a, F2b, S2a, S2b = get_resolution_paras(mode2, label)

    opt, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat = get_double_paras(label)

    epsfile =  tools.set_file('eps', dt_type, mode, tag,
                              prefix=prefix, extbase=attr.figpath)
    fitpath = attr.fitpath 
    outfile =  tools.set_file('txt', dt_type, mode, tag,
                              prefix=prefix, extbase=fitpath)
    evtpath = attr.evtpath
    evtfile =  tools.set_file('evt', dt_type, mode, tag, prefix=evtprefix,
                              forceCombine=0, extbase=evtpath)

    
    if not os.access(evtfile, os.F_OK):
        forceCombine = 'all_dps'  
        evtfile =  tools.set_file('evt', dt_type, mode, tag, prefix=evtprefix,
                                  forceCombine=forceCombine, extbase=evtpath)
    tools.print_sep()

    par_str = '("%s", %f, %f, %f, %f, %f, "%s", %f, %f, %f, \
    %f, %f, "%s", "%s", "%s", %d, "%s", "%s", "%s", %f,\
    %f, %f,  %f, %f, %f, %f, %f)'

    par_tuple = (code1, Sigma1, F1a, F1b, S1a, S1b,
                 code2, Sigma2, F2a, F2b, S2a, S2b,
                 evtfile, epsfile, outfile, mc, opt, title1, title2,
                 Gamma, Mres, R, N, Nbkgd1, Nbkgd2, Nbkgd3, NbkgdFlat)
    
    par = par_str % par_tuple
        
    print_paras_double(par_tuple)

    load_roofit_lib(dt_type, label)

    sourcename = 'lineshapefit2d.C'
    if prefix == 'dir_818ipbv12.1':
         sourcename = 'lineshapefit2d_1.C'
    #if interact:
    source = os.path.join(attr.srcfitpath, sourcename)
        
    tools.print_sep()
    sys.stdout.write('       ROOT macro: %s \n' % source)
    tools.print_sep()
    if test:
        return

    ROOT.gROOT.Macro( source + par)
    
    sys.stdout.write('Save output in %s\n'  % outfile)
    tools.eps2png(epsfile)
    tools.eps2pdf(epsfile)
Esempio n. 10
0
def single_tag_mode(dt_type, mode, label, interact=False, test=False):
    mode = get_modekey(mode)
    tag = 'single'
    prefix = 'dir_' + label
    evtprefix = get_evtprefix(dt_type, label)
    Gamma, Mres, R, mc = get_common_parameters(dt_type, label)
    Sigma, Fa, Fb, Sa, Sb = get_resolution_paras(mode, label)
    N1, N2, Nbkgd1, Nbkgd2, md, p, sigmap1, xi = init_paras_single(
        label, dt_type, tag, mode)
    # ------------------- Parameters for the fit ----------
    title1 = attr.modes[mode]['uname']
    title2 = attr.modes[mode]['unamebar']
    num_fcn  = 3  # : 0 for only background
    xi_side  = 0.0
    p_side   = 0.0
    int_d    = 1
    optstr   = 'p'  # To plot,  f : fast, w: fixwidth
    floatwidth = 0 
    Min      = 0.5
    options  = ""
    MINUIT   = "ermh4"
    # -------------------------------------------------

    if '/p/0.5' in label:
        p_side = 0.5

    if '/argus' in label:
        options = 'fix_xi,fix_p'
        xi, p = get_argus_paras_single(label, dt_type, tag, mode)

    if '/fix_sigmap1' in label:
        options = 'fix_sigmap1'
        if '/kssideband' in label:
            sys.stdout.write('Fixing the sigmap1 as %s ...\n' %Sigma)
            sigmap1 = Sigma 

    if '/fix_n1n2' in label and '/desideband' in label:
        options = 'fix_n1n2'
        N1 = 1
        N2 = 1
        
    if dt_type == 'signal' and mode in [0, 200, 202]:
        p_side = 0.5
        tools.print_sep()

    forceCombine = 1
    epsfile =  tools.set_file('eps', dt_type, mode, tag,
                              prefix=prefix, extbase=attr.figpath)
    fitpath = attr.fitpath 
    outfile =  tools.set_file('txt', dt_type, mode, tag,
                              prefix=prefix, extbase=fitpath)
    evtpath = attr.evtpath
    evtfile =  tools.set_file('evt', dt_type, mode, tag, prefix=evtprefix,
                              forceCombine=forceCombine, extbase=evtpath)
    tools.print_sep()
    par_str = '( "%s", "%s", "%s", "%s", "%s", %d, %d, %f, %f, %f, %f, \
    %f, %f, %f, %d, "%s", %f, %d, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, \
    %f, "%s", "%s" )'
    par_tuple = (title1, title2, evtfile, epsfile, outfile, mc, num_fcn,
                 xi_side, p_side, Sigma, Sa, Sb, Fa, Fb, int_d, optstr,
                 Gamma, floatwidth, R, Mres, N1, N2, Nbkgd1, Nbkgd2, md,
                 p, sigmap1, xi, Min, options, MINUIT)
    par = par_str % par_tuple
    print_paras(par_tuple)
    load_roofit_lib(dt_type, label)
    sourcename = 'mbc_singletag_3s.C'
    #if interact:
    source = os.path.join(attr.srcfitpath, sourcename)
    tools.print_sep()
    sys.stdout.write('       ROOT macro: %s \n' % source)
    tools.print_sep()
    if test:
        return
    ROOT.gROOT.Macro( source + par)

    if test:
        evtfile = evtfile + '.test'
        epsfile = epsfile + '.test'
        outfile = outfile + '.test'

    # fit_mbc_single(title1, title2, evtfile, epsfile, outfile, mc, num_fcn,
    #                xi_side, p_side, Sigma, Sa, Sb, Fa, Fb, int_d, optstr,
    #                Gamma, floatwidth, R, Mres, N1, N2, Nbkgd1, Nbkgd2, md,
    #                p, sigmap1, xi, Min, options, MINUIT)

    sys.stdout.write('Save output in %s\n'  % outfile)
    if not test:
        tools.eps2png(epsfile)
        tools.eps2pdf(epsfile)