@@ -214,7 +214,7 @@ def get_basis_functions_ddf_survey(
214
214
215
215
def get_basis_functions_field_survey (
216
216
nside : int ,
217
- wind_speed_maximum : float ,
217
+ wind_speed_maximum : float = 10. ,
218
218
) -> list [basis_functions .BaseBasisFunction ]:
219
219
"""Get the basis functions for a field survey.
220
220
@@ -231,19 +231,38 @@ def get_basis_functions_field_survey(
231
231
`list` of `basis_functions.BaseBasisFunction`
232
232
"""
233
233
sun_alt_limit = - 12.0
234
+ moon_distance = 30.
234
235
235
- return [
236
+ bfs = [
236
237
basis_functions .NotTwilightBasisFunction (sun_alt_limit = sun_alt_limit ),
237
- basis_functions .ZenithShadowMaskBasisFunction (
238
- min_alt = 26.0 , max_alt = 85.0 , nside = nside
238
+ basis_functions .MoonAvoidanceBasisFunction (
239
+ nside = nside , moon_distance = moon_distance
239
240
),
240
241
basis_functions .AvoidDirectWind (
241
242
wind_speed_maximum = wind_speed_maximum , nside = nside
242
243
),
243
- basis_functions .MaskAzimuthBasisFunction (
244
- nside = nside , az_min = 160.0 , az_max = 200.0
244
+ # Mask parts of the sky in alt/az, including parts of the sky that will move into this area
245
+ # (replaces azimuth mask and zenith shadow mask, should also be able to replace airmass basis function)
246
+ basis_functions .AltAzShadowMaskBasisFunction (
247
+ nside = nside , min_alt = 22 , max_alt = 83 , min_az = 0.0 , max_az = 360.0 , shadow_minutes = 30
245
248
),
249
+ # Avoid revisits within 30 minutes -- sequence is about 60 minutes long, don't repeat immediately
250
+ basis_functions .AvoidFastRevisitsBasisFunction (nside = nside , filtername = None , gap_min = 30.0 ),
251
+ # reward fields which are rising, but don't mask out after zenith
252
+ basis_functions .RewardRisingBasisFunction (nside = nside , slope = 0.1 , penalty_val = 0 ),
253
+ # Reward parts of the sky which are darker -- note that this is only for r band, so relying on
254
+ # skymap in r band .. if there isn't a strong reason to go with the darkest pointing,
255
+ # it might be reasonable to just drop this basis function
256
+ basis_functions .M5DiffBasisFunction (filtername = 'r' , nside = nside ),
257
+
258
+ #basis_functions.ZenithShadowMaskBasisFunction(
259
+ # min_alt=26.0, max_alt=85.0, nside=nside
260
+ #),
261
+ #basis_functions.MaskAzimuthBasisFunction(
262
+ # nside=nside, az_min=160.0, az_max=200.0
263
+ #),
246
264
]
265
+ return bfs
247
266
248
267
249
268
def get_basis_functions_anytime_survey (
0 commit comments