def doit(fn, mass_name, dir_name, tree_name, cut): f = ROOT.TFile(fn) t = f.Get(dir_name).Get(tree_name) rlem = detree(t, 'run:lumi:event:' + mass_name, cut, lambda x: (int(x[0]), int(x[1]), int(x[2]), float(x[3]))) me = defaultdict(list) for r,l,e,m in rlem: me[(r,l,e)].append(m) return me
def doit(fn, mass_name, dir_name, tree_name, cut): f = ROOT.TFile(fn) t = f.Get(dir_name).Get(tree_name) rlem = detree(t, 'run:lumi:event:' + mass_name, cut, lambda x: (int(x[0]), int(x[1]), int(x[2]), float(x[3]))) me = defaultdict(list) for r, l, e, m in rlem: me[(r, l, e)].append(m) return me
#####run with python GetPrescalesAnalyzer.py zp2mu_histos_prescale.root Mu24eta2p1 import os, sys from collections import defaultdict from pprint import pprint from SUSYBSMAnalysis.Zprime2muAnalysis.roottools import ROOT, detree print sys.argv f = ROOT.TFile(sys.argv[1]) t = f.Get('%s/t' % sys.argv[2]) print t.GetEntriesFast(), 'entries in tree' de = defaultdict(list) dp = defaultdict(list) for (run, lumi, event, l1, hlt) in detree(t, 'run:lumi:event:l1:hlt'): de[(run, lumi)].append(event) dp[(run, lumi)].append((l1, hlt)) for k, v in de.iteritems(): assert len(v) == len(set(v)) for k, v in dp.iteritems(): if len(set(v)) != 1: print 'run/LS %s with %i events has multiple prescale values: %s' % ( k, len(de[k]), sorted(set(v))) lscounts = defaultdict(int) evcounts = defaultdict(int) uniq = set() for v in dp.itervalues():
import os, sys from collections import defaultdict from pprint import pprint from SUSYBSMAnalysis.Zprime2muAnalysis.roottools import ROOT, detree print sys.argv f = ROOT.TFile(sys.argv[1]) t = f.Get('%s/t' % sys.argv[2]) print t.GetEntriesFast(), 'entries in tree' de = defaultdict(list) dp = defaultdict(list) for (run, lumi, event, l1, hlt) in detree(t, 'run:lumi:event:l1:hlt'): de[(run, lumi)].append(event) dp[(run, lumi)].append((l1,hlt)) for k,v in de.iteritems(): assert len(v) == len(set(v)) for k,v in dp.iteritems(): if len(set(v)) != 1: print 'run/LS %s with %i events has multiple prescale values: %s' % (k, len(de[k]), sorted(set(v))) lscounts = defaultdict(int) evcounts = defaultdict(int) uniq = set() for v in dp.itervalues(): uniq.update(v)