docs: def sm_lha2dict(lha):
      """Convert a dictionary returned by pylha from a DSixTools SM input file
      into a dictionary of SM values."""
      d = OrderedDict()
      v = dict(lha['BLOCK']['GAUGE']['values'])
      d['g'] = v[1]
      d['gp'] = v[2]
      d['gs'] = v[3]
      v = dict(lha['BLOCK']['SCALAR']['values'])
      d['Lambda'] = v[1]
      d['m2'] = v[2]
      d['Gu'] = lha2matrix(lha['BLOCK']['GU']['values'], (3,3))
      if 'IMGU' in lha['BLOCK']:
          d['Gu'] = d['Gu'] + 1j*lha2matrix(lha['BLOCK']['IMGU']['values'], (3,3))
      d['Gd'] = lha2matrix(lha['BLOCK']['GD']['values'], (3,3))
      if 'IMGD' in lha['BLOCK']:
          d['Gd'] = d['Gd'] + 1j*lha2matrix(lha['BLOCK']['IMGD']['values'], (3,3))
      d['Ge'] = lha2matrix(lha['BLOCK']['GE']['values'], (3,3))
      if 'IMGE' in lha['BLOCK']:
          d['Ge'] = d['Ge'] + 1j*lha2matrix(lha['BLOCK']['IMGE']['values'], (3,3))
      # thetas default to 0
      if 'THETA' in lha['BLOCK']:
          v = dict(lha['BLOCK']['THETA']['values'])
          d['Theta'] = v.get(1, 0)
          d['Thetap'] = v.get(2, 0)
          d['Thetas'] = v.get(3, 0)
      else:
          d['Theta'] = 0
          d['Thetap'] = 0
          d['Thetas'] = 0
      return d