Coverage for src/galsbi/ucat_sps/config/common_sps.py: 100%

355 statements  

« prev     ^ index     » next       coverage.py v7.17.2, created at 2026-11-09 18:05 +0000

1# Copyright (C) 2025 LMU Munich 

2# Author: Luca Tortorelli 

3# created: Apr 2025 

4 

5 

6import os 

7 

8import numpy as np 

9import PyCosmo 

10from cosmo_torrent import data_path 

11 

12from galsbi.ucat.config.common import h, omega_m 

13from galsbi.ucat_sps.util_sps import get_age_of_the_universe_from_redshift 

14 

15 

16# ================================================================== 

17# G A L A X Y C A T A L O G 

18# ================================================================== 

19 

20# --------------------- 

21# Stellar Mass Function 

22# --------------------- 

23 

24gal_sm_fct_seed_offset = 123491 

25SEED_OFFSET_SMFUN = 100 

26 

27# Functional forms of M* and phi*, can be linexp (linear and exponential) or 

28# logpower (for logarithmic and power law) 

29sm_fct_parametrization = "logquadratic_power" 

30# Resolution for sampling stellar mass 

31sm_fct_z_res = 0.001 

32# Maximum redshift of galaxies to sample 

33sm_fct_z_max = 5 

34# Minimum stellar mass to be sampled 

35sm_fct_sm_min = 8 

36# Resolution for sampling stellar masses 

37sm_fct_sm_res = 0.001 

38# Schechter parameter alpha for blue galaxies 

39sm_fct_alpha_blue_lowmass = -1.434 

40# Schechter parameter alpha for blue galaxies 

41sm_fct_alpha_blue_highmass = -0.123 

42# Schechter parameter alpha for red galaxies 

43sm_fct_alpha_red_lowmass = -2.01 

44# Schechter parameter alpha for red galaxies 

45sm_fct_alpha_red_highmass = -0.52 

46 

47# values from Weaver+23 

48sm_fct_m_star_blue_0_lowmass = 10.42822754 

49sm_fct_m_star_blue_1_lowmass = 2.75747512 

50sm_fct_m_star_blue_2_lowmass = -3.78410885 

51sm_fct_phi_star_blue_amp_lowmass = 0.00120151 

52sm_fct_phi_star_blue_exp_lowmass = -1.0522461 

53 

54sm_fct_m_star_blue_0_highmass = sm_fct_m_star_blue_0_lowmass 

55sm_fct_m_star_blue_1_highmass = sm_fct_m_star_blue_1_lowmass 

56sm_fct_m_star_blue_2_highmass = sm_fct_m_star_blue_2_lowmass 

57sm_fct_phi_star_blue_amp_highmass = 7.14975958e-04 

58sm_fct_phi_star_blue_exp_highmass = -1.35852989e00 

59 

60sm_fct_m_star_red_0_lowmass = 11.13180376 

61sm_fct_m_star_red_1_lowmass = -1.32213682 

62sm_fct_m_star_red_2_lowmass = 0.08538828 

63sm_fct_phi_star_red_amp_lowmass = 4.80658020e-05 

64sm_fct_phi_star_red_exp_lowmass = -6.00859413e00 

65 

66sm_fct_m_star_red_0_highmass = sm_fct_m_star_red_0_lowmass 

67sm_fct_m_star_red_1_highmass = sm_fct_m_star_red_1_lowmass 

68sm_fct_m_star_red_2_highmass = sm_fct_m_star_red_2_lowmass 

69sm_fct_phi_star_red_amp_highmass = 0.00133062 

70sm_fct_phi_star_red_exp_highmass = -0.84695455 

71 

72# ------------------- 

73# Size model (stellar mass) 

74# ------------------- 

75 

76SEED_OFFSET_SIZE = 700 

77 

78# Available size models. The published Tortorelli+25 model remains the default. 

79TORTORELLI25_SIZE_MODEL = "tortorelli25" 

80NEDKOVA21_BINNED_SIZE_MODEL = "nedkova21_binned" 

81MILLER2026_SIZE_MODEL = "miller2026" 

82SIZE_MODELS = frozenset( 

83 { 

84 TORTORELLI25_SIZE_MODEL, 

85 NEDKOVA21_BINNED_SIZE_MODEL, 

86 MILLER2026_SIZE_MODEL, 

87 } 

88) 

89size_model = TORTORELLI25_SIZE_MODEL 

90 

91# Original Tortorelli+25 parametrization based on linear fits to the redshift 

92# evolution reported by Nedkova+21. 

93 

94r50_stellar_mass_logA_blue_intcpt = 0.86882979 

95r50_stellar_mass_logA_blue_slope = -0.16382979 

96r50_stellar_mass_B_blue_intcpt = 0.25182844 

97r50_stellar_mass_B_blue_slope = -0.05056433 

98 

99r50_stellar_mass_eta_red_intcpt = 0.11901468 

100r50_stellar_mass_eta_red_slope = -0.21145203 

101r50_stellar_mass_theta_red_intcpt = 1.68920793 

102r50_stellar_mass_theta_red_slope = -0.21753742 

103r50_stellar_mass_logzeta_red_intcpt = -1.12244718 

104r50_stellar_mass_logzeta_red_slope = 2.36436158 

105r50_stellar_mass_delta_red_intcpt = 10.96599095 

106r50_stellar_mass_delta_red_slope = -0.10815138 

107 

108# Standard deviation of the log of physical sizes, values from Shen+2003 

109logr50_stellar_mass_std_red = 0.3 

110logr50_stellar_mass_std_blue = 0.3 

111 

112# Lange+15 rest-frame g-band double-power-law fits for populations selected 

113# using dust-corrected u-r colour. M0 is in solar masses. 

114lange15_alpha_blue = 0.17 

115lange15_beta_blue = 0.72 

116lange15_gamma_blue = 0.07 

117lange15_m0_blue = 7.66e10 

118lange15_alpha_red = 0.10 

119lange15_beta_red = 0.72 

120lange15_gamma_red = 0.17 

121lange15_m0_red = 1.94e10 

122 

123# Nedkova+21 fits at the centres of the four published redshift intervals. 

124# The relations are interpolated in log10(size), not through their coefficients. 

125nedkova21_redshift_bin_centres = [0.35, 0.75, 1.25, 1.75] 

126nedkova21_log10A_blue = [0.82, 0.75, 0.65, 0.59] 

127nedkova21_B_blue = [0.24, 0.21, 0.18, 0.17] 

128nedkova21_alpha_red = [0.04, -0.03, -0.33, -0.17] 

129nedkova21_beta_red = [1.82, 1.60, 1.25, 1.84] 

130nedkova21_log10gamma_red = [-0.24, 0.48, 3.24, 1.76] 

131nedkova21_delta_red = [10.94, 10.95, 10.63, 11.09] 

132nedkova21_scatter_dex_blue = [0.22, 0.22, 0.22, 0.23] 

133nedkova21_scatter_dex_red = [0.19, 0.18, 0.20, 0.25] 

134 

135# Redshift interval over which the local Lange+15 relation is joined to the 

136# lowest-redshift Nedkova+21 relation. 

137lange15_nedkova21_transition_start = 0.1 

138lange15_nedkova21_transition_end = 0.2 

139 

140# Miller+26 continuous rest-frame 5000 Angstrom size relations. The positive 

141# sign of miller26_alpha1_red follows the paper's reported redshift trend and 

142# symbolic-regression table; Equation 12 in arXiv v1 contains a sign typo. 

143miller26_b0_blue = -7.4e-3 

144miller26_b1_blue = -1.88 

145miller26_b2_blue = 0.16 

146miller26_m0_blue = -4.2e-2 

147miller26_m1_blue = -1.3e-2 

148miller26_m2_blue = 7.9e-2 

149miller26_scatter_c_blue = -1.30 

150miller26_scatter_n_blue = -0.06 

151miller26_alpha0_red = -0.20 

152miller26_alpha1_red = 0.67 

153miller26_r0_red = -0.95 

154miller26_r1_red = -0.32 

155miller26_r2_red = 0.82 

156miller26_log10_mp_red = 10.36 

157miller26_beta_red = 0.53 

158miller26_transition_red = 6.0 

159miller26_scatter_dex_red = 0.20 

160 

161# Join the Nedkova+21 and Miller+26 relations smoothly around z=0.5. 

162nedkova21_miller26_transition_start = 0.4 

163nedkova21_miller26_transition_end = 0.6 

164 

165# ------------------------ 

166# Velocity dispersion 

167# ------------------------ 

168 

169SEED_OFFSET_VELDISP = 800 

170 

171# default values from Zahid+16 

172vel_disp_logsigma_b = 2.073 

173vel_disp_logM_b = 10.26 

174vel_disp_s_1 = 0.403 

175vel_disp_s_2 = 0.293 

176vel_disp_std = 10 

177 

178# ---------------------- 

179# Star formation history 

180# ---------------------- 

181 

182time_step = 1e8 

183cosmo = PyCosmo.build() 

184cosmo.set(h=h, omega_m=omega_m) 

185time_grid = np.arange(0, get_age_of_the_universe_from_redshift(0, cosmo), time_step) 

186 

187SEED_OFFSET_SFH = 200 

188 

189TORTORELLI25_SNORM_TRUNC = "tortorelli25_snorm_trunc" 

190CONDITIONAL_SNORM_TRUNC = "conditional_snorm_trunc" 

191CONDITIONAL_SNORM_BURST_TRUNC = "conditional_snorm_burst_trunc" 

192SFH_POPULATION_MODELS = frozenset( 

193 { 

194 TORTORELLI25_SNORM_TRUNC, 

195 CONDITIONAL_SNORM_TRUNC, 

196 CONDITIONAL_SNORM_BURST_TRUNC, 

197 } 

198) 

199 

200RECENT_STAR_FORMATION_INTERVAL_10_MYR_YR = 1.0e7 

201RECENT_STAR_FORMATION_INTERVAL_100_MYR_YR = 1.0e8 

202RECENT_STAR_FORMATION_INTERVAL_YR = RECENT_STAR_FORMATION_INTERVAL_100_MYR_YR 

203PROSPECT_RECENT_BURST_AGE_GYR = 0.1 

204PROSPECT_SNORM_TRUNCATION = 2.0 

205 

206MPEAK_MIN_GYR = -2.0 

207MPERIOD_MIN_GYR = 0.3 

208MPERIOD_MAX_SMOOTH_GYR = 100.0 

209MPERIOD_MAX_BURST_GYR = 10.0 

210MSKEW_MIN = -0.5 

211MSKEW_MAX = 1.0 

212FBURST_MIN = 1.0e-4 

213FBURST_MAX = 0.2 

214DURATION_STUDENT_T_DF = 5.0 

215 

216# The published Tortorelli+25 model remains the default. 

217sfh_population_model = TORTORELLI25_SNORM_TRUNC 

218sfh_population_evaluation_chunk_size = 10_000 

219retain_sfh_histories = True 

220 

221# Fiducial smooth-SFH population parameters fitted to mass-complete 

222# observational catalogues. The same smooth parameters are used by 

223# conditional_snorm_trunc and conditional_snorm_burst_trunc. 

224peak_intercept_blue = 0.32324801147119203 

225peak_intercept_red = 0.9673800911637633 

226peak_mass_slope = 0.36103390352372705 

227peak_redshift_slope = 0.2997127458462411 

228peak_concentration_blue = 2.009292795468973 

229peak_concentration_red = 3.2093183853350555 

230 

231duration_intercept_blue = -1.661695300217048 

232duration_intercept_red = -2.161897150359956 

233duration_mass_slope = -0.21268625029673238 

234duration_redshift_slope = 1.5928703429227102 

235duration_peak_slope = 0.0771789172867823 

236duration_scale_blue = 0.9515941479300941 

237duration_scale_red = 0.6890981385341056 

238 

239skew_intercept_blue = -0.798156352119802 

240skew_intercept_red = -1.8650718672838937 

241skew_mass_slope = 0.4663268427556548 

242skew_redshift_slope = -2.179813633376555 

243skew_peak_slope = 0.16461074430397668 

244skew_duration_slope = -0.30907197362484845 

245skew_concentration_blue = 1.7919751252318694 

246skew_concentration_red = 3.4195322525005967 

247 

248# The recent-burst parameters are fixed fiducial assumptions because the 

249# observational catalogues used above contain only smooth fitted SFHs. At 

250# log10(Mformed/Msun)=10 and z=0, they correspond to burst probabilities of 

251# 0.08 and 0.035 and mean active formed-mass fractions of 0.03 and 0.01 for 

252# blue and red galaxies, respectively. 

253burst_intercept_blue = -2.4423470353692047 

254burst_intercept_red = -3.316780039849572 

255burst_mass_slope = 0.0 

256burst_redshift_slope = 0.0 

257fburst_intercept_blue = -1.737939956653621 

258fburst_intercept_red = -2.9544893150199423 

259fburst_mass_slope = 0.0 

260fburst_redshift_slope = 0.0 

261fburst_concentration_blue = 12.0 

262fburst_concentration_red = 20.0 

263 

264# Parameters for the published snorm_trunc SFH population model. 

265 

266magemax_z0 = 13.4 

267mtrunc = PROSPECT_SNORM_TRUNCATION 

268 

269logmpeak_massevo_slope_zevo_intcpt_red = -0.10385816 

270logmpeak_massevo_slope_zevo_slope_red = -1.52420053 

271 

272logmpeak_massevo_slope_zevo_intcpt_blue = 0.00648434 

273logmpeak_massevo_slope_zevo_slope_blue = -3.54384208 

274 

275logmpeak_massevo_intcpt_zevo_intcpt_red = 0.22328791 

276logmpeak_massevo_intcpt_zevo_slope_red = 15.14361675 

277 

278logmpeak_massevo_intcpt_zevo_intcpt_blue = -0.65466787 

279logmpeak_massevo_intcpt_zevo_slope_blue = 35.0180344 

280 

281logmperiod_massevo_intcpt_red = 1.19767 

282logmperiod_massevo_slope_red = -0.09370334 

283 

284logmperiod_massevo_intcpt_blue = 2.72710091 

285logmperiod_massevo_slope_blue = -0.21035425 

286 

287mskew_massevo_intcpt_red = -0.55390266 

288mskew_massevo_slope_red = 0.06286995 

289 

290mskew_massevo_intcpt_blue = 0.02656692 

291mskew_massevo_slope_blue = 0.01594687 

292 

293logmpeak_norm_min_blue = -3 

294logmpeak_norm_min_red = -3 

295# Values above 0 allow mpeak_norm > 1, placing the SFH peak in the future; with 

296# small mperiod and positive mskew this can underflow the SFH integral to zero. 

297logmpeak_norm_max_blue = 0.01 

298logmpeak_norm_max_red = 0.01 

299 

300logmperiod_min_blue = np.log10(0.3) 

301logmperiod_max_blue = 2 

302logmperiod_min_red = np.log10(0.3) 

303logmperiod_max_red = 2 

304 

305mskew_min_blue = -0.5 

306mskew_max_blue = 1.0 

307mskew_min_red = -0.5 

308mskew_max_red = 1.0 

309 

310sfh_shape_params_cov_blue = np.array( 

311 [ 

312 [0.4211092, -0.02020991, -0.05997905], 

313 [-0.02020991, 0.2025788, -0.07062304], 

314 [-0.05997905, -0.07062304, 0.12102846], 

315 ] 

316) 

317sfh_shape_params_cov_red = np.array( 

318 [ 

319 [0.51743558, -0.00445069, -0.06305345], 

320 [-0.00445069, 0.13260276, -0.0822066], 

321 [-0.06305345, -0.0822066, 0.09058901], 

322 ] 

323) 

324 

325# ---------------------- 

326# Surviving stellar mass emulator 

327# ---------------------- 

328 

329surviv_stellar_mass_emulator_property_scaler = "property_scaler_surv_sm_emulator.pkl" 

330surviv_stellar_mass_emulator_ssm_scaler = "ssm_scaler_surv_sm_emulator.pkl" 

331surviv_stellar_mass_emulator_model = "surv_sm_emulator.pt" 

332 

333# Versioned ratio-predicting emulators used only by the conditional SFH models. 

334# These paths become available after the reviewed Task 1 models are published 

335# into GalSBI_SPS_res; the published Tortorelli+25 mode continues to use the 

336# three files above. 

337surviv_stellar_mass_emulator_version = "1.0.0" 

338surviv_stellar_mass_emulator_smooth_directory = os.path.join( 

339 data_path("GalSBI_SPS_res"), "surviving_stellar_mass_emulator", "smooth-v2" 

340) 

341surviv_stellar_mass_emulator_burst_directory = os.path.join( 

342 data_path("GalSBI_SPS_res"), "surviving_stellar_mass_emulator", "burst-v1" 

343) 

344 

345SURVIVING_MASS_METADATA_FORMAT_VERSION = "1.0" 

346SURVIVING_MASS_EMULATOR_TYPE = "surviving_stellar_mass_emulator" 

347SURVIVING_MASS_TARGET = "log10_surviving_to_formed_mass_ratio" 

348SURVIVING_MASS_TARGET_DEFINITION = "log10(surviving_stellar_mass / formed_stellar_mass)" 

349SURVIVING_MASS_PARAMETER_MARGIN = 1.0e-3 

350SURVIVING_MASS_RATIO_BOUNDARY_ERROR_DEX = 0.011 

351SMOOTH_SURVIVING_MASS_MODEL = "massfunc_snorm_trunc" 

352BURST_SURVIVING_MASS_MODEL = "massfunc_snorm_burst_trunc" 

353SMOOTH_SURVIVING_MASS_PROPERTIES = ( 

354 "magemax", 

355 "mpeak", 

356 "logmperiod", 

357 "mskew", 

358 "logZfinal", 

359) 

360BURST_SURVIVING_MASS_PROPERTIES = SMOOTH_SURVIVING_MASS_PROPERTIES + ("logfburst",) 

361 

362# ---------------------- 

363# Prospect SED generator 

364# ---------------------- 

365 

366sed_generator = "Prospect" 

367ssp_library_filepath = "PG_Ch_Mi_C3K.fits" 

368filters_full_names_prospect = [ 

369 "u_VST", 

370 "g_VST", 

371 "r_VST", 

372 "i_VST", 

373 "Z_VISTA", 

374 "Y_VISTA", 

375 "J_VISTA", 

376 "H_VISTA", 

377 "Ks_VISTA", 

378] 

379filters_prospect_to_galsbi = { 

380 "u_VST": "u", 

381 "g_VST": "g", 

382 "r_VST": "r", 

383 "i_VST": "i", 

384 "Z_VISTA": "Z", 

385 "Y_VISTA": "Y", 

386 "J_VISTA": "J", 

387 "H_VISTA": "H", 

388 "Ks_VISTA": "Ks", 

389} 

390save_SEDs = False 

391full_resolution_SEDs = False 

392n_cores_for_sed_generation = 2 

393SOLAR_LUMINOSITY_ERG_S = 3.8275 * 10**33 

394MPC_TO_CM = 3.08567758128 * 10**24 

395LIGHTSPEED_ANGSTROM_S = 2.9979245800 * 10**18 

396 

397# ---------------------- 

398# ProMage magnitude emulator 

399# ---------------------- 

400 

401PROMAGE_SMOOTH_SFH_MODEL = "massfunc_snorm_trunc" 

402PROMAGE_BURST_SFH_MODEL = "massfunc_snorm_burst_trunc" 

403PROMAGE_SMOOTH_PROPERTIES = ( 

404 "z", 

405 "logmSFR", 

406 "mpeak", 

407 "logmperiod", 

408 "mskew", 

409 "logZfinal", 

410 "logtaubirth", 

411 "logtauscreen", 

412 "alphabirth", 

413 "alphascreen", 

414 "logU", 

415) 

416PROMAGE_BURST_PROPERTIES = PROMAGE_SMOOTH_PROPERTIES + ("logfburst",) 

417 

418ProMage_model_filepath = data_path("ProMage_res") 

419promage_sfh_model = PROMAGE_SMOOTH_SFH_MODEL 

420promage_burst_sfh_model = PROMAGE_BURST_SFH_MODEL 

421filters_full_names_prospect_selection = "i_VST" 

422promage_selection_mag_threshold = 30.2 

423promage_reconstruction_error = 0.01 

424 

425# ---------------- 

426# Dust attenuation 

427# ---------------- 

428 

429SEED_OFFSET_DUSTATT = 500 

430 

431# logtauscreen limits from Thorne+2022 in place of Bellstedt+20 

432dust_attenuation_law = "CharlotFall2000" 

433dust_attenuation_population_model = "tortorelli25" 

434logtaubirth_mean_blue = -0.10 

435logtaubirth_mean_red = -0.18 

436logtaubirth_scatter_blue = 0.24 

437logtaubirth_scatter_red = 0.21 

438logtaubirth_min = -2.5 

439logtaubirth_max = 1.5 

440 

441logtauscreen_a0_blue = -0.861 

442logtauscreen_a1_blue = 0.643 

443logtauscreen_a2_blue = 0.210 

444logtauscreen_a3_blue = 0.170 

445logtauscreen_scatter_blue = 0.247 

446 

447logtauscreen_a0_red = 0.850 

448logtauscreen_a1_red = 1.586 

449logtauscreen_a2_red = -0.174 

450logtauscreen_a3_red = -0.0083 

451logtauscreen_scatter_red = 0.417 

452 

453logtauscreen_min = -5 

454logtauscreen_max = 1 

455 

456# Two-population diffuse-screen model. The four predictors 

457# are 1, log10(1 + z), log10(M_surviving / M_sun) - 10, and 

458# max(log10(sSFR / yr^-1), dust_logssfr_floor) + 10.5. 

459dust_logssfr_reference = -10.5 

460dust_logssfr_floor = -13.0 

461 

462logtauscreen_dustpoor_probability_a0_blue = -0.8591405726678454 

463logtauscreen_dustpoor_probability_a1_blue = 5.469112443620385 

464logtauscreen_dustpoor_probability_a2_blue = -3.219202417140156 

465logtauscreen_dustpoor_probability_a3_blue = -1.91234756803492 

466logtauscreen_dustpoor_a0_blue = -2.9929693243414865 

467logtauscreen_dustpoor_a1_blue = -0.5584519239128641 

468logtauscreen_dustpoor_a2_blue = 0.7423098089695657 

469logtauscreen_dustpoor_a3_blue = 0.1341305310039936 

470logtauscreen_dustpoor_scatter_blue = 1.6334896655294733 

471logtauscreen_dustrich_a0_blue = -0.6099641701849251 

472logtauscreen_dustrich_a1_blue = 0.2882833006952505 

473logtauscreen_dustrich_a2_blue = 0.3040949823512854 

474logtauscreen_dustrich_a3_blue = 0.2174064912663223 

475logtauscreen_dustrich_scatter_blue = 0.26460107397675714 

476 

477logtauscreen_dustpoor_probability_a0_red = -0.4675812377924598 

478logtauscreen_dustpoor_probability_a1_red = -0.3266720919121866 

479logtauscreen_dustpoor_probability_a2_red = -0.12757794597107955 

480logtauscreen_dustpoor_probability_a3_red = -0.25454101187746675 

481logtauscreen_dustpoor_a0_red = -3.824520014142177 

482logtauscreen_dustpoor_a1_red = -0.4949937499866717 

483logtauscreen_dustpoor_a2_red = 0.18094640603722234 

484logtauscreen_dustpoor_a3_red = 0.17604608428368357 

485logtauscreen_dustpoor_scatter_red = 1.2964812003665729 

486logtauscreen_dustrich_a0_red = -0.7065245799409315 

487logtauscreen_dustrich_a1_red = 1.1405080630674573 

488logtauscreen_dustrich_a2_red = -0.12128075514614006 

489logtauscreen_dustrich_a3_red = 0.015324570777069528 

490logtauscreen_dustrich_scatter_red = 0.4299588292775052 

491 

492# ---------------- 

493# Dust emission 

494# ---------------- 

495 

496SEED_OFFSET_DUSTEM = 600 

497 

498dust_emission_mean_blue = np.array([1.80, 1.70]) 

499dust_emission_mean_red = np.array([1.97, 1.91]) 

500dust_emission_cov_blue = np.array([[0.19, 0.12], [0.12, 0.20]]) 

501dust_emission_cov_red = np.array([[0.08, 0.02], [0.02, 0.16]]) 

502 

503# ------------------- 

504# Metallicity 

505# ------------------- 

506 

507# # SOLAR_GAS_METALLICITY = 0.0142 

508SOLAR_GAS_METALLICITY = ( 

509 0.02 # Aaron's suggestion to ensure compatibility with PROSPECT definitions 

510) 

511SOLAR_LOG_OH_PLUS12 = 8.69 

512SOLAR_STELLAR_METALLICITY = 0.02 

513SEED_OFFSET_ZGAS = 300 

514 

515# parametrization from Bellstedt+2021 

516# parameters for the scatter: Bellstedt+2021 

517gas_metallicity_scatter0_blue = 0.427 

518gas_metallicity_scatter1_blue = -0.02979 

519gas_metallicity_scatter2_blue = 0.0026182 

520gas_metallicity_scatter0_red = 0.427 

521gas_metallicity_scatter1_red = -0.02979 

522gas_metallicity_scatter2_red = 0.0026182 

523 

524gas_metallicity_alpha0_blue = -0.9202 

525gas_metallicity_alpha1_blue = 0.2916 

526gas_metallicity_alpha2_blue = -0.05082 

527gas_metallicity_beta0_blue = 1.198 

528gas_metallicity_beta1_blue = -0.2658 

529gas_metallicity_beta2_blue = 0.04884 

530gas_metallicity_gamma0_blue = -2.785 

531gas_metallicity_gamma1_blue = 2.268 

532gas_metallicity_gamma2_blue = -0.4267 

533gas_metallicity_alpha0_red = -0.9202 

534gas_metallicity_alpha1_red = 0.2916 

535gas_metallicity_alpha2_red = -0.05082 

536gas_metallicity_beta0_red = 1.198 

537gas_metallicity_beta1_red = -0.2658 

538gas_metallicity_beta2_red = 0.04884 

539gas_metallicity_gamma0_red = -2.785 

540gas_metallicity_gamma1_red = 2.268 

541gas_metallicity_gamma2_red = -0.4267 

542 

543# limits from Bellstedt+2021 

544Zgas_init = 0.0001 

545Zgas_max = 10 ** (-1.3) 

546 

547# -------------- 

548# Gas ionization 

549# -------------- 

550 

551SEED_OFFSET_LOGU = 400 

552 

553# parametrization from Kashino+2019 

554gas_ionization_upsilon0 = -2.316 

555gas_ionization_upsilon1 = -0.360 

556gas_ionization_upsilon2 = -0.292 

557gas_ionization_upsilon3 = 0.428 

558gas_ionization_scatter = 0.1 

559logUmin = -4 

560logUmax = -1 

561 

562# -------------- 

563# AGN 

564# -------------- 

565 

566SEED_OFFSET_AGN = 900 

567 

568abs_path_temple2021 = "qsogen" 

569add_agn_component = False 

570 

571logfagn_mu1_blue = -6.25 

572logfagn_sigma1_blue = 2 

573logfagn_mu2_blue = -0.75 

574logfagn_sigma2_blue = 0.8 

575 

576logfagn_mu1_red = -5.5 

577logfagn_sigma1_red = 1.75 

578logfagn_mu2_red = -0.25 

579logfagn_sigma2_red = 0.7 

580 

581alpha_AGN_03_z_08 = -0.25 

582alpha_AGN_08_z_15 = -0.19 

583alpha_AGN_15_z_25 = -0.03 

584 

585log_Mstar_AGN_03_z_08 = 10.99 

586log_Mstar_AGN_08_z_15 = 10.99 

587log_Mstar_AGN_15_z_25 = 10.99 

588 

589phi_star_AGN_03_z_08 = 10 ** (-3.83) 

590phi_star_AGN_08_z_15 = 10 ** (-3.54) 

591phi_star_AGN_15_z_25 = 10 ** (-3.84) 

592 

593logfagn_nohost_min = -10 

594logfagn_nohost_max = -1 

595 

596logfagn_host_min = -1 

597logfagn_host_max = 2 

598 

599# ------------------- 

600# Sersic distribution 

601# ------------------- 

602 

603sersic_sampling_method = "sersic_stellar_mass" 

604 

605# minimum sersic index 

606sersic_n_min = 0.2 

607# maximum sersic index 

608sersic_n_max = 10 

609 

610sersic_n_0_blue = 1.04269007 

611sersic_n_1_blue = 0.17637649 

612sersic_n_2_blue = 12.75004841 

613sersic_n_scatter_blue = 0.90902036 

614 

615sersic_n_0_red = 1.05421348 

616sersic_n_1_red = 1.45273864 

617sersic_n_2_red = 7.63380979 

618sersic_n_scatter_red = 1.4392298