@@ -42,7 +42,7 @@ global have_issued_ssb_warning = false
4242global have_issued_drift_warning = false
4343global have_issued_diffext_warning = false
4444function apply_doppler_boost! (spectra:: AS , dict:: AbstractDict ) where { AS<: AbstractSpectra }
45- global have_issued_ssb_warning, have_issued_drift_warning, have_issued_diffext_warning
45+ global have_issued_ssb_warning, have_issued_drift_warning, have_issued_diffext_warning, have_issued_multiple_ssb_warning
4646 local doppler_factor = one (eltype (spectra. λ))
4747 #= NEID drift model is now included in wavelengths provided
4848 if !haskey(dict,:drift_rv) && !haskey(dict,:drift_z ) && !have_issued_drift_warning
@@ -55,14 +55,24 @@ function apply_doppler_boost!(spectra::AS, dict::AbstractDict ) where { AS<:Abst
5555 doppler_factor *= calc_doppler_factor(dict[:drift_rv])
5656 end
5757 =#
58- if ! haskey (dict,:ssb_rv ) && ! haskey (dict,:ssbz ) && ! have_issued_ssb_warning
59- @info " apply_doppler_boost! didn't find :ssb_rv or :ssbz to apply."
58+ if ! haskey (dict,:ssb_rv ) && ! haskey (dict,:ssbz ) && ! haskey (dict, :ssb_rv_kmps ) && ! have_issued_ssb_warning
59+ @info " apply_doppler_boost! didn't find :ssbz, : ssb_rv or :ssb_rv_kmps to apply."
6060 have_issued_ssb_warning = true
6161 end
6262 if haskey (dict,:ssbz )
6363 doppler_factor *= calc_doppler_factor (z= dict[:ssbz ])
64+ if haskey (dict,:ssb_rv ) || haskey (dict,:ssb_rv_kmps )
65+ @info " apply_doppler_boost! found ssbz and either ssb_rv or ssb_rv_kmps. Defaulting to only use ssbz."
66+ have_issued_multiple_ssb_warning = true
67+ end
6468 elseif haskey (dict,:ssb_rv )
6569 doppler_factor *= calc_doppler_factor (dict[:ssb_rv ])
70+ if haskey (dict,:ssb_rv_kmps )
71+ @info " apply_doppler_boost! found ssb_rv (in m/s) and ssb_rv_kmps (in km/s). Defaulting to only use ssb_rv."
72+ have_issued_multiple_ssb_warning = true
73+ end
74+ elseif haskey (dict,:ssb_rv_kmps )
75+ doppler_factor *= calc_doppler_factor (rv_kmps= dict[:ssb_rv_kmps ])
6676 end
6777 #=
6878 # Now plan to apply correction at end, rather than to wavelength
@@ -71,6 +81,7 @@ function apply_doppler_boost!(spectra::AS, dict::AbstractDict ) where { AS<:Abst
7181 have_issued_diffext_warning = true
7282 end
7383 if haskey(dict,:diff_ext_rv) doppler_factor *= calc_doppler_factor.(dict[:diff_ext_rv]) end
84+ if haskey(dict,:binaryRV) doppler_factor *= calc_doppler_factor.(dict[:binaryRV]) end
7485 apply_doppler_boost!(spectra,doppler_factor)
7586 =#
7687 return spectra
@@ -122,11 +133,11 @@ function calc_snr end
122133
123134function calc_snr (flux:: AbstractArray{T1} ,var:: AbstractArray{T2} ) where {T1<: Real , T2<: Real }
124135 @assert size (flux) == size (var)
125- sqrt (NaNMath. sum ( flux.^ 2 ./ var))
136+ sqrt (NaNMath. sum ( max .( 0.0 , flux.^ 2 ./ var) ))
126137end
127138
128139function calc_snr (flux:: Real ,var:: Real )
129- flux / sqrt (var)
140+ flux / sqrt (max ( 0.0 , var) )
130141end
131142
132143function calc_snr (spectrum:: ST , pixels:: AR , order:: Integer ) where { ST<: AbstractSpectra2D , AR<: AbstractRange{Int64} , AA1<: AbstractArray{Int64,1} } # , AAR<:AbstractArray{AR,1} }
0 commit comments