@@ -757,15 +757,12 @@ def populate_emtable(self, result, linemodel, emlineflux_model,
757
757
dpixwave = median (np .diff (emlinewave )) # median pixel size [Angstrom]
758
758
759
759
# Convenience variables for the fitted parameters.
760
- #param_names = self.param_table['name'].value
761
- #param_lines = self.param_table['line'].value
762
760
param_modelnames = self .param_table ['modelname' ].value
763
761
param_types = self .param_table ['type' ].value
764
762
765
763
iamp = param_types == ParamType .AMPLITUDE
766
764
free_doublet_src = self .line_table ['doublet_src' ].value
767
765
tied_doublet_src = linemodel ['tiedtoparam' ][iamp ].value
768
- #tied_doublet_factor = linemodel['tiedfactor'][iamp].value
769
766
770
767
def get_boundaries (A , v_lo , v_hi ):
771
768
"""Find range (lo, hi) such that all pixels of A in range [v_lo,
@@ -832,12 +829,18 @@ def get_continuum_pixels(emlinewave_s, linezwave, linesigma_ang_window):
832
829
values = linemodel ['value' ].value
833
830
obsamps = linemodel .meta ['obsamps' ]
834
831
832
+ parameters = values .copy ()
833
+ parameters [self .doublet_idx ] *= parameters [self .doublet_src ]
834
+
835
835
if results_monte is not None :
836
836
values_monte , obsamps_monte , emlineflux_monte , specflux_nolines_monte = results_monte
837
837
838
838
values_var = np .var (values_monte , axis = 0 )
839
839
obsamps_var = np .var (obsamps_monte , axis = 0 )
840
840
841
+ parameters_monte = values_monte .copy ()
842
+ parameters_monte [:, self .doublet_idx ] *= parameters_monte [:, self .doublet_src ]
843
+
841
844
emlineflux_monte_s = emlineflux_monte [:, Wsrt ]
842
845
specflux_nolines_monte_s = specflux_nolines_monte [:, Wsrt ]
843
846
@@ -890,7 +893,7 @@ def get_fluxes(values, obsamps, emlineflux_s, specflux_nolines_s,
890
893
# require amp > 0 (line not dropped) to compute the flux
891
894
if obsamps [line_amp ] > TINY :
892
895
# analytically integrated flux
893
- flux = np .sqrt (2. * np .pi ) * values [line_amp ] * linezwave * linesigma0 / C_LIGHT
896
+ flux = np .sqrt (2. * np .pi ) * parameters [line_amp ] * linezwave * linesigma0 / C_LIGHT
894
897
895
898
# next, get the continuum level
896
899
borderindx = get_continuum_pixels (emlinewave_s , linezwave , linesigma_ang_window )
@@ -914,6 +917,7 @@ def get_fluxes(values, obsamps, emlineflux_s, specflux_nolines_s,
914
917
# zero out out-of-range lines
915
918
if not self .line_in_range [iline ]:
916
919
obsamps [line_amp ] = 0.
920
+ parameters [line_amp ] = 0.
917
921
values [line_amp ] = 0.
918
922
values [line_vshift ] = 0.
919
923
values [line_sigma ] = 0.
@@ -946,6 +950,7 @@ def get_fluxes(values, obsamps, emlineflux_s, specflux_nolines_s,
946
950
# line.
947
951
if npix == 0 :
948
952
obsamps [line_amp ] = 0.
953
+ parameters [line_amp ] = 0.
949
954
values [line_amp ] = 0.
950
955
values [line_vshift ] = 0.
951
956
values [line_sigma ] = 0.
@@ -957,7 +962,7 @@ def get_fluxes(values, obsamps, emlineflux_s, specflux_nolines_s,
957
962
result [f'{ linename } _AMP' ] = obsamps [line_amp ]
958
963
result [f'{ linename } _VSHIFT' ] = values [line_vshift ]
959
964
result [f'{ linename } _SIGMA' ] = values [line_sigma ]
960
- result [f'{ linename } _MODELAMP' ] = values [line_amp ]
965
+ result [f'{ linename } _MODELAMP' ] = parameters [line_amp ]
961
966
962
967
result [f'{ linename } _BOXFLUX' ] = boxflux
963
968
result [f'{ linename } _FLUX' ] = flux
0 commit comments