def OdfChk(SGLaue, L, M):
    """needs doc string"""
    if not L % 2 and abs(M) <= L:
        if SGLaue == '0':
            if M == 0:
                return True
        elif SGLaue == '-1':
            return True
        elif SGLaue == '2/m':
            if not abs(M) % 2:
                return True
        elif SGLaue == 'mmm':
            if not abs(M) % 2 and M >= 0:
                return True
        elif SGLaue == '4/m':
            if not abs(M) % 4:
                return True
        elif SGLaue == '4/mmm':
            if not abs(M) % 4 and M >= 0:
                return True
        elif SGLaue in ['3R', '3']:
            if not abs(M) % 3:
                return True
        elif SGLaue in ['3mR', '3m1', '31m']:
            if not abs(M) % 3 and M >= 0:
                return True
        elif SGLaue == '6/m':
            if not abs(M) % 6:
                return True
        elif SGLaue == '6/mmm':
            if not abs(M) % 6 and M >= 0:
                return True
        elif SGLaue == 'm3':
            if M > 0:
                if L % 12 == 2:
                    if M <= L // 12:
                        return True
                elif M <= L // 12 + 1:
                    return True
        elif SGLaue == 'm3m':
            if M > 0:
                if L % 12 == 2:
                    if M <= L // 12:
                        return True
                elif M <= L // 12 + 1:
                    return True
    return False
