code: def check_geom(c1, a1, c2, a2, tol=_DEF.XYZ_COORD_MATCH_TOL):
      from ..const import atom_num
      import numpy as np
      from ..const import EnumCheckGeomMismatch as ECGM
      match = True
      if not len(c1.shape) == 1:
          raise ValueError(("'c1' is not a vector."))
      if not len(c2.shape) == 1:
          raise ValueError(("'c2' is not a vector."))
      if not len(a1.shape) == 1:
          raise ValueError(("'a1' is not a simple list."))
      if not len(a2.shape) == 1:
          raise ValueError(("'a2' is not a simple list."))
      if not c1.shape[0] == 3 * a1.shape[0]:
          raise ValueError("len(c1) != 3*len(a1)")
      if not c2.shape[0] == 3 * a2.shape[0]:
          raise ValueError("len(c2) != 3*len(a2)")
      if not c1.shape[0] == c2.shape[0]:
          match = False
          fail_type = ECGM.DIMENSION
          return match, fail_type, None
      fail_loc = np.less_equal(np.abs(np.subtract(c1,c2)), tol)
      if sum(fail_loc) != c2.shape[0]:
          match = False
          fail_type = ECGM.COORDS
          return match, fail_type, fail_loc
      if np.issubdtype(a1.dtype, np.dtype('str')):
          a1 = np.array([atom_num[e] for e in a1])
      if np.issubdtype(a2.dtype, np.dtype('str')):
          a2 = np.array([atom_num[e] for e in a2])
      fail_loc = np.equal(a1, a2)
      if sum(fail_loc) != a2.shape[0]:
          match = False
          fail_type = ECGM.ATOMS
          return match, fail_type, fail_loc
      return match, None, None