50 lutFilterNames, tract=
None):
52 Make the FGCM fit cycle configuration dict
56 config: `lsst.fgcmcal.FgcmFitCycleConfig`
60 camera: `lsst.afw.cameraGeom.Camera`
61 Camera from the butler
63 Maximum number of iterations
64 resetFitParameters: `bool`
65 Reset fit parameters before fitting?
66 outputZeropoints: `bool`
67 Compute zeropoints for output?
68 lutFilterNames : array-like, `str`
69 Array of physical filter names in the LUT.
70 tract: `int`, optional
71 Tract number for extending the output file name for debugging.
77 Configuration dictionary for fgcm
80 notFitBands = [b
for b
in config.bands
if b
not in config.fitBands]
84 for ccut
in config.starColorCuts:
85 parts = ccut.split(
',')
86 starColorCutList.append([parts[0], parts[1], float(parts[2]), float(parts[3])])
91 mirrorArea = np.pi*(camera.telescopeDiameter*100./2.)**2.
94 gains = [amp.getGain()
for detector
in camera
for amp
in detector.getAmplifiers()]
95 cameraGain = float(np.median(gains))
98 filterToBand = {filterName: config.physicalFilterMap[filterName]
for
99 filterName
in lutFilterNames}
102 outfileBase = config.outfileBase
104 outfileBase =
'%s-%06d' % (config.outfileBase, tract)
107 configDict = {
'outfileBase': outfileBase,
109 'exposureFile':
None,
113 'mirrorArea': mirrorArea,
114 'cameraGain': cameraGain,
115 'ccdStartIndex': camera[0].getId(),
116 'expField': FGCM_EXP_FIELD,
117 'ccdField': FGCM_CCD_FIELD,
118 'seeingField':
'DELTA_APER',
119 'fwhmField':
'PSFSIGMA',
120 'skyBrightnessField':
'SKYBACKGROUND',
121 'deepFlag':
'DEEPFLAG',
122 'bands':
list(config.bands),
123 'fitBands':
list(config.fitBands),
124 'notFitBands': notFitBands,
125 'requiredBands':
list(config.requiredBands),
126 'filterToBand': filterToBand,
128 'nCore': config.nCore,
129 'nStarPerRun': config.nStarPerRun,
130 'nExpPerRun': config.nExpPerRun,
131 'reserveFraction': config.reserveFraction,
132 'freezeStdAtmosphere': config.freezeStdAtmosphere,
133 'precomputeSuperStarInitialCycle': config.precomputeSuperStarInitialCycle,
134 'superStarSubCCDDict': dict(config.superStarSubCcdDict),
135 'superStarSubCCDChebyshevOrder': config.superStarSubCcdChebyshevOrder,
136 'superStarSubCCDTriangular': config.superStarSubCcdTriangular,
137 'superStarSigmaClip': config.superStarSigmaClip,
138 'focalPlaneSigmaClip': config.focalPlaneSigmaClip,
139 'ccdGraySubCCDDict': dict(config.ccdGraySubCcdDict),
140 'ccdGraySubCCDChebyshevOrder': config.ccdGraySubCcdChebyshevOrder,
141 'ccdGraySubCCDTriangular': config.ccdGraySubCcdTriangular,
142 'ccdGrayFocalPlaneDict': dict(config.ccdGrayFocalPlaneDict),
143 'ccdGrayFocalPlaneChebyshevOrder': config.ccdGrayFocalPlaneChebyshevOrder,
144 'ccdGrayFocalPlaneFitMinCcd': config.ccdGrayFocalPlaneFitMinCcd,
145 'cycleNumber': config.cycleNumber,
147 'deltaMagBkgOffsetPercentile': config.deltaMagBkgOffsetPercentile,
148 'deltaMagBkgPerCcd': config.deltaMagBkgPerCcd,
149 'UTBoundary': config.utBoundary,
150 'washMJDs': config.washMjds,
151 'epochMJDs': config.epochMjds,
152 'coatingMJDs': config.coatingMjds,
153 'minObsPerBand': config.minObsPerBand,
154 'latitude': config.latitude,
155 'brightObsGrayMax': config.brightObsGrayMax,
156 'minStarPerCCD': config.minStarPerCcd,
157 'minCCDPerExp': config.minCcdPerExp,
158 'maxCCDGrayErr': config.maxCcdGrayErr,
159 'minStarPerExp': config.minStarPerExp,
160 'minExpPerNight': config.minExpPerNight,
161 'expGrayInitialCut': config.expGrayInitialCut,
162 'expGrayPhotometricCutDict': dict(config.expGrayPhotometricCutDict),
163 'expGrayHighCutDict': dict(config.expGrayHighCutDict),
164 'expGrayRecoverCut': config.expGrayRecoverCut,
165 'expVarGrayPhotometricCutDict': dict(config.expVarGrayPhotometricCutDict),
166 'expGrayErrRecoverCut': config.expGrayErrRecoverCut,
167 'refStarSnMin': config.refStarSnMin,
168 'refStarOutlierNSig': config.refStarOutlierNSig,
169 'applyRefStarColorCuts': config.applyRefStarColorCuts,
170 'illegalValue': -9999.0,
171 'starColorCuts': starColorCutList,
172 'aperCorrFitNBins': config.aperCorrFitNBins,
173 'aperCorrInputSlopeDict': dict(config.aperCorrInputSlopeDict),
174 'sedBoundaryTermDict': config.sedboundaryterms.toDict()[
'data'],
175 'sedTermDict': config.sedterms.toDict()[
'data'],
176 'colorSplitBands':
list(config.colorSplitBands),
177 'sigFgcmMaxErr': config.sigFgcmMaxErr,
178 'sigFgcmMaxEGrayDict': dict(config.sigFgcmMaxEGrayDict),
179 'ccdGrayMaxStarErr': config.ccdGrayMaxStarErr,
180 'approxThroughputDict': dict(config.approxThroughputDict),
181 'sigmaCalRange':
list(config.sigmaCalRange),
182 'sigmaCalFitPercentile':
list(config.sigmaCalFitPercentile),
183 'sigmaCalPlotPercentile':
list(config.sigmaCalPlotPercentile),
184 'sigma0Phot': config.sigma0Phot,
185 'mapLongitudeRef': config.mapLongitudeRef,
186 'mapNSide': config.mapNSide,
189 'useRetrievedPwv':
False,
190 'useNightlyRetrievedPwv':
False,
191 'pwvRetrievalSmoothBlock': 25,
192 'useQuadraticPwv': config.useQuadraticPwv,
193 'useRetrievedTauInit':
False,
194 'tauRetrievalMinCCDPerNight': 500,
195 'modelMagErrors': config.modelMagErrors,
196 'instrumentParsPerBand': config.instrumentParsPerBand,
197 'instrumentSlopeMinDeltaT': config.instrumentSlopeMinDeltaT,
198 'fitMirrorChromaticity': config.fitMirrorChromaticity,
199 'useRepeatabilityForExpGrayCutsDict': dict(config.useRepeatabilityForExpGrayCutsDict),
200 'autoPhotometricCutNSig': config.autoPhotometricCutNSig,
201 'autoHighCutNSig': config.autoHighCutNSig,
203 'quietMode': config.quietMode,
204 'randomSeed': config.randomSeed,
205 'outputStars':
False,
208 'resetParameters': resetFitParameters,
209 'outputFgcmcalZpts':
True,
210 'outputZeropoints': outputZeropoints}
daf::base::PropertyList * list