NGC 121 es un cúmulo estelar que se encuentra en la dirección de la constelación de Tucana (RA 00 26 49.0; DEC -71 32 10), en la Pequeña Nube de Magallanes. Fue descubierto en 1835 por John Herschel. Su módulo de distancia es de $(M-m)=18.94$, que corresponde a una distancia de $61KPc$. Es poco extendido, con un radio de $53.7Pc$ y su edad se estima en 10 mil millones de años.
Fuentes:
Se requiere guardar cada imagen de ciencia y el mapa de pesos en un archivo separado. Para ello, se utiliza el módulo astropy.io.fits:
In [1]:
from astropy.io import fits
f555w = fits.open('hst_10396_a4_acs_hrc_f555w_drz.fits')
f814w = fits.open('hst_10396_a4_acs_hrc_f814w_drz.fits')
f555w[1].writeto('sci_f555w_n121.fits',clobber=True)
f555w[2].writeto('invar_f555w_n121.fits',clobber=True)
f814w[1].writeto('sci_f814w_n121.fits',clobber=True)
f814w[2].writeto('invar_f814w_n121.fits',clobber=True)
f555w.close()
f814w.close()
Por último, se puede comprobar que las imágenes están bien alineadas con ayuda de DS9 si se eligen algunas estrellas y se compara su posición.
Se ejecutó de la siguiente manera:
sextractor sci_f555w_n121.fits -c f555w.sex
sextractor sci_f814w_n121.fits -c f814w.sex
Como resultado se obtuvieron catálogos que incluyen las columnas MAG_APER, MAGERR_APER, ALPHA_J2000 y DELTA_J2000.
Se obtuvieron 6144 objetos para la imagen en el filtro f555w y 4801 para la imagen en el filtro f814w. Los archivos de configuración y los catálogos obtenidos están en este repositorio.
In [2]:
from astropy import units as u
from astropy.coordinates import SkyCoord
from astropy.io import fits
import numpy as np
import os
# Se cargan listas con RA y DEC para cada imagen
RAf555w = np.loadtxt('f555w.cat',usecols=(3,))
DEf555w = np.loadtxt('f555w.cat',usecols=(4,))
RAf814w = np.loadtxt('f814w.cat',usecols=(3,))
DEf814w = np.loadtxt('f814w.cat',usecols=(4,))
# Match por parte de astropy
catalog = SkyCoord(ra=RAf555w*u.degree, dec=DEf555w*u.degree)
c = SkyCoord(ra=RAf814w*u.degree, dec=DEf814w*u.degree)
idx = c.match_to_catalog_sky(catalog)
# Del catalogo f555w.cat se extraen las filas que indica el match
matches = list(idx[0])
f555w = np.loadtxt('f555w.cat')
f814w = np.loadtxt('f814w.cat')
out = []
j = 0
for i in matches:
out.append(np.concatenate([f555w[i],f814w[j]]))
j = j+1
# Salida a archivo
np.savetxt('n121_match.cat',out,
fmt='%d\t%.4f\t%.4f\t%.7f\t%.7f\t%d\t%.4f\t%.4f\t%.7f\t%.7f',
header='f555wN\tf555wMAG\tf555wMAGERR\tf555wALPHA\tf555wDELTA\tf814wN\tf814wMAG\tf814wMAGERR\tf814wALPHA\tf814wDELTA')
De esta forma se obtiene un catálogo de 4801 objetos que se logran emparejar en ambas imágenes. Si se observa que de la imagen en filtro f814w se obtuvieron exactamente 4801 fuentes, entonces se evidencia que para cada estrella en dicha imagen se encontró un par en el filtro f555w. Esto demuestra que las imágenes están bien alineadas. Sin embargo, a distintas fuentes del filtro f814w se les emparejó con la misma fuente en f555w por parte de astropy.
Las coincidencias entre ambos catálogos sin contar estas duplicidades son de alrededor del 92%. Se permitieron estas duplicidades mientras se avanzó en la construcción del CMD, en vista de que el error generado no afecta en medida significativa el resultado.
El siguiente paso es calibrar las magnitudes. Se utiliza el sistema VEGAMAG, en donde la magnitud de Vega en cualquier filtro se define como 0. Se ajusta el zeropoint en este sistema, que se define como la magnitud de un objeto que produce una cuenta por segundo para un tiempo de exposición determinado. Como el Zeropoint fue un parámetro de entrada para SE, ya se calibró esta parte.
También hay que considerar la aperture correction para la HRC. Dado que al hacer fotometría se utilizan aperturas pequeñas para mejorar la relación señal a ruido (SNR), solo una parte de la energía proveniente de la fuente logra medirse. Se incluye una corrección para "recuperar" las cuentas de diferencia que se obtendrían de utilizar una apertura "infinita". Estos ajustes están presentes en Sirianni et al. (2005). Para aplicar esta correción (dada en unidades de magnitud) basta con restar el valor de ajuste a la magnitud que ya se tenía, para cada filtro. Se utilizó $0.468$ para el filtro f555w y $0.715$ para el f814w, para una apertura de $0.025 \frac{''}{px} \times 6px / 2 = 0.075''$ (En el paper, se entrega el radio de apertura, no el diámetro).
Por último, hay que tener en cuenta el reddening, que se refiere a la absorción y dispersión de luz por parte del polvo interestelar, que afecta más a la luz azul que a la roja, por lo que las fuentes se enrojecen. Esto depende, etonces, de la banda en que se observe y del objeto. Otra vez de Sirianni, se toman los valores magnitud $A(P)/E(B-V)$ de $3.180$ y $1.803$ (que corresponden a objetos del tipo G2) para los filtros f555w y f814w, respectivamente. De NED, se obtiene que $E(B-V)=0.133$ y se calcula la corrección. Estos números se restan de las magnitudes anteriores, de modo que se obtiene una magnitud que representa un objeto más brillantes de lo que se observa.
In [3]:
from astropy.io import ascii
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
red555 = 3.180*0.133
red814 = 1.803*0.133
# Corrige por apertura y reddening E(B-V) = 0.133
tbl = ascii.read('n121_match.cat')
tbl["f555wMAG"] = tbl["f555wMAG"] - 0.468 - red555
tbl["f814wMAG"] = tbl["f814wMAG"] - 0.715 - red814
ascii.write(tbl,output='n121_match.cat',delimiter='\t')
# Genera plot calibrado
plt.figure(figsize=(10,10))
plt.plot(tbl["f555wMAG"] - tbl["f814wMAG"], tbl["f555wMAG"],'k.',ms=3)
plt.xlim(-0.5, 1.5)
plt.ylim(24,16)
plt.xlabel("$F555W-F814W$", fontsize=20)
plt.ylabel("$F555W$", fontsize=20)
plt.savefig('cmd_n121', dpi=None, facecolor='w', edgecolor='w',
orientation='portrait', papertype=None, format=None,
transparent=False, bbox_inches=None, pad_inches=0.1,
frameon=None)
plt.show()
plt.close()