diff --git a/Catalog/C6_50sqdeg.py b/Catalog/C6_50sqdeg.py index 0c6d22b9deaf9a934ca23c4c6ad008ce0f44c00d..f13faa7f2df61a4205e49ef6d0def8301ef196a3 100644 --- a/Catalog/C6_50sqdeg.py +++ b/Catalog/C6_50sqdeg.py @@ -6,7 +6,6 @@ import h5py as h5 import healpy as hp import astropy.constants as cons import traceback -import cmath from astropy.coordinates import spherical_to_cartesian from astropy.table import Table from scipy import interpolate @@ -222,13 +221,17 @@ class Catalog(CatalogBase): param['e2'] = gals['ellipticity_true'][igals][1] # For shape calculation - - param['ell_total'] = np.sqrt(param['e1']**2 + param['e2']**2) + param['e1'], param['e2'], param['ell_total'] = self.rotate_ellipticity( + e1=gals['ellipticity_true'][igals][0], + e2=gals['ellipticity_true'][igals][1], + rotation=self.rotation, + unit='radians') + # param['ell_total'] = np.sqrt(param['e1']**2 + param['e2']**2) if param['ell_total'] > 0.9: continue - phi_e = cmath.phase(complex(param['e1'], param['e2'])) - param['e1'] = param['ell_total'] * np.cos(phi_e + 2*self.rotation) - param['e2'] = param['ell_total'] * np.sin(phi_e + 2*self.rotation) + # phi_e = cmath.phase(complex(param['e1'], param['e2'])) + # param['e1'] = param['ell_total'] * np.cos(phi_e + 2*self.rotation) + # param['e2'] = param['ell_total'] * np.sin(phi_e + 2*self.rotation) param['e1_disk'] = param['e1'] param['e2_disk'] = param['e2'] diff --git a/ObservationSim/MockObject/CatalogBase.py b/ObservationSim/MockObject/CatalogBase.py index a21edbaf4e8dd561ba28cd71cdbdfced98602eab..a5e7e6b84e2cb4a6970b6f0af01c4aad8884b386 100644 --- a/ObservationSim/MockObject/CatalogBase.py +++ b/ObservationSim/MockObject/CatalogBase.py @@ -1,6 +1,7 @@ import numpy as np import galsim import copy +import cmath from astropy.table import Table from abc import abstractmethod, ABCMeta @@ -72,6 +73,16 @@ class CatalogBase(metaclass=ABCMeta): "parallax":1e-9 } return param + + @staticmethod + def rotate_ellipticity(e1, e2, rotation=0., unit='radians'): + if unit == 'degree': + rotation = np.radians(rotation) + e_total = np.sqrt(e1**2 + e2**2) + phi = cmath.phase(complex(e1, e2)) + e1 = e_total * np.cos(phi + 2*rotation) + e2 = e_total * np.sin(phi + 2*rotation) + return e1, e2, e_total @staticmethod def convert_sed(mag, sed, target_filt, norm_filt=None):