Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-12-01 23:40:29

0001 #!/usr/bin/env python
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')