def METHOD_NAME(self, a, b, c, conditions):
    '''
    Generate the main diffraction peaks for crystal structures.
    Parameters
    ----------
    a: :obj:`float`
        Length of the unit cell on the x-axis.
    b: :obj:`float`
        Length of the unit cell on the y-axis.
    c: :obj:`float`
        Length of the unit cell on the z-axis.
    conditions: :obj:`function`
        Reflection conditions for the crystal lattice.
    '''
    hkl_ranges = [
        range(0, self.sf_order + 1),
        range(-self.sf_order, self.sf_order + 1),
        range(-self.sf_order, self.sf_order + 1),
    ]
    reflections = [np.linalg.norm([h / a, k / b, l / c]) * 2 * np.pi
                   for (h, k, l) in itertools.product(*hkl_ranges)
                   if conditions(h, k, l) and (h + k + l != 0) and
                   (h**2 + k**2 + l**2) <= self.sf_order**2]
    return self.peak_orders(np.unique(reflections))