code: def obfn_f(self, Xf=None):
          r
  
          if Xf is None:
              Xf = self.Xf
  
          Rf = self.eval_Rf(Xf)
          R = sl.irfftn(Rf, self.cri.Nv, self.cri.axisN)
          WRf = sl.rfftn(self.W * R, self.cri.Nv, self.cri.axisN)
  
          return 0.5 * np.linalg.norm(WRf.flatten(), 2)**2
docs: r"""Compute data fidelity term :math:`(1/2) \sum_k \| W (\sum_m
          \mathbf{d}_m * \mathbf{x}_{k,m} - \mathbf{s}_k) \|_2^2`.
          This is used for backtracking. Since the backtracking is
          computed in the DFT, it is important to preserve the
          DFT scaling.