def __init__(self, emufname, hwfname, vhdcfg): self.emufname = emufname self.hwfname = hwfname self.vhdcfg = vhdcfg self.pt_errors = {} self.phi_errors = {} self.iso_errors = {} self.eta_errors = {} self.chrg_errors = {} self.qual_errors = {} self.errors = [] self.emuversion = Version("99_99_99") self.hwversion = Version("0_2_19") self.event_ctr = 0 self.event_nontrivial_cntr = 0 self.mu_cntr = 0
for idx, mu_imd in enumerate(imdmus): relation = calculate_relation(mu_imd, mu_out) #if relation isn't just random, put it in the dict if imd_match_dict[mu_out][0] < relation and relation > 19: imd_match_dict[mu_out] = [relation, mu_imd] return in_match_dict, imd_match_dict if __name__ == "__main__": vhdl_dict = VHDLConstantsParser.parse_vhdl_file("data/ugmt_constants.vhd") options = parse_options() file_dict = discover_files(options) for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['rx']) print "+"*30, pattern, "+"*30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames['rx'], vhdl_dict) output_parser = OutputBufferParser(fnames['tx'], vhdl_dict, version) in_muons = input_parser.get_input_muons() out_muons = output_parser.get_output_muons() imd_muons = output_parser.get_intermediate_muons() imd_ranks = output_parser.get_ranks() in_mu_non_zero = [ in_mu for in_mu in in_muons if in_mu.bitword != 0 ] out_mu_non_zero = [ out_mu for out_mu in out_muons if out_mu.bitword != 0 ] imd_mu_non_zero = [imd_mu for imd_mu in imd_muons if imd_mu.bitword != 0 ] imd_ranks_non_zero = [imd_rank for imd_rank in imd_ranks if imd_rank != 0]
relation = calculate_relation(mu_imd, mu_out) #if relation isn't just random, put it in the dict if imd_match_dict[mu_out][0] < relation and relation > 19: imd_match_dict[mu_out] = [relation, mu_imd] return in_match_dict, imd_match_dict if __name__ == "__main__": vhdl_dict = VHDLConstantsParser.parse_vhdl_file("data/ugmt_constants.vhd") options = parse_options() file_dict = discover_files(options) for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['rx']) print "+" * 30, pattern, "+" * 30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames['rx'], vhdl_dict) output_parser = OutputBufferParser(fnames['tx'], vhdl_dict, version) in_muons = input_parser.get_input_muons() out_muons = output_parser.get_output_muons() imd_muons = output_parser.get_intermediate_muons() imd_ranks = output_parser.get_ranks() in_mu_non_zero = [in_mu for in_mu in in_muons if in_mu.bitword != 0] out_mu_non_zero = [ out_mu for out_mu in out_muons if out_mu.bitword != 0 ]
phi_high = 57 pt_unit = 0.5 pt_low = 0 pt_high = 280 #### #### Parameters for histograms may be changed here at any time hist_parameters = { "qualityBits": ["qualityBits", 16, -0.5, 15.5], "ptBits": ["ptBits", 128, 0, 512],#(pt_high-pt_low)/pt_unit, pt_low, pt_high], "phiBits": ["phiBits", 128, 0, 1024], #(phi_high-phi_low)/phi_unit, phi_low, phi_high], "etaBits": ["etaBits", 128, -256, 256] #(eta_high-eta_low)/eta_unit, eta_low, eta_high] } for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['base']) print "+"*30, "version detected:", version, "+"*30 print "+"*30, pattern, "+"*30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames["rx"], vhdl_dict) output_parser = OutputBufferParser(fnames["tx"], vhdl_dict, version) in_muons = input_parser.get_input_muons() for mu in in_muons: if mu.bitword != 0: if mu.qualityBits == 2: _log.debug(print_in_word(mu.bitword)) _log.debug(hex(mu.bitword)) out_muons = output_parser.get_output_muons()
pt_high = 280 #### #### Parameters for histograms may be changed here at any time hist_parameters = { "qualityBits": ["qualityBits", 16, -0.5, 15.5], "ptBits": ["ptBits", 128, 0, 512], #(pt_high-pt_low)/pt_unit, pt_low, pt_high], "phiBits": ["phiBits", 128, 0, 1024], #(phi_high-phi_low)/phi_unit, phi_low, phi_high], "etaBits": ["etaBits", 128, -256, 256] #(eta_high-eta_low)/eta_unit, eta_low, eta_high] } for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['base']) print "+" * 30, "version detected:", version, "+" * 30 print "+" * 30, pattern, "+" * 30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames["rx"], vhdl_dict) output_parser = OutputBufferParser(fnames["tx"], vhdl_dict, version) in_muons = input_parser.get_input_muons() for mu in in_muons: if mu.bitword != 0: if mu.qualityBits == 2: _log.debug(print_in_word(mu.bitword)) _log.debug(hex(mu.bitword)) out_muons = output_parser.get_output_muons()
# binning of plots: hist_parameters = { "qualityBits": ["qualityBits", 16, 0, 16], "ptBits": ["ptBits", 128, 0, 512], #(pt_high-pt_low)/pt_unit, pt_low, pt_high], "phiBits": ["phiBits", 256, 0, 1024], #(phi_high-phi_low)/phi_unit, phi_low, phi_high], "etaBits": ["etaBits", 256, -512, 512] #(eta_high-eta_low)/eta_unit, eta_low, eta_high] } phys_patterns = ["ZMM", "WM", "TTbar", "MinBias", "SingleMuPt100"] for pattern, fnames in file_dict.iteritems(): _log.info("{patt:+^90}".format(patt=pattern)) version = Version.from_filename(fnames['tx']) emu_version = Version( "99_99_99") # so workarounds are not applied for this # Reading and initilaising the Emulator data emu_out_list = [] emu_imd_list = [] # Reading and processing the hardware data print "--- Emulator parsing:" emu_output_parser = OutputBufferParser(fnames["emu_tx"], vhdl_dict, emu_version) emu_out_list = emu_output_parser.get_output_muons() emu_imd_list = emu_output_parser.get_intermediate_muons() # Reading and processing the hardware data print "--- HW parsing:"