gwcelery.tasks.superevents module

Superevents are a new abstraction of gravitational-wave candidates introduced in the third LIGO/Virgo observing (O3). Each superevent is intended to represent a single astrophysical event. A superevent consists of one or more event candidates, possibly from different pipelines, that are neighbors in gpstime. One event belonging to the superevent is identified as the preferred event.

Flow Chart

The flow chart below illustrates the decision process for selection of the preferred event.

digraph superevents { compound = true nodesep = 0.1 ranksep = 0.5 node [ fillcolor = white shape = box style = filled target = "_top" ] graph [ labeljust = "left" style = filled target = "_top" ] lvalert [ label = "LVAlert\nmessage" style = rounded ] subgraph cluster_handle { href = "../gwcelery.tasks.superevents.html#gwcelery.tasks.superevents.handle" label = <<B><FONT face="monospace">handle</FONT></B>> far_check [ label = "FAR <\nthreshold?" shape = diamond ] fetch_superevents [ label = "Fetch superevents\nwith nearby trigger\ntimes from GraceDb" ] { rank = same associated_superevent [ label = "Event intersects\nany superevent\nwindow?" shape = diamond ] create_superevent [ label = "Create\nsuperevent" ] } { rank = same preferred_event_multi_ifo [ label = "Preferred event\n#detectors > 1" shape = diamond ] new_event_multi_ifo [ label = "New event\n#detectors > 1" shape = diamond ] } { rank = same d1 [ label="New event\npreferred" ] d2 [ shape=point margin = "3.20,0.05" ] } add_to_superevent [ label = "Add to\nsuperevent" ] { rank = same group_tie [ label = "New event group\n= preferred event\ngroup?" shape = diamond ] cbc_preferred [ label = "CBC is\npreferred" ] } cbc_burst [ label = "Tie between\nCBC or Burst?" shape = diamond ] far_tie_breaker [ label = "FAR <\npreferred event\nFAR?" shape = diamond ] snr_tie_breaker [ label = "SNR >\npreferred event\nSNR?" shape = diamond ] set_preferred [label = "Set as preferred event"] } lvalert -> far_check [ label = "proceed if new\ntype alert" lhead = cluster_handle ] far_check -> fetch_superevents [label = Yes] fetch_superevents -> associated_superevent associated_superevent -> create_superevent [label = No] associated_superevent -> add_to_superevent [label = Yes] add_to_superevent -> preferred_event_multi_ifo add_to_superevent -> new_event_multi_ifo new_event_multi_ifo -> d1 [label = Yes] preferred_event_multi_ifo -> d1 [label = No] d1 -> set_preferred new_event_multi_ifo -> d2 [label = Yes] preferred_event_multi_ifo -> d2 [label = Yes] d2 -> group_tie group_tie -> cbc_preferred [label = No] group_tie -> cbc_burst [label = Yes] cbc_burst -> snr_tie_breaker [label = CBC] cbc_burst -> far_tie_breaker [label = Burst] far_tie_breaker -> set_preferred [label = Yes] snr_tie_breaker -> set_preferred [label = Yes] }

Tasks

Module containing the functionality for creation and management of superevents.

  • There is serial processing of triggers from low latency pipelines.
  • Dedicated superevent queue for this purpose.
  • Primary logic to respond to low latency triggers contained in handle() function.
(task)gwcelery.tasks.superevents.handle(payload)[source]

LVAlert handler for superevent manager. Recieves payload from test and production nodes and serially processes them to create/modify superevents

gwcelery.tasks.superevents.get_instruments(event_info)[source]

Get the participating instruments from the lvalert packet

Parameters:event_info (dict) – Dictionary storing event information
Returns:The set of instruments that contributed to the ranking statistic for the event.
Return type:set

Notes

The number of instruments that contributed data to an event is given by the instruments key of the GraceDB event JSON structure. However, some pipelines (e.g. gstlal) have a distinction between which instruments contributed data and which were considered in the ranking of the candidate. For such pipelines, we infer which pipelines contributed to the ranking by counting only the SingleInspiral records for which the chi squared field is non-empty.

gwcelery.tasks.superevents.should_publish(event_info)[source]

Determine whether an event should be published as a public alert.