diff --git a/s4sim/hardware/config.py b/s4sim/hardware/config.py index 292b1ac..f69c6b9 100755 --- a/s4sim/hardware/config.py +++ b/s4sim/hardware/config.py @@ -380,14 +380,14 @@ def sim_nominal(): bnd["low"] = 21.5 bnd["high"] = 28.0 bnd["bandpass"] = "" - bnd["NET"] = 246.0 + bnd["NET"] = 214.0 bnd["fknee"] = 50.0 bnd["fmin"] = 0.01 bnd["alpha"] = 1.0 - bnd["A"] = 0.11488 - bnd["C"] = 0.85083 - bnd["NET_corr"] = 1.02 - bnd["pwv_poly"] = 0.933680, 0.063919, 0.002889 + bnd["A"] = 0.13706 + bnd["C"] = 0.82200 + bnd["NET_corr"] = 1.06 + bnd["pwv_poly"] = 0.920270, 0.076947, 0.003369 bands["SAT_f030"] = bnd bnd = OrderedDict() @@ -395,14 +395,14 @@ def sim_nominal(): bnd["low"] = 28.0 bnd["high"] = 45.0 bnd["bandpass"] = "" - bnd["NET"] = 155.0 + bnd["NET"] = 148.0 bnd["fknee"] = 50.0 bnd["fmin"] = 0.01 bnd["alpha"] = 1.0 - bnd["A"] = 0.21849 - bnd["C"] = 0.71629 + bnd["A"] = 0.23230 + bnd["C"] = 0.69828 bnd["NET_corr"] = 1.04 - bnd["pwv_poly"] = 0.984664, 0.015093, 0.000353 + bnd["pwv_poly"] = 0.983677, 0.016068, 0.000373 bands["SAT_f040"] = bnd bnd = OrderedDict() @@ -470,14 +470,14 @@ def sim_nominal(): bnd["low"] = 74.8 bnd["high"] = 95.2 bnd["bandpass"] = "" - bnd["NET"] = 259.0 + bnd["NET"] = 268.0 bnd["fknee"] = 50.0 bnd["fmin"] = 0.01 bnd["alpha"] = 1.0 - bnd["A"] = 0.26241 - bnd["C"] = 0.65892 - bnd["NET_corr"] = 1.02 - bnd["pwv_poly"] = 0.956092, 0.042784, 0.001444 + bnd["A"] = 0.25396 + bnd["C"] = 0.66989 + bnd["NET_corr"] = 1.06 + bnd["pwv_poly"] = 0.957431, 0.041484, 0.001395 bands["SAT_f085"] = bnd bnd = OrderedDict() @@ -485,14 +485,14 @@ def sim_nominal(): bnd["low"] = 129.1 bnd["high"] = 161.0 bnd["bandpass"] = "" - bnd["NET"] = 311.0 + bnd["NET"] = 305.0 bnd["fknee"] = 50.0 bnd["fmin"] = 0.01 bnd["alpha"] = 1.0 - bnd["A"] = 0.20697 - bnd["C"] = 0.73043 - bnd["NET_corr"] = 1.01 - bnd["pwv_poly"] = 0.848750, 0.146717, 0.005639 + bnd["A"] = 0.21027 + bnd["C"] = 0.72614 + bnd["NET_corr"] = 1.03 + bnd["pwv_poly"] = 0.846409, 0.148957, 0.005757 bands["SAT_f145"] = bnd bnd = OrderedDict() @@ -500,14 +500,14 @@ def sim_nominal(): bnd["low"] = 83.6 bnd["high"] = 106.4 bnd["bandpass"] = "" - bnd["NET"] = 240.0 + bnd["NET"] = 245.0 bnd["fknee"] = 50.0 bnd["fmin"] = 0.01 bnd["alpha"] = 1.0 - bnd["A"] = 0.21106 - bnd["C"] = 0.72533 - bnd["NET_corr"] = 1.02 - bnd["pwv_poly"] = 0.941450, 0.056990, 0.001986 + bnd["A"] = 0.20719 + bnd["C"] = 0.73036 + bnd["NET_corr"] = 1.01 + bnd["pwv_poly"] = 0.942509, 0.055965, 0.001945 bands["SAT_f095"] = bnd bnd = OrderedDict() @@ -515,16 +515,46 @@ def sim_nominal(): bnd["low"] = 138.0 bnd["high"] = 172.1 bnd["bandpass"] = "" - bnd["NET"] = 365.0 + bnd["NET"] = 343.0 bnd["fknee"] = 50.0 bnd["fmin"] = 0.01 bnd["alpha"] = 1.0 - bnd["A"] = 0.22432 - bnd["C"] = 0.70785 + bnd["A"] = 0.23592 + bnd["C"] = 0.69278 bnd["NET_corr"] = 1.02 - bnd["pwv_poly"] = 0.801865, 0.192474, 0.007107 + bnd["pwv_poly"] = 0.791871, 0.202030, 0.007620 bands["SAT_f155"] = bnd + bnd = OrderedDict() + bnd["center"] = 91.5 + bnd["low"] = 77.0 + bnd["high"] = 106.0 + bnd["bandpass"] = "" + bnd["NET"] = 221.0 + bnd["fknee"] = 50.0 + bnd["fmin"] = 0.01 + bnd["alpha"] = 1.0 + bnd["A"] = 0.22609 + bnd["C"] = 0.70593 + bnd["NET_corr"] = 1.03 + bnd["pwv_poly"] = 0.947923, 0.050705, 0.001751 + bands["SAT_f090"] = bnd + + bnd = OrderedDict() + bnd["center"] = 148.5 + bnd["low"] = 128.0 + bnd["high"] = 169.0 + bnd["bandpass"] = "" + bnd["NET"] = 287.0 + bnd["fknee"] = 50.0 + bnd["fmin"] = 0.01 + bnd["alpha"] = 1.0 + bnd["A"] = 0.22482 + bnd["C"] = 0.70722 + bnd["NET_corr"] = 1.03 + bnd["pwv_poly"] = 0.826483, 0.168378, 0.006407 + bands["SAT_f150"] = bnd + bnd = OrderedDict() bnd["center"] = 227.0 bnd["low"] = 198.0 @@ -590,14 +620,14 @@ def sim_nominal(): bnd["low"] = 198.0 bnd["high"] = 256.0 bnd["bandpass"] = "" - bnd["NET"] = 731.0 + bnd["NET"] = 720.0 bnd["fknee"] = 50.0 bnd["fmin"] = 0.01 bnd["alpha"] = 1.0 - bnd["A"] = 0.29945 - bnd["C"] = 0.61031 + bnd["A"] = 0.30314 + bnd["C"] = 0.60552 bnd["NET_corr"] = 1.01 - bnd["pwv_poly"] = 0.731418, 0.255791, 0.014788 + bnd["pwv_poly"] = 0.728284, 0.258698, 0.015039 bands["SAT_f220"] = bnd bnd = OrderedDict() @@ -605,21 +635,21 @@ def sim_nominal(): bnd["low"] = 256.0 bnd["high"] = 315.0 bnd["bandpass"] = "" - bnd["NET"] = 1845.0 + bnd["NET"] = 1817.0 bnd["fknee"] = 50.0 bnd["fmin"] = 0.01 bnd["alpha"] = 1.0 - bnd["A"] = 0.36317 - bnd["C"] = 0.52786 - bnd["NET_corr"] = 1.01 - bnd["pwv_poly"] = 0.662106, 0.316561, 0.023882 + bnd["A"] = 0.36697 + bnd["C"] = 0.52293 + bnd["NET_corr"] = 1.00 + bnd["pwv_poly"] = 0.658761, 0.319594, 0.024221 bands["SAT_f280"] = bnd cnf["bands"] = bands wafers = OrderedDict() - wtypes = ["CHLAT_ULF","SPLAT_ULF", "CHLAT_LF", "SPLAT_LF", "SAT_LF", "CHLAT_MF", "SPLAT_MF", "SAT_MFL", "SAT_MFH", "CHLAT_HF", "SPLAT_HF", "SAT_HF"] + wtypes = ["CHLAT_ULF","SPLAT_ULF", "CHLAT_LF", "SPLAT_LF", "SAT_LF", "CHLAT_MF", "SPLAT_MF", "SAT_MFL", "SAT_MFH", "SAT_MF", "CHLAT_HF", "SPLAT_HF", "SAT_HF"] wcnt = { "CHLAT_ULF": 4*2, "SPLAT_ULF": 4, @@ -630,6 +660,7 @@ def sim_nominal(): "SPLAT_MF": 54, "SAT_MFL": (12) * 3, "SAT_MFH": (12) * 3, + "SAT_MF": 0, "CHLAT_HF": 19*2, "SPLAT_HF": 18, "SAT_HF": (12) * 2, @@ -642,8 +673,9 @@ def sim_nominal(): "SAT_LF": "HP", "CHLAT_MF": "RP", "SPLAT_MF": "RP", - "SAT_MFL": "HP", - "SAT_MFH": "HP", + "SAT_MFL": "RP", + "SAT_MFH": "RP", + "SAT_MF": "RP", "CHLAT_HF": "HP", "SPLAT_HF": "HP", "SAT_HF": "HP", @@ -653,11 +685,12 @@ def sim_nominal(): "SPLAT_ULF": 27, "CHLAT_LF": 48, "SPLAT_LF": 48, - "SAT_LF": 19, + "SAT_LF": 37, "CHLAT_MF": 432, "SPLAT_MF": 432, - "SAT_MFL": 217, - "SAT_MFH": 271, + "SAT_MFL": 432, + "SAT_MFH": 432, + "SAT_MF": 432, "CHLAT_HF": 469, "SPLAT_HF": 469, "SAT_HF": 469, @@ -667,11 +700,12 @@ def sim_nominal(): "SPLAT_ULF": 21.1, "CHLAT_LF": 16.1, "SPLAT_LF": 16.1, - "SAT_LF": 26.0, + "SAT_LF": 19.1, "CHLAT_MF": 5.3, "SPLAT_MF": 5.3, - "SAT_MFL": 7.65, - "SAT_MFH": 6.85, + "SAT_MFL": 5.3, + "SAT_MFH": 5.3, + "SAT_MF": 5.3, "CHLAT_HF": 5.2, "SPLAT_HF": 5.2, "SAT_HF": 5.2, @@ -684,8 +718,9 @@ def sim_nominal(): "SAT_LF": 4.167, "CHLAT_MF": 0.71, "SPLAT_MF": 0.71, - "SAT_MFL": 1.273, + "SAT_MFL": 0.71, "SAT_MFH": 0.71, + "SAT_MF": 0.71, "CHLAT_HF": 0.71, "SPLAT_HF": 0.71, "SAT_HF": 0.71, @@ -700,6 +735,7 @@ def sim_nominal(): "SPLAT_MF": ["SPLAT_f090", "SPLAT_f150"], "SAT_MFL": ["SAT_f085", "SAT_f145"], "SAT_MFH": ["SAT_f095", "SAT_f155"], + "SAT_MF": ["SAT_f090", "SAT_f150"], "CHLAT_HF": ["CHLAT_f220", "CHLAT_f280"], "SPLAT_HF": ["SPLAT_f220", "SPLAT_f280"], "SAT_HF": ["SAT_f220", "SAT_f280"], @@ -713,8 +749,9 @@ def sim_nominal(): "SAT_LF": [], "CHLAT_MF": [210,220], "SPLAT_MF": [210,220], - "SAT_MFL": [0,127], - "SAT_MFH": [0,169], + "SAT_MFL": [210,220], + "SAT_MFH": [210,220], + "SAT_MF": [210,220], "CHLAT_HF": [0,331], "SPLAT_HF": [0,331], "SAT_HF": [0,331], @@ -751,6 +788,7 @@ def sim_nominal(): "SPLAT_MF": 0, "SAT_MFL": 0, "SAT_MFH": 0, + "SAT_MF": 0, "CHLAT_HF": 0, "SPLAT_HF": 0, "SAT_HF": 0, @@ -1352,7 +1390,7 @@ def sim_nominal(): ] # 30 deg, 10008 detectors/band tb["platescale"] = 0.070093/0.9909 - tb["FOV_cut"] = 30.0 + tb["FOV_cut"] = 34.9 elif ttyp == "SAT_MFL": for tw in range(12): off = 0 @@ -1364,22 +1402,22 @@ def sim_nominal(): break off += 1 tb["wafer_angle"] = [ # Degrees - 30.0, - 30.0, - 30.0, - -150.0, - -150.0, - 30.0, - 30.0, - 30.0, - -30.0, - 90.0, - 30.0, - 30.0, + 0.0, + 0.0, + 0.0, + -60.0, + -60.0, + 0.0, + 0.0, + 60.0, + 60.0, + 180.0, + 180.0, + 0.0, ] # 30 deg, 3048 detectors/band - tb["platescale"] = 0.070093/0.9905 - tb["FOV_cut"] = 30.0 + tb["platescale"] = 0.070093/0.9931 + tb["FOV_cut"] = 34.9 elif ttyp == "SAT_MFH": for tw in range(12): off = 0 @@ -1391,22 +1429,49 @@ def sim_nominal(): break off += 1 tb["wafer_angle"] = [ # Degrees - 30.0, - 30.0, - 30.0, - -150.0, - -150.0, - 30.0, - 30.0, - 30.0, - -30.0, - 90.0, - 30.0, - 30.0, + 0.0, + 0.0, + 0.0, + -60.0, + -60.0, + 0.0, + 0.0, + 60.0, + 60.0, + 180.0, + 180.0, + 0.0, + ] + # 30 deg, 3552 det/band + tb["platescale"] = 0.070093/0.9931 + tb["FOV_cut"] = 34.9 + elif ttyp == "SAT_MF": + for tw in range(12): + off = 0 + for w, props in cnf["wafers"].items(): + if props["type"] == ttyp: + if off == woff[ttyp]: + tb["wafers"].append(w) + woff[ttyp] += 1 + break + off += 1 + tb["wafer_angle"] = [ # Degrees + 0.0, + 0.0, + 0.0, + -60.0, + -60.0, + 0.0, + 0.0, + 60.0, + 60.0, + 180.0, + 180.0, + 0.0, ] # 30 deg, 3552 det/band tb["platescale"] = 0.070093/0.9931 - tb["FOV_cut"] = 30.0 + tb["FOV_cut"] = 34.9 else: for tw in range(12): off = 0 @@ -1433,7 +1498,7 @@ def sim_nominal(): ] # 30 deg, 252 det/band tb["platescale"] = 0.070093/0.9855 - tb["FOV_cut"] = 30.0 + tb["FOV_cut"] = 34.9 tb["toast_hex_pos"] = stube_toasthex_pos[tindx] tubes[nm] = tb @@ -1747,14 +1812,16 @@ def sim_nominal(): #SAT beams sfwhm = OrderedDict() - sfwhm["SAT_f030"] = 100.9 - sfwhm["SAT_f040"] = 74.4 - sfwhm["SAT_f085"] = 29.5 - sfwhm["SAT_f145"] = 18.1 - sfwhm["SAT_f095"] = 26.4 - sfwhm["SAT_f155"] = 16.9 - sfwhm["SAT_f220"] = 11.3 - sfwhm["SAT_f280"] = 10.1 + sfwhm["SAT_f030"] = 79.2 + sfwhm["SAT_f040"] = 56.6 + sfwhm["SAT_f085"] = 22.9 + sfwhm["SAT_f145"] = 14.2 + sfwhm["SAT_f095"] = 20.6 + sfwhm["SAT_f155"] = 13.5 + sfwhm["SAT_f090"] = 21.4 + sfwhm["SAT_f150"] = 13.8 + sfwhm["SAT_f220"] = 9.4 + sfwhm["SAT_f280"] = 7.8 tele = OrderedDict() tele["tubes"] = ["ST0", "ST1", "ST2"]