Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# This file is part of obs_lsst. 

2# 

3# Developed for the LSST Data Management System. 

4# This product includes software developed by the LSST Project 

5# (http://www.lsst.org). 

6# See the COPYRIGHT file at the top-level directory of this distribution 

7# for details of code ownership. 

8# 

9# This program is free software: you can redistribute it and/or modify 

10# it under the terms of the GNU General Public License as published by 

11# the Free Software Foundation, either version 3 of the License, or 

12# (at your option) any later version. 

13# 

14# This program is distributed in the hope that it will be useful, 

15# but WITHOUT ANY WARRANTY; without even the implied warranty of 

16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

17# GNU General Public License for more details. 

18# 

19# You should have received a copy of the GNU General Public License 

20# along with this program. If not, see <http://www.gnu.org/licenses/>. 

21 

22__all__ = () 

23 

24from lsst.obs.base import FilterDefinition, FilterDefinitionCollection 

25from .translators.lsst import FILTER_DELIMITER 

26 

27 

28LSSTCAM_FILTER_DEFINITIONS = FilterDefinitionCollection( 

29 FilterDefinition(physical_filter="NONE", 

30 lambdaEff=0.0, 

31 alias={"no_filter", "OPEN"}), 

32 FilterDefinition(physical_filter="275CutOn", 

33 lambdaEff=0.0), 

34 FilterDefinition(physical_filter="550CutOn", 

35 lambdaEff=0.0), 

36 # The LSST Filters from L. Jones 04/07/10 

37 FilterDefinition(physical_filter="u", 

38 abstract_filter="u", 

39 lambdaEff=364.59, lambdaMin=324.0, lambdaMax=395.0), 

40 FilterDefinition(physical_filter="g", 

41 abstract_filter="g", 

42 lambdaEff=476.31, lambdaMin=405.0, lambdaMax=552.0), 

43 FilterDefinition(physical_filter="r", 

44 abstract_filter="r", 

45 lambdaEff=619.42, lambdaMin=552.0, lambdaMax=691.0), 

46 FilterDefinition(physical_filter="i", 

47 abstract_filter="i", 

48 lambdaEff=752.06, lambdaMin=818.0, lambdaMax=921.0), 

49 FilterDefinition(physical_filter="z", 

50 abstract_filter="z", 

51 lambdaEff=866.85, lambdaMin=922.0, lambdaMax=997.0), 

52 # official y filter 

53 FilterDefinition(physical_filter="y", 

54 abstract_filter="y", 

55 lambdaEff=971.68, lambdaMin=975.0, lambdaMax=1075.0, alias=['y4']), 

56) 

57 

58# LATISS filters include a grating in the name so we need to construct 

59# filters for each combination of filter+grating. 

60_latiss_filters = ( 

61 FilterDefinition(physical_filter="NONE", 

62 lambdaEff=0.0, 

63 alias={"no_filter", "OPEN"}), 

64 FilterDefinition(physical_filter="blank_bk7_wg05", 

65 lambdaEff=0.0), 

66 FilterDefinition(physical_filter="KPNO_1111_436nm", 

67 abstract_filter="g", 

68 lambdaEff=436.0, lambdaMin=386.0, lambdaMax=486.0), 

69 FilterDefinition(physical_filter="KPNO_373A_677nm", 

70 abstract_filter="r", 

71 lambdaEff=677.0, lambdaMin=624.0, lambdaMax=730.0), 

72 FilterDefinition(physical_filter="KPNO_406_828nm", 

73 abstract_filter="z", 

74 lambdaEff=828.0, lambdaMin=738.5, lambdaMax=917.5), 

75 FilterDefinition(physical_filter="diffuser", 

76 lambdaEff=0.0), 

77 FilterDefinition(physical_filter="EMPTY", 

78 lambdaEff=0.0), 

79 FilterDefinition(physical_filter="????", 

80 lambdaEff=0.0), 

81 FilterDefinition(physical_filter="BG40", 

82 # abstract_filter="g", # afw only allows one g filter 

83 lambdaEff=472.0, lambdaMin=334.5, lambdaMax=609.5), 

84 FilterDefinition(physical_filter="quadnotch1", 

85 lambdaEff=0.0), 

86 FilterDefinition(physical_filter="RG610", 

87 lambdaEff=0.0), 

88) 

89 

90# Form a new set of filter definitions from all the explicit filters 

91_latiss_gratings = ("ronchi90lpmm", "ronchi170lpmm", "EMPTY", "????", "NONE") 

92 

93# Include the filters without the grating in case someone wants 

94# to retrieve a filter by an actual filter name 

95_latiss_filter_and_grating = [f for f in _latiss_filters] 

96 

97for filter in _latiss_filters: 

98 for grating in _latiss_gratings: 

99 # FilterDefinition is a frozen dataclass 

100 new_name = FILTER_DELIMITER.join([filter.physical_filter, grating]) 

101 

102 # Also need to update aliases 

103 new_aliases = {FILTER_DELIMITER.join([a, grating]) for a in filter.alias} 

104 

105 combo = FilterDefinition(physical_filter=new_name, 

106 lambdaEff=filter.lambdaEff, 

107 lambdaMin=filter.lambdaMin, 

108 lambdaMax=filter.lambdaMax, 

109 alias=new_aliases) 

110 _latiss_filter_and_grating.append(combo) 

111 

112 

113LATISS_FILTER_DEFINITIONS = FilterDefinitionCollection(*_latiss_filter_and_grating) 

114 

115 

116LSST_IMSIM_FILTER_DEFINITIONS = FilterDefinitionCollection( 

117 # These were computed using throughputs 1.4 and 

118 # lsst.sims.photUtils.BandpassSet. 

119 FilterDefinition(physical_filter="u_sim_1.4", 

120 abstract_filter="u", 

121 lambdaEff=367.070, lambdaMin=308.0, lambdaMax=408.6), 

122 FilterDefinition(physical_filter="g_sim_1.4", 

123 abstract_filter="g", 

124 lambdaEff=482.685, lambdaMin=386.5, lambdaMax=567.0), 

125 FilterDefinition(physical_filter="r_sim_1.4", 

126 abstract_filter="r", 

127 lambdaEff=622.324, lambdaMin=537.0, lambdaMax=706.0), 

128 FilterDefinition(physical_filter="i_sim_1.4", 

129 abstract_filter="i", 

130 lambdaEff=754.598, lambdaMin=676.0, lambdaMax=833.0), 

131 FilterDefinition(physical_filter="z_sim_1.4", 

132 abstract_filter="z", 

133 lambdaEff=869.090, lambdaMin=803.0, lambdaMax=938.6), 

134 FilterDefinition(physical_filter="y_sim_1.4", 

135 abstract_filter="y", 

136 lambdaEff=971.028, lambdaMin=908.4, lambdaMax=1096.3) 

137)