diff --git a/csst_ifs_sim/csst_ifs_sim.py b/csst_ifs_sim/csst_ifs_sim.py index 2283e026d192e8ca635d8a11c67abdcca11f451e..071ecc6ce12bc412294f1b01a22cb759c459bfed 100644 --- a/csst_ifs_sim/csst_ifs_sim.py +++ b/csst_ifs_sim/csst_ifs_sim.py @@ -356,7 +356,7 @@ class cosmicrays(): exposure time. """ - def __init__(self, log, image, exposuretime,crInfo=None, information=None): + def __init__(self, log, image, exposuretime, crInfo=None, information=None): """ Cosmic ray generation class. Can either draw events from distributions or set the energy of the events to a constant. @@ -376,7 +376,7 @@ class cosmicrays(): # set up the information dictionary, first with defaults and then overwrite with inputs if given self.information = (dict(cosmicraylengths='/home/yan/csst-master/data/cdf_cr_length.dat', - cosmicraydistance='/home/yan/csst-master/data/cdf_cr_total.dat',exptime=exposuretime)) + cosmicraydistance='/home/yan/csst-master/data/cdf_cr_total.dat', exptime=exposuretime)) if information is not None: self.information.update(information) @@ -2157,76 +2157,76 @@ class IFSsimulator(): return FlatMat #################################################################### - def getFrameTransferImg(self): - """ - - - Returns - ------- - None. - - """ - """ - get frame transfer image from original image of self.image_b and self.image_r - """ - overscan=320 - self.frame_b_4 = np.zeros((1024+overscan, 2048), dtype=float) - self.frame_b_3 = np.zeros((1024+overscan, 2048), dtype=float) - self.frame_b_2 = np.zeros((1024+overscan, 2048), dtype=float) - self.frame_b_1 = np.zeros((1024+overscan, 2048), dtype=float) - - self.frame_r_4 = np.zeros((1536+overscan, 3072), dtype=float) - self.frame_r_3 = np.zeros((1536+overscan, 3072), dtype=float) - self.frame_r_2 = np.zeros((1536+overscan, 3072), dtype=float) - self.frame_r_1 = np.zeros((1536+overscan, 3072), dtype=float) - - # OSH, part2 ,no change - b_2 = np.sum(self.image_b[0:1024, 0:2048], axis=0) - - # flip right to left of part1 - temp_b_1 = np.fliplr(self.image_b[0:1024, 2048:4096]) # left to right - b_1 = np.sum(temp_b_1, axis=0) - - # part 4, left to right and up to down - temp_b_4 = np.fliplr( - self.image_b[1024:1024+1024, 2048:2048+2048]) # left to right - b_4 = np.sum(temp_b_4, axis=0) - - # part 3,OSE, up to dwon - b_3 = np.sum(self.image_b[1024:1024+1024, 0:2048], axis=0) - #### - - for k in range(1024+overscan): - # part - self.frame_b_4[k, :] += b_4*0.09216/self.information['exptime'] - self.frame_b_3[k, :] += b_3*0.09216/self.information['exptime'] - self.frame_b_2[k, :] += b_2*0.09216/self.information['exptime'] - self.frame_b_1[k, :] += b_1*0.09216/self.information['exptime'] - - ################### - # red channle - # OSH, part2 ,no change - r_2 = np.sum(self.image_r[0:1536, 0:3072], axis=0) - - # # flip right to left of part1 - temp_r_1 = np.fliplr(self.image_r[0:1536, 3072:6144]) # left to right - r_1 = np.sum(temp_r_1, axis=0) - - # part 4, left to right and up to down - temp_r_4 = np.fliplr( - self.image_r[1536:1536+1536, 3072:6144]) # left to right - r_4 = np.sum(temp_r_4, axis=0) - - # part 3,OSE, up to dwon - r_3 = np.sum(self.image_r[1536:1536+1536, 0:3072], axis=0) - - for k in range(1536+overscan): - # part 4, OSH zone; - self.frame_r_4[k, :] += r_4*0.13824/self.information['exptime'] - self.frame_r_3[k, :] += r_3*0.13824/self.information['exptime'] - self.frame_r_2[k, :] += r_2*0.13824/self.information['exptime'] - self.frame_r_1[k, :] += r_1*0.13824/self.information['exptime'] - # end + def getFrameTransferImg(self): + """ + + + Returns + ------- + None. + + """ + """ + get frame transfer image from original image of self.image_b and self.image_r + """ + overscan=320 + self.frame_b_4 = np.zeros((1024+overscan, 2048), dtype=float) + self.frame_b_3 = np.zeros((1024+overscan, 2048), dtype=float) + self.frame_b_2 = np.zeros((1024+overscan, 2048), dtype=float) + self.frame_b_1 = np.zeros((1024+overscan, 2048), dtype=float) + + self.frame_r_4 = np.zeros((1536+overscan, 3072), dtype=float) + self.frame_r_3 = np.zeros((1536+overscan, 3072), dtype=float) + self.frame_r_2 = np.zeros((1536+overscan, 3072), dtype=float) + self.frame_r_1 = np.zeros((1536+overscan, 3072), dtype=float) + + # OSH, part2 ,no change + b_2 = np.sum(self.image_b[0:1024, 0:2048], axis=0) + + # flip right to left of part1 + temp_b_1 = np.fliplr(self.image_b[0:1024, 2048:4096]) # left to right + b_1 = np.sum(temp_b_1, axis=0) + + # part 4, left to right and up to down + temp_b_4 = np.fliplr( + self.image_b[1024:1024+1024, 2048:2048+2048]) # left to right + b_4 = np.sum(temp_b_4, axis=0) + + # part 3,OSE, up to dwon + b_3 = np.sum(self.image_b[1024:1024+1024, 0:2048], axis=0) + #### + + for k in range(1024+overscan): + # part + self.frame_b_4[k, :] += b_4*0.09216/self.information['exptime'] + self.frame_b_3[k, :] += b_3*0.09216/self.information['exptime'] + self.frame_b_2[k, :] += b_2*0.09216/self.information['exptime'] + self.frame_b_1[k, :] += b_1*0.09216/self.information['exptime'] + + ################### + # red channle + # OSH, part2 ,no change + r_2 = np.sum(self.image_r[0:1536, 0:3072], axis=0) + + # # flip right to left of part1 + temp_r_1 = np.fliplr(self.image_r[0:1536, 3072:6144]) # left to right + r_1 = np.sum(temp_r_1, axis=0) + + # part 4, left to right and up to down + temp_r_4 = np.fliplr( + self.image_r[1536:1536+1536, 3072:6144]) # left to right + r_4 = np.sum(temp_r_4, axis=0) + + # part 3,OSE, up to dwon + r_3 = np.sum(self.image_r[1536:1536+1536, 0:3072], axis=0) + + for k in range(1536+overscan): + # part 4, OSH zone; + self.frame_r_4[k, :] += r_4*0.13824/self.information['exptime'] + self.frame_r_3[k, :] += r_3*0.13824/self.information['exptime'] + self.frame_r_2[k, :] += r_2*0.13824/self.information['exptime'] + self.frame_r_1[k, :] += r_1*0.13824/self.information['exptime'] + # end ############################################################################### def applyflatfield(self, simnumber):