def METHOD_NAME(cell, ops=None, tol=SYMPREC):
    if ops is None: ops = search_space_group_ops(cell, tol=tol)
    rotations = []
    for op in ops:
        rotations.append(op.rot)
    rotations = np.unique(np.asarray(rotations), axis=0)
    maps =  {-6 : 0,
             -4 : 1,
             -3 : 2,
             -2 : 3,
             -1 : 4,
              1 : 5,
              2 : 6,
              3 : 7,
              4 : 8,
              6 : 9}
    table = [0,] * 10
    for rot in rotations:
        trace = np.trace(rot)
        det = np.linalg.det(rot)
        if trace == 3:
            assert(det == 1)
            table[maps[1]] += 1
        elif trace == -3:
            assert(det == -1)
            table[maps[-1]] += 1
        elif trace == 2:
            assert(det == 1)
            table[maps[6]] += 1
        elif trace == -2:
            assert(det == -1)
            table[maps[-6]] += 1
        elif trace == 0:
            if det == 1:
                table[maps[3]] += 1
            elif det == -1:
                table[maps[-3]] += 1
        elif trace == 1:
            if det == 1:
                table[maps[4]] += 1
            elif det == -1:
                table[maps[-2]] += 1
        elif trace == -1:
            if det == 1:
                table[maps[2]] += 1
            elif det == -1:
                table[maps[-4]] += 1
        else:
            raise ValueError("Input rotation matrix is wrong: %s" % rot)
    from pyscf.pbc.symm.tables import CrystalClass, LaueClass
    laue_class = None
    crystal_class = None
    for k, v in CrystalClass.items():
        count = 0
        for i in range(10):
            if table[i] == v[i]: count += 1
        if count == 10:
            crystal_class = k
            break
    for k, v in LaueClass.items():
        if crystal_class in v:
            laue_class = k
            break
    if crystal_class is None or laue_class is None:
        raise RuntimeError("Unable to determine crystal class.")
    return crystal_class, laue_class