Commit 3a8a4fbc authored by Fang Yuedong's avatar Fang Yuedong
Browse files

1. Add margin options for magnitude cuts

2. swith to use "interFlux" in CatalogBase.py,
so now the implementation for number of photons been
shot in Photometric and Spectroscopic are the same
3. Minor config option fix in run_sim.py
parent b7ea47e9
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -39,12 +39,12 @@ class Filter(object):
        self.mag_limiting = filter_param.param[filter_type][7]
        self.mag_limiting = filter_param.param[filter_type][7]
        # self.filter_dir = filter_param.filter_dir
        # self.filter_dir = filter_param.filter_dir


    def is_too_bright(self, mag):
    def is_too_bright(self, mag, margin=-2.5):
        return mag <= self.mag_saturation - 2.5
        return mag <= self.mag_saturation + margin
        # return mag <= 14.0
        # return mag <= 14.0


    def is_too_dim(self, mag):
    def is_too_dim(self, mag, margin=1.0):
        return mag >= self.mag_limiting + 1.0
        return mag >= self.mag_limiting + margin


    def _get_bandpasses(self, filter_dir=None, unit='A'):
    def _get_bandpasses(self, filter_dir=None, unit='A'):
        if self.filter_id < 7:  # Photometric
        if self.filter_id < 7:  # Photometric
+2 −2
Original line number Original line Diff line number Diff line
@@ -88,7 +88,7 @@ class CatalogBase(metaclass=ABCMeta):
            bandpass=bandpass
            bandpass=bandpass
        )
        )
        if target_filt.survey_type == "photometric":
        if target_filt.survey_type == "photometric":
            return sed_photon, mag_csst
            return sed_photon, mag_csst, interFlux
        elif target_filt.survey_type == "spectroscopic":
        elif target_filt.survey_type == "spectroscopic":
            del sed_photon
            del sed_photon
            return sed, mag_csst
            return sed, mag_csst, interFlux
 No newline at end of file
 No newline at end of file
+9 −4
Original line number Original line Diff line number Diff line
@@ -55,15 +55,20 @@ class MockObject(object):
        # (TEST) stamp size
        # (TEST) stamp size
        # return 13.0
        # return 13.0
        
        
    def getFluxFilter(self, filt):
        return self.param["flux_%s"%filt.filter_type]

    def getNumPhotons(self, flux, tel, exptime=150.):
    def getNumPhotons(self, flux, tel, exptime=150.):
        pupil_area = tel.pupil_area * (100.)**2 # m^2 to cm^2
        pupil_area = tel.pupil_area * (100.)**2 # m^2 to cm^2
        return flux * pupil_area * exptime
        return flux * pupil_area * exptime


    def getElectronFluxFilt(self, filt, tel, exptime=150.):
    def getElectronFluxFilt(self, filt, tel, exptime=150.):
        photonEnergy = filt.getPhotonE()
        # photonEnergy = filt.getPhotonE()
        flux = magToFlux(self.getMagFilter(filt))
        # flux = magToFlux(self.getMagFilter(filt))
        factor = 1.0e4 * flux/photonEnergy * VC_A * (1.0/filt.blue_limit - 1.0/filt.red_limit)
        # factor = 1.0e4 * flux/photonEnergy * VC_A * (1.0/filt.blue_limit - 1.0/filt.red_limit)
        return factor * filt.efficiency * tel.pupil_area * exptime
        # return factor * filt.efficiency * tel.pupil_area * exptime
        flux = self.getFluxFilter(filt)
        return flux * tel.pupil_area * exptime


    def getPosWorld(self):
    def getPosWorld(self):
        ra = self.param["ra"]
        ra = self.param["ra"]
+8 −4
Original line number Original line Diff line number Diff line
@@ -193,13 +193,13 @@ class Observation(object):
                try:
                try:
                    sed_data = self.cat.load_sed(obj)
                    sed_data = self.cat.load_sed(obj)
                    norm_filt = self.cat.load_norm_filt(obj)
                    norm_filt = self.cat.load_norm_filt(obj)
                    obj.sed, obj.param["mag_%s"%filt.filter_type] = self.cat.convert_sed(
                    obj.sed, obj.param["mag_%s"%filt.filter_type], obj.param["flux_%s"%filt.filter_type] = self.cat.convert_sed(
                        mag=obj.param["mag_use_normal"],
                        mag=obj.param["mag_use_normal"],
                        sed=sed_data,
                        sed=sed_data,
                        target_filt=filt, 
                        target_filt=filt, 
                        norm_filt=norm_filt,
                        norm_filt=norm_filt,
                    )
                    )
                    _, obj.param["mag_%s"%cut_filter.filter_type] = self.cat.convert_sed(
                    _, obj.param["mag_%s"%cut_filter.filter_type], obj.param["flux_%s"%cut_filter.filter_type] = self.cat.convert_sed(
                        mag=obj.param["mag_use_normal"],
                        mag=obj.param["mag_use_normal"],
                        sed=sed_data,
                        sed=sed_data,
                        target_filt=cut_filter, 
                        target_filt=cut_filter, 
@@ -216,13 +216,17 @@ class Observation(object):
                # Exclude very bright/dim objects (for now)
                # Exclude very bright/dim objects (for now)
                # if filt.is_too_bright(mag=obj.getMagFilter(filt)):
                # if filt.is_too_bright(mag=obj.getMagFilter(filt)):
                # if filt.is_too_bright(mag=obj.mag_use_normal):
                # if filt.is_too_bright(mag=obj.mag_use_normal):
                if cut_filter.is_too_bright(mag=obj.param["mag_%s"%self.config["obs_setting"]["cut_in_band"].lower()]):
                if cut_filter.is_too_bright(
                    mag=obj.param["mag_%s"%self.config["obs_setting"]["cut_in_band"].lower()],
                    margin=self.config["obs_setting"]["mag_sat_margin"]):
                    # print("obj too birght!!", flush=True)
                    # print("obj too birght!!", flush=True)
                    if obj.type != 'galaxy':
                    if obj.type != 'galaxy':
                        bright_obj += 1
                        bright_obj += 1
                        obj.unload_SED()
                        obj.unload_SED()
                        continue
                        continue
                if filt.is_too_dim(mag=obj.getMagFilter(filt)):
                if filt.is_too_dim(
                    mag=obj.getMagFilter(filt),
                    margin=self.config["obs_setting"]["mag_lim_margin"]):
                # if cut_filter.is_too_dim(mag=obj.param["mag_%s"%self.config["obs_setting"]["cut_in_band"].lower()]):
                # if cut_filter.is_too_dim(mag=obj.param["mag_%s"%self.config["obs_setting"]["cut_in_band"].lower()]):
                    # print("obj too dim!!", flush=True)
                    # print("obj too dim!!", flush=True)
                    dim_obj += 1
                    dim_obj += 1
+25 −17
Original line number Original line Diff line number Diff line
@@ -12,14 +12,16 @@
# work_dir: "/public/home/fangyuedong/sim_code_release/CSST/test/"
# work_dir: "/public/home/fangyuedong/sim_code_release/CSST/test/"
work_dir: "/public/home/fangyuedong/test/CSST/workplace/"
work_dir: "/public/home/fangyuedong/test/CSST/workplace/"
data_dir: "/data/simudata/CSSOSDataProductsSims/data/"
data_dir: "/data/simudata/CSSOSDataProductsSims/data/"
run_name: "TEST_16channel_off"
run_name: "v0.5_TEST"


# (Optional) a file of point list 
# (Optional) a file of point list 
# if you just want to run default pointing:
# if you just want to run default pointing:
# - pointing_dir: null
# - pointing_dir: null
# - pointing_file: null
# - pointing_file: null
pointing_dir: "/data/simudata/CSSOSDataProductsSims/data/"
# pointing_dir: "/data/simudata/CSSOSDataProductsSims/data/"
pointing_dir: "/public/home/fangyuedong/test/CSST/test_20220622/"
pointing_file: "pointing_test_NGP_2.17.dat"
pointing_file: "pointing_test_NGP_2.17.dat"
# pointing_file: "pointing_test_case2.dat"


# Whether to use MPI
# Whether to use MPI
run_option:
run_option:
@@ -79,7 +81,7 @@ obs_setting:
  # - give a list of indexes of chips: [ip_1, ip_2...]
  # - give a list of indexes of chips: [ip_1, ip_2...]
  # - run all chips: null
  # - run all chips: null
  # Note: for all pointings
  # Note: for all pointings
  run_chips: [24]
  run_chips: null


  # Whether to enable astrometric modeling
  # Whether to enable astrometric modeling
  # astrometric_lib: "libshao.so"
  # astrometric_lib: "libshao.so"
@@ -88,6 +90,12 @@ obs_setting:
  # Cut by saturation/limiting magnitude in which band?
  # Cut by saturation/limiting magnitude in which band?
  cut_in_band: "g"
  cut_in_band: "g"


  # saturation magnitude margin
  mag_sat_margin: -2.5

  # limiting magnitude margin
  mag_lim_margin: +1.0

###############################################
###############################################
# Input path setting
# Input path setting
###############################################
###############################################
Loading