code: def _eval_wrapper(self, fit_key, q, chiA, chiB, **kwargs):
          
          chiA = np.array(chiA)
          chiB = np.array(chiB)
  
          # Warn/Exit if extrapolating
          allow_extrap = kwargs.pop('allow_extrap', False)
          self._check_param_limits(q, chiA, chiB, allow_extrap)
  
          self._check_unused_kwargs(kwargs)
  
          x = [q, chiA[2], chiB[2]]
          if fit_key == 'mf' or fit_key == 'all':
              mf, mf_err = self._evaluate_fits(x, 'mf')
              if fit_key == 'mf':
                  return mf, mf_err
          if fit_key == 'chif' or fit_key == 'all':
              chifz, chifz_err = self._evaluate_fits(x, 'chifz')
              chif = np.array([0,0,chifz])
              chif_err = np.array([0,0,chifz_err])
              if fit_key == 'chif':
                  return chif, chif_err
          if fit_key == 'vf' or fit_key == 'all':
              vfx, vfx_err = self._evaluate_fits(x, 'vfx')
              vfy, vfy_err = self._evaluate_fits(x, 'vfy')
              vf = np.array([vfx, vfy, 0])
              vf_err = np.array([vfx_err, vfy_err, 0])
              if fit_key == 'vf':
                  return vf, vf_err
          if fit_key == 'all':
              return mf, chif, vf, mf_err, chif_err, vf_err
docs: Evaluates the surfinBH3dq8 model.