def METHOD_NAME(
    cls, sim_data: SimulationData, jax_info: JaxInfo
) -> Tuple[SimulationData, SimulationData]:
    """Split a :class:`.SimulationData` into two parts, containing user and gradient data."""
    sim = sim_data.simulation
    data_dict = cls.split_data(mnt_data=sim_data.data, jax_info=jax_info)
    user_data = data_dict["data"] + data_dict["output_data"]
    adjoint_data = data_dict["grad_data"] + data_dict["grad_eps_data"]
    mnt_dict = JaxSimulation.split_monitors(
        monitors=sim_data.simulation.monitors, jax_info=jax_info
    )
    user_mnts = mnt_dict["monitors"] + mnt_dict["output_monitors"]
    adjoint_mnts = mnt_dict["grad_monitors"] + mnt_dict["grad_eps_monitors"]
    user_sim = sim.updated_copy(monitors=user_mnts)
    adjoint_sim = sim.updated_copy(monitors=adjoint_mnts)
    user_sim_data = sim_data.updated_copy(data=user_data, simulation=user_sim)
    adjoint_sim_data = sim_data.updated_copy(data=adjoint_data, simulation=adjoint_sim)
    return user_sim_data, adjoint_sim_data