def vmin_migdal(w, erec, mw): """Return minimum WIMP velocity to make a Migdal signal with energy w, given elastic recoil energy erec and WIMP mass mw. """ y = (wr.mn() * erec / (2 * wr.mu_nucleus(mw)**2))**0.5 y += w / (2 * wr.mn() * erec)**0.5 return np.maximum(0, y)
def vmin_w(w, mw): """Minimum wimp velocity to emit a Bremsstrahlung photon w :param w: Bremsstrahlung photon energy :param mw: WIMP mass From Kouvaris/Pradler [arxiv:1607.01789v2], equation in text below eq. 10 """ return (2 * w / wr.mu_nucleus(mw))**0.5
def erec_bound(sign, w, v, mw): """Bremsstrahlung scattering recoil energy kinematic limits From Kouvaris/Pradler [arxiv:1607.01789v2], eq. between 8 and 9, simplified by vmin (see above) :param sign: +1 to get upper limit, -1 to get lower limit :param w: Bremsstrahlung photon energy :param mw: WIMP mass :param v: WIMP speed (earth/detector frame) """ return (wr.mu_nucleus(mw)**2 * v**2 / wr.mn() * (1 - vmin_w(w, mw)**2 / (2 * v**2) + sign * (1 - vmin_w(w, mw)**2 / v**2)**0.5))