コード例 #1
0
 def RandomWindowDataCollectionLoop(self,cmd,f):
     ETH.send(cmd.THoff())
     if (self.DEBUG): ETH.KLMprint(cmd.THoff(), "THoff")
     time.sleep(0.01)
     for ASIC in range(10):
         if ((2**ASIC & int(self.ASICmask,2)) > 0):
             if (self.DEBUG): Print("Sending run configuration to FPGA", SOFT)
             ETH.send(cmd.ASIC_HV_DAC_w_offset())
             if (self.DEBUG): ETH.KLMprint(cmd.ASIC_HV_DAC_w_offset, "ASIC_HV_DAC_w_offset")
             time.sleep(0.01)
             self.RunConfig = cmd.Generate_Software_triggered_run_config_cmd(ASIC)
             ETH.send(self.RunConfig)
             if (self.DEBUG): ETH.KLMprint(self.RunConfig, "Software-triggered Run configuration")
             time.sleep(0.01)
             t0 = time.time()
             Print("Taking %s events for ASIC %d . . ." % (self.NumEvts, ASIC), SOFT)
             for evtNum in range(1,self.NumEvts+1):
                 ETH.send(cmd.RandomWindow())
                 time.sleep(0.005)
                 ETH.send(cmd.forceTrig)
                 rcv = ETH.receive(20000)# rcv is string of Hex
                 time.sleep(0.005)
                 self.printStatusBar(evtNum)
                 rcv = linkEth.hexToBin(rcv)
                 f.write(rcv) # write received binary data into file
             self.EvtRate = float(evtNum)/(time.time()-t0)
             Print("\nOverall hit rate was %s%.2f Hz" % (OKGREEN,self.EvtRate), SOFT)
コード例 #2
0
 def SoftwareTriggeredDataCollectionLoop(self,cmd,f):
     ETH.send(cmd.HVoff())
     if (self.DEBUG): ETH.KLMprint(cmd.HVoff(), "HVoff")
     time.sleep(0.01)
     ETH.send(cmd.THoff())
     if (self.DEBUG): ETH.KLMprint(cmd.THoff(), "THoff")
     time.sleep(0.01)
     for ASIC in range(10):
         if ((2**ASIC & int(self.ASICmask,2)) > 0):
             if (self.DEBUG): Print("Sending run configuration to FPGA", SOFT)
             self.RunConfig = cmd.Generate_Software_triggered_run_config_cmd(ASIC)
             ETH.send(self.RunConfig)
             if (self.DEBUG): ETH.KLMprint(self.RunConfig, "RunConfig")
             time.sleep(0.01)
             t0 = time.time()
             self.NumEvts = 128*self.NumSoftwareEvtsPerWin
             Print("Taking %s events for ASIC %d . . ." % (self.NumEvts, ASIC), SOFT)
             for evtNum in range(1,self.NumEvts+1):
                 ETH.send(cmd.Set_Readout_Window(((evtNum-1)*4)%512))
                 if (self.DEBUG): ETH.KLMprint(cmd.Set_Readout_Window(((evtNum-1)*4)%512),"Set Readout Window")
                 time.sleep(0.005)
                 ETH.send(cmd.forceTrig)
                 rcv = ETH.receive(20000)# rcv is string of Hex
                 time.sleep(0.005)
                 self.printStatusBar(evtNum)
                 rcv = linkEth.hexToBin(rcv)
                 f.write(rcv) # write received binary data into file
             self.EvtRate = float(evtNum)/(time.time()-t0)
             Print("\nOverall hit rate was %s%.2f Hz" % (OKGREEN,self.EvtRate), SOFT)
コード例 #3
0
 def MainDataCollectionLoop(self,cmd,f):
     if (self.DEBUG): Print("Sending run configuration to FPGA", SOFT)
     self.RunConfig = cmd.Generate_ASIC_triggered_run_config_cmd()
     ETH.send(self.RunConfig)
     if (self.DEBUG): ETH.KLMprint(self.RunConfig, "Self-triggered Run Configuration")
     tExtra = 0
     evtNum = 0
     tProg = t0 = time.time()
     hs = FileHandshake.FileHandshake()
     Print("\nTaking %s events. . ." % (self.NumEvts), SOFT)
     for evtNum in range(1, self.NumEvts+1):
         if (self.CheckTimeSinceLastReprogram(tProg)):
             tExtra += self.pauseForReprogram(hs,cmd)
             tProg = time.time()
         rcv = ETH.receive(20000)# rcv is string of Hex
         time.sleep(0.001)
         self.printStatusBar(evtNum)
         rcv = linkEth.hexToBin(rcv)
         f.write(rcv) # write received binary data into file
     self.EvtRate = float(evtNum)/(time.time()-t0-tExtra)
     Print("\nOverall hit rate was %s%.2f Hz" % (OKGREEN,self.EvtRate), SOFT)
コード例 #4
0
    cmd_pedConfig += "AF4A0000"+"AE000100"+"AF4F0000"#set outmode to "waveforms" & trigBit search range to +/- 0 windows & ext. trig. bit format to zero.
    ctrl.send(cmd_pedConfig)
    infostr = "ASIC "+str(ASIC)+": "
    sys.stdout.write(infostr)
    time.sleep(0.1)
    #ctrl.send(cmd_FIFO_reset)
    #time.sleep(0.1)
    for i in range(0, 128):
        ctrl.send(syncwd+hex(int('AF3E0000',16) | 2**15 | (i*4)%512 ).split('x')[1]) #set win start
        time.sleep(0.01)
        ctrl.send(trig_cmd)
        rcv = ctrl.receive(20000)# rcv is string of Hex
        time.sleep(0.001)
        if (i%10==0): sys.stdout.write('.')
        sys.stdout.flush()
        rcv = linkEth.hexToBin(rcv)
        f.write(rcv)
    print
    time.sleep(0.1)
f.close()

#---- RUN DATA-PARSING EXECUTABLE ----#
print("\nPARSING EXECUTABLE")
os.system("./bin/tx_ethparse1_ck temp/ASICdata.dat temp/ASICsamps.txt temp/ASICtrigbits.txt 0")
time.sleep(0.1)

#---- WRITE DATA INTO TEMP ROOT FILE ----#
print("\nROOT MACRO")
ROOT.MakePedestalTTree("temp/ASICsamps.txt")
time.sleep(0.1)
os.system("chown -R testbench2:testbench2 temp/pedTemp.root")