Skip to content

PyGRB Injection Development

Andrew R. Williamson edited this page Nov 9, 2021 · 15 revisions

PyGRB Injection Development

We want to move away from using lalapps_inspinj to generate injection sets as xml files, with all the complication that entails. Ideally, a single job should be able to produce the injections in a format that can be passed to the filtering code, with perhaps a second stage to apportion them for analysis.

Currently, the process is as follows:

  1. lalapps_inspinj creates a set of injections whose parameters are drawn from desired distributions, placed at a single sky point
  2. pycbc_dark_vs_bright_injections sifts through these to select only those that meet an "EM-bright" criterion
  3. ligolw_cbc_jitter_skyloc spreads the injections out on the sky to cover the GRB positional uncertainty region by drawing new sky positions from some localisation distribution
  4. ligolw_cbc_align_total_spin takes the inclination iota of the binary (defined as the angle between line-of-sight and orbital angular momentum axis) and translates this so that theta_jn (the angle between line-of-sight and total angular momentum axis) takes the old value of iota
  5. pycbc_split_inspinj takes the resulting injection files and divides the injections up into chunks for analysis to parallelise the computation

We believe all this should be possible in two steps:

  1. pycbc_create_injections to take care of steps 1–4 above
  2. pycbc_hdf5_splitbank for step 5

In doing so, we will not only streamline the process but, importantly, can remove old dependencies on lalapps and pylal codes, as well as the constraints that come with using ligolw_xml tables.

1. Generation

In place already

2. EM-bright

  • Currently use bin/pycbc_dark_vs_bright_injections
  • Functions live in pycbc/tmpltbank/em_progenitors.py
  • 2H EOS data live in pycbc/tmpltbank/ns_sequences/equil_2H.dat

EM-bright condition is based upon the remnant mass estimate in this function.

Explicitly, we want a function in contraints.py that goes from:

  • eta
  • ns_g_mass
  • ns_sequence or name (see lalsuite module)
  • chi
  • incl to remnant mass.

Will we keep anything under tmpltbank or move all the EM-bright stuff elsewhere? What goes into constraints.py, and what goes into a module for Em-bright (or more broadly NS physics) calculations?

3. Sky jitter

4. Align the binary

Done