Skip to content

Bessell bandpasses need to be converted to photon transmission? #111

Closed
@saurabhwjha

Description

@saurabhwjha

@kbarbary I noticed that the default Bessell bandpasses are taken directly from the B90 paper. Those bandpasses use a convention that is different than most other sources. Bessell defines the transmission as energy detected/photon incident [fixed an error here that Kyle pointed out], rather than the more conventional photons detected/photons incident.

So instead of integrating (lambda)(F_lambda)(trans)(dlambda) to get "counts" like for most of the bandpasses you have (and your synthetic photometry code does (F_lambda/nu)(trans)(dlambda), same thing modulo constants), for Bessell you need to integrate (F_lambda)(Bessell_trans)(dlambda) to get "counts". In other words, Bessell_trans is proportional to lambda*trans.

In MLCS2k2 I allow for either of these conventions and keep track in the bandpass file. I think everyone else just adopts the modern photon transmission convention like you've done. So the simplest fix would be to just adjust your Bessell transmissions to photon units, by dividing each Bessell transmission value by lambda and then renormalizing. For B or V the results should look like Table 3 of Maiz Apellaniz (2006).

This is described more in the Appendix A of the Maiz Apellaniz paper, or footnote 2 of Suntzeff et al. (1998), reiterated in footnote 3 of Jha et al. (2006). This is one of those in-the-weeds issues that keeps coming up and is hard to squash.

Activity

rbiswas4

rbiswas4 commented on Sep 30, 2015

@rbiswas4
Member

I remember this issue from before SNCosmo, and I could never figure out which transmission function file followed which of the two conventions. Maybe, we could add some metadata to each bandpass file to specify the photon/energy convention, and on instantiation change the normalization to photon convention (if the bandpass is in energy). That way we can keep the original files for comparison.

Are there other transmission functions files which have energy conventions? If you have a list, we could make sure we add that information.

saurabhwjha

saurabhwjha commented on Sep 30, 2015

@saurabhwjha
ContributorAuthor

Yes, you could keep track and do the synthetic photometry properly for each convention (that's what MLCS2k2 does). But just making them all photon convention would be fine too (I don't think we'll be going back to energy counting detectors anytime soon...)

I think all of the rest of the sncosmo builtin ones (des, hst, jwst, kepler, sdss) are okay.

Here are the passbands I have in MLCS2k2 with energy units (RESPUNIT=ergs in the FITS header):
JHKs_2MASS.fits
UBVRI_Astier.fits (these are the Bessell passbands, just shifted in wavelength as prescribed by Astier et al. 2006)
RI_BTC.fits (CTIO 4m BTC camera from late-90s)
UBVRI_Bessell.fits (Bessell 1990)
RI_CTIO4m.fits (Mosaic camera on CTIO4m)
B45,V45_CTIO4m.fits (High-Z team special filters)
UBVRI_Cohen (Cohen et al. 2003)
UBVRI_Kessler (Bessell passbands adjusted in wavelength as suggested in Kessler et al. (2009))
RI_LRIS (Keck LRIS)
UBVRI_Marriner (Landolt/Cohen passbands but put on BD+17 zeropoint, not Vega)
RIZ_Suprime.fits (Subaru Suprime camera passbands)

all of these are in the aux/passbands subdirectory from
http://www.physics.rutgers.edu/~saurabh/mlcs2k2/mlcs2k2.v007.tar.gz
or
http://www.physics.rutgers.edu/~saurabh/xfer/synphot.mlcs2k2.20140619.tar.gz

kbarbary

kbarbary commented on Sep 30, 2015

@kbarbary
Member

I think we should either:

  1. change the files on disk to all be the same convention (photon transmission)
  2. add an argument to sncosmo.read_bandpass() to specify the other transmission and do the conversion upon read. That is, the returned sncosmo.Bandpass object will always be in photon transmission.

I'm leaning towards the later, simply for data fidelity and traceability (with clear comments in the Bessel bandpass files!).

kbarbary

kbarbary commented on Sep 30, 2015

@kbarbary
Member

... or rather, the conversion functionality should go into the initializer for sncosmo.Bandpass, and read_bandpass() should pass a keyword along to the initializer.

rbiswas4

rbiswas4 commented on Oct 1, 2015

@rbiswas4
Member

Thanks for the list!
@kbarbary : I too like the second for exactly the same reason. But I wonder if we can make it possible for the user to not have to put in the keyword. While one may expect the user to read comments in the bandpass file, it is an easy mistake to make and forget adding the keyword (even if the argument has no default value, someone will copy code for the DES bandpass and make this mistake).

That is why I would prefer having some metadata in bandpass files that are in the energy convention, and the initializer to read that metadata and do the conversion as you suggest.

Incidentally, this Bessell issue is something that is likely to affect examples in the documentation

 model.set_source_peakabsmag(...) 

which use the Bessell filters, for example in http://sncosmo.readthedocs.org/en/v1.1.x/simulation.html.

kbarbary

kbarbary commented on Oct 1, 2015

@kbarbary
Member

The default will be photon transmission fraction, so 99% of the time, the user will not have to change anything. Also, for any built-in bandpasses, sncosmo.get_bandpass() will just Do The Right Thing.

I agree that more explicit metadata is always better. However, none of the raw bandpass files contain this information, and there is no standard for the format of this metadata.

rbiswas4

rbiswas4 commented on Oct 1, 2015

@rbiswas4
Member

The default will be photon transmission fraction, so 99% of the time, the user will not have to change anything.

Exactly. And while super convenient, I think this increases the chance of user error in the one percent of cases where they should be using it, because many user will not be used to thinking about it.

I agree that more explicit metadata is always better. However, none of the raw bandpass files contain this information, and there is no standard for the format of this metadata.

True. And I don't know what is the best way to solve this. Is inserting metadata in energy transmission files a good thing? This leaves open the possibility for users to read the file and compare the data with say, Bessell's paper and satisfy themselves that this is what SNCosmo uses (as opposed to storing a converted it directly). Or does it make sense to add a file with the metadata with the same filename and a different extentsion to read this in.

kbarbary

kbarbary commented on Oct 16, 2015

@kbarbary
Member

@rbiswas4 Any progress on this? We should fix this sooner rather than later.

rbiswas4

rbiswas4 commented on Oct 18, 2015

@rbiswas4
Member

Not fixed yet ... having some trouble with astropy.utils.get_pkgdata_filename
This is all in:
https://github.com/rbiswas4/sncosmo/tree/bessellb_changes

kbarbary

kbarbary commented on Oct 28, 2015

@kbarbary
Member

@rbiswas4 I finished the work you started and squashed it all into one commit: e79a49c which is now in master.

@saurabhwjha might want to check that the new bessell definitions are correct (in master).

kbarbary

kbarbary commented on Oct 28, 2015

@kbarbary
Member

Also backported this fix to a v1.1.1 bugfix release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Bessell bandpasses need to be converted to photon transmission? · Issue #111 · sncosmo/sncosmo