def loop(chain=None, chainI=None, outer={}, inner={}, innerEvent={}, options={}): if outer["progress"]: print "Looping:" kargs = {"book": autoBook.autoBook("book")} kargs.update(options) try: def outerInnerCompare2(chain, iEntry): return outerInnerCompare(chain, iEntry, outer, inner, innerEvent, chainI, kargs) nMin = outer["nEventsSkip"] nMax = (outer["nEventsSkip"] + outer["nEventsMax"]) if outer["nEventsMax"] else None chainLoop(chain, nMin, nMax, outerInnerCompare2, progress=outer["progress"], sparseLoop=outer["sparseLoop"]) except KeyboardInterrupt: printer.warning("KeyboardInterrupt in loop()") return kargs["book"]
def loop(chain=None, chainI=None, outer={}, inner={}, innerEvent={}, oMapF={}, options={}): if outer["progress"]: print("Looping:") kargs = {"book": autoBook.autoBook("book"), "warnQuality": outer["warnQuality"], "raw1": {}, "raw2": {}, "chain": chain, "chainI": chainI, "outer": outer, "inner": inner} kargs.update(options) try: def outerInnerCompare2(chain, iEntry): kargs["evn"], kargs["orn"] = oMapF[iEntry] return outerInnerCompare(iEntry, innerEvent, kargs) nMin = outer["nEventsSkip"] nMax = (outer["nEventsSkip"] + outer["nEventsMax"]) if outer["nEventsMax"] else None chainLoop(chain, nMin, nMax, outerInnerCompare2, progress=outer["progress"], sparseLoop=outer["sparseLoop"]) except KeyboardInterrupt: printer.warning("KeyboardInterrupt in loop()") return kargs["book"]
def go(outer={}, inner={}, label="", useEvn=False, filterEvn=False, ornTolerance=None, printEventMap=False, identityMap=False, report=True): innerEvent = {} deltaOrn = {} oMapF, oMapB = eventMaps(useEvn=useEvn, filterEvn=filterEvn, **outer) iMapF = iMapB = {} if inner: iMapF, iMapB = eventMaps(useEvn=useEvn, filterEvn=filterEvn, **inner) innerEvent = eventToEvent(oMapF, iMapB, ornTolerance=ornTolerance) if identityMap: for key in innerEvent.keys(): innerEvent[key] = key if printEventMap: for oEvent, iEvent in sorted(innerEvent.iteritems()): print ", ".join(["oEvent = %s" % str(oEvent), "oOrnEvn = %s" % str(oMapF[oEvent]), "iEvent = %s" % str(iEvent), ]) book = autoBook.autoBook("book") loop(inner=inner, outer=outer, innerEvent=innerEvent, book=book) #write results to a ROOT file f = r.TFile("%s/%s.root" % (utils.outputDir(), label), "RECREATE") gr = graph(categories(oMap=oMapF, iMap=iMapF, innerEvent=innerEvent)) nBoth = len(filter(lambda x: x is not None, innerEvent.values())) gr.SetName("category_vs_time") labels = ["only %s (%d)" % (inner["label"], len(iMapF)-nBoth) if inner else "", "only %s (%d)" % (outer["label"], len(oMapF)-nBoth) if outer else "", "both (%d)" % nBoth if inner else "", ] gr.SetTitle("_".join(labels)) gr.Write() for key, h in book.iteritems(): h.Write() f.Close() if report: s = "%s: %4s = %6d" % (label, outer["label"], len(oMapF)) if inner: s += ", %4s = %6d, both = %6d" % (inner["label"], len(iMapB), nBoth) print s
def loop(chain=None, chainI=None, outer={}, inner={}, innerEvent={}, oMapF={}, options={}): if outer["progress"]: print "Looping:" kargs = { "book": autoBook.autoBook("book"), "warnQuality": outer["warnQuality"], "raw1": {}, "raw2": {}, "chain": chain, "chainI": chainI, "outer": outer, "inner": inner } kargs.update(options) try: def outerInnerCompare2(chain, iEntry): kargs["evn"], kargs["orn"] = oMapF[iEntry] return outerInnerCompare(iEntry, innerEvent, kargs) nMin = outer["nEventsSkip"] nMax = (outer["nEventsSkip"] + outer["nEventsMax"]) if outer["nEventsMax"] else None chainLoop(chain, nMin, nMax, outerInnerCompare2, progress=outer["progress"], sparseLoop=outer["sparseLoop"]) except KeyboardInterrupt: printer.warning("KeyboardInterrupt in loop()") return kargs["book"]
def setupSteps(self, minimal = False) : r.gROOT.cd() current = r.gDirectory priorFilters = [] self.steps[0].books = [] for step in self.steps : step.setOutputFileStem(self.outputFileStem) step.setInputFileStem(self.inputFileStem) current = current.mkdir(step.name) step.book = autoBook(current) step.tracer = wrappedChain.keyTracer(None) if configuration.trace() and (step.isSelector or issubclass(type(step),wrappedChain.wrappedChain.calculable)) else None step.priorFilters = set(priorFilters) self.steps[0].books.append(step.book) if step.isSelector and step!=self.steps[0] : priorFilters.append((step.name,step.moreNames)) if minimal : continue if self.quietMode : step.makeQuiet() assert step.isSelector ^ hasattr(step,"uponAcceptance"), "Step %s must implement 1 and only 1 of {select,uponAcceptance}"%step.name step.setup(self.chains[self.mainTree], self.mainTree[0])