示例#1
0
 def do_gui(self, line):
     """Open the ROOT results browser"""
     if not guiAvailable:
         print "No GUI available (missing ROOT library)"
         return
     if self.window:
         return
     self.window = PxarGui(ROOT.gClient.GetRoot(), 800, 800)
示例#2
0
 def __init__(self, api, gui):
     cmd.Cmd.__init__(self)
     self.fullOutput = False
     self.prompt = "pxarCore =>> "
     self.intro = "Welcome to the pxar core console!"  ## defaults to None
     self.api = api
     self.window = None
     if (gui and guiAvailable):
         self.window = PxarGui(ROOT.gClient.GetRoot(), 800, 800)
     elif (gui and not guiAvailable):
         print "No GUI available (missing ROOT library)"
示例#3
0
    def do_latencyScan(self,
                       minlatency=50,
                       maxlatency=100,
                       triggers=10,
                       triggersignal="extern"):
        """ do_latencyScan [min] [max] [triggers] [signal]: scan the trigger latency from min to max with set number of triggers)"""

        self.api.testAllPixels(0, None)
        self.api.HVon()

        latencyScan = []
        print "latency \tyield"

        # loop over latency
        for latency in range(minlatency, maxlatency):
            delay = {}
            delay["triggerlatency"] = latency
            self.api.setTestboardDelays(delay)
            self.api.daqTriggerSource(triggersignal)
            self.api.daqStart()
            nHits = 0
            nTriggers = 0

            #loop until you find maxTriggers
            while nTriggers < triggers:
                try:
                    data = self.api.daqGetEvent()
                    if len(data.pixels) > 0:
                        nHits += 1
                    nTriggers += 1
                except RuntimeError:
                    pass

            hitYield = 100 * nHits / triggers
            latencyScan.append(hitYield)
            print '{0:03d}'.format(latency), "\t", '{0:3.0f}%'.format(hitYield)
            self.api.daqStop()

        if (self.window):
            self.window = PxarGui(ROOT.gClient.GetRoot(), 1000, 800)
            plot = Plotter.create_tgraph(latencyScan, "latency scan",
                                         "trigger latency", "evt/trig [%]",
                                         minlatency)
            self.window.histos.append(plot)
            self.window.update()
示例#4
0
    def do_wbcScan(self,
                   minWBC=90,
                   maxWBC=255,
                   maxTriggers=10,
                   triggersignal="extern"):
        """ do_wbcScan [minWBC] [maxWBC] [maxTriggers] [signal]: sets the values of wbc from minWBC until it finds the wbc which has more than 90% filled events or it reaches 255 (default minWBC 90)"""

        self.api.daqTriggerSource(triggersignal)
        self.api.HVon()

        wbcScan = []
        print "wbc \tyield"

        # loop over wbc
        for wbc in range(minWBC, maxWBC):
            self.api.setDAC("wbc", wbc)
            self.api.daqStart()
            nHits = 0
            nTriggers = 0

            #loop until you find maxTriggers
            while nTriggers < maxTriggers:
                try:
                    data = self.api.daqGetEvent()
                    if len(data.pixels) > 0:
                        nHits += 1
                    nTriggers += 1
                except RuntimeError:
                    pass

            hitYield = 100 * nHits / maxTriggers
            wbcScan.append(hitYield)
            print '{0:03d}'.format(wbc), "\t", '{0:3.0f}%'.format(hitYield)

            self.api.daqStop()

        if (self.window):
            self.window = PxarGui(ROOT.gClient.GetRoot(), 1000, 800)
            plot = Plotter.create_tgraph(wbcScan, "wbc scan", "wbc",
                                         "evt/trig [%]", minWBC)
            self.window.histos.append(plot)
            self.window.update()