Commit 97a1d815997ab4deed432c701b45ee97a371e563
1 parent
21d6a36b
Add HDUCLASS keywords to csroot2caldb script
Showing
1 changed file
with
59 additions
and
35 deletions
cscripts/csroot2caldb.py
| @@ -111,34 +111,48 @@ class csroot2caldb(ctools.cscript): | @@ -111,34 +111,48 @@ class csroot2caldb(ctools.cscript): | ||
| 111 | cal_zenith, cal_azimuth] | 111 | cal_zenith, cal_azimuth] |
| 112 | 112 | ||
| 113 | # Set IRF information | 113 | # Set IRF information |
| 114 | - irf['CAL_TEL'] = 'CTA' | ||
| 115 | - irf['CAL_INST'] = self['inst'].string().upper() | ||
| 116 | - irf['CAL_OBSID'] = self['id'].string() | ||
| 117 | - irf['CAL_DET'] = 'NONE' | ||
| 118 | - irf['CAL_FLT'] = 'NONE' | ||
| 119 | - irf['CAL_CLASS'] = 'BCF' | ||
| 120 | - irf['CAL_TYPE'] = 'DATA' | ||
| 121 | - irf['CAL_QUAL'] = 0 # 0=good, 1=bad, 2=dubious, ... | ||
| 122 | - irf['CAL_DATE'] = '14/01/30' | ||
| 123 | - irf['VAL_DATE'] = '2014-01-30' | ||
| 124 | - irf['VAL_TIME'] = '00:00:00' | ||
| 125 | - irf['REF_TIME'] = 51544.0 | ||
| 126 | - irf['EA_NAME'] = 'EFF_AREA' | ||
| 127 | - irf['EA_DOC'] = 'CAL/GEN/92-019' | ||
| 128 | - irf['EA_BOUNDS'] = copy.deepcopy(cal_bounds) | ||
| 129 | - irf['EA_DESC'] = 'CTA effective area' | ||
| 130 | - irf['PSF_NAME'] = 'RPSF' | ||
| 131 | - irf['PSF_DOC'] = 'CAL/GEN/92-020' | ||
| 132 | - irf['PSF_BOUNDS'] = copy.deepcopy(cal_bounds) | ||
| 133 | - irf['PSF_DESC'] = 'CTA point spread function' | ||
| 134 | - irf['EDISP_NAME'] = 'EDISP' | ||
| 135 | - irf['EDISP_DOC'] = '???' | ||
| 136 | - irf['EDISP_BOUNDS'] = copy.deepcopy(cal_bounds) | ||
| 137 | - irf['EDISP_DESC'] = 'CTA energy dispersion' | ||
| 138 | - irf['BGD_NAME'] = 'BGD' | ||
| 139 | - irf['BGD_DOC'] = '???' | ||
| 140 | - irf['BGD_BOUNDS'] = copy.deepcopy(cal_bounds) | ||
| 141 | - irf['BGD_DESC'] = 'CTA background' | 114 | + irf['CAL_TEL'] = 'CTA' |
| 115 | + irf['CAL_INST'] = self['inst'].string().upper() | ||
| 116 | + irf['CAL_OBSID'] = self['id'].string() | ||
| 117 | + irf['CAL_DET'] = 'NONE' | ||
| 118 | + irf['CAL_FLT'] = 'NONE' | ||
| 119 | + irf['CAL_CLASS'] = 'BCF' | ||
| 120 | + irf['CAL_TYPE'] = 'DATA' | ||
| 121 | + irf['CAL_QUAL'] = 0 # 0=good, 1=bad, 2=dubious, ... | ||
| 122 | + irf['CAL_DATE'] = '14/01/30' | ||
| 123 | + irf['VAL_DATE'] = '2014-01-30' | ||
| 124 | + irf['VAL_TIME'] = '00:00:00' | ||
| 125 | + irf['REF_TIME'] = 51544.0 | ||
| 126 | + irf['EA_NAME'] = 'EFF_AREA' | ||
| 127 | + irf['EA_HDUCLAS3'] = 'FULL-ENCLOSURE' | ||
| 128 | + irf['EA_HDUCLAS4'] = 'AEFF_2D' | ||
| 129 | + irf['EA_DOC'] = 'CAL/GEN/92-019' | ||
| 130 | + irf['EA_BOUNDS'] = copy.deepcopy(cal_bounds) | ||
| 131 | + irf['EA_DESC'] = 'CTA effective area' | ||
| 132 | + irf['PSF_NAME'] = 'RPSF' | ||
| 133 | + irf['PSF_HDUCLAS3'] = 'FULL-ENCLOSURE' | ||
| 134 | + irf['PSF_HDUCLAS4'] = 'PSF_3GAUSS' | ||
| 135 | + irf['PSF_DOC'] = 'CAL/GEN/92-020' | ||
| 136 | + irf['PSF_BOUNDS'] = copy.deepcopy(cal_bounds) | ||
| 137 | + irf['PSF_DESC'] = 'CTA point spread function' | ||
| 138 | + irf['EDISP_NAME'] = 'EDISP' | ||
| 139 | + irf['EDISP_HDUCLAS3'] = 'FULL-ENCLOSURE' | ||
| 140 | + irf['EDISP_HDUCLAS4'] = 'EDISP_2D' | ||
| 141 | + irf['EDISP_DOC'] = '???' | ||
| 142 | + irf['EDISP_BOUNDS'] = copy.deepcopy(cal_bounds) | ||
| 143 | + irf['EDISP_DESC'] = 'CTA energy dispersion' | ||
| 144 | + irf['BGD_NAME'] = 'BGD' | ||
| 145 | + irf['BGD_HDUCLAS3'] = 'FULL-ENCLOSURE' | ||
| 146 | + irf['BGD_HDUCLAS4'] = 'BKG_3D' | ||
| 147 | + irf['BGD_DOC'] = '???' | ||
| 148 | + irf['BGD_BOUNDS'] = copy.deepcopy(cal_bounds) | ||
| 149 | + irf['BGD_DESC'] = 'CTA background' | ||
| 150 | + | ||
| 151 | + # Set parameter dependent IRF information | ||
| 152 | + if self['psftype'].string() == 'King': | ||
| 153 | + irf['PSF_HDUCLAS4'] = 'PSF_KING' | ||
| 154 | + else: | ||
| 155 | + irf['PSF_HDUCLAS4'] = 'PSF_3GAUSS' | ||
| 142 | 156 | ||
| 143 | # Return metadata | 157 | # Return metadata |
| 144 | return irf | 158 | return irf |
| @@ -268,16 +282,20 @@ class csroot2caldb(ctools.cscript): | @@ -268,16 +282,20 @@ class csroot2caldb(ctools.cscript): | ||
| 268 | 282 | ||
| 269 | # Open HDUs | 283 | # Open HDUs |
| 270 | ds['HDU_EA'] = self._open_hdu(ds['EA_FITS'], "EFFECTIVE AREA", | 284 | ds['HDU_EA'] = self._open_hdu(ds['EA_FITS'], "EFFECTIVE AREA", |
| 271 | - irf['EA_NAME'], irf['EA_DOC'], | 285 | + irf['EA_NAME'], irf['EA_HDUCLAS3'], |
| 286 | + irf['EA_HDUCLAS4'], irf['EA_DOC'], | ||
| 272 | irf) | 287 | irf) |
| 273 | ds['HDU_PSF'] = self._open_hdu(ds['PSF_FITS'], "POINT SPREAD FUNCTION", | 288 | ds['HDU_PSF'] = self._open_hdu(ds['PSF_FITS'], "POINT SPREAD FUNCTION", |
| 274 | - irf['PSF_NAME'], irf['PSF_DOC'], | 289 | + irf['PSF_NAME'], irf['PSF_HDUCLAS3'], |
| 290 | + irf['PSF_HDUCLAS4'], irf['PSF_DOC'], | ||
| 275 | irf) | 291 | irf) |
| 276 | ds['HDU_EDISP'] = self._open_hdu(ds['EDISP_FITS'], "ENERGY DISPERSION", | 292 | ds['HDU_EDISP'] = self._open_hdu(ds['EDISP_FITS'], "ENERGY DISPERSION", |
| 277 | - irf['EDISP_NAME'], irf['EDISP_DOC'], | 293 | + irf['EDISP_NAME'], irf['EDISP_HDUCLAS3'], |
| 294 | + irf['EDISP_HDUCLAS4'], irf['EDISP_DOC'], | ||
| 278 | irf) | 295 | irf) |
| 279 | ds['HDU_BGD'] = self._open_hdu(ds['BGD_FITS'], "BACKGROUND", | 296 | ds['HDU_BGD'] = self._open_hdu(ds['BGD_FITS'], "BACKGROUND", |
| 280 | - irf['BGD_NAME'], irf['BGD_DOC'], | 297 | + irf['BGD_NAME'], irf['BGD_HDUCLAS3'], |
| 298 | + irf['BGD_HDUCLAS4'], irf['BGD_DOC'], | ||
| 281 | irf) | 299 | irf) |
| 282 | 300 | ||
| 283 | # Return | 301 | # Return |
| @@ -319,7 +337,7 @@ class csroot2caldb(ctools.cscript): | @@ -319,7 +337,7 @@ class csroot2caldb(ctools.cscript): | ||
| 319 | # Return | 337 | # Return |
| 320 | return | 338 | return |
| 321 | 339 | ||
| 322 | - def _open_hdu(self, fits, extname, name, doc, irf): | 340 | + def _open_hdu(self, fits, extname, name, hduclas3, hduclas4, doc, irf): |
| 323 | """ | 341 | """ |
| 324 | Open HDU | 342 | Open HDU |
| 325 | 343 | ||
| @@ -334,6 +352,10 @@ class csroot2caldb(ctools.cscript): | @@ -334,6 +352,10 @@ class csroot2caldb(ctools.cscript): | ||
| 334 | Extension name | 352 | Extension name |
| 335 | name : str | 353 | name : str |
| 336 | Name string | 354 | Name string |
| 355 | + hduclas3 : str | ||
| 356 | + HDU class 3 string | ||
| 357 | + hduclas4 : str | ||
| 358 | + HDU class 4 string | ||
| 337 | doc : str | 359 | doc : str |
| 338 | Document string | 360 | Document string |
| 339 | irf : dict | 361 | irf : dict |
| @@ -354,7 +376,9 @@ class csroot2caldb(ctools.cscript): | @@ -354,7 +376,9 @@ class csroot2caldb(ctools.cscript): | ||
| 354 | table.extname(extname) | 376 | table.extname(extname) |
| 355 | 377 | ||
| 356 | # Set OGIP keywords | 378 | # Set OGIP keywords |
| 357 | - self._set_ogip_keywords(table, doc, ['RESPONSE', name], irf) | 379 | + self._set_ogip_keywords(table, doc, |
| 380 | + ['RESPONSE', name, hduclas3, hduclas4], | ||
| 381 | + irf) | ||
| 358 | 382 | ||
| 359 | # Append table to FITS file | 383 | # Append table to FITS file |
| 360 | fits.append(table) | 384 | fits.append(table) |
| @@ -391,7 +415,7 @@ class csroot2caldb(ctools.cscript): | @@ -391,7 +415,7 @@ class csroot2caldb(ctools.cscript): | ||
| 391 | for i, item in enumerate(hduclas): | 415 | for i, item in enumerate(hduclas): |
| 392 | key = 'HDUCLAS%d' % (i+1) | 416 | key = 'HDUCLAS%d' % (i+1) |
| 393 | hdu.card(key, item, 'HDU class') | 417 | hdu.card(key, item, 'HDU class') |
| 394 | - hdu.card('HDUVERS', '1.0.0', 'HDU version') | 418 | + hdu.card('HDUVERS', '0.2', 'HDU version') |
| 395 | 419 | ||
| 396 | # Return | 420 | # Return |
| 397 | return | 421 | return |