Skip to content

Commit

Permalink
Update lamostabs.py
Browse files Browse the repository at this point in the history
  • Loading branch information
wang1hm committed Mar 13, 2023
1 parent 2cc83b7 commit 64307b2
Showing 1 changed file with 40 additions and 4 deletions.
44 changes: 40 additions & 4 deletions lamostabs/lamostabs.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,9 @@ def __init__(self, effec_wave, lam, RC):
self.RC = RC




class CaliFlux():
"""A class for calibration of the flux"""
def __init__(self, wave, flux, err, mag, emag, z=None, ra=None, dec=None, plateid=None,
def __init__(self, lam, flux, err, mag, emag, z=None, ra=None, dec=None, plateid=None,
mjd=None, fiberid=None, and_mask=None, or_mask=None):
"""Initialize the CaliFlux object.
Expand Down Expand Up @@ -65,7 +63,7 @@ def __init__(self, wave, flux, err, mag, emag, z=None, ra=None, dec=None, platei
or_mask : 1-D np.array, optional
Or mask of the flux, by default None
"""
self.wave = np.asarray(wave, dtype=np.float64)
self.lam = np.asarray(lam, dtype=np.float64)
self.flux = np.asarray(flux, dtype=np.float64)
self.err = np.asarray(err, dtype=np.float64)
self.sn_obs = self.flux/self.err
Expand Down Expand Up @@ -106,4 +104,42 @@ def RedBlue(self):
psfMag_g,psfMag_r,psfMag_i,psfMag_z = self.mag[0],self.mag[1],self.mag[2],self.mag[3]
psfMagErr_g, psfMagErr_r, psfMagErr_i, psfMagErr_z = self.emag[0],self.emag[1],self.emag[2],self.emag[3]
lam_g, lam_r, lam_i, lam_z, RC_g, RC_r, RC_i, RC_z = Filter.lam[0],Filter.lam[1],Filter.lam[2],Filter.mag[3],Filter.RC[0],Filter.RC[1],Filter.RC[2],Filter.Rc[3]
wave_index1 = np.where((3900<self.lam) &(self.lam < 4100))
wave_index2 = np.where((7900<self.lam) &(self.lam < 8100))
flux1 = np.median(self.flux[wave_index1])
flux2 = np.median(self.flux[wave_index2])
flux_max = np.max([flux1,flux2])
flux_min = np.min([flux1,flux2])
lam_min=int(min(self.lam))+1
lam_max=int(max(self.lam))
lam_bin=np.arange(0,lam_max-lam_min,1)+lam_min

#set the bin for griz band
lam_bin_g = lam_bin[np.where((min(lam_g)<lam_bin)&(lam_bin < max(lam_g)))]
lam_bin_r = lam_bin[np.where((min(lam_r)<lam_bin)&(lam_bin < max(lam_r)))]
lam_bin_i = lam_bin[np.where((min(lam_i)<lam_bin)&(lam_bin < max(lam_i)))]
#lam_bin_z = lam_bin[np.where((min(lam_z)<lam_bin)&(lam_bin < max(lam_z)))]

#set the bin for RC
f_g = sp_interp1d(lam_g, RC_g)
RC_g_bin = f_g(lam_bin_g)
f_r = sp_interp1d(lam_r, RC_r)
RC_r_bin = f_r(lam_bin_r)
f_i = sp_interp1d(lam_i, RC_i)
RC_i_bin = f_i(lam_bin_i)
#f_z = sp_interp1d(lam_z, RC_z)
#RC_z_bin = f_z(lam_bin_z)

#interpolate to get the flux for lambda bin
f_fl = sp_interp1d(self.lam,self.flux)
flux_bin_g = f_fl(lam_bin_g)
flux_bin_r = f_fl(lam_bin_r)
flux_bin_i = f_fl(lam_bin_i)
#flux_bin_z = f_fl(lam_bin_z)

SumFlux_g = np.sum(RC_g_bin*flux_bin_g*lam_bin_g)/np.sum(RC_g_bin*lam_bin_g)
SumFlux_r = np.sum(RC_r_bin*flux_bin_r*lam_bin_r)/np.sum(RC_r_bin*lam_bin_r)
SumFlux_i = np.sum(RC_i_bin*flux_bin_i*lam_bin_i)/np.sum(RC_i_bin*lam_bin_i)
#SumFlux_z = np.sum(RC_z_bin*flux_bin_z*lam_bin_z)/np.sum(RC_z_bin*lam_bin_z)


0 comments on commit 64307b2

Please sign in to comment.