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 create_python_script(opts, dt_type, tag, mode, label): if tag not in ['single', 'double'] : raise NameError(tag) content = '''#!/usr/bin/env python import fit fit.%s_tag_mode("%s", %s, "%s") '''% (tag, dt_type, mode, label) if tag == 'single': filename = '%s-%s-m%s-%s.py' % (dt_type, tag, mode, label) else: filename = '%s-%s-m%s-%s-%s.py' % ( dt_type, tag, mode[0], mode[1], label) 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 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_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 get_data_statonly_crosssectionsdef(prefix): filename = 'data_statonly_crosssectionsdef' file_ = tools.set_file(extbase=attr.brfpath, prefix=prefix, comname=filename) if '281ipb' in prefix: lumi = '281.50' elif '537ipb' in prefix: lumi = '536.57' elif '818ipb' in prefix or 'v13' in prefix: lumi = '818.10' else: raise NameError(prefix) content = '''0 4 %s 0. 0 n 0 n n n ''' % lumi f = UserFile() f.append(content) f.output(file_, verbose=1)
def main(opts, args): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] figname = 'kkmass_'+'_'.join(args[:-1]).replace('/', '_') org = UserFile() org.append(attr.fig_web_header) binbase = parse_opts_set(opts.set, 'binbase') binwidth = parse_opts_set(opts.set, 'binwidth') numbins = parse_opts_set(opts.set, 'numbins') for i in xrange(numbins): lowmass = binbase+i*binwidth highmass = binbase+(i+1)*binwidth for mode in modes: msg = create_fig_mode(opts, tag, datatype, mode, lowmass, highmass, label) org.append(msg) org.append(attr.fig_web_footer) orgname = '%s.org' % figname orgfile = os.path.join(attr.figpath, label, orgname) org.output(orgfile, verbose=1) orglink = '[[./fig/%s/%s][figure]]' %(label, orgname) sys.stdout.write('\n%s\n\n' % orglink) tools.org_export_as_html(orgfile)
def cleog_mode(opts, mode, label, tasks=[1]): sys.stdout.write('dhad.gen: Mode %s \n' %mode ) sys.stdout.write('dhad.gen: Label %s \n' %label) sys.stdout.write('dhad.gen: Task %s \n' %tasks) check_decfile(opts, mode, label) check_and_copy_file(opts, label, 'genmc.tcl') check_and_copy_file(opts, label, 'runlist') check_and_copy_file(opts, label, 'cleog-generic-array.sh') jobtype = 'cleog' seeds = tools.parse_opts_set(opts.set, 'seeds') edit_fix_single_mode_list(opts, mode, label) create_tag_numbers_file(opts, mode, label) for task_id in tasks: if opts.set and 'interact' in opts.set: bash_file, logfile = create_bash_interact( jobtype, mode, task_id, label=label, seeds=seeds) if opts.test: sys.stdout.write(bash_file + '\n') else: subprocess.Popen(bash_file) continue if opts.set and 'bg' in opts.set: bash_file, logfile = create_bash_interact( jobtype, mode, task_id, label=label, seeds=seeds) if opts.test: sys.stdout.write(bash_file + '\n') sys.stdout.write(logfile + '\n') else: sys.stdout.write('Save log as %s.\n' %logfile) process = subprocess.Popen(bash_file, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) f = UserFile() f.append(process.communicate()[0]) f.output(logfile) continue bash_file = create_bash_fix_mc_job(jobtype, label, task_id, seeds=seeds) if opts.test: sys.stdout.write(bash_file + '\n') continue output = commands.getoutput(bash_file) sys.stdout.write(output+ '\n')
def create_tag_numbers_file(opts, mode, label): tag_numbers = tools.parse_opts_set(opts.set, 'tag_numbers') if tag_numbers == None: tag_numbers = attr.get_tag_numbers(mode) tag_numbers_file = os.path.join(attr.datpath, 'signal', label, 'src', 'tag_numbers', mode) f = UserFile() f.data.append(str(tag_numbers)) verbose = opts.verbose if opts.test: verbose = 1 f.output(tag_numbers_file, verbose=verbose)
def create_python_script_allinone(dt_type, modes, label, test): content = '''#!/usr/bin/env python from fit import backgrounds backgrounds.fit_backgrounds_single("%s", %s, "%s", %s) '''% (dt_type, modes, label, test) filename = 'backgrounds-%s-allinone-%s.py' % (dt_type, 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 get_data_crosssectionsdef(prefix): filename = 'data_crosssectionsdef' file_ = tools.set_file(extbase=attr.brfpath, prefix=prefix, comname=filename) if '281ipb' in prefix: lumi = '281.50' lumi_err = '2.8150' elif '537ipb' in prefix: lumi = '536.57' lumi_err = '5.3657' elif '818ipb' in prefix or 'v13' in prefix: lumi = '818.10' lumi_err = '8.1810' else: raise NameError(prefix) bffilename = 'bf_stat' bffile = tools.set_file(extbase=attr.brfpath, prefix=prefix, comname=bffilename) brf = BrfFile(bffile) ne_xsec_err = brf.parsed['sigma(D0D0bar)'].split('+-')[-1].strip() ch_xsec_err = brf.parsed['sigma(D+D-)'].split('+-')[-1].strip() xsec_err = brf.parsed['sigma(DDbar)'].split('+-')[-1].strip() xsec_ratio_err = brf.parsed['chg/neu'].split('+-')[-1].strip() content = '''0 4 %s %s 0 y %s 0 y %s y %s y %s ''' % (lumi, lumi_err, ne_xsec_err, ch_xsec_err, xsec_err, xsec_ratio_err) f = UserFile() f.append(content) f.output(file_, verbose=1)
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 pass2_mode(opts, mode, label, tasks=[1]): sys.stdout.write('dhad.gen.pass2: Mode %s \n' %mode ) sys.stdout.write('dhad.gen.pass2: Label %s \n' %label) sys.stdout.write('dhad.gen.pass2: Task %s \n' %tasks) jobtype = 'pass2' cleog.edit_fix_single_mode_list(opts, mode, label) cleog.check_and_copy_file(opts, label, 'mcp2.tcl') cleog.check_and_copy_file(opts, label, 'pass2-generic-array.sh') for task_id in tasks: if opts.set == 'interact': bash_file, logfile = cleog.create_bash_interact( jobtype, mode, task_id, label=label) if opts.test: sys.stdout.write(bash_file + '\n') else: subprocess.Popen(bash_file) return if opts.set == 'bg': bash_file, logfile = cleog.create_bash_interact( jobtype, mode, task_id, label=label) if opts.test: sys.stdout.write(bash_file + '\n') sys.stdout.write(logfile + '\n') else: sys.stdout.write('Save log as %s.\n' %logfile) process = subprocess.Popen(bash_file, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) f = UserFile() f.append(process.communicate()[0]) f.output(logfile) return bash_file = cleog.create_bash_fix_mc_job(jobtype, label, task_id) if opts.test: sys.stdout.write(bash_file + '\n') continue output = commands.getoutput(bash_file) sys.stdout.write(output+ '\n')
def create_python_script(opts, filename, datatype, mode, label): content = '''#!/usr/bin/env python from sel import kkmass kkmass.single_tag_mode("%s", "%s", "%s", test=%s) '''% (datatype, mode, label, opts.test) 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
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_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 create_bash_file(opts, datatype, label, script, bashname='get-yields.sh', subdir='yld', optcommand=''): script_dir = os.path.join( attr.datpath, datatype, label, 'src', subdir) bash_content = '''#!/bin/sh #$ -S /usr/local/bin/bash #$ -j y #$ -m a #$ -M [email protected] date hostname . ~/.bashrc setdhad %s %s cd %s ./%s date ''' % (attr.version, optcommand, script_dir, script) bash_file = os.path.join(script_dir, bashname) verbose = opts.verbose if opts.test: verbose = 1 f = UserFile() f.append(bash_content) f.output(bash_file, verbose=verbose) os.chmod(bash_file, 0755) return bash_file
def create_sh(filename, randomseeds=''): code_dir = os.path.join(attr.base, 'src', attr.src, 'gen') sh_file = tools.set_file(extbase=code_dir, comname=filename) sh_content = '''#!/bin/sh # request Bourne shell as shell for job #$ -S /usr/local/bin/bash #$ -j y #$ -m a #$ -M [email protected] date hostname . /nfs/cleo3/Offline/scripts/cleo3logins . /nfs/cleo3/Offline/scripts/cleo3defs c3rel $CGRELEASE echo $SHELL cd $SCRIPTDIR %s export BATCH=$SGE_TASK_ID export NUMEVT=`cat $SCRIPTDIR/tag_numbers/$1` export RUNNUMBER=`nl -s " " $SCRIPTDIR/runlist | grep " $SGE_TASK_ID " | awk '{ print $2 }'` export DECAYTITLE=$1 export UDECAY=$SCRIPTDIR/tag_decfiles/$1.dec export OUTDIR=$TOPDIR/cleog$CGSUFFIX suez -f genmc.tcl date ''' % (randomseeds) f = UserFile() f.append(sh_content) f.output(sh_file)
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_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 check_decfile_single(opts, label, toppath, decfile, headername, modename): headerfile = os.path.join(toppath, 'tag_fragments', headername) fragfile = os.path.join(toppath, 'tag_fragments', modename) try: frag = open(fragfile, 'r') except IOError: tag_fragments(opts, [label]) frag = open(fragfile, 'r') f = UserFile() fin = open(headerfile, 'r') f.extend(fin.readlines()) f.extend(frag.readlines()) f.append('End\n') verbose = opts.verbose if opts.test: verbose = 1 f.output(decfile, verbose=verbose) fin.close() frag.close()
def main(opts, args): dt_type = args[0] stage = args[1] label = args[2]+'/crossfeeds' single_modes = get_single_modes(opts.set) org = UserFile() org.append(attr.fig_web_header) if stage == 'diag': for mode, sign in single_modes: msg = create_fig_diag_mode(dt_type, stage, label, mode, sign) org.append(msg) elif stage == 'nondiag': for x, y in [(x, y) for x in single_modes for y in single_modes if x!=y]: sys.stdout.write('Creating mode %s, %s ... ' % (x, y)) sys.stdout.flush() msg = create_fig_nondiag_mode(dt_type, stage, label, x, y) org.append(msg) sys.stdout.write('OK.\n') else: raise NameError(stage) figname = 'crossfeeds_' + '_'.join(args).replace('/', '_') org.append(attr.fig_web_footer) figlabel = label.split('/')[0] figname = figname.replace(figlabel, '') figname = figname.replace('__', '_') orgname = figname+'.org' orgname = orgname.replace('_.org', '.org') orgpath = os.path.join(attr.figpath, figlabel) orgfile = tools.check_and_join(orgpath, orgname) verbose = opts.verbose if opts.test: verbose = 1 org.output(orgfile, verbose=verbose) orglink = '[[./fig/%s/%s][figure]]' %(figlabel, orgname) sys.stdout.write('\n%s\n\n' % orglink) if opts.test: return tools.org_export_as_html(orgfile)
def create_bash_fix_mc_job(jobtype, label, task_id='1', seeds=None, verbose=0): CGRELEASE= attr.cleog P2RELEASE= attr.pass2 DSKIMRELEASE = attr.dskim CGSUFFIX = '_'+ CGRELEASE SUFFIX = CGSUFFIX + '_' + P2RELEASE TOPDIR = os.path.join(attr.base, 'dat/signal', label) SCRIPTDIR = os.path.join(TOPDIR, 'src') DODECAYTREE='0' DOCLEOG='0' DOPASS2='0' DODSKIM='0' DONTUPLE='0' if jobtype == 'decaytree': DODECAYTREE='1' elif jobtype == 'cleog': DOCLEOG='1' if seeds != None: randomseeds = 'export RANDOMSEEDS=%s' % seeds create_sh('cleog-generic-array.sh', randomseeds) elif jobtype == 'pass2': DOPASS2='1' elif jobtype == 'dskim': DODSKIM='1' elif jobtype == 'ntuple': DONTUPLE='1' else: sys.stdout.write('\nUnknow jobtype: %s\n' % jobtype) sys.exit() bash_content = '''#!/usr/local/bin/bash export CGRELEASE=%s export P2RELEASE=%s export DSKIMRELEASE=%s export CGSUFFIX=%s export SUFFIX=%s export TOPDIR=%s export SCRIPTDIR=%s LOGDIR=$TOPDIR/log$SUFFIX DODECAYTREE=%s DOCLEOG=%s DOPASS2=%s DODSKIM=%s DONTUPLE=%s FIXTASKID=%s FILELISTINGS="fix_single_mode_list" if [ ! -e $TOPDIR ] ; then mkdir -p $TOPDIR ; fi if [ ! -e $LOGDIR ] ; then mkdir -p $LOGDIR ; fi cd $SCRIPTDIR for STRING in `cat $FILELISTINGS` ; do if [[ $DODECAYTREE == 1 ]] ; then if [ ! -e $TOPDIR/decaytree$CGSUFFIX ] ; then mkdir $TOPDIR/decaytree$CGSUFFIX ; fi qsub -l arch=lx24-x86 -o $LOGDIR/decaytree-$STRING-\$TASK_ID.txt \ -N decaytree-$STRING -t $FIXTASKID \ -v CGSUFFIX,TOPDIR,SCRIPTDIR,CGRELEASE \ decaytree-generic-array.sh $STRING fi if [[ $DOCLEOG == 1 ]] ; then if [ ! -e $TOPDIR/cleog$CGSUFFIX ] ; then mkdir $TOPDIR/cleog$CGSUFFIX ; fi qsub -l arch=lx24-x86 -o $LOGDIR/cleog-$STRING-\$TASK_ID.txt \ -N cleog-$STRING -t $FIXTASKID \ -v CGSUFFIX,TOPDIR,SCRIPTDIR,CGRELEASE \ cleog-generic-array.sh $STRING fi if [[ $DOPASS2 == 1 ]] ; then if [ ! -e $TOPDIR/pass2$SUFFIX ] ; then mkdir $TOPDIR/pass2$SUFFIX ; fi qsub -l arch=lx24-x86 -o $LOGDIR/pass2-$STRING-\$TASK_ID.txt \ -N pass2-$STRING -hold_jid cleog-$STRING \ -t $FIXTASKID \ -v SUFFIX,CGSUFFIX,TOPDIR,SCRIPTDIR,P2RELEASE \ pass2-generic-array.sh $STRING fi if [[ $DODSKIM == 1 ]] ; then if [ ! -e $TOPDIR/dskim$SUFFIX ] ; then mkdir $TOPDIR/dskim$SUFFIX ; fi qsub -l arch=lx24-x86 -o $LOGDIR/dskim-$STRING-\$TASK_ID.txt \ -N dskim-$STRING -hold_jid pass2-$STRING \ -t $FIXTASKID \ -v SUFFIX,CGSUFFIX,TOPDIR,SCRIPTDIR,DSKIMRELEASE \ dskim-generic-array.sh $STRING fi if [[ $DONTUPLE == 1 ]] ; then if [ ! -e $SCRIPTDIR/tmp ] ; then mkdir -p $SCRIPTDIR/tmp; fi if [ ! -e $TOPDIR/dtuple$SUFFIX ] ; then mkdir $TOPDIR/dtuple$SUFFIX ; fi qsub -l arch=lx24-x86 -o $LOGDIR/dtuple-$STRING.txt \ -N dtuple-$STRING -hold_jid dskim-$STRING -v SUFFIX,TOPDIR,SCRIPTDIR \ dtuple-generic-array.sh $STRING fi done ''' % (CGRELEASE, P2RELEASE, DSKIMRELEASE, CGSUFFIX, SUFFIX, TOPDIR , SCRIPTDIR, DODECAYTREE, DOCLEOG, DOPASS2 , DODSKIM, DONTUPLE, task_id) bash_file = os.path.join(SCRIPTDIR, 'fix_mc_job.sh') f = UserFile() f.data.append(bash_content) f.output(bash_file, verbose) os.chmod(bash_file, 0755) return bash_file
def create_bash_interact(jobtype, mode, task_id=1, label='', seeds=None, verbose=0): bashname = '%s_task_%s.sh' %(jobtype, task_id) CGRELEASE= attr.cleog P2RELEASE= attr.pass2 DSKIMRELEASE = attr.dskim CGSUFFIX = '_'+ CGRELEASE SUFFIX = CGSUFFIX + '_' + P2RELEASE TOPDIR = os.path.join(attr.base, 'dat/signal', label) SCRIPTDIR = os.path.join(TOPDIR, 'src') logname = '%s-%s-%s.txt' %(jobtype, mode, task_id) logpath = os.path.join(TOPDIR, 'log%s' %SUFFIX) logfile = tools.set_file(extbase=logpath, comname=logname) core_content = attr.gen_core_content[jobtype] if jobtype == 'cleog' and seeds != None: randomseeds = 'export RANDOMSEEDS=%s' % seeds core_content = randomseeds + core_content bash_content = '''#!/usr/local/bin/bash date hostname . /nfs/cleo3/Offline/scripts/cleo3logins . /nfs/cleo3/Offline/scripts/cleo3defs export CGRELEASE=%s export P2RELEASE=%s export DSKIMRELEASE=%s export CGSUFFIX=%s export SUFFIX=%s export TOPDIR=%s export SCRIPTDIR=%s LOGDIR=$TOPDIR/log$SUFFIX STRING="%s" SGE_TASK_ID=%s if [ ! -e $TOPDIR ] ; then mkdir -p $TOPDIR ; fi if [ ! -e $LOGDIR ] ; then mkdir -p $LOGDIR ; fi cd $SCRIPTDIR export BATCH=$SGE_TASK_ID export DECAYTITLE=$STRING export UDECAY=$SCRIPTDIR/tag_decfiles/$STRING.dec %s # print date and time again date ''' % (CGRELEASE, P2RELEASE, DSKIMRELEASE, CGSUFFIX, SUFFIX, TOPDIR, SCRIPTDIR, mode, task_id, core_content) bash_file = os.path.join(SCRIPTDIR, bashname) f = UserFile() f.data.append(bash_content) f.output(bash_file, verbose) os.chmod(bash_file, 0755) return bash_file, logfile
def create_brsfile_three(args): comname = '_'.join(args) comname = comname.replace('.', '_') brsfile = set_file(extbase=attr.srcmnfpath, comname=comname, ext='mnf') brs = UserFile() header = r''' set def del 0 dep nmodes = 9 ''' brs.append(header) label_0, content_0 = get_brs(args[0]) label_1, content_1 = get_brs(args[2]) label_2, content_2 = get_brs(args[1]) brs.extend(content_0) brs.extend(content_1) hmin = 0.4 hmax = 1.6 xleft = 0.45 textsize = 0.45 if args[0] == 'pdg2010': hmin = 0.85 hmax = 1.10 xleft = 0.86 trunk = r''' exec colors dep yoffset = -0.15 exec pdgCompareMany %s %s white mustard burgundy "%s" 4 "%s" 8 ! Add another set of data points rename 1 11 rename 2 12 ''' % (hmin, hmax, label_0, label_1) brs.append(trunk) brs.extend(content_0) brs.extend(content_2) footer = r''' dep yoffset = 0.15 exec pdgCompareMany %s %s white mustard burgundy "%s" 3 "%s" 6.5 over 11 -60/lavender over 12 -60/lavender key 1 new 1000 %s 13 17.5 0.4 0 left cm -2000 lavender 3 0.01 black draw line 1 black 1 plot %s, -3.5 %s, -3.5 ! xleft is the x position of the mode label in plot units dep xleft = %s dep textsize = %s exec pdgCompareComment 1 xleft textsize "'K^-![p]^+'" exec pdgCompareComment 2 xleft textsize "'K^-![p]^+![p]^0!'" exec pdgCompareComment 3 xleft textsize "'K^-![p]^+![p]^-![p]^+!'" exec pdgCompareComment 4 xleft textsize "'K^-![p]^+![p]^+!'" exec pdgCompareComment 5 xleft textsize "'K^-![p]^+![p]^+![p]^0!'" exec pdgCompareComment 6 xleft textsize "'K^0?S![p]^+!'" exec pdgCompareComment 7 xleft textsize "'K^0?S![p]^+![p]^0!'" exec pdgCompareComment 8 xleft textsize "'K^0?S![p]^+![p]^-![p]^+!'" exec pdgCompareComment 9 xleft textsize "'K^-!K^+![p]^+!'" hard epost ''' % (hmin, hmax, label_0, label_2, label_1, hmin, hmax, xleft, textsize) brs.append(footer) brs.output(brsfile) return brsfile
def output_headerfiles(label): headernames = ['Double_D0D0B_header', 'Double_DpDm_header', 'Single_D0_header', 'Single_D0B_header', 'Single_Dp_header', 'Single_Dm_header'] outpath = os.path.join(attr.datpath, 'signal', label, 'src', 'tag_fragments') for hname in headernames: headerfile = tools.check_and_join(outpath, hname) f = UserFile() if 'D0D0B' in hname: alias_line = '#\nAlias myD0 D0\n#\n#\nAlias myanti-D0 anti-D0\n#\n' psi_decay_line = '1.000 myD0 myanti-D0 VSS;\n' if 'DpDm' in hname: alias_line = '#\nAlias myD+ D+\n#\n#\nAlias myD- D-\n#\n' psi_decay_line = '1.000 myD+ myD- VSS;\n' elif 'Single_D0_' in hname: alias_line = '#\nAlias myD0 D0\n#\n' psi_decay_line = '1.000 myD0 anti-D0 VSS;\n' elif 'Single_D0B_' in hname: alias_line = '#\nAlias myanti-D0 anti-D0\n#\n' psi_decay_line = '1.000 D0 myanti-D0 VSS;\n' elif 'Single_Dp_' in hname: alias_line = '#\nAlias myD+ D+\n#\n' psi_decay_line = '1.000 myD+ D- VSS;\n' elif 'Single_Dm_' in hname: alias_line = '#\nAlias myD- D-\n#\n' psi_decay_line = '1.000 D+ myD- VSS;\n' f.append(alias_line) f.append('Decay vpho\n1.000 psi(3770) gamma VPHOTOVISR ;\nEnddecay\n#\nDecay psi(3770)\n') f.append(psi_decay_line) f.append('Enddecay\n#') f.output(headerfile, verbose=1)
def output_fakemodes(fakemodes, modefile): f = UserFile() f.data.append('Mode || Number \n') for k, v in fakemodes.items(): f.data.append('%s | %s \n' %(k, v)) f.output(modefile)
def yields_and_efficiencies(opts, args): label = args[0] prefix = 'dir_'+label yldfile = tools.set_file(extbase=attr.brfpath, prefix=prefix, comname='yields_and_efficiencies') f = UserFile() single_modes = [(pair, sign) for pair in modes for sign in [-1, 1]] input_label = label if '.' in label: input_label = label.split('.')[0] prefix='dir_'+input_label+'/crossfeeds' dt_type = 'signal' for x in single_modes: 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'] txtname = '%s_Single_%s_fakes_Single_%s.txt' % (dt_type, fname, fname) txtfile = tools.set_file(extbase=attr.fitpath, prefix=prefix, comname=txtname) tab = DHadTable(txtfile) entries = tab.cell_get('entries', 'Value') entries = tab.cell_trim(entries, rnd='1') yld = tab.cell_get('yield', 'Value') yld = tab.cell_trim(yld, rnd='.000001') ratio = tab.cell_get('ratio', 'Value') ratio = tab.cell_trim(ratio, rnd='.000001') f.data.append('%s: %s %s %s\n' % (fname, entries, yld, ratio)) 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'] txtname = '%s_Single_%s_fakes_Single_%s.txt' % (dt_type, fname, fnameb) txtfile = tools.set_file(extbase=attr.fitpath, prefix=prefix, comname=txtname) tab = DHadTable(txtfile) entries = tab.cell_get('entries', 'Value') entries = tab.cell_trim(entries, rnd='1') yld = tab.cell_get('yld', 'Value') ylderr = tab.cell_get('yld', 'Error') try: float(yld)/float(ylderr) except: sys.stdout.write('The original ylderr is %s, set to 1.0e10.\n' % ylderr) ylderr = 1.0e10 yldsigma = str(float(yld)/float(ylderr)) yldsigma = tab.cell_trim(yldsigma, rnd='.000001') yld = tab.cell_trim(yld, rnd='.000001') ratio = str(float(yld)/float(entries)) ratio = tab.cell_trim(ratio, rnd='.000001') ratioerr = str(float(ylderr)/float(entries)) ratioerr = tab.cell_trim(ratioerr, rnd='.000001') f.data.append('%s fakes %s: %s %s %s %s %s\n' % ( fname, fnameb, yldsigma, entries, yld, ratio, ratioerr)) f.output(yldfile, verbose=1) return yldfile
def main(opts, args): if args[0] == 'backgrounds': import backgrounds backgrounds.main(opts, args[1:]) return if args[0] == 'brs': import brs brs.main(opts, args[1:]) return if args[0] == 'compare': import compare compare.main(opts, args[1:]) return if args[0] == 'cbx': import cbx cbx.main(opts, args[1:]) return if args[0] == 'crossfeeds': import crossfeeds crossfeeds.main(opts, args[1:]) return if args[0] == 'evt': import evt evt.main(opts, args[1:]) return if args[0] == 'fun': import fun fun.main(opts, args[1:]) return if args[0] == 'kkmass': import kkmass kkmass.main(opts, args[1:]) return if args[0] == 'kpimass': import kpimass kpimass.main(opts, args[1:]) return if args[0] == 'trim': import trim trim.main(opts, args[1:]) return if args[0] == 'trkmtm': import trkmtm trkmtm.main(opts, args[1:]) return if args[0] == 'trkmtm1': import trkmtm1 trkmtm1.main(opts, args[1:]) return if args[0] == 'trkmtm2': import trkmtm2 trkmtm2.main(opts, args[1:]) return if args[0] == 'var': import var var.main(opts, args[1:]) return figname = '_'.join(args).replace('/', '_') parsed = parse_args(args) dt_type = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] sqrt = False if opts.set and opts.set == 'sqrt': sqrt = True linr = False if opts.set and opts.set == 'linr': linr = True org = UserFile() org.append(attr.fig_web_header) for mode in modes: if mode == 'double_all_d0s' or mode == 'double_all_dps' : modekey = mode else: modekey = get_modekey(mode) if sqrt: sqrt_fig_mode(tag, dt_type, modekey, label) sys.stdout.write('Creating %s ...' % mode) sys.stdout.flush() msg = create_fig_mode(tag, dt_type, modekey, label) sys.stdout.write(' OK.\n') org.append(msg) org.append(attr.fig_web_footer) figlabel = label.split('/')[0] figname = figname.replace(figlabel, '') figname = figname.replace('__', '_') orgname = figname+'.org' orgname = orgname.replace('_.org', '.org') orgpath = os.path.join(attr.figpath, figlabel) orgfile = tools.check_and_join(orgpath, orgname) verbose = opts.verbose if opts.test: verbose = 1 org.output(orgfile, verbose=verbose) orglink = '[[./fig/%s/%s][figure]]' %(figlabel, orgname) sys.stdout.write('\n%s\n\n' % orglink) if opts.test: return tools.org_export_as_html(orgfile)
def output_headerfiles(label): headernames = [ 'Double_D0D0B_header', 'Double_DpDm_header', 'Single_D0_header', 'Single_D0B_header', 'Single_Dp_header', 'Single_Dm_header' ] outpath = os.path.join(attr.datpath, 'signal', label, 'src', 'tag_fragments') for hname in headernames: headerfile = tools.check_and_join(outpath, hname) f = UserFile() if 'D0D0B' in hname: alias_line = '#\nAlias myD0 D0\n#\n#\nAlias myanti-D0 anti-D0\n#\n' psi_decay_line = '1.000 myD0 myanti-D0 VSS;\n' if 'DpDm' in hname: alias_line = '#\nAlias myD+ D+\n#\n#\nAlias myD- D-\n#\n' psi_decay_line = '1.000 myD+ myD- VSS;\n' elif 'Single_D0_' in hname: alias_line = '#\nAlias myD0 D0\n#\n' psi_decay_line = '1.000 myD0 anti-D0 VSS;\n' elif 'Single_D0B_' in hname: alias_line = '#\nAlias myanti-D0 anti-D0\n#\n' psi_decay_line = '1.000 D0 myanti-D0 VSS;\n' elif 'Single_Dp_' in hname: alias_line = '#\nAlias myD+ D+\n#\n' psi_decay_line = '1.000 myD+ D- VSS;\n' elif 'Single_Dm_' in hname: alias_line = '#\nAlias myD- D-\n#\n' psi_decay_line = '1.000 D+ myD- VSS;\n' f.append(alias_line) f.append( 'Decay vpho\n1.000 psi(3770) gamma VPHOTOVISR ;\nEnddecay\n#\nDecay psi(3770)\n' ) f.append(psi_decay_line) f.append('Enddecay\n#') f.output(headerfile, verbose=1)
def main(opts, args): parsed = parse_args(args) datatype = parsed[0] tag = parsed[1] modes = parsed[2] label = parsed[3] figname = '_'.join(args).replace('/', '_') org = UserFile() org.append(attr.fig_web_header) if 'allinone' in opts.set: msg = create_fig(datatype, label) org.append(msg) else: for mode in modes: msg = create_fig_mode(tag, datatype, mode, label) org.append(msg) org.append(attr.fig_web_footer) orgname = '%s.org' % figname orgfile = os.path.join(attr.figpath, orgname) org.output(orgfile) tools.org_export_as_html(orgfile) orglink = '[[./%s/fig/%s][figure]]' %(attr.analysis, orgname) sys.stdout.write('\n%s\n\n' % orglink)
def output_set_to_file(set_, file_): f = UserFile() f.data = sorted(list(set_)) f.output(file_)