From 5527664d53b3ba509dc570056a3bfb45bf47ec75 Mon Sep 17 00:00:00 2001 From: Lee Kelvin Date: Fri, 29 Aug 2025 16:53:50 -0700 Subject: [PATCH] Add support for NB0395 and NB0515 --- config/colorterms.py | 2 + config/extinctionCoeffs.py | 2 + config/extinctionCoeffsGen2.py | 2 + config/fgcmBuildFromIsolatedStars.py | 2 +- config/fgcmBuildStarsTable.py | 2 +- config/fgcmCalibrateTractTable.py | 2 + config/fgcmFitCycle.py | 28 +++++- config/fgcmMakeLut.py | 2 + config/filterMap.py | 2 + config/isolatedStarAssociation.py | 2 +- config/mergeDetections.py | 2 +- config/mergeMeasurements.py | 2 +- hsc/transmission/wHSC-NB395.txt | 124 +++++++++++++++++++++++++++ python/lsst/obs/hsc/hscFilters.py | 2 + 14 files changed, 169 insertions(+), 7 deletions(-) create mode 100644 hsc/transmission/wHSC-NB395.txt diff --git a/config/colorterms.py b/config/colorterms.py index 0711df7be..47b63c669 100644 --- a/config/colorterms.py +++ b/config/colorterms.py @@ -18,6 +18,7 @@ 'HSC-Y': Colorterm(primary="z", secondary="i", c0=0.003386, c1=0.428877, c2=0.076738), 'IB0945': Colorterm(primary="z", secondary="i", c0=0.008117, c1=0.234991, c2=-0.042255), 'NB0387': Colorterm(primary="u", secondary="g", c0=-0.709229, c1=0.310719, c2=-0.044107), + 'NB0395': Colorterm(primary="u", secondary="g", c0=-0.484711, c1=-0.095468, c2=0.002404), 'NB0400': Colorterm(primary="u", secondary="g", c0=-0.396264, c1=-0.395133, c2=0.038688), 'NB0468': Colorterm(primary="g", secondary="r", c0=-0.059159, c1=-0.030881, c2=0.015356), 'NB0515': Colorterm(primary="g", secondary="r", c0=-0.032510, c1=-0.354440, c2=0.100832), @@ -40,6 +41,7 @@ 'HSC-Y': Colorterm(primary="y", secondary="z", c0=-0.002055, c1=0.209680, c2=0.227296), 'IB0945': Colorterm(primary="y", secondary="z", c0=0.005275, c1=-0.194285, c2=-0.125424), 'NB0387': Colorterm(primary="g", secondary="r", c0=0.427879, c1=1.869068, c2=0.540580), + 'NB0395': Colorterm(primary="g", secondary="r", c0=0.326378, c1=1.477711, c2=0.483298), 'NB0400': Colorterm(primary="g", secondary="r", c0=0.176542, c1=1.127055, c2=0.505502), 'NB0468': Colorterm(primary="g", secondary="r", c0=-0.042240, c1=0.121756, c2=0.027599), 'NB0515': Colorterm(primary="g", secondary="r", c0=-0.021913, c1=-0.253159, c2=0.151553), diff --git a/config/extinctionCoeffs.py b/config/extinctionCoeffs.py index b08918b04..2ccdd8f1d 100644 --- a/config/extinctionCoeffs.py +++ b/config/extinctionCoeffs.py @@ -15,6 +15,8 @@ "z": 1.263, "y": 1.075, "N387": 4.007, + "N395": 3.929, + "N515": 2.939, "N816": 1.458, "N921": 1.187, } diff --git a/config/extinctionCoeffsGen2.py b/config/extinctionCoeffsGen2.py index 5b3a7c017..86105d7a5 100644 --- a/config/extinctionCoeffsGen2.py +++ b/config/extinctionCoeffsGen2.py @@ -10,6 +10,8 @@ "HSC-Z": 1.263, "HSC-Y": 1.075, "NB0387": 4.007, + "NB0395": 3.929, + "NB0515": 2.939, "NB0816": 1.458, "NB0921": 1.187, } diff --git a/config/fgcmBuildFromIsolatedStars.py b/config/fgcmBuildFromIsolatedStars.py index adb166f79..971fb2fbf 100644 --- a/config/fgcmBuildFromIsolatedStars.py +++ b/config/fgcmBuildFromIsolatedStars.py @@ -10,7 +10,7 @@ # ensures that stars observed in HSC-R + HSC-R2 can be matched, and # HSC-I + HSC-I2 can be matched. config.physicalFilterMap = HSC_FILTER_DEFINITIONS.physical_to_band -config.primaryBands = ("i", "r", "g", "z", "y", "N387", "N816", "N921", "N1010") +config.primaryBands = ("i", "r", "g", "z", "y", "N387", "N395", "N515", "N816", "N921", "N1010") hscConfigDir = os.path.join(os.path.dirname(__file__)) config.fgcmLoadReferenceCatalog.load(os.path.join(hscConfigDir, "filterMap.py")) diff --git a/config/fgcmBuildStarsTable.py b/config/fgcmBuildStarsTable.py index b9d482d81..319cde47a 100644 --- a/config/fgcmBuildStarsTable.py +++ b/config/fgcmBuildStarsTable.py @@ -10,7 +10,7 @@ # ensures that stars observed in HSC-R + HSC-R2 can be matched, and # HSC-I + HSC-I2 can be matched. config.physicalFilterMap = HSC_FILTER_DEFINITIONS.physical_to_band -config.primaryBands = ("i", "r", "g", "z", "y", "N387", "N816", "N921", "N1010") +config.primaryBands = ("i", "r", "g", "z", "y", "N387", "N395", "N515", "N816", "N921", "N1010") config.doSubtractLocalBackground = True hscConfigDir = os.path.join(os.path.dirname(__file__)) diff --git a/config/fgcmCalibrateTractTable.py b/config/fgcmCalibrateTractTable.py index 69bd3a997..8866d4fa5 100644 --- a/config/fgcmCalibrateTractTable.py +++ b/config/fgcmCalibrateTractTable.py @@ -8,7 +8,9 @@ # In tract mode, we use "repeatability" metric for cuts for all filters. config.fgcmFitCycle.useRepeatabilityForExpGrayCutsDict = { "N387": True, + "N395": True, "g": True, + "N515": True, "r": True, "i": True, "N816": True, diff --git a/config/fgcmFitCycle.py b/config/fgcmFitCycle.py index 2fa297846..cd2f41ba1 100644 --- a/config/fgcmFitCycle.py +++ b/config/fgcmFitCycle.py @@ -2,8 +2,8 @@ from lsst.obs.hsc.hscFilters import HSC_FILTER_DEFINITIONS config.outfileBase = "fgcmHscCalibrations" -config.bands = ["N387", "g", "r", "i", "N816", "z", "N921", "y", "N1010"] -config.fitBands = ["N387", "g", "r", "i", "N816", "z", "N921", "y", "N1010"] +config.bands = ["N387", "N395", "g", "N515", "r", "i", "N816", "z", "N921", "y", "N1010"] +config.fitBands = ["N387", "N395", "g", "N515", "r", "i", "N816", "z", "N921", "y", "N1010"] config.physicalFilterMap = HSC_FILTER_DEFINITIONS.physical_to_band config.maxIterBeforeFinalCycle = 150 config.cycleNumber = 0 @@ -17,7 +17,9 @@ config.defaultCameraOrientation = 270.0 config.expGrayPhotometricCutDict = { "N387": -0.05, + "N395": -0.05, "g": -0.05, + "N515": -0.05, "r": -0.05, "i": -0.05, "N816": -0.05, @@ -28,7 +30,9 @@ } config.expGrayHighCutDict = { "N387": 0.2, + "N395": 0.2, "g": 0.2, + "N515": 0.2, "r": 0.2, "i": 0.2, "N816": 0.2, @@ -40,7 +44,9 @@ config.aperCorrFitNBins = 10 config.aperCorrInputSlopeDict = { "N387": -1.0, + "N395": -1.0, "g": -1.1579, + "N515": -1.0, "r": -1.3908, "i": -1.1436, "N816": -1.8149, @@ -62,7 +68,9 @@ # on a per-ccd level. config.superStarSubCcdDict = { "N387": False, + "N395": False, "g": True, + "N515": False, "r": True, "i": True, "N816": True, @@ -76,7 +84,9 @@ # reliable fits for the per-ccd gray correction. config.ccdGraySubCcdDict = { "N387": False, + "N395": False, "g": True, + "N515": False, "r": True, "i": True, "N816": True, @@ -90,7 +100,9 @@ # ccd-to-ccd continuity. config.ccdGrayFocalPlaneDict = { "N387": True, + "N395": True, "g": True, + "N515": True, "r": True, "i": True, "N816": True, @@ -106,7 +118,9 @@ config.minStarPerExp = 100 config.expVarGrayPhotometricCutDict = { "N387": 0.05, + "N395": 0.05, "g": 0.0025, + "N515": 0.05, "r": 0.0025, "i": 0.0025, "N816": 0.05, @@ -118,7 +132,9 @@ config.minExpPerNight = 3 config.useRepeatabilityForExpGrayCutsDict = { "N387": True, + "N395": True, "g": False, + "N515": True, "r": False, "i": False, "N816": True, @@ -129,7 +145,9 @@ } config.sigFgcmMaxEGrayDict = { "N387": 0.15, + "N395": 0.15, "g": 0.05, + "N515": 0.15, "r": 0.05, "i": 0.05, "N816": 0.15, @@ -140,7 +158,9 @@ } config.approxThroughputDict = { "N387": 1.0, + "N395": 1.0, "g": 1.0, + "N515": 1.0, "r": 1.0, "i": 1.0, "N816": 1.0, @@ -156,6 +176,8 @@ "iz": Sedboundaryterm(primary="i", secondary="z"), "zy": Sedboundaryterm(primary="z", secondary="y"), "N387g": Sedboundaryterm(primary="N387", secondary="g"), + "N395g": Sedboundaryterm(primary="N395", secondary="g"), + "N515g": Sedboundaryterm(primary="N515", secondary="g"), "N816i": Sedboundaryterm(primary="N816", secondary="i"), "N921z": Sedboundaryterm(primary="N921", secondary="z"), "N1010y": Sedboundaryterm(primary="N1010", secondary="y"), @@ -175,6 +197,8 @@ tertiaryBand="i", ), "N387": Sedterm(primaryTerm="N387g", constant=1.0), + "N395": Sedterm(primaryTerm="N395g", constant=1.0), + "N515": Sedterm(primaryTerm="N515g", constant=1.0), "N816": Sedterm(primaryTerm="N816i", constant=0.7), "N921": Sedterm(primaryTerm="N921z", constant=0.5), "N1010": Sedterm(primaryTerm="N1010y", constant=1.0), diff --git a/config/fgcmMakeLut.py b/config/fgcmMakeLut.py index 02a672c43..5e234ce67 100644 --- a/config/fgcmMakeLut.py +++ b/config/fgcmMakeLut.py @@ -8,6 +8,8 @@ "HSC-Z", "HSC-Y", "NB0387", + "NB0395", + "NB0515", "NB0816", "NB0921", "NB1010", diff --git a/config/filterMap.py b/config/filterMap.py index 16d6bc0ba..e61a51538 100644 --- a/config/filterMap.py +++ b/config/filterMap.py @@ -5,6 +5,7 @@ ("i2", "i"), # Narrow bands ('N387', 'g'), + ('N395', 'g'), ('N468', 'g'), ('N515', 'g'), ('N527', 'g'), @@ -30,6 +31,7 @@ ("HSC-Y", "y"), # Narrow bands ('NB0387', 'g'), + ('NB0395', 'g'), ('NB0468', 'g'), ('NB0515', 'g'), ('NB0527', 'g'), diff --git a/config/isolatedStarAssociation.py b/config/isolatedStarAssociation.py index 68bbf416b..849b3c58e 100644 --- a/config/isolatedStarAssociation.py +++ b/config/isolatedStarAssociation.py @@ -1,2 +1,2 @@ # irgzyN921 is preferred order of Eli and tested in RC2 -config.band_order = ["i", "r", "g", "z", "y", "N921", "N816", "N1010", "N387", "N515"] +config.band_order = ["i", "r", "g", "z", "y", "N921", "N816", "N1010", "N387", "N515", "N395"] diff --git a/config/mergeDetections.py b/config/mergeDetections.py index 0d28af52b..5722b0cdf 100644 --- a/config/mergeDetections.py +++ b/config/mergeDetections.py @@ -1 +1 @@ -config.priorityList = ["i", "r", "z", "y", "g", "N921", "N816", "N1010", "N387", "N515"] +config.priorityList = ["i", "r", "z", "y", "g", "N921", "N816", "N1010", "N387", "N515", "N395"] diff --git a/config/mergeMeasurements.py b/config/mergeMeasurements.py index 0d28af52b..5722b0cdf 100644 --- a/config/mergeMeasurements.py +++ b/config/mergeMeasurements.py @@ -1 +1 @@ -config.priorityList = ["i", "r", "z", "y", "g", "N921", "N816", "N1010", "N387", "N515"] +config.priorityList = ["i", "r", "z", "y", "g", "N921", "N816", "N1010", "N387", "N515", "N395"] diff --git a/hsc/transmission/wHSC-NB395.txt b/hsc/transmission/wHSC-NB395.txt new file mode 100644 index 000000000..66e1572ef --- /dev/null +++ b/hsc/transmission/wHSC-NB395.txt @@ -0,0 +1,124 @@ +# wavelength[angstrom] transmittance + 3701.5 0.0126 + 3705.5 0.0115 + 3709.6 0.0099 + 3713.6 0.0109 + 3717.6 0.0111 + 3721.6 0.0091 + 3725.7 0.0095 + 3729.7 0.0094 + 3733.7 0.0082 + 3737.8 0.0084 + 3741.8 0.0074 + 3745.8 0.0069 + 3749.9 0.0068 + 3753.9 0.0064 + 3757.9 0.0068 + 3762.0 0.0062 + 3766.0 0.0061 + 3770.0 0.0062 + 3774.1 0.0059 + 3778.1 0.0055 + 3782.1 0.0052 + 3786.2 0.0050 + 3790.2 0.0046 + 3794.2 0.0047 + 3798.3 0.0050 + 3802.3 0.0047 + 3806.4 0.0042 + 3810.4 0.0041 + 3814.4 0.0039 + 3818.5 0.0042 + 3822.5 0.0041 + 3826.6 0.0043 + 3830.6 0.0040 + 3834.7 0.0043 + 3838.7 0.0051 + 3842.7 0.0057 + 3846.8 0.0069 + 3850.8 0.0086 + 3854.9 0.0102 + 3858.9 0.0118 + 3863.0 0.0152 + 3867.0 0.0206 + 3871.1 0.0285 + 3875.1 0.0412 + 3879.2 0.0618 + 3883.2 0.0917 + 3887.2 0.1298 + 3891.3 0.1763 + 3895.3 0.2362 + 3899.4 0.3098 + 3903.4 0.3891 + 3907.5 0.4675 + 3911.5 0.5408 + 3915.6 0.6086 + 3919.7 0.6774 + 3923.7 0.7302 + 3927.8 0.7566 + 3931.8 0.7669 + 3935.9 0.7770 + 3939.9 0.7969 + 3944.0 0.8211 + 3948.0 0.8302 + 3952.1 0.8291 + 3956.1 0.8416 + 3960.2 0.8613 + 3964.3 0.8634 + 3968.3 0.8460 + 3972.4 0.8293 + 3976.4 0.8079 + 3980.5 0.7619 + 3984.6 0.7061 + 3988.6 0.6459 + 3992.7 0.5760 + 3996.7 0.5019 + 4000.8 0.4272 + 4004.9 0.3571 + 4008.9 0.2929 + 4013.0 0.2374 + 4017.1 0.1936 + 4021.1 0.1583 + 4025.2 0.1293 + 4029.2 0.1032 + 4033.3 0.0779 + 4037.4 0.0551 + 4041.4 0.0369 + 4045.5 0.0241 + 4049.6 0.0163 + 4053.6 0.0121 + 4057.7 0.0098 + 4061.8 0.0085 + 4065.9 0.0074 + 4069.9 0.0062 + 4074.0 0.0050 + 4078.1 0.0039 + 4082.1 0.0033 + 4086.2 0.0028 + 4090.3 0.0027 + 4094.4 0.0026 + 4098.4 0.0025 + 4102.5 0.0024 + 4106.6 0.0024 + 4110.6 0.0024 + 4114.7 0.0024 + 4118.8 0.0024 + 4122.9 0.0026 + 4127.0 0.0025 + 4131.0 0.0023 + 4135.1 0.0023 + 4139.2 0.0026 + 4143.3 0.0027 + 4147.3 0.0024 + 4151.4 0.0025 + 4155.5 0.0027 + 4159.6 0.0025 + 4163.7 0.0025 + 4167.7 0.0024 + 4171.8 0.0025 + 4175.9 0.0026 + 4180.0 0.0025 + 4184.1 0.0025 + 4188.2 0.0028 + 4192.2 0.0028 + 4196.3 0.0027 diff --git a/python/lsst/obs/hsc/hscFilters.py b/python/lsst/obs/hsc/hscFilters.py index 16f499f87..a495b0b1c 100644 --- a/python/lsst/obs/hsc/hscFilters.py +++ b/python/lsst/obs/hsc/hscFilters.py @@ -97,4 +97,6 @@ band='N926'), FilterDefinition(physical_filter="NB0400", band='N400'), + FilterDefinition(physical_filter="NB0395", + band='N395'), )