Ejemplo n.º 1
0
 def analyse(self, filecnt):
     eventstart = filecnt*160
     print "emulator", self.emufname
     emu_parser = OutputBufferParser(self.emufname, self.vhdcfg, self.emuversion)
     hw_parser = OutputBufferParser(self.hwfname, self.vhdcfg, self.hwversion)
     emuout = emu_parser.get_output_muons()
     print "HW", self.hwfname
     hwout = hw_parser.get_output_muons()
     self.event_ctr += len(emuout)/8
     mucntr = 0 # running index
     muon_nonzero_ctr = 0 # counts how many non-zero
     for emu, hw in zip(emuout, hwout):
         event = mucntr/8+eventstart
         if (emu.bitword != 0):
             muon_nonzero_ctr += 1
         if emu.bitword != hw.bitword:
             if not event in self.errors:
                 self.errors.append(event)
                 self.pt_errors[event] = 0
                 self.phi_errors[event] = 0
                 self.iso_errors[event] = 0
                 self.eta_errors[event] = 0
                 self.chrg_errors[event] = 0
                 self.qual_errors[event] = 0
             if emu.ptBits != hw.ptBits: self.pt_errors[event] += 1
             if emu.phiBits != hw.phiBits: self.phi_errors[event] += 1
             if emu.etaBits != hw.etaBits: self.eta_errors[event] += 1
             if emu.Iso != hw.Iso: self.iso_errors[event] += 1
             if emu.Sysign != hw.Sysign: self.chrg_errors[event] += 1
             if emu.qualityBits != hw.qualityBits: self.qual_errors[event] += 1
         mucntr += 1
         if mucntr%8 == 0: # for every event check
             self.mu_cntr += muon_nonzero_ctr
             if muon_nonzero_ctr > 1:
                 self.event_nontrivial_cntr += 1
             muon_nonzero_ctr = 0
Ejemplo n.º 2
0
 def analyse(self, filecnt):
     eventstart = filecnt * 160
     print "emulator", self.emufname
     emu_parser = OutputBufferParser(self.emufname, self.vhdcfg,
                                     self.emuversion)
     hw_parser = OutputBufferParser(self.hwfname, self.vhdcfg,
                                    self.hwversion)
     emuout = emu_parser.get_output_muons()
     print "HW", self.hwfname
     hwout = hw_parser.get_output_muons()
     self.event_ctr += len(emuout) / 8
     mucntr = 0  # running index
     muon_nonzero_ctr = 0  # counts how many non-zero
     for emu, hw in zip(emuout, hwout):
         event = mucntr / 8 + eventstart
         if (emu.bitword != 0):
             muon_nonzero_ctr += 1
         if emu.bitword != hw.bitword:
             if not event in self.errors:
                 self.errors.append(event)
                 self.pt_errors[event] = 0
                 self.phi_errors[event] = 0
                 self.iso_errors[event] = 0
                 self.eta_errors[event] = 0
                 self.chrg_errors[event] = 0
                 self.qual_errors[event] = 0
             if emu.ptBits != hw.ptBits: self.pt_errors[event] += 1
             if emu.phiBits != hw.phiBits: self.phi_errors[event] += 1
             if emu.etaBits != hw.etaBits: self.eta_errors[event] += 1
             if emu.Iso != hw.Iso: self.iso_errors[event] += 1
             if emu.Sysign != hw.Sysign: self.chrg_errors[event] += 1
             if emu.qualityBits != hw.qualityBits:
                 self.qual_errors[event] += 1
         mucntr += 1
         if mucntr % 8 == 0:  # for every event check
             self.mu_cntr += muon_nonzero_ctr
             if muon_nonzero_ctr > 1:
                 self.event_nontrivial_cntr += 1
             muon_nonzero_ctr = 0
    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]

        # get closest matches:
        in_matches, imd_matches = get_closest_matches(in_mu_non_zero, out_mu_non_zero, imd_mu_non_zero)

Ejemplo n.º 4
0
    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
    }

    phys_patterns = ["ZMM", "WM", "TTbar", "MinBias", "SingleMuPt100"]

    for pattern, fnames in file_dict.iteritems():
    	version = Version.from_filename(fnames['base'])
        _log.info("{patt:+^90}".format(patt=pattern))

        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
        _log.info("{info:>90}".format(info="EMU PARSING"))
        emu_output_parser = OutputBufferParser(fnames["emu_tx"], vhdl_dict, emu_version)
        emu_input_parser = InputBufferParser(fnames["emu_rx"], vhdl_dict)
        
        emu_out_list = emu_output_parser.get_output_muons()
        emu_imd_list = emu_output_parser.get_intermediate_muons()
        emu_in_list = emu_input_parser.get_input_muons()


        _log.info("{info:>90}".format(info="HW PARSING"))
        # 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()
        skip = 0
        if pattern in phys_patterns:
Ejemplo n.º 6
0
                    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:"
        input_parser = InputBufferParser(fnames["rx"], vhdl_dict)
        output_parser = OutputBufferParser(fnames["tx"], vhdl_dict, version)
        skip = 0
        if pattern in phys_patterns:
            skip = 60
        in_muons = input_parser.get_input_muons()
        out_muons = output_parser.get_output_muons(skip)

        if pattern in phys_patterns:
            _log.info("Dropping the last {n} muons from the emulator".format(
Ejemplo n.º 7
0
from tools.muon_helpers import print_out_word
from helpers.options import parse_options, discover_files
from tools.vhdl import VHDLConstantsParser

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['base'])
        print "+"*30, "version detected:", version, "+"*30
        print "+"*30, pattern, "+"*30

        # Reading and processing the hardware data
        output_parser = OutputBufferParser(fnames["tx"], vhdl_dict, version)
        out_muons = output_parser.get_output_muons()
        imd_muons = output_parser.get_intermediate_muons()
        non_zero = [mu for mu in out_muons if mu.bitword != 0]

        out_muons_emu = None
        if "emu_tx" in fnames.keys():
            output_parser_emu = OutputBufferParser(fnames["emu_tx"], vhdl_dict, version)
            imd_muons_emu = output_parser_emu.get_intermediate_muons()
            out_muons_emu = output_parser_emu.get_output_muons()
            non_zero_emu = [mu for mu in out_muons_emu if mu.bitword != 0]


        if out_muons_emu != None:
            mu_to_print = {}
            imd_to_print = zip(imd_muons, imd_muons_emu)