uvex_transients.simulation.event_catalog.EventCatalog.simulate_photometry#

EventCatalog.simulate_photometry(mission: Mission, transients: dict[str, TransientBase], schedule: SurveySchedule, bands: list[str] | None = None, n_sigma: float | None = None) → QTable[source]#

Run ~uvex_transients.simulation.event.Event.simulate_photometry over every event in this catalog.

Reconstructs every row as an Event (via get_events), runs its own Event.simulate_photometry (one ~synphot.SourceSpectrum per event, batched over that event’s own observations), and stacks every event’s table together – there is no cross-event batching here, just a loop; the expensive vectorization already happens per event, inside Event.simulate_photometry itself.

Parameters:
  • mission (m4opt.missions.Mission) – Supplies the ~m4opt.synphot.Detector (bandpasses, background, …) evaluated against.

  • transients (dict[str, TransientBase]) – Transient-type instances, keyed by the same names used in this catalog’s transient_type column – forwarded to get_events.

  • schedule (SurveySchedule) – The survey schedule to check each event’s visibility against – forwarded to get_events.

  • bands (list of str, optional) – Which of mission.detector’s bandpasses to evaluate. Defaults to every bandpass the detector has.

  • n_sigma (float, optional) – Forwarded to Event.simulate_photometry; see its own docstring.

Returns:

The astropy.table.vstack of every event’s own photometry table (see Event.simulate_photometry’s docstring for the column schema) – one row per (event, observation, band). Empty (but correctly typed) if this catalog itself is empty.

Return type:

astropy.table.QTable