def METHOD_NAME(sim, threads=1, singles_name="Singles"):
    # main options
    sim.user_info.visu = False
    sim.user_info.number_of_threads = threads
    sim.user_info.random_seed = 123456789
    # units
    m = gate.g4_units("m")
    mm = gate.g4_units("mm")
    Bq = gate.g4_units("Bq")
    MBq = Bq * 1e6
    sec = gate.g4_units("second")
    #  change world size
    world = sim.world
    world.size = [2 * m, 2 * m, 2 * m]
    world.material = "G4_AIR"
    # add a PET Biograph
    pet = pet_biograph.add_pet(sim, "pet")
    singles = pet_biograph.add_digitizer(
        sim, pet.name, paths.output / f"test049_pet.root", singles_name=singles_name
    )
    # add NECR phantom
    phantom = phantom_necr.add_necr_phantom(sim, "phantom")
    # physics
    sim.physics_manager.physics_list_name = "G4EmStandardPhysics_option4"
    sim.physics_manager.global_production_cuts.all = 1 * m
    sim.physics_manager.set_production_cut(phantom.name, "all", 10 * mm)
    sim.physics_manager.set_production_cut(f"{pet.name}_crystal", "all", 0.1 * mm)
    # default source for tests
    source = phantom_necr.add_necr_source(sim, phantom)
    total_yield = gate.get_rad_yield("F18")
    print("Yield for F18 (nb of e+ per decay) : ", total_yield)
    source.activity = 3000 * Bq * total_yield
    source.activity = 1787.914158 * MBq * total_yield / sim.user_info.number_of_threads
    # source.n = 50000
    source.half_life = 6586.26 * sec
    source.energy.type = "F18_analytic"  # WARNING not ok, but similar to previous Gate
    # source.energy.type = "F18"  # this is the correct F18 e+ source
    # add stat actor
    s = sim.add_actor("SimulationStatisticsActor", "Stats")
    s.track_types_flag = True
    # timing
    sec = gate.g4_units("second")
    sim.run_timing_intervals = [[0, 0.00005 * sec]]
    # sim.run_timing_intervals = [[0, 0.00005 * sec]]
    # set user hook to dump production cuts from G4
    sim.user_fct_after_init = check_production_cuts