def __init__(self,clustername): self.prefix=clustername self.image24=homedir+'research/LocalClusters/Images/'+self.prefix+'/24um/Full'+self.prefix+'ch1rf_mosaic_minus_median_extract.fits' self.noise24=homedir+'research/LocalClusters/Images/'+self.prefix+'/24um/Full'+self.prefix+'ch1rf_mosaic_unc.fits' if (clustername.find('A1367') > -1): self.image24='/home/rfinn/research/LocalClusters/Images/'+self.prefix+'/24um/'+self.prefix+'ch1r1_mosaic_minus_median_extract.fits' self.noise24='/home/rfinn/research/LocalClusters/Images/'+self.prefix+'/24um/'+self.prefix+'ch1r1_mosaic_unc.fits' elif (clustername.find('Herc')>-1):#for Abell 1367 and Hercules cluster self.image24='/home/rfinn/research/LocalClusters/Images/'+self.prefix+'/24um/'+self.prefix+'ch1r1_mosaic_minus_median_extract.fits' self.noise24='/home/rfinn/research/LocalClusters/Images/'+self.prefix+'/24um/'+self.prefix+'ch1r1_mosaic_unc.fits' # read NSA table for each cluster infile=homedir+'research/NSA/'+self.prefix+'_NSA.Fits' self.ndat=atpy.Table(infile,type='fits') self.nsadir=homedir+'research/NSA/' self.cra=clusterRA[self.prefix] self.cdec=clusterDec[self.prefix] self.cz=clusterz[self.prefix] self.biweightvel=clusterbiweightcenter[self.prefix] self.biweightscale=clusterbiweightscale[self.prefix] self.r200=2.02*(self.biweightscale)/1000./sqrt(OmegaL+OmegaM*(1.+self.cz)**3)*H0/70. # in Mpc self.r200deg=self.r200*1000./my.DA(self.cz,h)/3600. self.cdMpc=self.biweightvel/H0 self.cdcm=self.cdMpc*3.e24 self.csigma=self.biweightscale self.mcl=my.clusterMass(self.csigma,self.cz,h) self.AngDistance=my.DA(self.cz,h)
def __init__(self,clustername): #Get current path so program can tell if this is being run on Becky or Rose's computer self.prefix=clustername self.cra=clusterRA[self.prefix] self.cdec=clusterDec[self.prefix] self.cz=clusterz[self.prefix] self.biweightvel=clustercbi[self.prefix] self.biweightscale=clustersbi[self.prefix] self.r200=2.02*(self.biweightscale)/1000./sqrt(OmegaL+OmegaM*(1.+self.cz)**3)*H0/70. # in Mpc self.r200deg=self.r200*1000./my.DA(self.cz,h)/3600. self.cdMpc=self.biweightvel/H0 self.cdcm=self.cdMpc*3.e24 self.csigma=self.biweightscale self.mcl=my.clusterMass(self.csigma,self.cz,h) self.AngDistance=my.DA(self.cz,h) mastertable=homedir+'research/LocalClusters/MasterTables/'+clustername+'mastertable.fits'
def __init__(self, clustername): self.prefix = clustername # read NSA table for each cluster infile = homedir + 'research/NSA/' + self.prefix + '_NSA.Fits' self.ndat = fits.getdata(infile) self.nsadir = homedir + 'research/NSA/' self.cra = clusterRA[self.prefix] self.cdec = clusterDec[self.prefix] self.cz = clusterz[self.prefix] self.biweightvel = clusterbiweightcenter[self.prefix] self.biweightscale = clusterbiweightscale[self.prefix] self.r200 = 2.02 * (self.biweightscale) / 1000. / sqrt( OmegaL + OmegaM * (1. + self.cz)**3) * H0 / 70. # in Mpc self.r200deg = self.r200 * 1000. / my.DA(self.cz, h) / 3600. self.cdMpc = self.biweightvel / H0 self.cdcm = self.cdMpc * 3.e24 self.csigma = self.biweightscale self.mcl = my.clusterMass(self.csigma, self.cz, h) self.AngDistance = my.DA(self.cz, h) self.sdssflag = (self.ndat.ISDSS > -1) & (self.ndat.ABSMAG[:, 4] < args.magnitudecut)
def __init__(self,clustername): #Get current path so program can tell if this is being run on Becky or Rose's computer self.prefix=clustername self.john_prefix=john_prefix[self.prefix] self.cra=clusterRA[self.prefix] self.cdec=clusterDec[self.prefix] self.cz=clusterz[self.prefix] self.biweightvel=clusterbiweightcenter[self.prefix] self.biweightscale=clusterbiweightscale[self.prefix] self.r200=2.02*(self.biweightscale)/1000./sqrt(OmegaL+OmegaM*(1.+self.cz)**3)*H0/70. # in Mpc self.r200deg=self.r200*1000./my.DA(self.biweightvel/3.e5,h)/3600. self.cdMpc=self.biweightvel/H0 self.cdcm=self.cdMpc*3.e24 self.csigma=self.biweightscale self.mcl=my.clusterMass(self.biweightscale,self.biweightvel/3.e5,h) self.cLx=clusterLx[self.prefix] self.mingalaxysize=mingalaxysize_kpc/my.DA(self.biweightvel/3.e5,h) #infile=homedir+'research/LocalClusters/NSAmastertables/'+clustername+'_NSAmastertable.fits' infile=homedir+'research/LocalClusters/NSAmastertables/NSAwithAGC/'+clustername+'_NSAmastertable_topcat.fits' self.cutoutpath=homedir+'research/LocalClusters/cutouts/'+self.prefix+'/' #infile='/home/rfinn/LocalClusters/MasterTables/'+clustername+'mastertable.fits' self.n=atpy.Table(infile) infile=homedir+'research/LocalClusters/NSAmastertables/'+clustername+'_NSAmastertable.fits' self.nsa=atpy.Table(infile) # read in WISE catalogs infile=homedir+'research/LocalClusters/NSAmastertables/WISETables/'+clustername+'_WISE_NSA.fits' self.wise=atpy.Table(infile) # read in Galaxy Zoo catalogs infile=homedir+'research/LocalClusters/NSAmastertables/GalaxyZooTables/'+clustername+'_GalaxyZoo.fits' self.zoo=atpy.Table(infile) #self.zooflag=self.zoo.zoo_match_flag | self.zoo.zoo_phot_match_flag # read in GIM2D catalogs infile=homedir+'research/LocalClusters/NSAmastertables/SimardGIM2D/'+clustername+'_GIM2D.fits' self.gim2d=atpy.Table(infile) # fields with _1 are from bulge+disk; fields with _2 are from pure sersic fit infile=homedir+'research/LocalClusters/NSAmastertables/Sex24Tables/'+clustername+'_sex24.fits' self.sex24=atpy.Table(infile) infile=homedir+'research/LocalClusters/NSAmastertables/AGCTables/'+clustername+'_AGC.fits' self.agc=atpy.Table(infile) sersicparam24_file=homedir+'research/LocalClusters/NSAmastertables/GalfitSersicResults/'+self.prefix+'_GalfitSersicParam_24.fits' self.galfit24=atpy.Table(sersicparam24_file) infile=homedir+'research/LocalClusters/NSAmastertables/LocalDensityTables/'+clustername+'_localdensity.fits' self.ld=atpy.Table(infile) infile=homedir+'research/LocalClusters/NSAmastertables/CharyElbazTables/'+clustername+'_ce_lir.fits' self.ce=atpy.Table(infile) self.snrse=abs(self.ce.FLUX24/self.ce.FLUX24ERR) # read in John's Lir catalogs - for his members only infile=homedir+'research/LocalClusters/NSAmastertables/MoustakasLir/'+self.john_prefix+'_lir.fits' self.lir=atpy.Table(infile,type='fits') self.memb_id=self.lir.NSAID # calculating magnitudes from fluxes provided from NSA # # m = 22.5 - 2.5 log_10 (flux_nanomaggies) # from http://www.sdss3.org/dr8/algorithms/magnitudes.php#nmgy self.nsamag=22.5-2.5*log10(self.n.NMGY) self.sdssLr=10.**(-1*(self.n.ABSMAG[:,4]-SolarMag['r'])/2.5) a,b=bellgr['r'] self.stellarmass=10.**(-1.*a+b*(self.n.ABSMAG[:,3]-self.n.ABSMAG[:,4]))*self.sdssLr self.sdssLu=10.**(-1*(self.n.ABSMAG[:,2]-SolarMag['u'])/2.5) self.sdssLg=10.**(-1*(self.n.ABSMAG[:,3]-SolarMag['g'])/2.5) self.sdssLi=10.**(-1*(self.n.ABSMAG[:,5]-SolarMag['i'])/2.5) self.sdssLz=10.**(-1*(self.n.ABSMAG[:,6]-SolarMag['z'])/2.5) self.AngDistanceCl=my.DA(self.cz,h) self.AngDistanceAll=zeros(len(self.n.ZDIST),'f') for i in range(len(self.n.ZDIST)): self.AngDistanceAll[i]=my.DA(self.n.ZDIST[i],h) # FOR BACKWARDS COMPATABILITY WITH EXISTING CODE # data from AGC-based mastertables self.agcflag=self.agc.AGCMATCHFLAG self.HIflag=(self.agc.FLUX100 > 0) self.sdssflag=self.n.SDSSflag self.sdssphotflag=self.n.SDSSphotflag self.mpaflag=self.n.MPAFLAG self.apexflag=self.n.APEXflag self.sexsdssflag=self.n.SEXSDSSflag self.sex24flag=self.n.SEX24FLAG self.agcvoptflag=(self.agc.VOPT > 0) self.agcnumber=self.agc.AGCNUMBER self.raagc=self.agc.RA self.decagc=self.agc.DEC self.a100=self.agc.A100 self.b100=self.agc.B100 self.mag10=self.agc.MAG10 self.posang=self.agc.POSANG self.bsteintype=self.agc.BSTEINTYPE self.vopt=self.agc.VOPT self.verr=self.agc.VERR self.vsource=self.agc.VSOURCE self.flux100=self.agc.FLUX100 self.rms100=self.agc.RMS100 self.v21=self.agc.V21 self.width=self.agc.WIDTH self.widtherr=self.agc.WIDTHERR #sdss info self.sdssra=self.n.SDSSRA self.sdssdec=self.n.SDSSDEC self.sdssphotra=self.n.SDSSphotRA self.sdssphotdec=self.n.SDSSphotDEC self.sdssmag=self.n.SDSSMAG self.sdssu=self.sdssmag[:,0] self.sdssg=self.sdssmag[:,1] self.sdssr=self.sdssmag[:,2] self.sdssi=self.sdssmag[:,3] self.sdssz=self.sdssmag[:,4] self.sdssmagerr=self.n.SDSSMAGERR self.sdssuerr=self.sdssmagerr[:,0] self.sdssgerr=self.sdssmagerr[:,1] self.sdssrerr=self.sdssmagerr[:,2] self.sdssierr=self.sdssmagerr[:,3] self.sdsszerr=self.sdssmagerr[:,4] self.sdssspecz=self.n.SDSSSPECZ self.sdssvopt=self.n.SDSSVOPT self.sdsshaew=self.n.SDSSHAEW self.sdsshaewerr=self.n.SDSSHAEWERR self.sdssplate=self.n.SDSSPLATE self.sdssfiberid=self.n.SDSSFIBERID self.sdsstile=self.n.SDSSTILE self.sdssrun=self.n.SDSSRUN self.sdssrerun=self.n.SDSSRERUN self.sdsscamcol=self.n.SDSSCAMCOL self.sdssfield=self.n.SDSSFIELD self.mpahalpha=self.n.MPAHALPHA self.mpahbeta=self.n.MPAHBETA self.mpao3=self.n.MPAOIII self.mpan2=self.n.MPANII #sextractor info self.numberser=self.n.NUMBERSER self.ximageser=self.n.XIMAGESER self.yimageser=self.n.YIMAGESER self.xminimageser=self.n.XMINIMAGESER self.xmaximageser=self.n.XMAXIMAGESER self.yminimageser=self.n.YMINIMAGESER self.raser=self.n.RASER self.decser=self.n.DECSER self.fluxisoser=self.n.FLUXISOSER self.fluxerrisoser=self.n.FLUXERRISOSER self.magisoser=self.n.MAGISOSER self.magerrisoser=self.n.MAGERRISOSER self.fluxautoser=self.n.FLUXAUTOSER self.fluxerrautoser=self.n.FLUXERRAUTOSER self.magautoser=self.n.MAGAUTOSER self.magerrautoser=self.n.MAGERRAUTOSER self.fluxpetroser=self.n.FLUXPETROSER self.fluxerrpetroser=self.n.FLUXERRPETROSER self.magpetroser=self.n.MAGPETROSER self.magerrpetroser=self.n.MAGERRPETROSER self.kronradser=self.n.KRONRADSER#kron radius self.petroradser=self.n.PETRORADSER#petrosian radius self.fluxradser=self.n.FLUXRADSER#1/2 light radius self.isoareaser=self.n.ISOAREASER self.aworldser=self.n.AWORLDSER self.bworldser=self.n.BWORLDSER self.thetaser=self.n.THETASER self.errthetaser=self.n.ERRTHETASER self.thetaj2000ser=self.n.THETAJ2000SER self.errthetaj2000ser=self.n.ERRTHETAJ2000SER self.elongser=self.n.ELONGATIONSER self.elliptser=self.n.ELLIPTICITYSER self.fwhmser=self.n.FWHMSER self.flagsser=self.n.FLAGSSER self.classstarser=self.n.CLASSSTARSER #SEXTRACTOR output 24 micron data self.numberse24=self.n.NUMBERSE24 self.ximagese24=self.n.XIMAGESE24 self.yimagese24=self.n.YIMAGESE24 self.xminimagese24=self.n.XMINIMAGESE24 self.xmaximagese24=self.n.XMAXIMAGESE24 self.xminimagese24=self.n.YMINIMAGESE24 self.rase24=self.n.RASE24 self.decse24=self.n.DECSE24 self.fluxisose24=self.n.FLUXISOSE24 self.fluxerrisose24=self.n.FLUXERRISOSE24 self.magisose24=self.n.MAGISOSE24 self.magerrisose24=self.n.MAGERRISOSE24 self.fluxautose24=self.n.FLUXAUTOSE24 self.fluxerrautose24=self.n.FLUXERRAUTOSE24 self.magautose24=self.n.MAGAUTOSE24 self.magerrautose24=self.n.MAGERRAUTOSE24 self.fluxpetrose24=self.n.FLUXPETROSE24 self.fluxerrpetrose24=self.n.FLUXERRPETROSE24 self.magpetrose24=self.n.MAGPETROSE24 self.magerrpetrose24=self.n.MAGERRPETROSE24 self.kronradse24=self.n.KRONRADSE24 self.petroradse24=self.n.PETRORADSE24 self.fluxradse24=self.n.FLUXRADSE24 self.isoarease24=self.n.ISOAREASE24 self.aworldse24=self.n.AWORLDSE24 self.bworldse24=self.n.BWORLDSE24 self.thetase24=self.n.THETASE24 self.errthetase24=self.n.ERRTHETASE24 self.thetaj2000se24=self.n.THETAJ2000SE24 self.errthetaj2000se24=self.n.ERRTHETAJ2000SE24 self.elongse24=self.n.ELONGATIONSE24 self.elliptse24=self.n.ELLIPTICITYSE24 self.fwhmse24=self.n.FWHMSE24 self.flagsse24=self.n.FLAGSSE24 self.classstarse24=self.n.CLASSSTARSE24 self.f24dist=self.fluxautose24[self.sex24flag] #apex output self.mipsra=self.n.MIPSRA self.mipsdec=self.n.MIPSDEC self.mipsflux=self.n.MIPSFLUX self.mipsfluxerr=self.n.MIPSFLUXERR self.mipssnr=self.n.MIPSSNR self.mipsdeblend=self.n.MIPSDEBLEND self.mipsfluxap1=self.n.MIPSFLUXAP1 self.mipsfluxap1err=self.n.MIPSFLUXAP1ERR self.mipsfluxap2=self.n.MIPSFLUXAP2 self.mipsfluxap2err=self.n.MIPSFLUXAP2ERR self.mipsfluxap3=self.n.MIPSFLUXAP3 self.mipsfluxap4err=self.n.MIPSFLUXAP3ERR self.On24ImageFlag_AGC=self.n.On24ImageFlag_2 self.On24ImageFlag=self.n.On24ImageFlag_1 self.supervopt=self.n.SUPERVOPT self.ra=self.n.RA self.dec=self.n.DEC #self.stellarmass=self.n.STELLARMASS #self.stellarmass_cl=self.n.STELLARMASS_CL self.sdssabsmag=self.n.SDSSABSMAG self.sdssMu=self.sdssabsmag[:,0] self.sdssMg=self.sdssabsmag[:,1] self.sdssMr=self.sdssabsmag[:,2] self.sdssMi=self.sdssabsmag[:,3] self.sdssMz=self.sdssabsmag[:,4] self.sdsslum=self.n.SDSSLUM self.sdssLu=self.sdsslum[:,0] self.sdssLg=self.sdsslum[:,1] self.sdssLr=self.sdsslum[:,2] self.sdssLi=self.sdsslum[:,3] self.sdssLz=self.sdsslum[:,4] self.sdssabsmag_cl=self.n.SDSSABSMAG_CL self.sdssMu=self.sdssabsmag_cl[:,0] self.sdssMg=self.sdssabsmag_cl[:,1] self.sdssMr=self.sdssabsmag_cl[:,2] self.sdssMi=self.sdssabsmag_cl[:,3] self.sdssMz=self.sdssabsmag_cl[:,4] self.sdsslum_cl=self.n.SDSSLUM_CL self.sdssLu_cl=self.sdsslum_cl[:,0] self.sdssLg_cl=self.sdsslum_cl[:,1] self.sdssLr_cl=self.sdsslum_cl[:,2] self.sdssLi_cl=self.sdsslum_cl[:,3] self.sdssLz_cl=self.sdsslum_cl[:,4] self.sdsscolc=self.n.SDSSCOLC self.sdssrowc=self.n.SDSSROWC self.membflag =self.n.MEMBFLAG self.morphflag =self.n.MORPHFLAG self.morph =self.n.MORPH self.disturb =self.n.DISTURB self.agn1 =self.n.AGNKAUFF self.agn2 =self.n.AGNKEWLEY self.agn3 =self.n.AGNSTASIN self.n2halpha=(self.mpan2/self.mpahalpha) self.o3hbeta=(self.mpao3/self.mpahbeta) self.logn2halpha=log10(self.mpan2/self.mpahalpha) self.logo3hbeta=log10(self.mpao3/self.mpahbeta) self.ellipseflag24 =self.n.ELLIPSEFLAG24 self.ellipseflagsdss =self.n.ELLIPSEFLAGSDSS self.ellipseflag =self.n.ELLIPSEFLAG #new SDSS fields that quantify radial extent of galaxy self.sdssIsoAr =self.n.SDSSISOAR self.sdssIsoBr =self.n.SDSSISOBR self.sdssIsoPhir =self.n.SDSSISOPHIR self.sdssIsoPhirErr =self.n.SDSSISOPHIERRR self.sdssExpRadr =self.n.SDSSEXPRADR self.sdssExpABr =self.n.SDSSEXPABR self.sdssExpABrErr =self.n.SDSSEXPABRERR self.sdssExpPhir =self.n.SDSSEXPPHIR self.sdssExpPhirErr =self.n.SDSSEXPPHIERRR self.sdssPetroMag=self.n.SDSSPETROMAG self.sdssPetroMagr=self.sdssPetroMag[:,2] self.sdssPetroRad=self.n.SDSSPETRORAD self.sdssPetroRadr=self.sdssPetroRad[:,2] self.sdssPetroR50=self.n.SDSSPETROR50 self.sdssPetroR50r=self.sdssPetroR50[:,2] self.sdssPetroR90=self.n.SDSSPETROR90 self.sdssPetroR90r=self.sdssPetroR90[:,2] #de-redened magnitudes self.sdssdered=self.n.SDSSDERED self.sdssumag=self.sdssdered[:,0] self.sdssgmag=self.sdssdered[:,1] self.sdssrmag=self.sdssdered[:,2] self.sdssimag=self.sdssdered[:,3] self.sdsszmag=self.sdssdered[:,4] conv=4*pi*(self.cdcm**2)*1.e-6*1.e-23*(3.e8/24.e-6)/Lsol print 'conversion from F24 to L24 = ',conv self.L24_cl=array(self.sex24.FLUX_BEST*conv*mipsconv_MJysr_to_uJy,'d') #self.L24_cl=array(t,'d') self.L24err_cl=self.sex24.FLUXERR_BEST*conv*mipsconv_MJysr_to_uJy self.Lir_cl=self.L24_cl*8.#approx conv from papovich self.Lirerr_cl=self.L24err_cl*8.#approx conv from papovich self.SFR24_cl=self.Lir_cl*4.5e-44*Lsol#approx conv from papovich self.SFR24err_cl=self.Lirerr_cl*4.5e-44*Lsol#approx conv from papovich #self.SFR24se_cl=(fluxautose24*141*conv)*8.*4.5e-44*Lsol#approx conv from papovich #self.SFR24seerr_cl=(fluxerrautose24*141*conv)*8.*4.5e-44*Lsol#approx conv from papovich #self.snr24se=abs(self.SFR24se_cl/self.SFR24seerr_cl) #self.superSFR24_cl=self.SFR24_cl*apexflag+self.SFR24se_cl*(~apexflag&sex24flag) #self.superSFR24err_cl=self.SFR24err_cl*apexflag+self.SFR24seerr_cl*(~apexflag&sex24flag) #self.sSFR_cl=self.SFR24_cl/self.stellarmassr_cl # other Lum and SFR self.HImass=self.n.HIMASS self.L24=self.n.L24 self.L24err=self.n.L24ERR self.Lir=self.n.LIR self.Lirerr=self.n.LIRERR self.SFR24=self.n.SFR24 self.SFR24err=self.n.SFR24ERR self.SuperSFR24=self.n.SUPERSFR24 self.SuperSFR24err=self.n.SUPERSFR24ERR self.HImass_cl=self.n.HIMASS_CL #self.L24_cl=self.n.L24_CL #self.L24err_cl=self.n.L24ERR_CL #self.Lir_cl=self.n.LIR_CL #self.Lirerr_cl=self.n.LIRERR_CL #self.SFR24_cl=self.n.SFR24_CL #self.SFR24err_cl=self.n.SFR24ERR_CL #self.SuperSFR24_cl=self.n.SUPERSFR24_CL #self.SuperSFR24err_cl=self.n.SUPERSFR24ERR_CL #define red, green and blue galaxies ur=self.n.ABSMAG[:,2]-self.n.ABSMAG[:,4] self.redflag=(ur > 2.3) self.greenflag=(ur > 1.8) & (ur < 2.3) self.blueflag=(ur<1.8) #end of master table! #self.spiralFlag=self.On24ImageFlag & self.galzooflag & self.ellipseflag & (self.galzoopcsdebiased > 0.6) self.clustername=clustername self.clusterra=clusterRA[clustername] self.clusterdec=clusterDec[clustername] self.dr=sqrt((self.ra-self.clusterra)**2+(self.dec-self.clusterdec)**2) self.drR200=self.dr/self.r200deg self.clustervel=clusterbiweightcenter[clustername] self.clustersigma=clusterbiweightscale[clustername] self.clustervmin=self.clustervel-3.*self.clustersigma self.clustervmax=self.clustervel+3.*self.clustersigma self.dist=sqrt((self.clusterra-self.ra)**2 + (self.clusterdec-self.dec)**2) self.flagHI = (self.flux100 > 0.) self.vopt=self.n.Z*3.e5 self.dv=abs(self.vopt-self.biweightvel)/self.biweightscale #self.dvflag = ((self.vopt > self.clustervmin) & (self.vopt < self.clustervmax)) self.dvflag = (self.dv < 3.) self.dist3d=sqrt(self.drR200**2 + (self.dv)**2) self.membflag=self.dvflag & (self.drR200 < 1) self.nmemb=len(self.dist[self.membflag & self.On24ImageFlag]) self.nfield=len(self.dist[self.On24ImageFlag])-self.nmemb self.agcdict=dict((a,b) for a,b in zip(self.agcnumber,arange(len(self.agcnumber)))) self.nsadict=dict((a,b) for a,b in zip(self.n.NSAID,arange(len(self.n.NSAID)))) self.spiralflag=(self.zoo.p_cs > 0.6) self.ellipticalflag=(self.zoo.p_el > 0.7) # set spiral flag for galaxies that are clearly spiral but have zoo.p_cs < .6 slist=spiral_nozoo[self.prefix] for i in slist: self.spiralflag[self.nsadict[i]]=1 elist=elliptical_nozoo[self.prefix] for i in elist: self.ellipticalflag[self.nsadict[i]]=1 print self.clustername,": ","N members = ",self.nmemb," N field = ",self.nfield #print ' N spirals = ',sum(self.spiralFlag),' Nspiral members = ',sum(self.spiralFlag&self.membflag) print ' N spirals on 24um image = ',sum(self.spiralflag & self.On24ImageFlag),' Nspiral members = ',sum(self.spiralflag&self.membflag & self.On24ImageFlag) print ' N galaxies on 24um image = ',sum(self.On24ImageFlag),' N members on 24um image = ',sum(self.membflag & self.On24ImageFlag) #self.L24=zeros(len(self.mipsflux),'d') #self.L24err=zeros(len(self.mipsflux),'d') # calculate HI deficiency using Toribio et al 2011 results # their relation is # log(M_HI/Msun) = 8.72 + 1.25 log(D_25,r/kpc) # and # log D_25 = log D_25(obs) + beta log(b/a), where beta = 0.35 in r-band # NOTE: SDSS isophotal radii are given in pixels!!!! a=self.sdssIsoAr b=self.sdssIsoBr # convert from arcsec to kpc with self.AngDistance (which is in units of kpc/arcsec) # multiply by 2 to convert from radius to diameter # multiply by sdss pixel scale (0.39) b/c isophotal radii are given in pixels self.D25obskpc=2.*self.sdssIsoAr*sdsspixelscale*self.AngDistanceCl self.D25obskpcall=2.*self.sdssIsoAr*sdsspixelscale*self.AngDistanceAll # apply correction from toribio et al 2011 self.logD25kpc=log10(self.D25obskpc) + 0.35*log10(b/a) self.logD25kpcall=log10(self.D25obskpcall) + 0.35*log10(b/a) # use toribio et al relation to predict the expected HI mass, including factor of 2 correction self.HImassExpected = 10.**(8.72 + 1.25*(self.logD25kpc-log10(2.))) self.HImassExpectedall = 10.**(8.72 + 1.25*(self.logD25kpcall-log10(2.))) self.HImassExpFromMr=10.**(6.44-0.18*self.sdssMr) self.HImassExpFromgr=10.**(8.84+1.81*(self.sdssgmag-self.sdssrmag)) # calculate deficiency as log expected - log observed self.HIDef = log10(self.HImassExpected) - log10(self.HImass) self.HIDef_zdist = log10(self.HImassExpectedall) - log10(self.HImass) self.myHIDef = log10(self.HImassExpected -self.HImass) # HI upper limit for clusters observed in alpha 40 sample (MKW11, A2052, A2063) # M(HI lim) = 2.36e5 * d^2 (W50 * 20)^(1/2) sigma_rms * S/N lim # W50 = W50,0 * sin(i) # cos^2(i) = ((b/a)^2 - q^2)/(1-q^2) # W50,0 = 100 km/s # sigma rms = 10 km/s # q = 0.32 for Sa # q = 0.23 for Sab # q = 0.18 for Sb-Sc (from Gavazzi et al 2013) # assign upper limits for each galaxy based on its B/A W50=70. sigma_rms=2.1e-3 snlim=6.5 self.clHImass_ulim= 2.36e5*(self.cdMpc)**2*sqrt(W50*20.)*sigma_rms*snlim self.HIDef_ulim=log10(self.HImassExpected)-log10(self.clHImass_ulim) #self.agnflag=self.agn1#use Kauffmann et al 2003 cut self.agnflag=self.agn2#use Kewley self.irflag = self.apexflag & self.membflag #set flag fot galaxies with dv < 3 sigma writesdssradec=0 if writesdssradec: # extra function for writing out RA and Dec to upload into SDSS query page # http://skyserver.sdss3.org/dr9/en/tools/search/IQS.asp offset=30./60. outfile=homedir+'research/LocalClusters/NSAmastertables/RADecfiles/'+self.prefix+'_RADEC.csv' out1=open(outfile,'w') out1.write('ra, dec, sep \n') for i in range(len(self.n.RA)): out1.write('%12.8f, %12.8f, %12.8f \n'%(self.n.RA[i],self.n.DEC[i],offset)) out1.close # calculate the angle between major axis and ellipse center # call is clusterphi (see page in ResearchNotes.nb entitles 'Angle between galaxy's major axis and cluster center') # in notes I call the angle psi, but a little too painful for a variable # if cluster_phi = 90 - galaxy falling face-on into cluster # if cluster_phi = 0 - galaxy falling edge-on into cluster self.delta_dec=self.dec-self.cdec self.delta_ra=self.ra-self.cra r=sqrt(self.delta_dec**2+self.delta_ra**2) self.theta=arctan(abs(self.delta_dec)/abs(self.delta_ra))*180./pi self.cluster_phi=zeros(len(self.ra),'f') #for i in range(len(self.ra)): # if (self.delta_dec[i]*self.delta_ra[i] > 1.): # self.cluster_phi[i] = abs(90.- self.n.SERSIC_PHI[i] + self.theta[i]) # else: # self.cluster_phi[i] = abs(self.n.SERSIC_PHI[i] - 90. + self.theta[i]) phi=self.n.SERSIC_PHI/180.*pi # in radians theta=self.theta/180.*pi self.cluster_phi=arccos(abs(sin(phi)*-1.*cos(theta)+cos(phi)*sin(theta)))*180./pi self.readsnr24NSA() self.snr24flag=self.snr24 > 1.5 # define a blue flag based on NUV-r vs mass plot color=self.n.ABSMAG[:,1]-self.n.ABSMAG[:,4] self.NUVr_color=self.n.ABSMAG[:,1]-self.n.ABSMAG[:,4] mag=log10(self.stellarmass) self.blueflag = color < (.6*(mag-9)+3.3) # define a blue flag based on NUV-r vs Mr plot mag=self.n.ABSMAG[:,4] #yb=1.73-0.17*xl-2. self.blueflag = color < (1.73-0.17*mag-2.) self.redflag = color > (1.73-0.17*mag-.5) self.greenflag= (color > (1.73-0.17*mag-2.)) & (color < (1.73-0.17*mag-.5)) # 80% completeness self.f80=clusterf80MJysr[self.prefix]*mipsconv_MJysr_to_uJy # in micro Jy print self.biweightvel/3.e5,self.f80 self.Lir80,self.SFRir80=chary.chary_elbaz_24um(array([self.biweightvel/3.e5],'f'),array([self.f80],'f')) # best_distance=self.membflag * self.cdMpc + ~self.membflag*(self.n.ZDIST*3.e5/H0) self.M24=self.sex24.MAG_BEST-25-5.*log10(best_distance) self.M24zdist=self.sex24.MAG_BEST-25-5.*log10(self.n.ZDIST*3.e5/H0)
def __init__(self, clustername): #Get current path so program can tell if this is being run on Becky or Rose's computer self.prefix = clustername self.john_prefix = john_prefix[self.prefix] self.cra = clusterRA[self.prefix] self.cdec = clusterDec[self.prefix] self.cz = clusterz[self.prefix] self.biweightvel = clusterbiweightcenter[self.prefix] self.biweightscale = clusterbiweightscale[self.prefix] self.r200 = 2.02 * (self.biweightscale) / 1000. / sqrt( OmegaL + OmegaM * (1. + self.cz)**3) * H0 / 70. # in Mpc self.r200deg = self.r200 * 1000. / my.DA(self.biweightvel / 3.e5, h) / 3600. self.cdMpc = self.biweightvel / H0 self.cdcm = self.cdMpc * 3.e24 self.csigma = self.biweightscale self.mcl = my.clusterMass(self.biweightscale, self.biweightvel / 3.e5, h) self.cLx = clusterLx[self.prefix] self.mingalaxysize = mingalaxysize_kpc / my.DA(self.biweightvel / 3.e5, h) #infile=homedir+'research/LocalClusters/NSAmastertables/'+clustername+'_NSAmastertable.fits' infile = homedir + 'research/LocalClusters/NSAmastertables/NSAwithAGC/' + clustername + '_NSAmastertable_topcat.fits' self.cutoutpath = homedir + 'research/LocalClusters/cutouts/' + self.prefix + '/' #infile='/home/rfinn/LocalClusters/MasterTables/'+clustername+'mastertable.fits' self.n = atpy.Table(infile) infile = homedir + 'research/LocalClusters/NSAmastertables/' + clustername + '_NSAmastertable.fits' self.nsa = atpy.Table(infile) # read in WISE catalogs infile = homedir + 'research/LocalClusters/NSAmastertables/WISETables/' + clustername + '_WISE_NSA.fits' self.wise = atpy.Table(infile) # read in Galaxy Zoo catalogs infile = homedir + 'research/LocalClusters/NSAmastertables/GalaxyZooTables/' + clustername + '_GalaxyZoo.fits' self.zoo = atpy.Table(infile) #self.zooflag=self.zoo.zoo_match_flag | self.zoo.zoo_phot_match_flag # read in GIM2D catalogs infile = homedir + 'research/LocalClusters/NSAmastertables/SimardGIM2D/' + clustername + '_GIM2D.fits' self.gim2d = atpy.Table(infile) # fields with _1 are from bulge+disk; fields with _2 are from pure sersic fit infile = homedir + 'research/LocalClusters/NSAmastertables/Sex24Tables/' + clustername + '_sex24.fits' self.sex24 = atpy.Table(infile) infile = homedir + 'research/LocalClusters/NSAmastertables/AGCTables/' + clustername + '_AGC.fits' self.agc = atpy.Table(infile) sersicparam24_file = homedir + 'research/LocalClusters/NSAmastertables/GalfitSersicResults/' + self.prefix + '_GalfitSersicParam_24.fits' self.galfit24 = atpy.Table(sersicparam24_file) infile = homedir + 'research/LocalClusters/NSAmastertables/LocalDensityTables/' + clustername + '_localdensity.fits' self.ld = atpy.Table(infile) infile = homedir + 'research/LocalClusters/NSAmastertables/CharyElbazTables/' + clustername + '_ce_lir.fits' self.ce = atpy.Table(infile) self.snrse = abs(self.ce.FLUX24 / self.ce.FLUX24ERR) # read in John's Lir catalogs - for his members only infile = homedir + 'research/LocalClusters/NSAmastertables/MoustakasLir/' + self.john_prefix + '_lir.fits' self.lir = atpy.Table(infile, type='fits') self.memb_id = self.lir.NSAID # calculating magnitudes from fluxes provided from NSA # # m = 22.5 - 2.5 log_10 (flux_nanomaggies) # from http://www.sdss3.org/dr8/algorithms/magnitudes.php#nmgy self.nsamag = 22.5 - 2.5 * log10(self.n.NMGY) self.sdssLr = 10.**(-1 * (self.n.ABSMAG[:, 4] - SolarMag['r']) / 2.5) a, b = bellgr['r'] self.stellarmass = 10.**( -1. * a + b * (self.n.ABSMAG[:, 3] - self.n.ABSMAG[:, 4])) * self.sdssLr self.sdssLu = 10.**(-1 * (self.n.ABSMAG[:, 2] - SolarMag['u']) / 2.5) self.sdssLg = 10.**(-1 * (self.n.ABSMAG[:, 3] - SolarMag['g']) / 2.5) self.sdssLi = 10.**(-1 * (self.n.ABSMAG[:, 5] - SolarMag['i']) / 2.5) self.sdssLz = 10.**(-1 * (self.n.ABSMAG[:, 6] - SolarMag['z']) / 2.5) self.AngDistanceCl = my.DA(self.cz, h) self.AngDistanceAll = zeros(len(self.n.ZDIST), 'f') for i in range(len(self.n.ZDIST)): self.AngDistanceAll[i] = my.DA(self.n.ZDIST[i], h) # FOR BACKWARDS COMPATABILITY WITH EXISTING CODE # data from AGC-based mastertables self.agcflag = self.agc.AGCMATCHFLAG self.HIflag = (self.agc.FLUX100 > 0) self.sdssflag = self.n.SDSSflag self.sdssphotflag = self.n.SDSSphotflag self.mpaflag = self.n.MPAFLAG self.apexflag = self.n.APEXflag self.sexsdssflag = self.n.SEXSDSSflag self.sex24flag = self.n.SEX24FLAG self.agcvoptflag = (self.agc.VOPT > 0) self.agcnumber = self.agc.AGCNUMBER self.raagc = self.agc.RA self.decagc = self.agc.DEC self.a100 = self.agc.A100 self.b100 = self.agc.B100 self.mag10 = self.agc.MAG10 self.posang = self.agc.POSANG self.bsteintype = self.agc.BSTEINTYPE self.vopt = self.agc.VOPT self.verr = self.agc.VERR self.vsource = self.agc.VSOURCE self.flux100 = self.agc.FLUX100 self.rms100 = self.agc.RMS100 self.v21 = self.agc.V21 self.width = self.agc.WIDTH self.widtherr = self.agc.WIDTHERR #sdss info self.sdssra = self.n.SDSSRA self.sdssdec = self.n.SDSSDEC self.sdssphotra = self.n.SDSSphotRA self.sdssphotdec = self.n.SDSSphotDEC self.sdssmag = self.n.SDSSMAG self.sdssu = self.sdssmag[:, 0] self.sdssg = self.sdssmag[:, 1] self.sdssr = self.sdssmag[:, 2] self.sdssi = self.sdssmag[:, 3] self.sdssz = self.sdssmag[:, 4] self.sdssmagerr = self.n.SDSSMAGERR self.sdssuerr = self.sdssmagerr[:, 0] self.sdssgerr = self.sdssmagerr[:, 1] self.sdssrerr = self.sdssmagerr[:, 2] self.sdssierr = self.sdssmagerr[:, 3] self.sdsszerr = self.sdssmagerr[:, 4] self.sdssspecz = self.n.SDSSSPECZ self.sdssvopt = self.n.SDSSVOPT self.sdsshaew = self.n.SDSSHAEW self.sdsshaewerr = self.n.SDSSHAEWERR self.sdssplate = self.n.SDSSPLATE self.sdssfiberid = self.n.SDSSFIBERID self.sdsstile = self.n.SDSSTILE self.sdssrun = self.n.SDSSRUN self.sdssrerun = self.n.SDSSRERUN self.sdsscamcol = self.n.SDSSCAMCOL self.sdssfield = self.n.SDSSFIELD self.mpahalpha = self.n.MPAHALPHA self.mpahbeta = self.n.MPAHBETA self.mpao3 = self.n.MPAOIII self.mpan2 = self.n.MPANII #sextractor info self.numberser = self.n.NUMBERSER self.ximageser = self.n.XIMAGESER self.yimageser = self.n.YIMAGESER self.xminimageser = self.n.XMINIMAGESER self.xmaximageser = self.n.XMAXIMAGESER self.yminimageser = self.n.YMINIMAGESER self.raser = self.n.RASER self.decser = self.n.DECSER self.fluxisoser = self.n.FLUXISOSER self.fluxerrisoser = self.n.FLUXERRISOSER self.magisoser = self.n.MAGISOSER self.magerrisoser = self.n.MAGERRISOSER self.fluxautoser = self.n.FLUXAUTOSER self.fluxerrautoser = self.n.FLUXERRAUTOSER self.magautoser = self.n.MAGAUTOSER self.magerrautoser = self.n.MAGERRAUTOSER self.fluxpetroser = self.n.FLUXPETROSER self.fluxerrpetroser = self.n.FLUXERRPETROSER self.magpetroser = self.n.MAGPETROSER self.magerrpetroser = self.n.MAGERRPETROSER self.kronradser = self.n.KRONRADSER #kron radius self.petroradser = self.n.PETRORADSER #petrosian radius self.fluxradser = self.n.FLUXRADSER #1/2 light radius self.isoareaser = self.n.ISOAREASER self.aworldser = self.n.AWORLDSER self.bworldser = self.n.BWORLDSER self.thetaser = self.n.THETASER self.errthetaser = self.n.ERRTHETASER self.thetaj2000ser = self.n.THETAJ2000SER self.errthetaj2000ser = self.n.ERRTHETAJ2000SER self.elongser = self.n.ELONGATIONSER self.elliptser = self.n.ELLIPTICITYSER self.fwhmser = self.n.FWHMSER self.flagsser = self.n.FLAGSSER self.classstarser = self.n.CLASSSTARSER #SEXTRACTOR output 24 micron data self.numberse24 = self.n.NUMBERSE24 self.ximagese24 = self.n.XIMAGESE24 self.yimagese24 = self.n.YIMAGESE24 self.xminimagese24 = self.n.XMINIMAGESE24 self.xmaximagese24 = self.n.XMAXIMAGESE24 self.xminimagese24 = self.n.YMINIMAGESE24 self.rase24 = self.n.RASE24 self.decse24 = self.n.DECSE24 self.fluxisose24 = self.n.FLUXISOSE24 self.fluxerrisose24 = self.n.FLUXERRISOSE24 self.magisose24 = self.n.MAGISOSE24 self.magerrisose24 = self.n.MAGERRISOSE24 self.fluxautose24 = self.n.FLUXAUTOSE24 self.fluxerrautose24 = self.n.FLUXERRAUTOSE24 self.magautose24 = self.n.MAGAUTOSE24 self.magerrautose24 = self.n.MAGERRAUTOSE24 self.fluxpetrose24 = self.n.FLUXPETROSE24 self.fluxerrpetrose24 = self.n.FLUXERRPETROSE24 self.magpetrose24 = self.n.MAGPETROSE24 self.magerrpetrose24 = self.n.MAGERRPETROSE24 self.kronradse24 = self.n.KRONRADSE24 self.petroradse24 = self.n.PETRORADSE24 self.fluxradse24 = self.n.FLUXRADSE24 self.isoarease24 = self.n.ISOAREASE24 self.aworldse24 = self.n.AWORLDSE24 self.bworldse24 = self.n.BWORLDSE24 self.thetase24 = self.n.THETASE24 self.errthetase24 = self.n.ERRTHETASE24 self.thetaj2000se24 = self.n.THETAJ2000SE24 self.errthetaj2000se24 = self.n.ERRTHETAJ2000SE24 self.elongse24 = self.n.ELONGATIONSE24 self.elliptse24 = self.n.ELLIPTICITYSE24 self.fwhmse24 = self.n.FWHMSE24 self.flagsse24 = self.n.FLAGSSE24 self.classstarse24 = self.n.CLASSSTARSE24 self.f24dist = self.fluxautose24[self.sex24flag] #apex output self.mipsra = self.n.MIPSRA self.mipsdec = self.n.MIPSDEC self.mipsflux = self.n.MIPSFLUX self.mipsfluxerr = self.n.MIPSFLUXERR self.mipssnr = self.n.MIPSSNR self.mipsdeblend = self.n.MIPSDEBLEND self.mipsfluxap1 = self.n.MIPSFLUXAP1 self.mipsfluxap1err = self.n.MIPSFLUXAP1ERR self.mipsfluxap2 = self.n.MIPSFLUXAP2 self.mipsfluxap2err = self.n.MIPSFLUXAP2ERR self.mipsfluxap3 = self.n.MIPSFLUXAP3 self.mipsfluxap4err = self.n.MIPSFLUXAP3ERR self.On24ImageFlag_AGC = self.n.On24ImageFlag_2 self.On24ImageFlag = self.n.On24ImageFlag_1 self.supervopt = self.n.SUPERVOPT self.ra = self.n.RA self.dec = self.n.DEC #self.stellarmass=self.n.STELLARMASS #self.stellarmass_cl=self.n.STELLARMASS_CL self.sdssabsmag = self.n.SDSSABSMAG self.sdssMu = self.sdssabsmag[:, 0] self.sdssMg = self.sdssabsmag[:, 1] self.sdssMr = self.sdssabsmag[:, 2] self.sdssMi = self.sdssabsmag[:, 3] self.sdssMz = self.sdssabsmag[:, 4] self.sdsslum = self.n.SDSSLUM self.sdssLu = self.sdsslum[:, 0] self.sdssLg = self.sdsslum[:, 1] self.sdssLr = self.sdsslum[:, 2] self.sdssLi = self.sdsslum[:, 3] self.sdssLz = self.sdsslum[:, 4] self.sdssabsmag_cl = self.n.SDSSABSMAG_CL self.sdssMu = self.sdssabsmag_cl[:, 0] self.sdssMg = self.sdssabsmag_cl[:, 1] self.sdssMr = self.sdssabsmag_cl[:, 2] self.sdssMi = self.sdssabsmag_cl[:, 3] self.sdssMz = self.sdssabsmag_cl[:, 4] self.sdsslum_cl = self.n.SDSSLUM_CL self.sdssLu_cl = self.sdsslum_cl[:, 0] self.sdssLg_cl = self.sdsslum_cl[:, 1] self.sdssLr_cl = self.sdsslum_cl[:, 2] self.sdssLi_cl = self.sdsslum_cl[:, 3] self.sdssLz_cl = self.sdsslum_cl[:, 4] self.sdsscolc = self.n.SDSSCOLC self.sdssrowc = self.n.SDSSROWC self.membflag = self.n.MEMBFLAG self.morphflag = self.n.MORPHFLAG self.morph = self.n.MORPH self.disturb = self.n.DISTURB self.agn1 = self.n.AGNKAUFF self.agn2 = self.n.AGNKEWLEY self.agn3 = self.n.AGNSTASIN self.n2halpha = (self.mpan2 / self.mpahalpha) self.o3hbeta = (self.mpao3 / self.mpahbeta) self.logn2halpha = log10(self.mpan2 / self.mpahalpha) self.logo3hbeta = log10(self.mpao3 / self.mpahbeta) self.ellipseflag24 = self.n.ELLIPSEFLAG24 self.ellipseflagsdss = self.n.ELLIPSEFLAGSDSS self.ellipseflag = self.n.ELLIPSEFLAG #new SDSS fields that quantify radial extent of galaxy self.sdssIsoAr = self.n.SDSSISOAR self.sdssIsoBr = self.n.SDSSISOBR self.sdssIsoPhir = self.n.SDSSISOPHIR self.sdssIsoPhirErr = self.n.SDSSISOPHIERRR self.sdssExpRadr = self.n.SDSSEXPRADR self.sdssExpABr = self.n.SDSSEXPABR self.sdssExpABrErr = self.n.SDSSEXPABRERR self.sdssExpPhir = self.n.SDSSEXPPHIR self.sdssExpPhirErr = self.n.SDSSEXPPHIERRR self.sdssPetroMag = self.n.SDSSPETROMAG self.sdssPetroMagr = self.sdssPetroMag[:, 2] self.sdssPetroRad = self.n.SDSSPETRORAD self.sdssPetroRadr = self.sdssPetroRad[:, 2] self.sdssPetroR50 = self.n.SDSSPETROR50 self.sdssPetroR50r = self.sdssPetroR50[:, 2] self.sdssPetroR90 = self.n.SDSSPETROR90 self.sdssPetroR90r = self.sdssPetroR90[:, 2] #de-redened magnitudes self.sdssdered = self.n.SDSSDERED self.sdssumag = self.sdssdered[:, 0] self.sdssgmag = self.sdssdered[:, 1] self.sdssrmag = self.sdssdered[:, 2] self.sdssimag = self.sdssdered[:, 3] self.sdsszmag = self.sdssdered[:, 4] conv = 4 * pi * (self.cdcm** 2) * 1.e-6 * 1.e-23 * (3.e8 / 24.e-6) / Lsol print 'conversion from F24 to L24 = ', conv self.L24_cl = array( self.sex24.FLUX_BEST * conv * mipsconv_MJysr_to_uJy, 'd') #self.L24_cl=array(t,'d') self.L24err_cl = self.sex24.FLUXERR_BEST * conv * mipsconv_MJysr_to_uJy self.Lir_cl = self.L24_cl * 8. #approx conv from papovich self.Lirerr_cl = self.L24err_cl * 8. #approx conv from papovich self.SFR24_cl = self.Lir_cl * 4.5e-44 * Lsol #approx conv from papovich self.SFR24err_cl = self.Lirerr_cl * 4.5e-44 * Lsol #approx conv from papovich #self.SFR24se_cl=(fluxautose24*141*conv)*8.*4.5e-44*Lsol#approx conv from papovich #self.SFR24seerr_cl=(fluxerrautose24*141*conv)*8.*4.5e-44*Lsol#approx conv from papovich #self.snr24se=abs(self.SFR24se_cl/self.SFR24seerr_cl) #self.superSFR24_cl=self.SFR24_cl*apexflag+self.SFR24se_cl*(~apexflag&sex24flag) #self.superSFR24err_cl=self.SFR24err_cl*apexflag+self.SFR24seerr_cl*(~apexflag&sex24flag) #self.sSFR_cl=self.SFR24_cl/self.stellarmassr_cl # other Lum and SFR self.HImass = self.n.HIMASS self.L24 = self.n.L24 self.L24err = self.n.L24ERR self.Lir = self.n.LIR self.Lirerr = self.n.LIRERR self.SFR24 = self.n.SFR24 self.SFR24err = self.n.SFR24ERR self.SuperSFR24 = self.n.SUPERSFR24 self.SuperSFR24err = self.n.SUPERSFR24ERR self.HImass_cl = self.n.HIMASS_CL #self.L24_cl=self.n.L24_CL #self.L24err_cl=self.n.L24ERR_CL #self.Lir_cl=self.n.LIR_CL #self.Lirerr_cl=self.n.LIRERR_CL #self.SFR24_cl=self.n.SFR24_CL #self.SFR24err_cl=self.n.SFR24ERR_CL #self.SuperSFR24_cl=self.n.SUPERSFR24_CL #self.SuperSFR24err_cl=self.n.SUPERSFR24ERR_CL #define red, green and blue galaxies ur = self.n.ABSMAG[:, 2] - self.n.ABSMAG[:, 4] self.redflag = (ur > 2.3) self.greenflag = (ur > 1.8) & (ur < 2.3) self.blueflag = (ur < 1.8) #end of master table! #self.spiralFlag=self.On24ImageFlag & self.galzooflag & self.ellipseflag & (self.galzoopcsdebiased > 0.6) self.clustername = clustername self.clusterra = clusterRA[clustername] self.clusterdec = clusterDec[clustername] self.dr = sqrt((self.ra - self.clusterra)**2 + (self.dec - self.clusterdec)**2) self.drR200 = self.dr / self.r200deg self.clustervel = clusterbiweightcenter[clustername] self.clustersigma = clusterbiweightscale[clustername] self.clustervmin = self.clustervel - 3. * self.clustersigma self.clustervmax = self.clustervel + 3. * self.clustersigma self.dist = sqrt((self.clusterra - self.ra)**2 + (self.clusterdec - self.dec)**2) self.flagHI = (self.flux100 > 0.) self.vopt = self.n.Z * 3.e5 self.dv = abs(self.vopt - self.biweightvel) / self.biweightscale #self.dvflag = ((self.vopt > self.clustervmin) & (self.vopt < self.clustervmax)) self.dvflag = (self.dv < 3.) self.dist3d = sqrt(self.drR200**2 + (self.dv)**2) self.membflag = self.dvflag & (self.drR200 < 1) self.nmemb = len(self.dist[self.membflag & self.On24ImageFlag]) self.nfield = len(self.dist[self.On24ImageFlag]) - self.nmemb self.agcdict = dict( (a, b) for a, b in zip(self.agcnumber, arange(len(self.agcnumber)))) self.nsadict = dict( (a, b) for a, b in zip(self.n.NSAID, arange(len(self.n.NSAID)))) self.spiralflag = (self.zoo.p_cs > 0.6) self.ellipticalflag = (self.zoo.p_el > 0.7) # set spiral flag for galaxies that are clearly spiral but have zoo.p_cs < .6 slist = spiral_nozoo[self.prefix] for i in slist: self.spiralflag[self.nsadict[i]] = 1 elist = elliptical_nozoo[self.prefix] for i in elist: self.ellipticalflag[self.nsadict[i]] = 1 print self.clustername, ": ", "N members = ", self.nmemb, " N field = ", self.nfield #print ' N spirals = ',sum(self.spiralFlag),' Nspiral members = ',sum(self.spiralFlag&self.membflag) print ' N spirals on 24um image = ', sum( self.spiralflag & self.On24ImageFlag), ' Nspiral members = ', sum( self.spiralflag & self.membflag & self.On24ImageFlag) print ' N galaxies on 24um image = ', sum( self.On24ImageFlag), ' N members on 24um image = ', sum( self.membflag & self.On24ImageFlag) #self.L24=zeros(len(self.mipsflux),'d') #self.L24err=zeros(len(self.mipsflux),'d') # calculate HI deficiency using Toribio et al 2011 results # their relation is # log(M_HI/Msun) = 8.72 + 1.25 log(D_25,r/kpc) # and # log D_25 = log D_25(obs) + beta log(b/a), where beta = 0.35 in r-band # NOTE: SDSS isophotal radii are given in pixels!!!! a = self.sdssIsoAr b = self.sdssIsoBr # convert from arcsec to kpc with self.AngDistance (which is in units of kpc/arcsec) # multiply by 2 to convert from radius to diameter # multiply by sdss pixel scale (0.39) b/c isophotal radii are given in pixels self.D25obskpc = 2. * self.sdssIsoAr * sdsspixelscale * self.AngDistanceCl self.D25obskpcall = 2. * self.sdssIsoAr * sdsspixelscale * self.AngDistanceAll # apply correction from toribio et al 2011 self.logD25kpc = log10(self.D25obskpc) + 0.35 * log10(b / a) self.logD25kpcall = log10(self.D25obskpcall) + 0.35 * log10(b / a) # use toribio et al relation to predict the expected HI mass, including factor of 2 correction self.HImassExpected = 10.**(8.72 + 1.25 * (self.logD25kpc - log10(2.))) self.HImassExpectedall = 10.**(8.72 + 1.25 * (self.logD25kpcall - log10(2.))) self.HImassExpFromMr = 10.**(6.44 - 0.18 * self.sdssMr) self.HImassExpFromgr = 10.**(8.84 + 1.81 * (self.sdssgmag - self.sdssrmag)) # calculate deficiency as log expected - log observed self.HIDef = log10(self.HImassExpected) - log10(self.HImass) self.HIDef_zdist = log10(self.HImassExpectedall) - log10(self.HImass) self.myHIDef = log10(self.HImassExpected - self.HImass) # HI upper limit for clusters observed in alpha 40 sample (MKW11, A2052, A2063) # M(HI lim) = 2.36e5 * d^2 (W50 * 20)^(1/2) sigma_rms * S/N lim # W50 = W50,0 * sin(i) # cos^2(i) = ((b/a)^2 - q^2)/(1-q^2) # W50,0 = 100 km/s # sigma rms = 10 km/s # q = 0.32 for Sa # q = 0.23 for Sab # q = 0.18 for Sb-Sc (from Gavazzi et al 2013) # assign upper limits for each galaxy based on its B/A W50 = 70. sigma_rms = 2.1e-3 snlim = 6.5 self.clHImass_ulim = 2.36e5 * (self.cdMpc)**2 * sqrt( W50 * 20.) * sigma_rms * snlim self.HIDef_ulim = log10(self.HImassExpected) - log10( self.clHImass_ulim) #self.agnflag=self.agn1#use Kauffmann et al 2003 cut self.agnflag = self.agn2 #use Kewley self.irflag = self.apexflag & self.membflag #set flag fot galaxies with dv < 3 sigma writesdssradec = 0 if writesdssradec: # extra function for writing out RA and Dec to upload into SDSS query page # http://skyserver.sdss3.org/dr9/en/tools/search/IQS.asp offset = 30. / 60. outfile = homedir + 'research/LocalClusters/NSAmastertables/RADecfiles/' + self.prefix + '_RADEC.csv' out1 = open(outfile, 'w') out1.write('ra, dec, sep \n') for i in range(len(self.n.RA)): out1.write('%12.8f, %12.8f, %12.8f \n' % (self.n.RA[i], self.n.DEC[i], offset)) out1.close # calculate the angle between major axis and ellipse center # call is clusterphi (see page in ResearchNotes.nb entitles 'Angle between galaxy's major axis and cluster center') # in notes I call the angle psi, but a little too painful for a variable # if cluster_phi = 90 - galaxy falling face-on into cluster # if cluster_phi = 0 - galaxy falling edge-on into cluster self.delta_dec = self.dec - self.cdec self.delta_ra = self.ra - self.cra r = sqrt(self.delta_dec**2 + self.delta_ra**2) self.theta = arctan( abs(self.delta_dec) / abs(self.delta_ra)) * 180. / pi self.cluster_phi = zeros(len(self.ra), 'f') #for i in range(len(self.ra)): # if (self.delta_dec[i]*self.delta_ra[i] > 1.): # self.cluster_phi[i] = abs(90.- self.n.SERSIC_PHI[i] + self.theta[i]) # else: # self.cluster_phi[i] = abs(self.n.SERSIC_PHI[i] - 90. + self.theta[i]) phi = self.n.SERSIC_PHI / 180. * pi # in radians theta = self.theta / 180. * pi self.cluster_phi = arccos( abs(sin(phi) * -1. * cos(theta) + cos(phi) * sin(theta))) * 180. / pi self.readsnr24NSA() self.snr24flag = self.snr24 > 1.5 # define a blue flag based on NUV-r vs mass plot color = self.n.ABSMAG[:, 1] - self.n.ABSMAG[:, 4] self.NUVr_color = self.n.ABSMAG[:, 1] - self.n.ABSMAG[:, 4] mag = log10(self.stellarmass) self.blueflag = color < (.6 * (mag - 9) + 3.3) # define a blue flag based on NUV-r vs Mr plot mag = self.n.ABSMAG[:, 4] #yb=1.73-0.17*xl-2. self.blueflag = color < (1.73 - 0.17 * mag - 2.) self.redflag = color > (1.73 - 0.17 * mag - .5) self.greenflag = (color > (1.73 - 0.17 * mag - 2.)) & ( color < (1.73 - 0.17 * mag - .5)) # 80% completeness self.f80 = clusterf80MJysr[ self.prefix] * mipsconv_MJysr_to_uJy # in micro Jy print self.biweightvel / 3.e5, self.f80 self.Lir80, self.SFRir80 = chary.chary_elbaz_24um( array([self.biweightvel / 3.e5], 'f'), array([self.f80], 'f')) # best_distance = self.membflag * self.cdMpc + ~self.membflag * ( self.n.ZDIST * 3.e5 / H0) self.M24 = self.sex24.MAG_BEST - 25 - 5. * log10(best_distance) self.M24zdist = self.sex24.MAG_BEST - 25 - 5. * log10( self.n.ZDIST * 3.e5 / H0)
def __init__(self, prefix): self.prefix = prefix self.fullname = fullname[self.prefix] self.cra = racenter[self.prefix] self.cdec = deccenter[self.prefix] self.cz = redshift[self.prefix] self.f80 = F80[self.prefix] self.errf80 = ErrorF80[self.prefix] self.csigma = sigma[self.prefix] self.csigmaerrplus = errsigmaplus[self.prefix] self.csigmaerrminus = errsigmaminus[self.prefix] self.r200 = 2.02 * ( self.csigma) / 1000. / sqrt(OmegaL + OmegaM * (1. + self.cz)**3) * H0 / 70. # in Mpc if self.r200 < .5: print 'WARNING: R200 unrealistically small for ', self.prefix print 'resetting R200 to 0.5 Mpc' self.r200 = .5 self.r200deg = self.r200 * 1000. / my.DA(self.cz, h) / 3600. self.mcl = my.clusterMass(self.csigma, self.cz, h) mastertable = mastertablepath + self.fullname + 'mastertable.fits' tb = pyfits.open(mastertable) tbdata = tb[1].data tb.close() self.ediscsID = tbdata.field('EDISCS-ID') self.ediscsIDold = tbdata.field('EDISCS-ID-OLD') self.ra = tbdata.field('RA') self.dec = tbdata.field('DEC') self.xcorr = tbdata.field('xcorr') self.ycorr = tbdata.field('ycorr') self.starflag = tbdata.field('starflag') self.EW = tbdata.field('EW') self.EWerr = tbdata.field('EWerr') self.SFR = tbdata.field('SFR') self.SFRerr = tbdata.field('SFRerr') self.matchflaghalpha = tbdata.field('matchflaghalpha') self.onHaimageflag = tbdata.field('onHaimageflag') self.sfflag = tbdata.field('sfflag') self.matchflag24 = tbdata.field('matchflag24') self.on24imageflag = tbdata.field('on24imageflag') self.flux24 = tbdata.field('flux24') self.flux24err = tbdata.field('flux24err') self.nmatchediscs24 = tbdata.field('nmatchediscs24') self.snr24 = tbdata.field('snr24') self.imagex24 = tbdata.field('imagex24') self.imagey24 = tbdata.field('imagey24') self.ra24 = tbdata.field('ra24') self.dec24 = tbdata.field('dec24') self.flux80flag = tbdata.field('flux80flag') self.L24 = tbdata.field('L24') self.L24err = tbdata.field('L24err') self.Lir = tbdata.field('Lir') self.errLir = tbdata.field('errLir') self.SFRir = tbdata.field('SFRir') self.SFRirerr = tbdata.field('SFRirerr') self.matchflagediscsirac = tbdata.field('matchflagediscsirac') self.iracf1 = tbdata.field('iracf1') self.iracf2 = tbdata.field('iracf2') self.iracf3 = tbdata.field('iracf3') self.iracf4 = tbdata.field('iracf4') self.erriracf1 = tbdata.field('erriracf1') self.erriracf2 = tbdata.field('erriracf2') self.erriracf3 = tbdata.field('erriracf3') self.erriracf4 = tbdata.field('erriracf4') self.iracsexflag0 = tbdata.field('iracsexflag0') self.iracsexflag1 = tbdata.field('iracsexflag1') self.iracwch1 = tbdata.field('iracwch1') self.iracwch2 = tbdata.field('iracwch2') self.iracwch3 = tbdata.field('iracwch3') self.iracwch4 = tbdata.field('iracwch4') self.iracwmin = tbdata.field('iracwmin') self.nmatchediscsirac = tbdata.field('nmatchediscsirac') self.matchflagmorphgimtype = tbdata.field('matchflagmorphgimtype') self.gimtype = tbdata.field('gimtype') self.matchflagvistype = tbdata.field('matchflagvistype') self.vistype = tbdata.field('vistype') self.misoV = tbdata.field('misoV') self.misoeVapsim = tbdata.field('misoeVapsim') self.misoR = tbdata.field('misoR') self.misoeRapsim = tbdata.field('misoeRapsim') self.misoI = tbdata.field('misoI') self.misoeIapsim = tbdata.field('misoeIapsim') self.misoJ = tbdata.field('misoJ') self.misoeJapsim = tbdata.field('misoeJapsim') self.misoK = tbdata.field('misoK') self.misoeKapsim = tbdata.field('misoeKapsim') self.magV = tbdata.field('magV') self.mageVapsim = tbdata.field('mageVapsim') self.magR = tbdata.field('magR') self.mageRapsim = tbdata.field('mageRapsim') self.magI = tbdata.field('magI') self.mageIapsim = tbdata.field('mageIapsim') self.magJ = tbdata.field('magJ') self.mageJapsim = tbdata.field('mageJapsim') self.magK = tbdata.field('magK') self.mageKapsim = tbdata.field('mageKapsim') self.membflag = tbdata.field('membflag') self.newspecmatchflag = tbdata.field('newspecmatchflag') self.defmembflag = tbdata.field('defmembflag') self.photmembflag = tbdata.field('photmembflag') self.supermembflag = tbdata.field('supermembflag') self.specz = tbdata.field('specz') self.spectype = tbdata.field('spectype') self.specEWOII = tbdata.field('specEWOII') self.matchflagspecediscs = tbdata.field('matchflagspecediscs') self.specEWOIIflag = tbdata.field('specEWOIIflag') self.bestz = tbdata.field('bestz') self.lowz = tbdata.field('lowz') self.highz = tbdata.field('highz') self.wmin = tbdata.field('wmin') self.Pclust = tbdata.field('Pclust') self.MR = tbdata.field('MR') self.MU = tbdata.field('MU') self.MV = tbdata.field('MV') self.MB = tbdata.field('MB') self.stellarmass = tbdata.field('stellmass') self.redflag = tbdata.field('redflag') self.LUlowzclust = tbdata.field('LUlowzclust') self.LUbestzclust = tbdata.field('LUbestzclust') self.LUhighzclust = tbdata.field('LUhighzclust') self.LBlowzclust = tbdata.field('LBlowzclust') self.LBbestzclust = tbdata.field('LBbestzclust') self.LBhighzclust = tbdata.field('LBhighzclust') self.LVlowzclust = tbdata.field('LVlowzclust ') self.LVbestzclust = tbdata.field('LVbestzclust') self.LVhighzclust = tbdata.field('LVhighzclust') self.LRlowzclust = tbdata.field('LRlowzclust') self.LRbestzclust = tbdata.field('LRbestzclust') self.LRhighzclust = tbdata.field('LRhighzclust') self.LIlowzclust = tbdata.field('LIlowzclust') self.LIbestzclust = tbdata.field('LIbestzclust') self.LIhighzclust = tbdata.field('LIhighzclust') self.LJlowzclust = tbdata.field('LJlowzclust') self.LJbestzclust = tbdata.field('LJbestzclust') self.LJhighzclust = tbdata.field('LJhighzclust') self.LKlowzclust = tbdata.field('LKlowzclust') self.LKbestzclust = tbdata.field('LKbestzclust') self.LKhighzclust = tbdata.field('LKhighzclust') # some extra quantities that are not included in the mastertable dr = sqrt((self.ra - self.cra)**2 + (self.dec - self.cdec)**2) self.drflag = (dr < self.r200deg)
def __init__(self,clustername): #Get current path so program can tell if this is being run on Becky or Rose's computer self.prefix=clustername self.cra=clusterRA[self.prefix] self.cdec=clusterDec[self.prefix] self.cz=clusterz[self.prefix] self.biweightvel=clustercbi[self.prefix] self.biweightscale=clustersbi[self.prefix] self.r200=2.02*(self.biweightscale)/1000./sqrt(OmegaL+OmegaM*(1.+self.cz)**3)*H0/70. # in Mpc self.r200deg=self.r200*1000./my.DA(self.cz,h)/3600. self.cdMpc=self.biweightvel/H0 self.cdcm=self.cdMpc*3.e24 self.csigma=self.biweightscale self.mcl=my.clusterMass(self.csigma,self.cz,h) self.AngDistance=my.DA(self.cz,h) mypath=os.getcwd() if mypath.find('Users') > -1: print "Running on Rose's mac pro" infile='/Users/rfinn/research/LocalClusters/MasterTables/'+clustername+'mastertable.fits' homedir='/Users/rfinn/' elif mypath.find('home') > -1: print "Running on coma" infile='/home/rfinn/research/LocalClusters/MasterTables/'+clustername+'mastertable.fits' homedir='/home/rfinn/' self.cutoutpath=homedir+'research/LocalClusters/cutouts/'+self.prefix+'/' #infile='/home/rfinn/LocalClusters/MasterTables/'+clustername+'mastertable.fits' tb=pyfits.open(infile) tbdata=tb[1].data tb.close() self.agcflag=tbdata.field('AGCflag') self.HIflag=tbdata.field('HIFLAG') self.sdssflag=tbdata.field('SDSSflag') self.sdssphotflag=tbdata.field('SDSSphotflag') self.mpaflag=tbdata.field('MPAFLAG') self.apexflag=tbdata.field('APEXFLAG') self.sexsdssflag=tbdata.field('SEXSDSSflag') self.sex24flag=tbdata.field('SEX24FLAG') self.agcvoptflag=tbdata.field('AGCVOPTFLAG') self.agcnumber=tbdata.field('AGCNUMBER') self.raagc=tbdata.field('AGCRA') self.decagc=tbdata.field('AGCDEC') self.a100=tbdata.field('A100') self.b100=tbdata.field('B100') self.mag10=tbdata.field('MAG10') self.posang=tbdata.field('POSANG') self.bsteintype=tbdata.field('BSTEINTYPE') self.vopt=tbdata.field('VOPT') self.verr=tbdata.field('VERR') self.vsource=tbdata.field('VSOURCE') self.flux100=tbdata.field('FLUX100') self.rms100=tbdata.field('RMS100') self.v21=tbdata.field('V21') self.width=tbdata.field('WIDTH') self.widtherr=tbdata.field('WIDTHERR') #sdss info self.sdssra=tbdata.field('SDSSRA') self.sdssdec=tbdata.field('SDSSDEC') self.sdssphotra=tbdata.field('SDSSphotRA') self.sdssphotdec=tbdata.field('SDSSphotDEC') self.sdssmag=tbdata.field('SDSSMAG') self.sdssu=self.sdssmag[:,0] self.sdssg=self.sdssmag[:,1] self.sdssr=self.sdssmag[:,2] self.sdssi=self.sdssmag[:,3] self.sdssz=self.sdssmag[:,4] self.sdssmagerr=tbdata.field('SDSSMAGERR') self.sdssuerr=self.sdssmagerr[:,0] self.sdssgerr=self.sdssmagerr[:,1] self.sdssrerr=self.sdssmagerr[:,2] self.sdssierr=self.sdssmagerr[:,3] self.sdsszerr=self.sdssmagerr[:,4] self.sdssspecz=tbdata.field('SDSSSPECZ') self.sdssvopt=tbdata.field('SDSSVOPT') self.sdsshaew=tbdata.field('SDSSHAEW') self.sdsshaewerr=tbdata.field('SDSSHAEWERR') self.sdssplate=tbdata.field('SDSSPLATE') self.sdssfiberid=tbdata.field('SDSSFIBERID') self.sdsstile=tbdata.field('SDSSTILE') self.sdssrun=tbdata.field('SDSSRUN') self.sdssrerun=tbdata.field('SDSSRERUN') self.sdsscamcol=tbdata.field('SDSSCAMCOL') self.sdssfield=tbdata.field('SDSSFIELD') self.mpahalpha=tbdata.field('MPAHALPHA') self.mpahbeta=tbdata.field('MPAHBETA') self.mpao3=tbdata.field('MPAOIII') self.mpan2=tbdata.field('MPANII') #sextractor info self.numberser=tbdata.field('NUMBERSER') self.ximageser=tbdata.field('XIMAGESER') self.yimageser=tbdata.field('YIMAGESER') self.xminimageser=tbdata.field('XMINIMAGESER') self.xmaximageser=tbdata.field('XMAXIMAGESER') self.yminimageser=tbdata.field('YMINIMAGESER') self.raser=tbdata.field('RASER') self.decser=tbdata.field('DECSER') self.fluxisoser=tbdata.field('FLUXISOSER') self.fluxerrisoser=tbdata.field('FLUXERRISOSER') self.magisoser=tbdata.field('MAGISOSER') self.magerrisoser=tbdata.field('MAGERRISOSER') self.fluxautoser=tbdata.field('FLUXAUTOSER') self.fluxerrautoser=tbdata.field('FLUXERRAUTOSER') self.magautoser=tbdata.field('MAGAUTOSER') self.magerrautoser=tbdata.field('MAGERRAUTOSER') self.fluxpetroser=tbdata.field('FLUXPETROSER') self.fluxerrpetroser=tbdata.field('FLUXERRPETROSER') self.magpetroser=tbdata.field('MAGPETROSER') self.magerrpetroser=tbdata.field('MAGERRPETROSER') self.kronradser=tbdata.field('KRONRADSER')#kron radius self.petroradser=tbdata.field('PETRORADSER')#petrosian radius self.fluxradser=tbdata.field('FLUXRADSER')#1/2 light radius self.isoareaser=tbdata.field('ISOAREASER') self.aworldser=tbdata.field('AWORLDSER') self.bworldser=tbdata.field('BWORLDSER') self.thetaser=tbdata.field('THETASER') self.errthetaser=tbdata.field('ERRTHETASER') self.thetaj2000ser=tbdata.field('THETAJ2000SER') self.errthetaj2000ser=tbdata.field('ERRTHETAJ2000SER') self.elongser=tbdata.field('ELONGATIONSER') self.elliptser=tbdata.field('ELLIPTICITYSER') self.fwhmser=tbdata.field('FWHMSER') self.flagsser=tbdata.field('FLAGSSER') self.classstarser=tbdata.field('CLASSSTARSER') #SEXTRACTOR output 24 micron data self.numberse24=tbdata.field('NUMBERSE24') self.ximagese24=tbdata.field('XIMAGESE24') self.yimagese24=tbdata.field('YIMAGESE24') self.xminimagese24=tbdata.field('XMINIMAGESE24') self.xmaximagese24=tbdata.field('XMAXIMAGESE24') self.xminimagese24=tbdata.field('YMINIMAGESE24') self.rase24=tbdata.field('RASE24') self.decse24=tbdata.field('DECSE24') self.fluxisose24=tbdata.field('FLUXISOSE24') self.fluxerrisose24=tbdata.field('FLUXERRISOSE24') self.magisose24=tbdata.field('MAGISOSE24') self.magerrisose24=tbdata.field('MAGERRISOSE24') self.fluxautose24=tbdata.field('FLUXAUTOSE24') self.fluxerrautose24=tbdata.field('FLUXERRAUTOSE24') self.magautose24=tbdata.field('MAGAUTOSE24') self.magerrautose24=tbdata.field('MAGERRAUTOSE24') self.fluxpetrose24=tbdata.field('FLUXPETROSE24') self.fluxerrpetrose24=tbdata.field('FLUXERRPETROSE24') self.magpetrose24=tbdata.field('MAGPETROSE24') self.magerrpetrose24=tbdata.field('MAGERRPETROSE24') self.kronradse24=tbdata.field('KRONRADSE24') self.petroradse24=tbdata.field('PETRORADSE24') self.fluxradse24=tbdata.field('FLUXRADSE24') self.isoarease24=tbdata.field('ISOAREASE24') self.aworldse24=tbdata.field('AWORLDSE24') self.bworldse24=tbdata.field('BWORLDSE24') self.thetase24=tbdata.field('THETASE24') self.errthetase24=tbdata.field('ERRTHETASE24') self.thetaj2000se24=tbdata.field('THETAJ2000SE24') self.errthetaj2000se24=tbdata.field('ERRTHETAJ2000SE24') self.elongse24=tbdata.field('ELONGATIONSE24') self.elliptse24=tbdata.field('ELLIPTICITYSE24') self.fwhmse24=tbdata.field('FWHMSE24') self.flagsse24=tbdata.field('FLAGSSE24') self.classstarse24=tbdata.field('CLASSSTARSE24') self.f24dist=self.fluxautose24[self.sex24flag] #apex output self.mipsra=tbdata.field('MIPSRA') self.mipsdec=tbdata.field('MIPSDEC') self.mipsflux=tbdata.field('MIPSFLUX') self.mipsfluxerr=tbdata.field('MIPSFLUXERR') self.mipssnr=tbdata.field('MIPSSNR') self.mipsdeblend=tbdata.field('MIPSDEBLEND') self.mipsfluxap1=tbdata.field('MIPSFLUXAP1') self.mipsfluxap1err=tbdata.field('MIPSFLUXAP1ERR') self.mipsfluxap2=tbdata.field('MIPSFLUXAP2') self.mipsfluxap2err=tbdata.field('MIPSFLUXAP2ERR') self.mipsfluxap3=tbdata.field('MIPSFLUXAP3') self.mipsfluxap4err=tbdata.field('MIPSFLUXAP3ERR') self.On24ImageFlag=tbdata.field('On24ImageFlag') self.supervopt=tbdata.field('SUPERVOPT') self.ra=tbdata.field('SUPERRA') self.dec=tbdata.field('SUPERDEC') self.stellarmass=tbdata.field('STELLARMASS') self.stellarmass_cl=tbdata.field('STELLARMASS_CL') self.sdssabsmag=tbdata.field('SDSSABSMAG') self.sdssMu=self.sdssabsmag[:,0] self.sdssMg=self.sdssabsmag[:,1] self.sdssMr=self.sdssabsmag[:,2] self.sdssMi=self.sdssabsmag[:,3] self.sdssMz=self.sdssabsmag[:,4] self.sdsslum=tbdata.field('SDSSLUM') self.sdssLu=self.sdsslum[:,0] self.sdssLg=self.sdsslum[:,1] self.sdssLr=self.sdsslum[:,2] self.sdssLi=self.sdsslum[:,3] self.sdssLz=self.sdsslum[:,4] self.sdssabsmag_cl=tbdata.field('SDSSABSMAG_CL') self.sdssMu=self.sdssabsmag_cl[:,0] self.sdssMg=self.sdssabsmag_cl[:,1] self.sdssMr=self.sdssabsmag_cl[:,2] self.sdssMi=self.sdssabsmag_cl[:,3] self.sdssMz=self.sdssabsmag_cl[:,4] self.sdsslum_cl=tbdata.field('SDSSLUM_CL') self.sdssLu_cl=self.sdsslum_cl[:,0] self.sdssLg_cl=self.sdsslum_cl[:,1] self.sdssLr_cl=self.sdsslum_cl[:,2] self.sdssLi_cl=self.sdsslum_cl[:,3] self.sdssLz_cl=self.sdsslum_cl[:,4] self.sdsscolc=tbdata.field('SDSSCOLC') self.sdssrowc=tbdata.field('SDSSROWC') self.membflag =tbdata.field('MEMBFLAG') self.morphflag =tbdata.field('MORPHFLAG') self.morph =tbdata.field('MORPH') self.disturb =tbdata.field('DISTURB') self.localdens =tbdata.field('LOCALDENS') self.agn1 =tbdata.field('AGNKAUFF') self.agn2 =tbdata.field('AGNKEWLEY') self.agn3 =tbdata.field('AGNSTASIN') self.n2halpha=(self.mpan2/self.mpahalpha) self.o3hbeta=(self.mpao3/self.mpahbeta) self.logn2halpha=log10(self.mpan2/self.mpahalpha) self.logo3hbeta=log10(self.mpao3/self.mpahbeta) self.ellipseflag24 =tbdata.field('ELLIPSEFLAG24') self.ellipseflagsdss =tbdata.field('ELLIPSEFLAGSDSS') self.ellipseflag =tbdata.field('ELLIPSEFLAG') # galaxy zoo fields self.galzooflag =tbdata.field('GALZOOFLAG') self.galzoonvote =tbdata.field('GALZOONVOTE') self.galzoopel =tbdata.field('GALZOOPEL') self.galzoopcw =tbdata.field('GALZOOPCW') self.galzoopacw =tbdata.field('GALZOOPACW') self.galzoopedge =tbdata.field('GALZOOPEDGE') self.galzoopdk =tbdata.field('GALZOOPDK') self.galzoopmg =tbdata.field('GALZOOPMG') self.galzoopcs =tbdata.field('GALZOOPCS') self.galzoopeldebiased =tbdata.field('GALZOOPELDEBIASED') self.galzoopcsdebiased =tbdata.field('GALZOOPCSDEBIASED') self.galzoospiral =tbdata.field('GALZOOSPIRAL') self.galzooelliptical =tbdata.field('GALZOOELLIPTICAL') self.galzoouncertain =tbdata.field('GALZOOUNCERTAIN') #new SDSS fields that quantify radial extent of galaxy self.sdssIsoAr =tbdata.field('SDSSISOAR') self.sdssIsoBr =tbdata.field('SDSSISOBR') self.sdssIsoPhir =tbdata.field('SDSSISOPHIR') self.sdssIsoPhirErr =tbdata.field('SDSSISOPHIERRR') self.sdssExpRadr =tbdata.field('SDSSEXPRADR') self.sdssExpABr =tbdata.field('SDSSEXPABR') self.sdssExpABrErr =tbdata.field('SDSSEXPABRERR') self.sdssExpPhir =tbdata.field('SDSSEXPPHIR') self.sdssExpPhirErr =tbdata.field('SDSSEXPPHIERRR') self.sdssPetroMag=tbdata.field('SDSSPETROMAG') self.sdssPetroMagr=self.sdssPetroMag[:,2] self.sdssPetroRad=tbdata.field('SDSSPETRORAD') self.sdssPetroRadr=self.sdssPetroRad[:,2] self.sdssPetroR50=tbdata.field('SDSSPETROR50') self.sdssPetroR50r=self.sdssPetroR50[:,2] self.sdssPetroR90=tbdata.field('SDSSPETROR90') self.sdssPetroR90r=self.sdssPetroR90[:,2] #de-redened magnitudes self.sdssdered=tbdata.field('SDSSDERED') self.sdssumag=self.sdssdered[:,0] self.sdssgmag=self.sdssdered[:,1] self.sdssrmag=self.sdssdered[:,2] self.sdssimag=self.sdssdered[:,3] self.sdsszmag=self.sdssdered[:,4] # other Lum and SFR self.HImass=tbdata.field('HIMASS') self.L24=tbdata.field('L24') self.L24err=tbdata.field('L24ERR') self.Lir=tbdata.field('LIR') self.Lirerr=tbdata.field('LIRERR') self.SFR24=tbdata.field('SFR24') self.SFR24err=tbdata.field('SFR24ERR') self.SuperSFR24=tbdata.field('SUPERSFR24') self.SuperSFR24err=tbdata.field('SUPERSFR24ERR') self.HImass_cl=tbdata.field('HIMASS_CL') self.L24_cl=tbdata.field('L24_CL') self.L24err_cl=tbdata.field('L24ERR_CL') self.Lir_cl=tbdata.field('LIR_CL') self.Lirerr_cl=tbdata.field('LIRERR_CL') self.SFR24_cl=tbdata.field('SFR24_CL') self.SFR24err_cl=tbdata.field('SFR24ERR_CL') self.SuperSFR24_cl=tbdata.field('SUPERSFR24_CL') self.SuperSFR24err_cl=tbdata.field('SUPERSFR24ERR_CL') #define red, green and blue galaxies ur=self.sdssumag-self.sdssrmag self.redflag=(ur > 2.3) self.greenflag=(ur > 1.8) & (ur < 2.3) self.blueflag=(ur<1.8) #end of master table! #self.spiralFlag=self.On24ImageFlag & self.galzooflag & self.ellipseflag & (self.galzoopcsdebiased > 0.6) self.spiralFlag=self.galzooflag & self.galzoospiral self.clustername=clustername self.clusterra=clusterRA[clustername] self.clusterdec=clusterDec[clustername] self.dr=sqrt((self.ra-self.clusterra)**2+(self.dec-self.clusterdec)**2) self.drR200=self.dr/self.r200deg self.clustervel=clustervel[clustername] self.clustersigma=clustersigma[clustername] self.clustervmin=self.clustervel-3.*self.clustersigma self.clustervmax=self.clustervel+3.*self.clustersigma self.dist=sqrt((self.clusterra-self.ra)**2 + (self.clusterdec-self.dec)**2) self.flagHI = (self.flux100 > 0.) self.flagmemb = ((self.vopt > self.clustervmin) & (self.vopt < self.clustervmax)) | ((self.v21 > self.clustervmin) & (self.v21 < self.clustervmax)) self.dv=abs(self.supervopt-self.biweightvel)/self.biweightscale self.allvelocity=3.e5*self.sdssspecz for i in range(len(self.allvelocity)): if self.sdssflag[i] < 1: if self.v21[i] > 0: self.allvelocity[i]=self.v21[i] else: self.allvelocity[i]=self.vopt[i] self.nmemb=len(self.dist[self.membflag & self.On24ImageFlag]) self.nfield=len(self.dist[self.On24ImageFlag])-self.nmemb print self.clustername,": ","N members = ",self.nmemb," N field = ",self.nfield print ' N spirals = ',sum(self.spiralFlag),' Nspiral members = ',sum(self.spiralFlag&self.membflag) print ' N spirals on 24um image = ',sum(self.spiralFlag & self.On24ImageFlag),' Nspiral members = ',sum(self.spiralFlag&self.membflag & self.On24ImageFlag) print ' N galaxies on 24um image = ',sum(self.On24ImageFlag),' Nspiral members = ',sum(self.membflag & self.On24ImageFlag) self.agcdict=dict((a,b) for a,b in zip(self.agcnumber,arange(len(self.agcnumber)))) #self.L24=zeros(len(self.mipsflux),'d') #self.L24err=zeros(len(self.mipsflux),'d') # calculate HI deficiency using Toribio et al 2011 results # their relation is # log(M_HI/Msun) = 8.72 + 1.25 log(D_25,r/kpc) # and # log D_25 = log D_25(obs) + beta log(b/a), where beta = 0.35 in r-band # NOTE: SDSS isophotal radii are given in pixels!!!! a=self.sdssIsoAr b=self.sdssIsoBr # convert from arcsec to kpc with self.AngDistance (which is in units of kpc/arcsec) # multiply by 2 to convert from radius to diameter # multiply by sdss pixel scale (0.39) b/c isophotal radii are given in pixels self.D25obskpc=2.*self.sdssIsoAr*sdsspixelscale*self.AngDistance # apply correction from toribio et al 2011 self.logD25kpc=log10(self.D25obskpc) + 0.35*log10(b/a) # use toribio et al relation to predict the expected HI mass, including factor of 2 correction self.HImassExpected = 10.**(8.72 + 1.25*(self.logD25kpc-log10(2.))) self.HImassExpFromMr=10.**(6.44-0.18*self.sdssMr) self.HImassExpFromgr=10.**(8.84+1.81*(self.sdssgmag-self.sdssrmag)) # calculate deficiency as log expected - log observed self.HIDef = log10(self.HImassExpected) - log10(self.HImass) self.myHIDef = log10(self.HImassExpected -self.HImass) self.agnflag=self.agn1#use Kauffmann et al 2003 cut self.irflag = self.apexflag & self.membflag #set flag fot galaxies with dv < 3 sigma self.dvflag = self.dv < 3.