Open adrianlucy opened 5 years ago
Hi Adrian,
Yes, the SFD scaling of the E(B-V) values is a recurring source of confusion. For your first question, it's important to note that sf10=True
does not rescale E(B-V) from true to SFD-scale, because E(B-V)_true is not involved in any of the extinction maps (as the README states). sf10=True
means that the code uses A_band/E(B-V) values from Schlafly & Finkbeiner (2010) to convert extinctions between different bands, because these are given by Schlafly & Finkbeiner (2010) to act upon E(B-V)_SFD, using them to go from A_band --> E(B-V) means that you end up with E(B-V)_SFD, not E(B-V)_true. So if you want to get E(B-V)_true, you should use sf10=True
to get E(B-V)_SFD and then apply the re-scaling yourself. For most applications this subtlety doesn't matter, because if you use any regular filter, the E(B-V)_SFD factor drops out of the conversion for all maps that intrinsically return A_someband. Only in Drimmel is the scaling applied directly in the code, all the other maps are either (a) SFD or (b) give A_someband.
My understanding is that the Drimmel map was only rescaled to SFD at |b| > 30, so perhaps the 1/((1-self._sf10)+self._sf10*0.86) should only be applied for |b| < 30? That would be a easy change to make. Note that because extinction is quite small (and SFD is quite uncertain) at |b| > 30, the impact of that change is probably quite small.
Thank you! About using regular filters: yes, the reason I need E(B-V) is in order to convert to SkyMapper filter extinctions. Anyway, for every map currently supported, I will use sf10=True and filter=None, and the output will in each case be E(B-V)_SFD (right?).
Ah, yes, skimming again through Drimmel 2003, I think you're right about where they scaled to SFD. Although it may be worth noting that even for |b| < 30, I think the Drimmel map is still in some way anchored to COBE/DIRBE emission data, upon which SFD is also based. So, maybe very complicated...
Thanks again! Let me know if I should close this issue, otherwise I'll keep it open if you want to ponder the Drimmel scaling.
Yes, every map should be returning E(B-V)_SFD. One way to check this is by doing things like
cab= mwdust.Combined15(filter='Landolt B')
cav= mwdust.Combined15(filter='Landolt V')
cebv= mwdust.Combined15(filter=None)
(cab(2.,10.,4.)-cav(2.,10.,4.))/cebv(2.,10.,4.)
array([ 0.884])
(the fact that the ratio is not exactly 0.86 is because the Landolt filters aren't quite those that go into the standard E(B-V)).
Let's keep it open for now, maybe I will ping Drimmel to see what he recommends...
Hi Jo,
I had two questions about the scale on which E(B-V) is output: true (S&F 2011) vs. SFD (1998). I strongly suspect that I'm misunderstanding something; thanks in advance for your patience.
(1) What do I need to do to obtain E(B-V)true from this code?
For the Marshall and Drimmel maps, my understanding is that sf10=True means that E(B-V)true is rescaled in the code from E(B-V)true back to E(B-V)SFD, by dividing E(B-V)true by 0.86, because the S&F 2011 Table 6 is supposed to be applied to the old E(B-V)SFD values in order to get the new true filter extinctions. So if what I actually want to get out of the code is E(B-V)true, I either need to set "filter=None, sf10=False", or set "filter=None, sf10=True" and multiply the results by 0.86. Meanwhile, for the Green 2015 map, the output of "filter=None" is E(B-V)SFD no matter what I set sf10 to, so I'd always need to multiply the results by 0.86 to get E(B-V)true.
Is that right? It's a little confusing to me, because the documentation says "Only use sf10=False when you have an extinction map in true E(B-V), not SFD E(B-V)." When in fact the purpose of sf10=True is to convert from E(B-V)true to E(B-V)SFD, not the other way around; the issue in Marshall and Drimmel isn't that the map is in SFD, but that S&F Table 6 requires SFD inputs.
(2) Is the Drimmel extinction being overestimated, since it was already normalized to SFD and the code is scaling it up to SFD again?
The Drimmel AV map, in its initial construction by Drimmel et al. 2003, was already normalized to SFD. Doesn't that mean that AV,Drimmel = 3.09 E(B-V)SFD --> E(B-V)SFD = AV,Drimmel / 3.09, which is already what we need, because S&F 2011 Table 6 takes SFD inputs. So why apply the 1/((1-self._sf10)+self._sf100.86) factor in Drimmel03.py? That gives the meaningless value of (1/0.86)E(B-V)SFD or (1/0.86)2E(B-V)true, and the extinction will be overestimated. Or did you somewhere scale AV,Drimmel to E(B-V)true and I didn't see it?
Anyway, I'm pretty sure I'm wrong, not the code, but I'd be very grateful for any help you can offer in explaining why I'm wrong.
Thanks again, Adrian