예제 #1
0
import sys, os
from collections import defaultdict
from JMTucker.Tools.ROOTTools import *
from JMTucker.Tools.general import bool_from_argv
set_style()
ROOT.gStyle.SetOptStat(1110)
ROOT.gStyle.SetPadTopMargin(0.05)
ROOT.gStyle.SetPadBottomMargin(0.1)
ROOT.gStyle.SetPadLeftMargin(0.05)
ROOT.gStyle.SetPadRightMargin(0.02)

draw_individual_dists = bool_from_argv('draw_individual_dists')

if draw_individual_dists:
    ps = plot_saver(plot_dir('vtoy'), size=(400, 300), log=False)
else:
    ps = plot_saver(plot_dir('vtoy'), size=(1200, 500))

path = sys.argv[1]
fn = os.path.join(path, 'expected.root')
f = ROOT.TFile(fn)

limit_t = f.Get('limit')
limit_by_toy = {}
for _ in ttree_iterator(limit_t):
    limit_by_toy[limit_t.iToy] = limit_t.limit

limit_by_dist = defaultdict(list)
toys = f.Get('toys')
for ktoy in toys.GetListOfKeys():
    toy = ktoy.GetName()
예제 #2
0
#!/usr/bin/env python

import os, sys, shutil, re
from fnmatch import fnmatch
from pprint import pprint
from collections import defaultdict
from JMTucker.Tools.ROOTTools import *
from JMTucker.Tools.general import bool_from_argv

if len(sys.argv) < 5:
    print 'usage: mergeByRunTH1.py in_fn out_fn min_run max_run [glob_pattern_1 ...]'
    sys.exit(1)

yes = bool_from_argv('yes')
in_fn = sys.argv[1]
out_fn = sys.argv[2]
min_run = int(sys.argv[3])
max_run = int(sys.argv[4])
patterns = sys.argv[5:]
def use(path):
    return not patterns or any(fnmatch(path, pattern) for pattern in patterns)

if not os.path.isfile(in_fn):
    print 'no file', in_fn
    sys.exit(1)

if os.path.isfile(out_fn):
    print 'refusing to clobber', out_fn
    sys.exit(1)

shutil.copy2(in_fn, out_fn)
예제 #3
0
#!/usr/bin/env python

import os, sys, shutil, re
from fnmatch import fnmatch
from pprint import pprint
from collections import defaultdict
from JMTucker.Tools.ROOTTools import *
from JMTucker.Tools.general import bool_from_argv

if len(sys.argv) < 5:
    print 'usage: mergeByRunTH1.py in_fn out_fn min_run max_run [glob_pattern_1 ...]'
    sys.exit(1)

yes = bool_from_argv('yes')
in_fn = sys.argv[1]
out_fn = sys.argv[2]
min_run = int(sys.argv[3])
max_run = int(sys.argv[4])
patterns = sys.argv[5:]


def use(path):
    return not patterns or any(fnmatch(path, pattern) for pattern in patterns)


if not os.path.isfile(in_fn):
    print 'no file', in_fn
    sys.exit(1)

if os.path.isfile(out_fn):
    print 'refusing to clobber', out_fn
예제 #4
0
import sys, os
from collections import defaultdict
from JMTucker.Tools.ROOTTools import *
from JMTucker.Tools.general import bool_from_argv
set_style()
ROOT.gStyle.SetOptStat(1110)
ROOT.gStyle.SetPadTopMargin(0.05)
ROOT.gStyle.SetPadBottomMargin(0.1)
ROOT.gStyle.SetPadLeftMargin(0.05)
ROOT.gStyle.SetPadRightMargin(0.02)

draw_individual_dists = bool_from_argv('draw_individual_dists')

if draw_individual_dists:
    ps = plot_saver(plot_dir('vtoy'), size=(400,300), log=False)
else:
    ps = plot_saver(plot_dir('vtoy'), size=(1200,500))

path = sys.argv[1]
fn = os.path.join(path, 'expected.root')
f = ROOT.TFile(fn)

limit_t = f.Get('limit')
limit_by_toy = {}
for _ in ttree_iterator(limit_t):
    limit_by_toy[limit_t.iToy] = limit_t.limit

limit_by_dist = defaultdict(list)
toys = f.Get('toys')
for ktoy in toys.GetListOfKeys():
    toy = ktoy.GetName()
예제 #5
0
#!/usr/bin/env python

from JMTucker.Tools.ROOTTools import *
from JMTucker.Tools.Sample import norm_from_file
from JMTucker.Tools.Year import year
from JMTucker.Tools.general import typed_from_argv, bool_from_argv
from JMTucker.Tools import Samples
import JMTucker.MFVNeutralino.AnalysisConstants as ac

year = typed_from_argv(int, year, name='year')
yearcheck = not bool_from_argv('noyearcheck')
nosig = bool_from_argv('nosig')
nodata = bool_from_argv('nodata')
nobkg = bool_from_argv('nobkg')
onlysig = bool_from_argv('onlysig')
onlydata = bool_from_argv('onlydata')
onlybkg = bool_from_argv('onlybkg')
sumbkg = not bool_from_argv('nosumbkg')
sumall = bool_from_argv('sumall')
sort = not bool_from_argv('nosort')

genmatch = bool_from_argv('genmatch')
minnjets = typed_from_argv(int, name='minnjets')
maxnjets = typed_from_argv(int, name='maxnjets')
minht = typed_from_argv(float, name='minht')
maxht = typed_from_argv(float, name='maxht')
mindbv = typed_from_argv(float, name='mindbv')
maxdbv = typed_from_argv(float, name='maxdbv')

which = typed_from_argv(int, -1)
ntks = ('mfvMiniTreeNtk3', 'mfvMiniTreeNtk4', 'mfvMiniTree')
예제 #6
0
#!/usr/bin/env python

import os, sys, tempfile
from JMTucker.Tools.general import bool_from_argv

remove_newlines = bool_from_argv('remove_newlines')
remove_blanks = bool_from_argv('remove_blanks')

in_fn = sys.argv[1]
tmp_f, tmp_fn = tempfile.mkstemp()
out_f, out_fn = tempfile.mkstemp()

file = os.fdopen(tmp_f, 'wt')
file.write(open(in_fn).read())
file.write('\nopen("%s", "wt").write(process.dumpPython())\n' % out_fn)
file.close()
os.system('python %s > /dev/null' % tmp_fn)

parens = 0

for line in os.fdopen(out_f):
    if remove_newlines:
        for c in line:
            if c in '{[(':
                parens += 1
            elif c in '}])':
                parens -= 1
        if parens:
            line = line.strip()
    if not remove_blanks or line.strip():
        print line,
예제 #7
0
            raise ValueError('only found %i files, expected %i' %
                             (len(exp_fns), njobs))
        if not hadd(exp_fn, exp_fns):
            raise ValueError('problem hadding %s from %s files' %
                             (exp_fn, len(exp_fns)))

    exp = fromtree(exp_fn)
    if len(exp) != njobs * ntoysperjob:
        raise ValueError(
            'unexpected number of points in %s' %
            exp_fn)  # this can't be given the asserts in fromtree right now

    stats(out_fn, obs, exp)


def rrange(path):
    l = fromtree(os.path.join(path, 'expected.root'))
    minl, maxl = min(l), max(l)
    print 'rm *.root %(path)s/observed_byhand.root ; combine -M BayesianToyMC %(path)s/datacard.txt --rMin %(minl)f --rMax %(maxl)f | tee %(path)s/byhand ; mv higgsCombineTest.BayesianToyMC.mH120.root %(path)s/observed_byhand.root' % locals(
    )


if __name__ == '__main__':
    remake = bool_from_argv('remake')
    for path in sys.argv[1:]:
        out_fn = os.path.join(path, 'results')
        if not remake and os.path.isfile(out_fn):
            continue
        print path
        doit(path, out_fn)
예제 #8
0
#!/usr/bin/env python

import sys, os
from glob import glob
from JMTucker.MFVNeutralino.NtupleCommon import ntuple_version_use as version
from JMTucker.Tools.ROOTTools import *
from JMTucker.Tools.Sample import norm_from_file
from JMTucker.Tools.general import typed_from_argv, bool_from_argv
from JMTucker.Tools import Samples
import JMTucker.MFVNeutralino.AnalysisConstants as ac

nosig = bool_from_argv('nosig')
nodata = bool_from_argv('nodata')
nobkg = bool_from_argv('nobkg')
onlysig = bool_from_argv('onlysig')
onlydata = bool_from_argv('onlydata')
onlybkg = bool_from_argv('onlybkg')
sumall = bool_from_argv('sumall')

which = typed_from_argv(int, -1)
ntks = ('mfvMiniTreeNtk3', 'mfvMiniTreeNtk4', 'mfvMiniTree')
if which != -1:
    ntks_to_trees = {3: 'mfvMiniTreeNtk3', 4: 'mfvMiniTreeNtk4', 5: 'mfvMiniTree', 7: 'mfvMiniTreeNtk3or4'}
    if which not in ntks_to_trees:
        raise ValueError('bad ntks %s' % which)
    ntks = (ntks_to_trees[which],)

ROOT.gErrorIgnoreLevel = 6000
fns = []
for x in sys.argv[1:]:
    if x.endswith('.root') and (os.path.isfile(x) or x.startswith('root://')):
예제 #9
0
import sys, os, re
from collections import Counter
from pprint import pprint
from JMTucker.Tools import eos, SampleFiles
from JMTucker.Tools.general import bool_from_argv
from JMTucker.Tools.hadd import hadd

if len(sys.argv) < 3:
    sys.exit(
        'usage: %s dataset sample\n  where dataset and sample are as registered in SampleFiles. sample can be "*" to mean all samples having the dataset.'
        % sys.argv[0])

verbosity = 0
rm = bool_from_argv('rm')

while '-v' in sys.argv:
    verbosity += 1
    sys.argv.remove('-v')

dataset = sys.argv[1]
sample = sys.argv[2]

if sample == '*':
    samples = []
    for s, ds in SampleFiles.keys():
        if ds == dataset:
            samples.append(s)
else:
    samples = [sample]

bn_re = re.compile(r'(.*)_(\d+)\.root')
예제 #10
0
            p.expect('.*GRID.*:')
            p.sendline(pp)
            p.interact()
            p = pexpect.spawn('myproxy-init -d -n -s myproxy.cern.ch')
            p.expect('.*GRID.*:')
            p.sendline(pp)
            p.interact()
        else:
            os.system('voms-proxy-init -voms cms -valid 192:00')
            os.system('myproxy-init -d -n -s myproxy.cern.ch')

if __name__ == '__main__':
    from pprint import pprint
    from FWCore.PythonUtilities.LumiList import LumiList

    if bool_from_argv('-cleanUp'):
        print 'executing crab_cleanup()'
        crab_cleanup()

    elif bool_from_argv('-countJobs'):
        print len(crab_jobs_from_argv())
        
    elif bool_from_argv('-expectedLumis'):
        print 'writing out JSONs for expected lumis:'
        for d in crab_dirs_from_argv():
            print d
            ll = LumiList(runsAndLumis=crab_lumis_from_arguments_xml(d))
            ll.writeJSON(os.path.join(d, 'res/expectedLumis.json'))

    elif bool_from_argv('-checkLumiDups'):
        print 'comparing lumiSummary.jsons:'