Example #1
0
def load_event(args):
    """
    Load one event from a HepMC file
    """
    filename, _, event_number = args.filename.partition(":")
    if event_number:
        try:
            event_number = int(event_number)
        except ValueError:
            log.fatal("Failed to convert filename part to an integer. Filename "
                      "should have the form 'string[:int(event number)]'")
            raise FatalError()
    else:
        event_number = 0
    
    with open(filename) as fd:
        data = try_decompress(fd.read())
        match = HEPMC_TEXT.search(data)

    if not match:
        raise EventParseError("Not obviously hepmc data.")
        
    result = match.groupdict()
    #version = tuple(map(int, result.get("version", "0").split(".")))
    #if version != (2, 06, 01):
        #log.warning("Warning: Only tested with hepmc 2.06.01")
    lines = result["events"].split("\n")
    
    for i, event in izip(xrange(event_number+1), event_generator(lines)):
        # Load only one event
        pass
    return load_single_event(event, args)
Example #2
0
def load_event(args):
    """
    Load one event from a HepMC file
    """
    filename, _, event_number = args.filename.partition(":")
    if event_number:
        try:
            event_number = int(event_number)
        except ValueError:
            log.fatal(
                "Failed to convert filename part to an integer. Filename "
                "should have the form 'string[:int(event number)]'")
            raise FatalError()
    else:
        event_number = 0

    with open(filename) as fd:
        data = try_decompress(fd.read())
        match = HEPMC_TEXT.search(data)

    if not match:
        raise EventParseError("Not obviously hepmc data.")

    result = match.groupdict()
    #version = tuple(map(int, result.get("version", "0").split(".")))
    #if version != (2, 06, 01):
    #log.warning("Warning: Only tested with hepmc 2.06.01")
    lines = result["events"].split("\n")

    for i, event in izip(xrange(event_number + 1), event_generator(lines)):
        # Load only one event
        pass
    return load_single_event(event, args)
Example #3
0
def load_event(args):
    """
    Parse a pythia event record from a log file.
    Numbers are converted to floats where possible.
    """

    filename, _, event_number = args.filename.partition(":")
    if event_number:
        try:
            event_number = int(event_number)
        except ValueError:
            log.fatal(
                "Failed to convert filename part to an integer. Filename "
                "should have the form 'string[:int(event number)]'")
            raise FatalError()
    else:
        event_number = 0

    with open(filename) as fd:
        lines = try_decompress(fd.read()).split("\n")
        lines = [line for line in (line.strip() for line in lines) if line]

    header = None
    if START_COMPLETE in lines:
        header = START_COMPLETE
    elif START_COMBINED in lines:
        header = START_COMBINED
    elif START_HARD in lines:
        header = START_HARD
    else:
        raise EventParseError("Failed to read pythia log file: "
                              "no complete event listing found")

    first = 0
    for i in range(event_number + 1):
        first = lines.index(header, first) + 2
    last = first + lines[first:].index(END_LIST) - 1

    def maybe_num(s):
        try:
            return float(s)
        except ValueError:
            return s

    records = [map(maybe_num, line.split()) for line in lines[first:last]]
    # insert blank name if name is not specified
    for particle in records:
        if len(particle) == 14:
            particle.insert(2, "")

    return make_pythia_graph(records)
Example #4
0
def load_event(args):
    """
    Parse a pythia event record from a log file.
    Numbers are converted to floats where possible.
    """

    filename, _, event_number = args.filename.partition(":")
    if event_number:
        try:
            event_number = int(event_number)
        except ValueError:
            log.fatal("Failed to convert filename part to an integer. Filename "
                      "should have the form 'string[:int(event number)]'")
            raise FatalError()
    else:
        event_number = 0

    with open(filename) as fd:
        lines = try_decompress(fd.read()).split("\n")
        lines = [line for line in (line.strip() for line in lines) if line]

    header = None
    if START_COMPLETE in lines:
        header = START_COMPLETE
    elif START_COMBINED in lines:
        header = START_COMBINED
    elif START_HARD in lines:
        header = START_HARD
    else:
        raise EventParseError("Failed to read pythia log file: "
                               "no complete event listing found")

    first = 0
    for i in range(event_number+1):
        first = lines.index(header, first) + 2
    last = first + lines[first:].index(END_LIST) - 1

    def maybe_num(s):
        try: return float(s)
        except ValueError:
            return s

    records = [map(maybe_num, line.split()) for line in lines[first:last]]
    # insert blank name if name is not specified
    for particle in records:
        if len(particle) == 14: 
            particle.insert(2,"")
            
    return make_pythia_graph(records)
Example #5
0
def load_event(args):
    """
    Load one event from a LHE file
    """
    filename, _, event_number = args.filename.partition(":")

    if event_number:
        try:
            event_number = int(event_number)
        except ValueError:
            log.fatal(
                "Failed to convert filename part to an integer. Filename "
                "should have the form 'string[:int(event number)]'")
            raise FatalError()
    else:
        event_number = 0

    with open(filename) as fd:
        data = try_decompress(fd.read())
        match = LHE_TEXT.search(data)

    if not match:
        raise EventParseError("Failed to parse LHE data")

    result = match.groupdict()

    # Init block has the following format:
    LINIT = namedtuple(
        'LINIT',
        'IDBMUP1, IDBMUP2, EBMUP1, EBMUP2, PDFGUP1, PDFGUP2, PDFSUP1, PDFSUP2, IDWTUP, NPRUP'
    )
    init = result['init'].splitlines()[0].split()
    init = [int(i) for i in init[:2]] + [float(i) for i in init[2:4]
                                         ] + [int(i) for i in init[4:10]]
    init = LINIT._make(init)
    # Followed by NPRUP lines of processes
    log.verbose("LHE init block:")
    for line in result['init'].splitlines():
        log.verbose(line.strip())

    for i, event in izip(xrange(event_number + 1),
                         event_generator(result['events'])):
        # Load only one event
        pass

    return make_lhe_graph(event.splitlines(), init, args)
Example #6
0
def load_event(args):
    """
    Load one event from a LHE file
    """
    filename, _, event_number = args.filename.partition(":")
    
    if event_number:
        try:
            event_number = int(event_number)
        except ValueError:
            log.fatal("Failed to convert filename part to an integer. Filename "
                      "should have the form 'string[:int(event number)]'")
            raise FatalError()
    else:
        event_number = 0
    
    with open(filename) as fd:
        data = try_decompress(fd.read())
        match = LHE_TEXT.search(data)
    
    if not match:
        raise EventParseError("Failed to parse LHE data")

    result = match.groupdict()
    
    # Init block has the following format:
    LINIT = namedtuple('LINIT', 'IDBMUP1, IDBMUP2, EBMUP1, EBMUP2, PDFGUP1, PDFGUP2, PDFSUP1, PDFSUP2, IDWTUP, NPRUP')
    init = result['init'].splitlines()[0].split()
    init = [int(i) for i in init[:2] ] + [float(i) for i in init[2:4] ] + [int(i) for i in init[4:10] ] 
    init = LINIT._make(init)
    # Followed by NPRUP lines of processes
    log.verbose("LHE init block:")
    for line in result['init'].splitlines():
        log.verbose(line.strip())

    for i, event in izip(xrange(event_number+1), event_generator(result['events']) ):
        # Load only one event
        pass

    return make_lhe_graph(event.splitlines(), init, args)