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
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')