docs: def run_sector(sector, C_in, eta_s, f, p_in, p_out, qed_order=1, qcd_order=1):
      r"""Solve the WET RGE for a specific sector.
  
      Parameters:
  
      - sector: sector of interest
      - C_in: dictionary of Wilson coefficients
      - eta_s: ratio of $\alpha_s$ at input and output scale
      - f: number of active quark flavours
      - p_in: running parameters at the input scale
      - p_out: running parameters at the output scale
      """
      Cdictout = OrderedDict()
      classname = sectors[sector]
      keylist = coeffs[sector]
      if sector == 'dF=0':
          perm_keys = get_permissible_wcs('dF0', f)
      else:
          perm_keys = get_permissible_wcs(sector, f)
      if perm_keys != 'all':
          # remove disallowed keys if necessary
          keylist = np.asarray(keylist)[perm_keys]
      C_input = np.array([C_in.get(key, 0) for key in keylist])
      if np.count_nonzero(C_input) == 0 or classname == 'inv':
          # nothing to do for SM-like WCs or RG invariant operators
          C_result = C_input
      else:
          C_scaled = np.asarray([C_input[i] * scale_C(key, p_in) for i, key in enumerate(keylist)])
          if qcd_order == 0:
              Us = np.eye(len(C_scaled))
          elif qcd_order == 1:
              Us = getUs(classname, eta_s, f, **p_in)
          if qed_order == 0:
              Ue = np.zeros(C_scaled.shape)
          elif qed_order == 1:
              if qcd_order == 0:
                  Ue = getUe(classname, 1, f, **p_in)
              else:
                  Ue = getUe(classname, eta_s, f, **p_in)
          C_out = (Us + Ue) @ C_scaled
          C_result = [C_out[i] / scale_C(key, p_out) for i, key in enumerate(keylist)]
      for j in range(len(C_result)):
          Cdictout[keylist[j]] = C_result[j]
      return Cdictout