def fit_uml(f, data, quiet=False, print_level=0, *arg, **kwd):
    """
    perform unbinned likelihood fit
    :param f: pdf
    :param data: data
    :param quiet: if not quite draw latest fit on fail fit
    :param printlevel: minuit printlevel
    :return:
    """
    uml = UnbinnedLH(f, data)
    minuit = Minuit(uml, print_level=print_level, **kwd)
    minuit.set_strategy(2)
    minuit.migrad()
    if not minuit.migrad_ok() or not minuit.matrix_accurate():
        if not quiet:
            from matplotlib import pyplot as plt
            plt.figure()
            uml.show()
            print(minuit.values)
    return (uml, minuit)
perform unbinned likelihood fit
    :param f: pdf
    :param data: data
    :param quiet: if not quite draw latest fit on fail fit
    :param printlevel: minuit printlevel
    :return: