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)
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
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
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
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
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
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
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
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)
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()
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
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
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()
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
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()
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')
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')
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)
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()
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))
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)
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)
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)
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)
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)
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)
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
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
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
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)
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
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))
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))
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()
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)
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)
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
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)
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()
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)
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
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
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
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
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()
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
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)
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)
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
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
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
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
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
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