Ejemplo n.º 1
0
def smooth_sfh(mu, ages, dt=0.5e9):
    logtc_bins = bin_edges(np.log10(ages))
    tc_bins = 10**logtc_bins
    tl = np.arange(tc_bins.min(), tc_bins.max()+dt, dt)
    tl_bins = bin_edges(tl)
    mu_res = hist_resample(tc_bins, tl_bins, mu)
    SFR = mu_res / dt
    # Add bondary points so that np.trapz(SFR, tl) == Mini.sum().
    SFR = np.hstack((0, SFR, 0))
    tl = np.hstack((tl[0] - dt, tl, tl[-1] + dt))
    return SFR, tl    
Ejemplo n.º 2
0
bulge_flux /= np.median(bulge_flux[wl_norm_window])
bulge_flux = spec_resample(base.l_ssp, l_ssp, bulge_flux)

disk_sfh = SyntheticSFH(base.ageBase)
#disk_sfh.addExp(10e9, 2.0e9, 1.0)
disk_sfh.addSquare(0.0, 14e9, 1.0)
disk_flux = (base.f_ssp * disk_sfh.massVector()[:, np.newaxis]).sum(axis=1).sum(axis=0)
disk_flux /= np.median(disk_flux[wl_norm_window])
disk_flux = spec_resample(base.l_ssp, l_ssp, disk_flux)

logger.debug('Plotting SFH.')
fig = plt.figure(figsize=(8,6))
gs = plt.GridSpec(2, 1, height_ratios=[1.0, 1.0])
ax = plt.subplot(gs[0])
age_Gyr = base.ageBase / 1e9
age_bin_edges = 10**(bin_edges(np.log10(base.ageBase)))
dt = age_bin_edges[1:] - age_bin_edges[:-1]                     
ax.plot(age_Gyr, bulge_sfh.massVector() / dt, 'r-', label='bulge')
ax.plot(age_Gyr, disk_sfh.massVector() / dt, 'b-', label='disk')
ax.set_xlim(age_Gyr.min(), age_Gyr.max())
ax.set_xlabel(r'Age [Gyr]')
ax.set_ylabel(r'SFR (weight)')
ax.set_title(r'Star formation history')
ax.legend(loc='upper left')

ax = plt.subplot(gs[1])
ax.plot(l_ssp, bulge_flux, 'r-')
ax.plot(l_ssp, disk_flux, 'b-')
ax.set_xlabel(r'Wavelength [$\AA$]')
ax.set_ylabel(r'Relative flux')
ax.set_title(r'Spectra')