code: def rot_consts(geom, masses, units=_EURC.INV_INERTIA, on_tol=_DEF.ORTHONORM_TOL):
      import numpy as np
      from ..const import EnumTopType as ETT, EnumUnitsRotConst as EURC, PRM, PHYS
      if not units in EURC:
          raise ValueError("'{0}' is not a valid units value".format(units))
      mom, ax, top = principals(geom, masses, on_tol)
      if top == ETT.ATOM:
          mom = np.repeat(PRM.ZERO_MOMENT_TOL, 3)
      elif top == ETT.LINEAR:
          mom[0] = PRM.ZERO_MOMENT_TOL
      if units == EURC.INV_INERTIA:
          rc = 1.0 / (2.0 * mom)
      elif units == EURC.ANGFREQ_ATOMIC:
          rc = PHYS.PLANCK_BAR / (2.0 * mom * PHYS.ME_PER_AMU)
      elif units == EURC.ANGFREQ_SECS:
          rc = PHYS.PLANCK_BAR / (2.0 * mom * PHYS.ME_PER_AMU) / PHYS.SEC_PER_TA
      elif units == EURC.CYCFREQ_ATOMIC:
          rc = PHYS.PLANCK_BAR / (4.0 * np.pi * mom * PHYS.ME_PER_AMU)
      elif units == EURC.CYCFREQ_HZ:
          rc = PHYS.PLANCK_BAR / (4.0 * np.pi * mom * PHYS.ME_PER_AMU) / \
                                                              PHYS.SEC_PER_TA
      elif units == EURC.CYCFREQ_MHZ:
          rc = PHYS.PLANCK_BAR / (4.0 * np.pi * mom * PHYS.ME_PER_AMU) / \
                                                      PHYS.SEC_PER_TA / 1.0e6
      elif units == EURC.WAVENUM_ATOMIC:
          rc = PHYS.PLANCK / (mom * PHYS.ME_PER_AMU) / \
              (8.0 * np.pi**2.0 * PHYS.LIGHT_SPEED)
      elif units == EURC.WAVENUM_CM:
          rc = PHYS.PLANCK / (mom * PHYS.ME_PER_AMU) / \
              (8.0 * np.pi**2.0 * PHYS.LIGHT_SPEED * PHYS.ANG_PER_BOHR) * 1.0e8
      else:
          raise NotImplementedError("Units conversion not yet implemented.")
      return rc