def tpMap(raw={}, warn=True, book=None): forward = {} backward = {} skipped = [] for fedId, d in raw.iteritems(): if fedId is None: continue delta = matching.pipelineDelta(d["header"]["utca"]) for block in d["htrBlocks"].values(): for key, triggerData in block["triggerData"].iteritems(): coords = (block["Crate"], block["Slot"], block["Top"], key) nSoi = sum(triggerData["SOI"]) if warn and nSoi != 1: printer.warning("iEntry %d / %s has !=1 SOIs: %s" % (raw[None]["iEntry"], coords, triggerData["SOI"])) if not nSoi: continue soi = triggerData["SOI"].index(1) l = [soi, delta, 0, 0] for i, tp9 in enumerate(triggerData["TP"]): fg = tp9 >> 8 tp8 = tp9 & 0xff l.append(tp8) if i == soi: nBins = 14 book.fill(tp8, "tp_soi_fg%d_%d" % (fg, fedId), nBins, -0.5, nBins - 0.5, title="FED %d;TP E_{SOI};Trigger Towers / bin" % fedId) forward[coords] = l return forward, backward, skipped
def dataMap(raw={}, book=None): forward = {} backward = {} skipped = [] for fedId, d in raw.iteritems(): if fedId is None: continue delta = matching.pipelineDelta(d["header"]["utca"]) fiberMap = hw.fiberMap(fedId) for block in d["htrBlocks"].values(): nPre = block["nPreSamples"] for channelData in block["channelData"].values(): mp = channelData.get("M&P", 0) channel = channelData["FibCh"] fiber = channelData["Fiber"] fiber = fiberMap.get(fiber, fiber) coords = (block["Crate"], block["Slot"], block["Top"], fiber, channel) if channelData["ErrF"] not in matching.okErrF(): skipped.append(coords) continue cap0 = channelData["CapId0"] data = tuple([nPre, delta, mp, cap0] + channelData["QIE"]) # print coords, data forward[coords] = data backward[data] = coords return forward, backward, skipped
def tpMap(raw={}, warn=True, book=None): forward = {} backward = {} skipped = [] for fedId, d in raw.iteritems(): if fedId is None: continue delta = matching.pipelineDelta(d["header"]["utca"]) for block in d["htrBlocks"].values(): for key, triggerData in block["triggerData"].iteritems(): coords = (block["Crate"], block["Slot"], block["Top"], key) nSoi = sum(triggerData["SOI"]) if warn and nSoi != 1: printer.warning( "iEntry %d / %s has !=1 SOIs: %s" % (raw[None]["iEntry"], coords, triggerData["SOI"])) if not nSoi: continue soi = triggerData["SOI"].index(1) l = [soi, delta, 0, 0] for i, tp9 in enumerate(triggerData["TP"]): fg = tp9 >> 8 tp8 = tp9 & 0xff l.append(tp8) if i == soi: nBins = 14 book.fill( tp8, "tp_soi_fg%d_%d" % (fg, fedId), nBins, -0.5, nBins - 0.5, title="FED %d;TP E_{SOI};Trigger Towers / bin" % fedId) forward[coords] = l return forward, backward, skipped