@@ -63,10 +63,14 @@ fitter_t::fitter_t(const options_t& opt, const input_state_t& inp, const gridder
6363 uint_t iup = 1 + 2 *ic + 1 ;
6464
6565 for (uint_t is : range (input.id )) {
66- // Get range from zlow and zup
67- if (is_finite (input.zphot .safe (is,ilow)) && is_finite (input.zphot .safe (is,iup))) {
68- idzl.safe [is] = min_id (abs (output.z - input.zphot .safe (is,ilow)));
69- idzu.safe [is] = min_id (abs (output.z - input.zphot .safe (is,iup)));
66+ if (idz.safe [is] != npos) {
67+ // Range is limited to z_spec
68+ idzl.safe [is] = idz.safe [is];
69+ idzu.safe [is] = idz.safe [is];
70+ } else if (is_finite (input.zphot .safe (is,ilow)) && is_finite (input.zphot .safe (is,iup))) {
71+ // Get range from zlow and zup
72+ idzl.safe [is] = min_id (abs (output_z - input.zphot .safe (is,ilow)));
73+ idzu.safe [is] = min_id (abs (output_z - input.zphot .safe (is,iup)));
7074 }
7175 }
7276 }
@@ -268,8 +272,9 @@ void fitter_t::fit_galaxies(const model_t& model, uint_t i0, uint_t i1) {
268272 uint_t is = i + i0;
269273
270274 // Apply constraints on redshift
271- if ((idz.safe [is] != npos && model.iz != idz.safe [is]) ||
272- model.iz < idzl.safe [is] || model.iz > idzu.safe [is]) {
275+ if ((idzp.safe [is] == npos || model.iz != idzp.safe [is]) &&
276+ (idz.safe [is] == npos || model.iz != idz.safe [is]) &&
277+ (model.iz < idzl.safe [is] || model.iz > idzu.safe [is])) {
273278 wsp.chi2 .safe [i] = finf;
274279 wsp.mass .safe [i] = fnan;
275280 wsp.sfr .safe [i] = fnan;
0 commit comments