Adding a Photometric system to SNooPy
SNooPy comes with several photometric systems pre-installed, but it may not have yours. It is fairly simple to add it, though you will have to first understand your own photometry, which is often not so easy. Here follows a step-by-step procedure I used to add the CSP photometric system to SNooPy and should give you an idea of what's involved. If you already have your filter functions and zero-points, you an skip to here.
Understanding your system.
Hopefully, your data is in a natural system. What I mean by natural, is that your magnitudes (of fluxes) are calibrated such that they represent what is measured through the filters attached to your telescope. The most common practice in astronomy is to publish photometry in a standard system, i.e., calibrated such that they represent what you would measure if you were using standard filters (Kron-Cousins, Johnson, SDSS, etc). This works fine when you are working with stars, but not when you are working with non-stellar objects like SNe. Read all about this issue in Stritzinger et al. (2002).
The CSP data are in the natural system. So we need to tell SNooPy how to convert the magnitudes into fluxes and how to perform K- (and S-) corrections by specifying two things for each filter: 1) the functional shape of the filter, and 2) the photometric zero-point. The functions are usually either constructed from manufacturer's specs, multiplied by various efficiency functions of each optical element (mirror, CCD, atmosphere), or they are measured directly using some kind of monochrometer or tune-able laser. However you measure them, tabulate the fractional transmission as a function of wavelength (in Angstroms) in a separate file for each filter. There should only be two numbers per line (wavelength, transmission), comments can be added by putting a (#) at the beginning of a line.
The zero-points can be tricky. Here, you want to determine what magnitude '0' means. If you are on a Vega system, then usually (but not always), mag 0 is what you would measure if you pointed your telescope+filter at Vega. Other systems use other standards (e.g., SDSS uses BD+174708 with a set of tabulated magnitudes through each of its filters). The photometric zero-point is:
zp = 2.5 log10[∫F(λ)S*(λ)λdλ] + m*
where S* is the spectral energy distribution (SED) of your standard and m* is the magnitude of that standard measured by your telescope and filter defined by F. You can get the SEDs of most standards at CALSPEC and you already have your filter, so all that's left is m*. But typically, standard magnitudes are published in a specific system (Landolt, Smith, etc). So you need to transform from this standard magnitude to your own natural magnitude. This is done by using color-terms in reverse. The color terms for the CSP system are defined as (Contreras et al., 2010):
u = u' - ctu(u' - g')
g = g' - ctg(g' - r')
r = r' - ctr(r' - i')
i = i' - cti(r' - i')
B = B' - ctb(B' - V')
V = V' - ctv(V' - i')
where B'V'u'g'r'i' are the standard magnitudes from Landolt (1992) and Smith et al. (2002), BVugri are the natural magnitudes which we are interested in, and ctx are the color terms, determined from photometric standards. Using these equations and the published standard magnitudes, we can compute the natural magnitudes, m*, for each filter and hence the zero-point.
So you think you're on an AB system
By popular demand, SNooPy now accepts AB magnitude systems. By construction, these systems do not refer to a particular standard SED or magnitude. Instead a flat fν = 3631 Jy source is assumed and the AB magnitude is defined relative to this. Internally, SNooPy will simply compute the zero-points necessary to treat the filters the same as any other.
However, a note of caution is in order. The AB system is just like the "standard" systems referred to above. At some level, you must use standard stars and compute color terms to transform your instrumental magnitudes to AB magnitudes. Those transformations are determined using stars. So while your stellar photometry might be on the AB system, there's no guarantee your supernovae (which have very non-stellar SEDs) are on an AB system.
Putting it Into SNooPy
Now that you have the filter functions (let's say they are in files called filter_x.dat), and zero-points zpx, here is how to put that system into SNooPy.
- Locate the SNooPy source folder. This is either the folder to which you extracted the SNooPy source, if you downloaded it by hand, or it is in the snpy sub-folder in the folder you specified when you ran the bootstrap script. Let's say it's in /home/user/snpy. SNooPy expects to find filter files and definitions in /home/user/snpy/filters/filters/{observatory}/{instrument}. You can create your own {observatory}/{instrument} folder (e.g., HST/WFC3).
- Put your filter functions in that folder and create a file called filters.dat (you can start by copying filters.dat from another folder to use as a template). Each line should have the following fields for each filter: ID filename zp comment. Example:
# This is a comment about what these filters represent filter1 filter1.file.dat VegaB=0 Some Vega-based filter filter2 filter2.file.dat 16.234 Some filter with a fixed zero-point filter3 filter3.file.dat AB A filter defined on an AB system
The ID must be unique for the filter (SNooPy will tell you if you use a duplicate). The filename is for the filter function. The field zp can be: - a numerical constant (you've computed the zp yourself), or you can specify
- a string "{standard}={mag}", where {standard} is the ID of an SED in SNooPy (e.g., vegaB = Bohlin et al. (2004) SED of Vega from CALSPEC) and {mag} is the standard magnitude you came up with
- the string AB, indicating that you are using an AB system.
- Re-install SNooPy from source. Either run 'python setup.py install' from the source folder or run update-snpy script.
- Use your filter's unique ID when loading up your data into SNooPy.
- Send me your {observatory}/{instrument} folder so I can add it into the database.