spacetelescope / synphot_refactor

Synthetic photometry using Astropy
http://synphot.readthedocs.io/en/latest/
BSD 3-Clause "New" or "Revised" License
39 stars 25 forks source link

Allow a lyman-limit cutoff extinction #77

Closed pllim closed 7 years ago

pllim commented 9 years ago

From Rossy Diaz

This was proposed for ETC but seems to be better fitted for pysynphot.

PR 75112: This would be the ability (probably in the form of a checkbox) to “apply a lyman-limit cutoff to the source spectrum after red shifting”, which would allow for (e.g.) looking at a galaxy at a redshift where you could check for drop-out based on filter choice. It would be applied as a custom form of extinction.

From Dan Coe

The Lyman-alpha forest approximately has an effective “throughput” which is a function of redshift and rest-frame wavelength.

We would multiply the SEDs by this factor before redshifting it and passing it through the HST filter.

Below is the Lyman-alpha prescription from the photo-z code BPZ. The inputs are redshifted wavelength wl and redshift z. The output is a factor to be multiplied by the redshifted spectrum. Non-redshifted wavelength is wl / (1+z).

This approximation is from Footnote 3 of Madau et al. 1995, ApJ, 441, 18. This is claimed accurate to 5%. And the scatter in this factor (due to different lines of sight) is huge (attached see Madau’s Fig. 3 top panel). Also see Madau’s Fig. 3 bottom panel for a redshifted version of the “exact” prescription.

See comment below for the code.

dancoe commented 9 years ago

Here is the complete function again and some plots attached for reference:

def etau_madau(wl, z):
    """
    Madau 1995 extinction for a galaxy spectrum at redshift z 
    defined on a wavelenght grid wl
    """
    n=len(wl)
    ll=912.
    c=array([3.6e-3,1.7e-3,1.2e-3,9.3e-4])
    l=array([1216.,1026.,973.,950.])
    tau=wl*0.
    xe=1.+z

    #Lyman series
    for i in range(len(l)):
        tau=where(wl<=l[i]*xe,tau+c[i]*(wl/l[i])**3.46,tau)

    #Photoelectric absorption
    xc=wl/ll
    xc3=xc**3
    tau=where(wl<=ll*xe,
              tau+0.25*xc3*(xe**.46-xc**0.46)\
                  +9.4*xc**1.5*(xe**0.18-xc**0.18)\
                  -0.7*xc3*(xc**(-1.32)-xe**(-1.32))\
                  -0.023*(xe**1.68-xc**1.68),
              tau)

    return where(tau > 700., 0., exp(-tau))

madau screen shot 2013-08-08 at 12 14 24 pm

pllim commented 9 years ago

Thanks, @dancoe !

pllim commented 7 years ago

@dancoe , I finally got around to it. Please have a look at http://synphot.readthedocs.io/en/latest/synphot/tutorials.html#lyman-alpha-extinction .