"""Utility functions for extracting in-ice neutrino from ListI3Particle."""
from graphnet.utilities.imports import has_icecube_package
if has_icecube_package():
    from icecube import (
        dataclasses,
    )  # pyright: reportMissingImports=false
[docs]
def get_in_ice_neutrino(
    primaries: "dataclasses.ListI3Particle",
) -> "dataclasses.I3Particle":
    """Get the highest energy in ice neutrion.
    Args:
        primaries (dataclasses.ListI3Particle): List of primary particles
    """
    in_ice_neutrino = dataclasses.I3Particle()
    in_ice_neutrino.energy = 0
    for primary in primaries:
        if primary.is_neutrino and primary.location_type == 20:
            if primary.energy > in_ice_neutrino.energy:
                in_ice_neutrino = primary
    assert in_ice_neutrino.energy > 0, "No in-ice neutrino found"
    return in_ice_neutrino