Reset the timer at the current level in the hierarchy (i.e. might or
    might not be the root).

    Notes:
        Erases timing data but preserves relationship to the hierarchy.  If the
        current timer level was not previously stopped, any timing data from this
        timer (including subdivisions) will be discarded and not added to the next
        higher level in the data structure.  If the current timer was previously
        stopped, then its data has already been pushed into the next higher level.

    Returns:
        float: The current time.

    Raises:
        LoopError: If in a timed loop.

def reset():
    """
    Reset the timer at the current level in the hierarchy (i.e. might or
    might not be the root).

    Notes:
        Erases timing data but preserves relationship to the hierarchy.  If the
        current timer level was not previously stopped, any timing data from this
        timer (including subdivisions) will be discarded and not added to the next
        higher level in the data structure.  If the current timer was previously
        stopped, then its data has already been pushed into the next higher level.

    Returns:
        float: The current time.

    Raises:
        LoopError: If in a timed loop.
    """
    if f.t.in_loop:
        raise LoopError("Cannot reset a timer while it is in timed loop.")
    f.t.reset()
    f.refresh_shortcuts()
    return f.t.start_t