From 22b1b8e83f1cb4e3a6a4113e3297fdb16dd47189 Mon Sep 17 00:00:00 2001
From: yuedong <fangyuedong@qxslab.cn>
Date: Mon, 4 Jul 2022 17:58:23 +0800
Subject: [PATCH] change the logical of adding Poisson noise in Chip.py

---
 ObservationSim/Instrument/Chip/Chip.py | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/ObservationSim/Instrument/Chip/Chip.py b/ObservationSim/Instrument/Chip/Chip.py
index d54cbeb..1465f27 100755
--- a/ObservationSim/Instrument/Chip/Chip.py
+++ b/ObservationSim/Instrument/Chip/Chip.py
@@ -316,9 +316,22 @@ class Chip(FocalPlane):
             BoolDeadPix = False
         self.logger = logger
 
+        # Get Poisson noise generator
+        seed = int(config["random_seeds"]["seed_poisson"]) + pointing_ID*30 + self.chipID
+        rng_poisson = galsim.BaseDeviate(seed)
+        poisson_noise = galsim.PoissonNoise(rng_poisson, sky_level=0.)
+
         # Add sky background
         if sky_map is None:
             sky_map = filt.getSkyNoise(exptime=self.exptime)
+            sky_map = sky_map * np.ones_like(img.array)
+            sky_map = galsim.Image(array=sky_map)
+            # Apply Poisson noise to the sky map
+            # (NOTE): only for photometric chips
+            # since it utilize the photon shooting
+            # to draw stamps
+            if self.survey_type == "photometric":
+                sky_map.addNoise(poisson_noise)
         elif img.array.shape != sky_map.shape:
             raise ValueError("The shape img and sky_map must be equal.")
         elif tel is not None: # If sky_map is given in flux
@@ -361,11 +374,11 @@ class Chip(FocalPlane):
                 del shutt_gsimg
             del shuttimg
 
-        # Add Poisson noise
-        seed = int(config["random_seeds"]["seed_poisson"]) + pointing_ID*30 + self.chipID
-        rng_poisson = galsim.BaseDeviate(seed)
-        poisson_noise = galsim.PoissonNoise(rng_poisson, sky_level=0.)
-        img.addNoise(poisson_noise)
+        # Add Poisson noise to the resulting images
+        # (NOTE): this can only applied to the slitless image
+        # since it dose not use photon shooting to draw stamps
+        if self.survey_type == "spectroscopic":
+            img.addNoise(poisson_noise)
 
         # Add cosmic-rays
         if config["ins_effects"]["cosmic_ray"] == True and pointing_type=='MS':
-- 
GitLab