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)
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)
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)
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")