Newer
Older
def __init__(self, config, focal_plane, chip, filt, imgKey0="", imgKey1="", imgKey2="", exptime=150., mjdTime="", ra_cen=None, dec_cen=None, pointing_type='MS', pointing_ID='0', subdir="./", prefix=""):
self.focal_plane = focal_plane
self.chip = chip
self.filt = filt
self.imgKey0 = imgKey0
self.imgKey1 = imgKey1
self.imgKey2 = imgKey2
self.exptime = exptime
self.mjdTime = mjdTime
if (ra_cen is not None) and (dec_cen is not None):
self.ra_cen = ra_cen
self.dec_cen = dec_cen
else:
self.ra_cen = config["obs_setting"]["ra_center"]
self.dec_cen = config["obs_setting"]["dec_center"]
exp_name = imgKey0 + "_%s_%s.fits"
self.chipLabel = focal_plane.getChipLabel(chip.chipID)
self.img_name = prefix + exp_name%(self.chipLabel, filt.filter_type)
# self.cat_name = self.img_name[:-5] + ".cat"
self.cat_name = 'MSC_' + config["obs_setting"]["date_obs"] + config["obs_setting"]["time_obs"] + "_" + str(pointing_ID).rjust(7, '0') + "_" + self.chipLabel.rjust(2,'0') + ".cat"
self.subdir = subdir
# hdr1 = "#ID ID_chip filter xImage yImage ra dec z mag flag SNR "
hdr1 = "#ID ID_chip filter xImage yImage ra dec z mag flag "
hdr2 = "thetaR bfrac hlr_disk hlr_bulge e1_disk e2_disk e1_bulge e2_bulge "
hdr3 = "e1PSF e2PSF e1 e2 g1 g2 e1OBS e2OBS "
hdr4 = "sed_type av redden "
hdr5 = "star_model teff logg feh\n"
# fmt1 = "%10d %4d %5s %10.3f %10.3f %15.6f %15.6f %7.4f %8.4f %2d %9.2f "
fmt1 = "%10d %4d %5s %10.3f %10.3f %15.6f %15.6f %7.4f %8.4f %2d "
fmt2 = "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f "
fmt3 = "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f "
fmt4 = "%2d %8.4f %8.4f "
fmt5 = "%10s %8.4f %8.4f %8.4f\n"
self.hdr = hdr1 + hdr2 + hdr3 + hdr4 + hdr5
self.fmt = fmt1 + fmt2 + fmt3 + fmt4 + fmt5
print("pointing_type = %s\n"%(pointing_type))
if pointing_type == 'MS':
self.cat = open(os.path.join(self.subdir, self.cat_name), "w")
print("Creating catalog file %s ...\n"%(os.path.join(self.subdir, self.cat_name)))
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def updateHDR(self, hdr):
hdrNew = [{"name":"RDNOISE", "value":self.chip.read_noise, "comment":"read noise in e-/pixel"},
{"name":"DARK", "value":self.chip.dark_noise, "comment":"Dark noise (e-/pixel/s)"},
{"name":"EXPTIME", "value":self.exptime, "comment":"exposure time in second"},
{"name":"GAIN", "value":self.chip.gain, "comment":"CCD gain in e-/ADU"},
{"name":"SATURATE","value":65535.0, "comment":"saturation level"},
{"name":"CCDCHIP", "value":int(self.chipLabel), "comment":"chip ID in the CCD mosaic"},
{"name":"FILTER", "value":self.filt.filter_type, "comment":"filter name"},
{"name":"MJD-OBS", "value":self.mjdTime, "comment":"Modified Julian Date (MJD) of observation"},
{"name":"DATE-OBS","value":self.imgKey1, "comment":"Date of observation"},
{"name":"EQUINOX", "value":2000.0},
{"name":"RADECSYS","value":"ICRS"},
{"name":"RA", "value":self.ra_cen, "comment":"telescope pointing center"},
{"name":"DEC", "value":self.dec_cen, "comment":"telescope pointing center"},
{"name":"OBJECT", "value":"CSS-OS"},
{"name":"WCSDIM", "value":2.0, "comment":"WCS Dimensionality"},
{"name":"EXTNAME", "value":"IM1", "comment":"Extension name"},
{"name":"BSCALE", "value":1.0},
{"name":"BZERO", "value":0.0},
{"name":"OBSID", "value":self.imgKey0, "comment":"Observation ID"},
{"name":"CCDNAME", "value":"ccd"+self.chipLabel,"comment":"CCD name"},
{"name":"RSPEED", "value":10.0, "comment":"Read speed"},
{"name":"CHIPTEMP","value":-100.0, "comment":"Chip temperature"},
{"name":"DATASEC", "value":"1:%d,1:%d"%(self.chip.npix_x,self.chip.npix_y), "comment":"Data section"},
{"name":"CCDSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"},
{"name":"NSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"},
{"name":"AUTHOR", "value":"CSST-Sim Group"},
{"name":"GROUP", "value":"Weak Lensing Working Group for CSST"}]
for item in hdrNew:
hdr.add_record(item)
return hdr
# def cat_add_obj(self, obj, pos_img, snr, pos_shear, g1, g2):
def cat_add_obj(self, obj, pos_img, pos_shear, g1, g2):
ximg = pos_img.x - self.chip.bound.xmin + 1.0
yimg = pos_img.y - self.chip.bound.ymin + 1.0
e1, e2, g1, g2, e1OBS, e2OBS = obj.getObservedEll(g1, g2)
if obj.type == 'galaxy':
line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge,
obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge,
pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0, 0, 0)
elif obj.type == "quasar":
line = self.fmt % (obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z,
obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0.0, 0.0, 0.0)
else:
line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, 0, 0.0, 0.0, obj.param['model_tag'], obj.param['teff'], obj.param['logg'],obj.param['feh'])
# line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS)