def SFR(self, maps, distance): #calculate log10(SFR) from the Halpha flux, following Kennicutt et al. (1998). # Assumes a Salpeter IMF. snr = 3. hb = get_masked(maps, 'hb_4862', snr=get_snr(snr, 'hb')) ha = get_masked(maps, 'ha_6564', snr=get_snr(snr, 'ha')) # Av derivation from A_Ha following Jorge from CALIFA paper (Catalán-Torrecilla et al. (2015) K_Ha = 2.53 K_Hb = 3.61 balmerdec = np.log10((ha / hb) / 2.86) A_Ha = balmerdec * K_Ha / (-0.4 * (K_Ha - K_Hb)) Ha_cor = ha * (10.**(0.4 * A_Ha)) Lha = Ha_cor * 1e-17 * 4. * math.pi * ((3.0857e18 * 1E6 * distance)**2) K98 = 7.9 * 1e-42 SFR = np.log10(K98 * Lha) return SFR
def get_bpt(self, snr_min=3): self.get_cube(maps=True) if self.cube != 'no_data': # Gets the necessary emission line maps oiii = bpt.get_masked(self.maps, 'oiii_5008', snr=bpt.get_snr(snr_min, 'oiii')) nii = bpt.get_masked(self.maps, 'nii_6585', snr=bpt.get_snr(snr_min, 'nii')) ha = bpt.get_masked(self.maps, 'ha_6564', snr=bpt.get_snr(snr_min, 'ha')) hb = bpt.get_masked(self.maps, 'hb_4862', snr=bpt.get_snr(snr_min, 'hb')) sii = bpt.get_masked(self.maps, 'sii_6718', snr=bpt.get_snr(snr_min, 'sii')) oi = bpt.get_masked(self.maps, 'oi_6302', snr=bpt.get_snr(snr_min, 'oi')) self.log_oiii_hb = np.ma.log10(oiii / hb) self.log_nii_ha = np.ma.log10(nii / ha) self.log_sii_ha = np.ma.log10(sii / ha) self.log_oi_ha = np.ma.log10(oi / ha)
def get_bpt(self, snr_min=3, oi_sf=False): self.get_cube(maps=True) if self.cube != 'no_data': # Gets the necessary emission line maps oiii = bpt.get_masked(self.maps, 'oiii_5008', snr=bpt.get_snr(snr_min, 'oiii')) nii = bpt.get_masked(self.maps, 'nii_6585', snr=bpt.get_snr(snr_min, 'nii')) ha = bpt.get_masked(self.maps, 'ha_6564', snr=bpt.get_snr(snr_min, 'ha')) hb = bpt.get_masked(self.maps, 'hb_4862', snr=bpt.get_snr(snr_min, 'hb')) sii = bpt.get_masked(self.maps, 'sii_6718', snr=bpt.get_snr(snr_min, 'sii')) oi = bpt.get_masked(self.maps, 'oi_6302', snr=bpt.get_snr(snr_min, 'oi')) self.log_oiii_hb = np.ma.log10(oiii / hb) self.log_nii_ha = np.ma.log10(nii / ha) self.log_sii_ha = np.ma.log10(sii / ha) self.log_oi_ha = np.ma.log10(oi / ha) sf_mask_nii = ( (self.log_oiii_hb < bpt.kewley_sf_nii(self.log_nii_ha)) & (self.log_nii_ha < 0.05)).filled(False) sf_mask_sii = ( (self.log_oiii_hb < bpt.kewley_sf_sii(self.log_sii_ha)) & (self.log_sii_ha < 0.32)).filled(False) sf_mask_oi = ((self.log_oiii_hb < bpt.kewley_sf_oi(self.log_oi_ha)) & (self.log_oi_ha < -0.59)).filled(False) if oi_sf: self.sf_mask = sf_mask_nii & sf_mask_sii & sf_mask_oi else: self.sf_mask = sf_mask_nii & sf_mask_sii