Calculates the number of cluster in every given event.
    An external C++ library is used since there is no sufficient solution in python possible.
    Because of np.bincount # BUG #225 for values > int32 and the different handling under 32/64 bit operating systems.

    Parameters
    ----------
    event_numbers : numpy.array
        List of event numbers to be checked.

    Returns
    -------
    numpy.array
        First dimension is the event number.
        Second dimension is the number of cluster of the event.

def get_n_cluster_in_events(event_numbers):
    '''Calculates the number of cluster in every given event.
    An external C++ library is used since there is no sufficient solution in python possible.
    Because of np.bincount # BUG #225 for values > int32 and the different handling under 32/64 bit operating systems.

    Parameters
    ----------
    event_numbers : numpy.array
        List of event numbers to be checked.

    Returns
    -------
    numpy.array
        First dimension is the event number.
        Second dimension is the number of cluster of the event.
    '''
    logging.debug("Calculate the number of cluster in every given event")
    event_numbers = np.ascontiguousarray(event_numbers)  # change memory alignement for c++ library
    result_event_numbers = np.empty_like(event_numbers)
    result_count = np.empty_like(event_numbers, dtype=np.uint32)
    result_size = analysis_functions.get_n_cluster_in_events(event_numbers, result_event_numbers, result_count)
    return np.vstack((result_event_numbers[:result_size], result_count[:result_size])).T