File indexing completed on 2024-12-01 23:40:29
0001
0002
0003 import os
0004 import sys
0005 import math
0006 import numpy
0007 import matplotlib.pyplot as plt
0008 import numpy as np
0009 from matplotlib import colors
0010
0011 ptLSB = 0.25;
0012 etaLSB = 0.0043633231;
0013 phiLSB = 0.0043633231;
0014 hwJets = []
0015 emJets = []
0016 hwData = []
0017 emData = []
0018 hwDataNoZ = []
0019 emDataNoZ = []
0020 nHw = 0
0021 nEm = 0
0022 nEv = 5000
0023 nEvNoZ = 0
0024
0025
0026 for hwRx in range(0,70):
0027 with open("datFull/" + str(hwRx) + "/tx_summary.txt", "r") as inFile:
0028 frameIt = -1
0029 for line in inFile:
0030 if('1v' in line):
0031 frameIt += 1
0032 if frameIt < 20:
0033 continue
0034 if hwRx == 0 and frameIt < 33:
0035 continue
0036 linkData = line.split('1v')
0037 for wordIt in range(1,25):
0038 word = linkData[wordIt].replace(' ','').replace('\n','')
0039 if int(word, 16) & 0xffff:
0040 jet = word[8:]
0041 hwJets.append([(int(jet,16)&0xffff)*ptLSB,
0042 ((((int(jet,16)>>24)&0xff)*19)+9)*etaLSB,
0043 ((((int(jet,16)>>16)&0xff)*20)+10)*phiLSB])
0044 if (int(word, 16)>>32) & 0xffff:
0045 jet = word[:8]
0046 hwJets.append([(int(jet,16)&0xffff)*ptLSB,
0047 ((((int(jet,16)>>24)&0xff)*19)+9)*etaLSB,
0048 ((((int(jet,16)>>16)&0xff)*20)+10)*phiLSB])
0049 if (frameIt%13) == 6:
0050 if(nHw>=nEv):
0051 break
0052 nHw+=1
0053 if len(hwJets)==0:
0054 hwJets.append([0,0,0])
0055 hwData.append(hwJets)
0056 del hwJets
0057 hwJets = []
0058
0059
0060 with open("emuout.txt", "r") as inFile:
0061 for line in inFile:
0062 if " " in line:
0063 if(nEm>=nEv):
0064 break
0065 nEm+=1
0066 if len(emJets)>0:
0067 emData.append(emJets)
0068 del emJets
0069 emJets = []
0070 else:
0071 jet = [float(line.split("\t")[0]),
0072 float(line.split("\t")[1]),
0073 float(line.split("\t")[2])]
0074 emJets.append(jet)
0075
0076
0077 nDiff = 0
0078
0079 for evIt in range(0,nEv):
0080 if len(hwData[evIt]) != len(emData[evIt]):
0081 nDiff+=1
0082 continue
0083 goodJet=0
0084 for hwJet in hwData[evIt]:
0085 for emJet in emData[evIt]:
0086 if hwJet[0] == emJet[0]:
0087 if (hwJet[1]-emJet[1])<0.01:
0088 if (hwJet[2]-emJet[2])<0.01:
0089 goodJet+=1
0090 if goodJet < len(hwData[evIt]):
0091 nDiff+=1
0092
0093
0094 print("\n\nnEvent = " + str(nEv) + "\nnDiff = " + str(nDiff) + "\nGood events = " + str((1-float(nDiff)/float(nEv))*100) + "%")
0095
0096
0097
0098 print("\n\n=====================================================================================")
0099 print("\t\tFirmware Events: " + str(nHw) + "\t\t" + "Emulator Events: " + str(nEm))
0100 print("=====================================================================================")
0101 print("\t\tpT\t" + "eta\t" + "phi\t\t" + "pT\t" + "eta\t" + "phi\t")
0102 print("=====================================================================================")
0103
0104
0105 for evIt in range(0,nEv):
0106 if hwData[evIt][0][0] > 0:
0107 hwDataNoZ.append(hwData[evIt])
0108 if emData[evIt][0][0] > 0:
0109 emDataNoZ.append(emData[evIt])
0110 nEvNoZ+=1
0111
0112
0113 for evIt in range(0,nEv):
0114 if hwData[evIt][0][0] ==0 and emData[evIt][0][0] == 0:
0115 continue
0116 jetCount=0
0117 jetDiff = len(hwData[evIt]) - len(emData[evIt])
0118 print("")
0119 if jetDiff==0:
0120 for jetIt in range(len(hwData[evIt])):
0121 print(str(evIt) + "\t\t" + str(hwData[evIt][jetIt][0]) + "\t" + str(hwData[evIt][jetIt][1])[:4] + "\t" + str(hwData[evIt][jetIt][2])[:4] + "\t\t" +
0122 str(emData[evIt][jetIt][0]) + "\t" + str(emData[evIt][jetIt][1])[:4] + "\t" + str(emData[evIt][jetIt][2])[:4])
0123 if jetDiff>0:
0124 for jetIt in range(len(hwData[evIt])):
0125 jetCount+=1
0126 if jetCount > len(emData[evIt]):
0127 emData[evIt].append([0,0,0])
0128 print(str(evIt) + "\t\t" + str(hwData[evIt][jetIt][0]) + "\t" + str(hwData[evIt][jetIt][1])[:4] + "\t" + str(hwData[evIt][jetIt][2])[:4] + "\t\t" +
0129 str(emData[evIt][jetIt][0]) + "\t" + str(emData[evIt][jetIt][1])[:4] + "\t" + str(emData[evIt][jetIt][2])[:4])
0130 if jetDiff<0:
0131 for jetIt in range(len(emData[evIt])):
0132 jetCount+=1
0133 if jetCount > len(hwData[evIt]):
0134 hwData[evIt].append([0,0,0])
0135 print(str(evIt) + "\t\t" + str(hwData[evIt][jetIt][0]) + "\t" + str(hwData[evIt][jetIt][1])[:4] + "\t" + str(hwData[evIt][jetIt][2])[:4] + "\t\t" +
0136 str(emData[evIt][jetIt][0]) + "\t" + str(emData[evIt][jetIt][1])[:4] + "\t" + str(emData[evIt][jetIt][2])[:4])
0137
0138
0139
0140
0141 fig, axs = plt.subplots(2,3, figsize=(20, 10), gridspec_kw={'height_ratios': [3, 1]})
0142
0143 fig.patch.set_facecolor( '#ffffff')
0144
0145
0146 nPtHw, bPtHw = np.histogram([jet[0] for event in hwDataNoZ for jet in event], bins=50, range=(0,200))
0147 nEtaHw, bEtaHw = np.histogram([jet[1] for event in hwDataNoZ for jet in event], bins=18, range=(0,1.5))
0148 nPhiHw, bPhiHw = np.histogram([jet[2] for event in hwDataNoZ for jet in event], bins=8, range=(0,0.7))
0149
0150 meansPt = [0.5*(bPtHw[i] + bPtHw[i+1]) for i in range(len(nPtHw))]
0151 meansEta = [0.5*(bEtaHw[i] + bEtaHw[i+1]) for i in range(len(nEtaHw))]
0152 meansPhi = [0.5*(bPhiHw[i] + bPhiHw[i+1]) for i in range(len(nPhiHw))]
0153
0154 nPtEm = axs[0,0].hist([jet[0] for event in emDataNoZ for jet in event], bins=50, range=(0,200), histtype='bar', linewidth=1.5, label='Emulator', color='#929591', zorder=0)[0]
0155 nEtaEm = axs[0,1].hist([jet[1] for event in emDataNoZ for jet in event], bins=18, range=(0,1.5), histtype='bar', linewidth=1.5, label='Emulator', color='#929591', zorder=0)[0]
0156 nPhiEm = axs[0,2].hist([jet[2] for event in emDataNoZ for jet in event], bins=8, range=(0,0.7), histtype='bar', linewidth=1.5, label='Emulator', color='#929591', zorder=0)[0]
0157
0158 axs[0,0].scatter(meansPt, nPtHw, label='Firmware', c='#000000', linewidths=0.5, s=25, marker='+')
0159 axs[0,1].scatter(meansEta, nEtaHw, label='Firmware', c='#000000', linewidths=0.5, s=25, marker='+')
0160 axs[0,2].scatter(meansPhi, nPhiHw, label='Firmware', c='#000000', linewidths=0.5, s=25, marker='+')
0161
0162
0163 axs[1,0].scatter(meansPt, [(hw/em) for hw,em in zip(nPtHw,nPtEm)] , c='#000000', linewidths=0.5, s=15, zorder=1)
0164 axs[1,1].scatter(meansEta, [(hw/em) for hw,em in zip(nEtaHw,nEtaEm)], c='#000000', linewidths=0.5, s=15, zorder=1)
0165 axs[1,2].scatter(meansPhi, [(hw/em) for hw,em in zip(nPhiHw,nPhiEm)], c='#000000', linewidths=0.5, s=15, zorder=1)
0166
0167 axs[1,0].axhline(y=1, linewidth=1, linestyle='--', c='#929591')
0168 axs[1,1].axhline(y=1, linewidth=1, linestyle='--', c='#929591')
0169 axs[1,2].axhline(y=1, linewidth=1, linestyle='--', c='#929591')
0170
0171 axs[1,0].set(ylim=(0.5,1.5))
0172 axs[1,1].set(ylim=(0.5,1.5))
0173 axs[1,2].set(ylim=(0.5,1.5))
0174
0175 axs[0,0].set(ylabel="Events")
0176 axs[1,0].set(ylabel="FW / EMU")
0177
0178 axs[0,0].legend(prop={'size': 10})
0179 axs[0,1].legend(prop={'size': 10})
0180 axs[0,2].legend(prop={'size': 10})
0181
0182 ymaxPt = max(np.concatenate([nPtHw,nPtEm]))
0183 ymaxEta = max(np.concatenate([nEtaHw,nEtaEm]))
0184 ymaxPhi = max(np.concatenate([nPhiHw,nPhiEm]))
0185
0186 axs[0,0].set(xlim=(0,200))
0187 axs[0,1].set(xlim=(0,1.5))
0188 axs[0,2].set(xlim=(0,0.7))
0189
0190 axs[0,0].set(ylim=(0,ymaxPt +(0.05*ymaxPt)))
0191 axs[0,1].set(ylim=(0,ymaxEta+(0.05*ymaxEta)))
0192 axs[0,2].set(ylim=(0,ymaxPhi+(0.05*ymaxPhi)))
0193
0194 axs[0,0].set(xlabel="Jet $p_T$ (GeV)")
0195 axs[0,1].set(xlabel="Jet $\eta$")
0196 axs[0,2].set(xlabel="Jet $\phi$")
0197
0198 plt.savefig('ttbarPU200_3900.pdf', bbox_inches='tight')