#!/usr/bin/env python import sys, time, os from datetime import datetime as dt import numpy as np # =========== good-bad flags from current event ====== # ================= 0=good 1=bad ==================== CTRL = np.zeros((4),dtype=int) # readout controller loop back test for each MainBoard FRM = np.zeros((4,12),dtype=int) # frame clock count test for each of 12 ADCs on each of the 4 MainBoards FPGA = np.zeros((4,4),dtype=int) # write/read back random number to each of 4 FPGAs on each of the 4 MainBoards # ============== running sums of flags =============== sCTRL = np.zeros((4),dtype=int) sFRM = np.zeros((4,12),dtype=int) sFPGA = np.zeros((4,4),dtype=int) # ==================================================== EVENT=0 start = dt.now() text = "20LLCH10V40000z " new = list(text) print("input mb0 barcode") for i in range(0,16): new[i] = sys.stdin.read(1) new[15] = '\0' sn0 = "".join(new) sys.stdin.flush() print("input mb1 barcode") for i in range(0,16): new[i] = sys.stdin.read(1) new[15] = '\0' sn1 = "".join(new) sys.stdin.flush() print("input mb2 barcode") for i in range(0,16): new[i] = sys.stdin.read(1) new[15] = '\0' sn2 = "".join(new) sys.stdin.flush() print("input mb3 barcode") for i in range(0,16): new[i] = sys.stdin.read(1) new[15] = '\0' sn3 = "".join(new) sys.stdin.flush() print("finished") print(sn0) print(sn1) print(sn2) print(sn3) status=0 while(status == 0): EVENT=EVENT+1 print(" EVENT=%d" %EVENT) stream = os.popen("./t0_read") time.sleep(1) t0 = stream.read() print(t0[0:5]) stream = os.popen("./t1_read") t1 = stream.read() time.sleep(1) print(t1[0:5]) print("bpy " + str(sn0[10:13]) + " " + str(sn1[10:13]) + " " + str(sn2[10:13]) + " " + str(sn3[10:13]) + " " + str(t0[0:4]) + " " + str(t1[0:4]) + " " +str(EVENT)) os.system("bpy " + str(sn0[10:13]) + " " + str(sn1[10:13]) + " " + str(sn2[10:13]) + " " + str(sn3[10:13]) + " " + str(t0[0:4]) + " " + str(t1[0:4]) + " " +str(EVENT)) fr=open("event.dat","r") string=fr.readline() #s = string[8:12] t0=float(string[8:12]) #s = string[21:25] t1=float(string[21:25]) mb=0 print(" EVENT=%d t0=%5.2f t1=%5.2f" %(EVENT,t0,t1)) while(mb<4): string=fr.readline() kmb=int(string[0]) CTRL[mb]=int(string[2]) print("\n mb=%d CTRL=%d kmb=%d" %(mb,CTRL[mb],kmb)) string=fr.readline() FRM[mb][0] = int(string[0]) FRM[mb][1] = int(string[2]) FRM[mb][2] = int(string[4]) FRM[mb][3] = int(string[6]) FRM[mb][4] = int(string[8]) FRM[mb][5] = int(string[10]) FRM[mb][6] = int(string[12]) FRM[mb][7] = int(string[14]) FRM[mb][8] = int(string[16]) FRM[mb][9] = int(string[18]) FRM[mb][10] = int(string[20]) FRM[mb][11] = int(string[22]) print(" FRM ",FRM[mb][0],FRM[mb][1],FRM[mb][2],FRM[mb][3] \ ,FRM[mb][4],FRM[mb][5],FRM[mb][6],FRM[mb][7] \ ,FRM[mb][8],FRM[mb][9],FRM[mb][10],FRM[mb][11]) string=fr.readline() FPGA[mb][0] = int(string[0]) FPGA[mb][1] = int(string[2]) FPGA[mb][2] = int(string[4]) FPGA[mb][3] = int(string[6]) print(" FPGA ",FPGA[mb][0],FPGA[mb][1],FPGA[mb][2],FPGA[mb][3]) mb=mb+1 mb=0 print(" +++++++++++++++++ Error Summary ++++++++++++++++++++") while(mb<4): sCTRL[mb]=sCTRL[mb]+CTRL[mb] if(mb==0): print("\n serial=",sn0," mb=%d sCTRL=%d" % (mb,sCTRL[mb])) if(mb==1): print("\n serial=",sn1," mb=%d sCTRL=%d" % (mb,sCTRL[mb])) if(mb==2): print("\n serial=",sn2," mb=%d sCTRL=%d" % (mb,sCTRL[mb])) if(mb==3): print("\n serial=",sn3," mb=%d sCTRL=%d" % (mb,sCTRL[mb])) kl=0 while(kl<12): sFRM[mb][kl]=sFRM[mb][kl]+FRM[mb][kl] kl=kl+1 print(" sFRM ",sFRM[mb][0],sFRM[mb][1],sFRM[mb][2],sFRM[mb][3] \ ,sFRM[mb][4],sFRM[mb][5],sFRM[mb][6],sFRM[mb][7] \ ,sFRM[mb][8],sFRM[mb][9],sFRM[mb][10],sFRM[mb][11]) kk=0 while(kk<4): sFPGA[mb][kk]=sFPGA[mb][kk]+FPGA[mb][kk] kk=kk+1 print(" sFPGA ",sFPGA[mb][0],sFPGA[mb][1],sFPGA[mb][2],sFPGA[mb][3]) mb=mb+1 #print(" EVENT=%d t0=%5.2f t1=%5.2f" %(EVENT,t0,t1)) end=dt.now() elapsed = end-start print("EVENT = %d Run Time: %02d:%02d:%02d:%02d" \ % (EVENT,elapsed.days, elapsed.seconds // 3600, elapsed.seconds // 60 % 60, elapsed.seconds % 60)) fr.close() # ++++++++++++++++++++++++++++++ print out final sums mb0 ++++++++++++++ fmb0 = open('%s.log'%sn0[0:15],"w+") mb=0 print("EVENT = %d Run Time: %02d:%02d:%02d:%02d AT1-0" \ % (EVENT,elapsed.days, elapsed.seconds // 3600, elapsed.seconds // 60 % 60, elapsed.seconds % 60),file=fmb0) print(" serial=",sn0," mb=%d sCTRL=%d" % (mb,sCTRL[mb]),file=fmb0) print(" sFRM ",sFRM[mb][0],sFRM[mb][1],sFRM[mb][2],sFRM[mb][3] \ ,sFRM[mb][4],sFRM[mb][5],sFRM[mb][6],sFRM[mb][7] \ ,sFRM[mb][8],sFRM[mb][9],sFRM[mb][10],sFRM[mb][11],file=fmb0) print(" sFPGA ",sFPGA[mb][0],sFPGA[mb][1],sFPGA[mb][2],sFPGA[mb][3],file=fmb0) print(" EVENT=%d t0=%5.2f t1=%5.2f" %(EVENT,t0,t1),file=fmb0) fmb0.close() # ++++++++++++++++++++++++++++++ print out final sums mb1 ++++++++++++++ fmb1 = open('%s.log'%sn1[0:15],"w+") mb=1 print("EVENT = %d Run Time: %02d:%02d:%02d:%02d AT1-1" \ % (EVENT,elapsed.days, elapsed.seconds // 3600, elapsed.seconds // 60 % 60, elapsed.seconds % 60),file=fmb1) print(" serial=",sn1," mb=%d sCTRL=%d" % (mb,sCTRL[mb]),file=fmb1) print(" sFRM ",sFRM[mb][0],sFRM[mb][1],sFRM[mb][2],sFRM[mb][3] \ ,sFRM[mb][4],sFRM[mb][5],sFRM[mb][6],sFRM[mb][7] \ ,sFRM[mb][8],sFRM[mb][9],sFRM[mb][10],sFRM[mb][11],file=fmb1) print(" sFPGA ",sFPGA[mb][0],sFPGA[mb][1],sFPGA[mb][2],sFPGA[mb][3],file=fmb1) print(" EVENT=%d t0=%5.2f t1=%5.2f" %(EVENT,t0,t1),file=fmb1) fmb1.close() # ++++++++++++++++++++++++++++++ print out final sums mb2 ++++++++++++++ fmb2 = open('%s.log'%sn2[0:15],"w+") mb=2 print("EVENT = %d Run Time: %02d:%02d:%02d:%02d AT1-2" \ % (EVENT,elapsed.days, elapsed.seconds // 3600, elapsed.seconds // 60 % 60, elapsed.seconds % 60),file=fmb2) print(" serial=",sn2," mb=%d sCTRL=%d" % (mb,sCTRL[mb]),file=fmb2) print(" sFRM ",sFRM[mb][0],sFRM[mb][1],sFRM[mb][2],sFRM[mb][3] \ ,sFRM[mb][4],sFRM[mb][5],sFRM[mb][6],sFRM[mb][7] \ ,sFRM[mb][8],sFRM[mb][9],sFRM[mb][10],sFRM[mb][11],file=fmb2) print(" sFPGA ",sFPGA[mb][0],sFPGA[mb][1],sFPGA[mb][2],sFPGA[mb][3],file=fmb2) print(" EVENT=%d t0=%5.2f t1=%5.2f" %(EVENT,t0,t1),file=fmb2) fmb2.close() # ++++++++++++++++++++++++++++++ print out final sums mb3 ++++++++++++++ fmb3 = open("%s.log"%sn3[0:15],"w+") mb=3 print("EVENT = %d Run Time: %02d:%02d:%02d:%02d AT1-3" \ % (EVENT,elapsed.days, elapsed.seconds // 3600, elapsed.seconds // 60 % 60, elapsed.seconds % 60),file=fmb3) print(" serial=",sn3," mb=%d sCTRL=%d" % (mb,sCTRL[mb]),file=fmb3) print(" sFRM ",sFRM[mb][0],sFRM[mb][1],sFRM[mb][2],sFRM[mb][3] \ ,sFRM[mb][4],sFRM[mb][5],sFRM[mb][6],sFRM[mb][7] \ ,sFRM[mb][8],sFRM[mb][9],sFRM[mb][10],sFRM[mb][11],file=fmb3) print(" sFPGA ",sFPGA[mb][0],sFPGA[mb][1],sFPGA[mb][2],sFPGA[mb][3],file=fmb3) print(" EVENT=%d t0=%5.2f t1=%5.2f" %(EVENT,t0,t1),file=fmb3) fmb3.close() print(" EVENT=%d t0=%5.2f t1=%5.2f" %(EVENT,t0,t1)) f1 = open("run.state","r") k = f1.read() status = int(k[0]) if(status == 0): print(" waiting 30 sec") time.sleep(30) print("run ended") exit()