Added orbits.py which allows you to find relative position of companions (adopted from gcworks) and project a cluster (used in SPISEA)
In synthetic.py perform_pop_syn added a multiplicity option which you can feed in a multiplicity object (note right now only allows ResolvedMultiplicityDK)
Makes an hdf5 file for companions that includes the companion table for the primaries
Took making cluster out of compact objects and made it its own function (since _add_multiples() now uses the same cluster)
First handles companions with compact object primaries. Separates them and changes the system_idx column in companion table to the obj_id of the compact object
Then in _add_multiples() finds the closest-in-mass star in galaxia and changes system_idx in companion table to the galaxia table index. NOTE DROPS ALL SYSTEMS WITH PRIMARIES MORE MASSIVE THAN MOST MASSIVE GALAXIA STAR
Changes from galaxia table index to obj_id of stellar primary
Merges companion tables with compact object primaries and stellar primaries and adds them to the hdf5 file with the modified _bin_lb_hdf5
Added a test to make sure _add_multiples() works properly
In refine_events() added option to add companion hdf5 file and loops over each portion of it
Loops through each event and finds associated companions and adds the obj_id of the lens and source and a column saying if it's a companion of the lens and source (in case the same system is involved in multiple events)
Adds a few columns to companion table: q (mass ratio), separation in mas, period in years, and phi (angle between binary axis and relative proper motion) in _add_multiples_parameters() and calculate_phi()
Writes these to a fits file
Potential problems
Fix with SPISEA for small clusters with multiples may not be integrated (Fixed)
Import statement for orbits.py in synthetic.py may not work. I don't think it could be tested until it's merged (I was doing testing with using sys.path) (Fixed)
Please verify that the math in _calculate_phi() is right
Note technically there's been some changes with the example for running popsycle, but that's because I ran it, not intentional changes
What's changed?
Potential problems