def METHOD_NAME(par, create_data2D):
    """WavefieldDecomposition and PressureToVelocity reconstruction of 2d data"""
    p2d, vz2d, p2d_minus, p2d_plus = create_data2D
    # decomposition
    p2d_minus_est, p2d_plus_est = WavefieldDecomposition(
        p2d,
        vz2d,
        par["nt"],
        par["nx"],
        par["dt"],
        par["dx"],
        rho_sep,
        vel_sep,
        nffts=(nfftk, nfftf),
        kind=par["kind"],
        critical=critical * 100,
        ntaper=ntaper,
        dottest=True,
        dtype="complex128",
        **dict(damp=1e-10, atol=1e-8, btol=1e-8, iter_lim=10)
    )
    assert np.linalg.norm(p2d_minus_est - p2d_minus) / np.linalg.norm(p2d_minus) < 2e-1
    assert np.linalg.norm(p2d_plus_est - p2d_plus) / np.linalg.norm(p2d_plus) < 2e-1
    # reconstruction
    PtoVop = PressureToVelocity(
        par["nt"],
        par["nx"],
        par["dt"],
        par["dx"],
        rho_sep,
        vel_sep,
        nffts=(nfftk, nfftf),
        critical=critical * 100.0,
        ntaper=ntaper,
        topressure=False,
    )
    vz2d_plus_est = (PtoVop * p2d_plus_est.ravel()).reshape(par["nx"], par["nt"])
    vz2d_minus_est = (PtoVop * p2d_minus_est.ravel()).reshape(par["nx"], par["nt"])
    vz2d_est = np.real(vz2d_plus_est - vz2d_minus_est)
    assert np.linalg.norm(vz2d_est - vz2d) / np.linalg.norm(vz2d) < 2e-1