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 getnearest(self,j): self.sig5=N.zeros(len(self.ra),'f') self.sig10=N.zeros(len(self.ra),'f') self.sig5phot=N.zeros(len(self.ra),'f') self.sig10phot=N.zeros(len(self.ra),'f') self.nearest=N.zeros(len(self.ra),'f')#distance to nearest neighbor self.dmagnearest=N.zeros(len(self.ra),'f')#mag diff b/w spec obj and nearest for i in range(len(self.ra)): angdist=my.DA(c.z[j],h100)#kpc/arcsec if self.memb[i] > 0: dspec=N.sqrt((self.ra[i]-self.ra)**2+(self.dec[i]-self.dec)**2)#sorted array of distances in degrees dphot=N.sqrt((self.ra[i]-self.photra)**2+(self.dec[i]-self.photdec)**2)#sorted array of distances in degrees Mvsort=N.take(self.V,N.argsort(dspec)) phMvsort=N.take(self.phMv,N.argsort(dphot)) dspecsort=N.take(dspec,N.argsort(dspec)) self.sig5[i]=5./(N.pi)/(dspecsort[5]*3600.*angdist/1000.)**2#convert from deg to arcsec, multiply by DA (kpc/arcsec), divide by 1000 to convert to Mpc, index 5 element b/c 0 is itself if (len(dspecsort) > 10): self.sig10[i]=10./(N.pi)/(dspecsort[10]*3600.*angdist/1000.)**2 else: self.sig10[i]=0. dphotsort=N.take(dphot,N.argsort(dphot)) self.nearest[i]=dphotsort[0] self.dmagnearest[i]=phMvsort[0]-Mvsort[0] self.sig5phot[i]=5./(N.pi)/(dphotsort[5]*3600.*angdist/1000.)**2 self.sig10phot[i]=10./(N.pi)/(dphotsort[10]*3600.*angdist/1000.)**2
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 getnearestgen(self,ra1,dec1,ra2,dec2,j):#measure distances from ra1, dec1 to members in catalog ra2, dec2 sig5=N.zeros(len(ra1),'f') sig10=N.zeros(len(ra1),'f') for i in range(len(ra1)): angdist=my.DA(c.z[j],h100)#kpc/arcsec dspec=N.sqrt((ra1[i]-ra2)**2+(dec1[i]-dec2)**2)#sorted array of distances in degrees dspecsort=N.take(dspec,N.argsort(dspec)) sig5[i]=5./(N.pi)/(dspecsort[5]*3600.*angdist/1000.)**2#convert from deg to arcsec, multiply by DA (kpc/arcsec), divide by 1000 to convert to Mpc, index 5 element b/c 0 is itself sig10[i]=10./(N.pi)/(dspecsort[10]*3600.*angdist/1000.)**2#convert from deg to arcsec, multiply by DA (kpc/arcsec), divide by 1000 to convert to Mpc, index 5 element b/c 0 is itself return sig5, sig10
def plotdVdz(): nv = 3. nr = 1. ppgplot.pgbeg("dVdz.ps/vcps", 1, 1) #color port. ppgplot.pgpap(8., 1.25) ppgplot.pgpage ppgplot.pgsch(1.2) #font size ppgplot.pgslw(3) #line width # 1st panel with symbols w/ stddev errorbars x1 = .15 x2 = .45 x3 = .6 x4 = .95 y1 = .15 y2 = .425 y3 = .575 y4 = .85 xlabel = 14.1 - 14. ylabel = 1.15 schdef = 1.2 slwdef = 4 ppgplot.pgsch(schdef) xmin = 0. xmax = 1.1 ymin = 0. ymax = 1.2 ppgplot.pgsvp(x1, x4, y1, y4) #sets viewport ppgplot.pgslw(slwdef) #line width ppgplot.pgswin(xmin, xmax, ymin, ymax) #axes limits ppgplot.pgbox('bcnst', .2, 2, 'bcvnst', .2, 2) #tickmarks and labeling ppgplot.pgmtxt('b', 2.5, 0.5, 0.5, "z") #xlabel ppgplot.pgmtxt('l', 2.6, 0.5, 0.5, "(1/DH)\u3\d c dV\dc\u/dv/d\gW") z = N.arange(0., 5., .1) beta = ((1 + z)**2 - 1) / ((1 + z)**2 + 1) dV = N.zeros(len(z), 'd') for i in range(len(z)): #dz=dv/(1+z[i])*(1- ((1+z[i])**2 -1)/((1+z[i])**2+1))**(-2) #z1=z[i]-0.5*dz #z2=z[i]+0.5*dz #dV[i]=my.dL(z2,h) - my.dL(z1,h) dA = my.DA(z[i], h) * 206264. / 1000. dV[i] = DH * (1 + z[i]) * (dA)**2 / (my.E( z[i])) / (1 - beta[i])**2 / DH**3 #dV[i]=DH*(1+z[i])**2*(dA)**2/(my.E(z[i]))/DH**3#for comparison w/Hogg if z[i] < 1: print i, z[i], dV[i], dV[i]**(1. / 3.) ppgplot.pgline(z, dV) ppgplot.pgend()
def __init__(self): self.prefix = names[ncl] 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. # in Degrees self.dr = 3. #get galaxies w/in 3 degrees
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): 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] #infile=homedir+'research/LocalClusters/NSAmastertables/NSAwithAGC/'+clustername+'_NSAmastertable_topcat.fits' #self.n=atpy.Table(infile) infile=homedir+'research/LocalClusters/NSAmastertables/'+clustername+'_NSA.fits' self.n=fits.getdata(infile) #infile=homedir+'research/LocalClusters/NSAmastertables/'+clustername+'_NSAmastertable.fits' #self.nsa=atpy.Table(infile) 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. dr=sqrt((self.cra-self.n.RA)**2+(self.cdec-self.n.DEC)**2)/self.r200deg dv=abs(self.n.ZDIST*3.e5-self.biweightvel)/self.biweightscale self.membflag=(dv < 3.) & (dr < 1.)
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. mypath = os.getcwd() if mypath.find('Users') > -1: print "Running on Rose's mac pro" infile = '/Users/rfinn/research/LocalClusters/MasterTables/' + clustername + 'mastertable.fits' elif mypath.find('home') > -1: print "Running on coma" infile = '/home/rfinn/research/LocalClusters/MasterTables/' + clustername + 'mastertable.fits' #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.sdssu = tbdata.field('SDSSU') self.sdssg = tbdata.field('SDSSG') self.sdssr = tbdata.field('SDSSR') self.sdssi = tbdata.field('SDSSI') self.sdssz = tbdata.field('SDSSZ') 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.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.sdssMu = tbdata.field('SDSSMU') self.sdssLu = tbdata.field('SDSSLU') self.sdssMg = tbdata.field('SDSSMG') self.sdssLg = tbdata.field('SDSSLG') self.sdssMr = tbdata.field('SDSSMR') self.sdssLr = tbdata.field('SDSSLR') self.sdssMi = tbdata.field('SDSSMI') self.sdssLi = tbdata.field('SDSSLI') self.sdssMz = tbdata.field('SDSSMZ') self.sdssLz = tbdata.field('SDSSLZ') 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.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') #end of master table! #self.spiralFlag=self.On24ImageFlag & self.galzooflag & self.ellipseflag & (self.galzoopcsdebiased > 0.6) self.spiralFlag = self.On24ImageFlag & self.galzooflag & self.ellipseflag & 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.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)
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 mypath = os.getcwd() if mypath.find('Users') > -1: print "Running on Rose's mac pro" infile = '/Users/rfinn/research/LocalClusters/MasterTables/' + clustername + 'mastertable.WithProfileFits.fits' homedir = '/Users/rfinn/' elif mypath.find('home') > -1: print "Running on coma" infile = '/home/rfinn/research/LocalClusters/MasterTables/' + clustername + 'mastertable.WithProfileFits.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.sdssu = tbdata.field('SDSSU') self.sdssg = tbdata.field('SDSSG') self.sdssr = tbdata.field('SDSSR') self.sdssi = tbdata.field('SDSSI') self.sdssz = tbdata.field('SDSSZ') 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.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.sdssMu = tbdata.field('SDSSMU') self.sdssLu = tbdata.field('SDSSLU') self.sdssMg = tbdata.field('SDSSMG') self.sdssLg = tbdata.field('SDSSLG') self.sdssMr = tbdata.field('SDSSMR') self.sdssLr = tbdata.field('SDSSLR') self.sdssMi = tbdata.field('SDSSMI') self.sdssLi = tbdata.field('SDSSLI') self.sdssMz = tbdata.field('SDSSMZ') self.sdssLz = tbdata.field('SDSSLZ') 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.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.sdssumag = tbdata.field('SDSSDEREDU') #de-redened magnitudes self.sdssgmag = tbdata.field('SDSSDEREDG') self.sdssrmag = tbdata.field('SDSSDEREDR') self.sdssimag = tbdata.field('SDSSDEREDI') self.sdsszmag = tbdata.field('SDSSDEREDZ') #end of master table! #from mastertable WithProfileFits self.spiralFlag = tbdata.field('SPIRALFLAG') self.r0SDSS = tbdata.field('R0SDSS') self.r30SDSS = tbdata.field('R30SDSS') self.r50SDSS = tbdata.field('R50SDSS') self.r90SDSS = tbdata.field('R90SDSS') self.skySDSS = tbdata.field('SKYSDSS') self.r30EncFluxSDSS = tbdata.field('R30ENCFLUXSDSS') self.r90EncFluxSDSS = tbdata.field('R90ENCFLUXSDSS') self.MaxEncFluxSDSS = tbdata.field('MAXENCFLUXSDSS') self.SDSSF30 = tbdata.field('SDSSF30') self.SDSSF50 = tbdata.field('SDSSF50') self.SDSSF90 = tbdata.field('SDSSF90') self.r0F24 = tbdata.field('R0F24') self.r30F24 = tbdata.field('R30F24') self.r50F24 = tbdata.field('R50F24') self.r90F24 = tbdata.field('R90F24') self.skyF24 = tbdata.field('SKYF24') self.r30EncFluxF24 = tbdata.field('R30ENCFLUXF24') self.r90EncFluxF24 = tbdata.field('R90ENCFLUXF24') self.MaxEncFluxF24 = tbdata.field('MAXENCFLUXF24') self.mipsF30 = tbdata.field('MIPSF30') self.mipsF50 = tbdata.field('MIPSF50') self.mipsF90 = tbdata.field('MIPSF90') self.SDSSEllipseEllip = tbdata.field('SDSSEllipseEllip') self.SDSSEllipseEllipErr = tbdata.field('SDSSEllipseEllipErr') self.SDSSEllipsePhi = tbdata.field('SDSSEllipsePhi') self.SDSSEllipsePhiErr = tbdata.field('SDSSEllipsePhiErr') self.imagearea50 = pi * (self.r50SDSS / pscalesdss)**2 * (1 - self.SDSSEllipseEllip) self.imagearea90 = pi * (self.r90SDSS / pscalesdss)**2 * (1 - self.SDSSEllipseEllip) self.mipsimagearea50 = pi * (self.r50SDSS / pscale24)**2 * (1 - self.SDSSEllipseEllip) self.mipsimagearea90 = pi * (self.r90SDSS / pscale24)**2 * (1 - self.SDSSEllipseEllip) self.mipsF30err = tbdata.field('mipsF30err') self.mipsF50err = tbdata.field('mipsF50err') #/sqrt(mipsimagearea50) self.mipsF90err = tbdata.field('mipsF90err') #/sqrt(mipsimagearea90) self.SDSSF30err = tbdata.field('sdssF30err') self.SDSSF50err = tbdata.field('sdssF50err') #/sqrt(imagearea50) self.SDSSF90err = tbdata.field('sdssF90err') #/sqrt(imagearea90) #end of master table! #redefining noise estimates until I can deal w/this properly self.sdsssnr = self.fluxautoser / self.fluxerrautoser # self.mipsF50err = self.mipsF50/(self.mipssnr*sqrt(self.mipsF50/self.fluxautose24)) # self.mipsF90err = self.mipsF90/(self.mipssnr*sqrt(self.mipsF90/self.fluxautose24)) # self.SDSSF50err = self.SDSSF50/(self.sdsssnr*sqrt(self.SDSSF50/self.fluxautoser)) # self.SDSSF90err = self.SDSSF90/(self.sdsssnr*sqrt(self.SDSSF90/self.fluxautoser)) #self.mipsF50err = self.mipsF50/(self.mipssnr) #self.mipsF90err = self.mipsF90/(self.mipssnr) #self.SDSSF50err = self.SDSSF50/(self.sdsssnr) #self.SDSSF90err = self.SDSSF90/(self.sdsssnr) #self.spiralFlag=self.On24ImageFlag & self.galzooflag & self.ellipseflag & (self.galzoopcsdebiased > 0.6) #self.spiralFlag=self.On24ImageFlag & self.galzooflag & self.ellipseflag & 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) self.agcdict = dict( (a, b) for a, b in zip(self.agcnumber, arange(len(self.agcnumber)))) self.sSFR50 = self.mipsF50 / self.SDSSF50 a = self.mipsF50 b = self.SDSSF50 aerr = self.mipsF50err berr = self.SDSSF50err self.sSFR50err = sqrt((aerr / b)**2 + (a * berr / b**2)**2) self.sSFR90 = self.mipsF90 / self.SDSSF90 a = self.mipsF90 b = self.SDSSF90 aerr = self.mipsF90err berr = self.SDSSF90err self.sSFR90err = sqrt((aerr / b)**2 + (a * berr / b**2)**2) self.sSFR5090 = (self.mipsF90 - self.mipsF50) / (self.SDSSF90 - self.SDSSF50) a = (self.mipsF90 - self.mipsF50) b = (self.SDSSF90 - self.SDSSF50) aerr = sqrt((self.mipsF50err)**2 + (self.mipsF90err)**2) berr = sqrt(self.SDSSF50err**2 + self.SDSSF90err**2) self.sSFR5090err = sqrt((aerr / b)**2 + (a * berr / b**2)**2) self.ratio0 = self.r0F24 / self.r0SDSS self.ratio30 = self.r30F24 / self.r30SDSS self.ratio90 = self.r90F24 / self.r90SDSS self.ratio30EncFlux = self.r30EncFluxF24 / self.r30EncFluxSDSS self.ratio90EncFlux = self.r90EncFluxF24 / self.r90EncFluxSDSS #self.L24=zeros(len(self.mipsflux),'d') #self.L24err=zeros(len(self.mipsflux),'d') ## these should be added to mastertable 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 = self.mipsflux * conv self.L24err = self.mipsfluxerr * conv self.SFR24 = self.L24 * 8. * 4.5e-44 * Lsol #approx conv from papovich self.SFR24err = self.L24err * 8. * 4.5e-44 * Lsol #approx conv from papovich self.SFR24se = (self.fluxautose24 * 141 * conv) * 8. * 4.5e-44 * Lsol #approx conv from papovich self.SFR24seerr = (self.fluxerrautose24 * 141 * conv ) * 8. * 4.5e-44 * Lsol #approx conv from papovich self.snr24se = abs(self.SFR24se / self.SFR24seerr) self.superSFR24 = self.SFR24 * self.apexflag + self.SFR24se * ( ~self.apexflag & self.sex24flag) self.superSFR24err = self.SFR24err * self.apexflag + self.SFR24seerr * ( ~self.apexflag & self.sex24flag) self.sSFR = self.SFR24 / self.stellarmass self.HImass = 2.356e5 * self.flux100 / 100. * self.cdMpc**2
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)
#!/usr/bin/env python import pyfits from LCScommon import * from pylab import * import os, atpy import mystuff as my import chary_elbaz_24um as chary mingalaxysize_kpc = my.DA(clusterbiweightcenter['Hercules'] / 3.e5, h) * mingalaxysize class baseClusterNSA: 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
def getobsmemberids(self): #get galaxies within nr*dr and nv*dv #print "within getobsmemberids(), nv,nr,len(x1) = ",nv,nr,len(g.x1) #print "within measurecontam(), nv,nr,len(x1) = ",nv,nr,len(g.x1),len(self.mass) #print self.mass self.obsmembids = N.zeros(len(self.x1), 'd') self.obsmembflag = N.ones(len(self.x1), 'd') self.obsmembids = list(self.obsmembids) self.obsdr = N.zeros(len(self.x1), 'd') self.obsdr = list(self.obsdr) self.obsdv = N.zeros(len(self.x1), 'd') self.obsdv = list(self.obsdv) self.obsmembincut = N.zeros(len(self.x1), 'd') nomemb = 0. vbox = my.vofz( zbox) #redshift of box center given epoch of observation #i.e. recession velocity corresponding to z=0.2, 0.4, 0.6, etc of GIF observations for i in range(len(self.x1)): #self.obsmembids[i]=[] vcl = H0 * self.x3[i] deltar = nr * self.r200[i] #tolerance for matching deltav = nv * self.sigma[i] #tolerance for matching #print i,"cluster id, mass, r200, sigma = ",self.id[i],self.mass[i],self.r200[i],self.sigma[i],Mclmin temp = [] #put cluster in middle of box x1 = g.x1 - self.x1[i] + 0.5 * simL #flip coordinates so galaxy x1 ranges from 0 to simL for j in range(len(x1)): if x1[j] > simL: x1[j] = x1[j] - simL if x1[j] < 0: x1[j] = x1[j] + simL x2 = g.x2 - self.x2[i] + 0.5 * simL for j in range(len(x2)): if x2[j] > simL: x2[j] = x2[j] - simL if x2[j] < 0: x2[j] = x2[j] + simL x3 = g.x3 - self.x3[i] + 0.5 * simL for j in range(len(x3)): if x3[j] > simL: x3[j] = x3[j] - simL if x3[j] < 0: x3[j] = x3[j] + simL gvobs = x3 * H0 + g.v3 gvobs = my.relsumv(vbox, gvobs) gz = my.zofv(gvobs) (x1sort, x1index) = my.sortwindex(x1) (x2sort, x2index) = my.sortwindex(x2) (temp, matchflag1) = my.findmatch(0.5 * simL, x1sort, deltar) if (matchflag1 > 0): templist1 = [] for j in range(len(temp)): templist1.append(x1index[temp[j]]) temp = [] (temp, matchflag2) = my.findmatch(0.5 * simL, x2sort, deltar) if (matchflag2 > 0): templist2 = [] for j in range(len(temp)): templist2.append(x2index[temp[j]]) if (matchflag1 + matchflag2) < 2.: nomemb = nomemb + 1. self.obsmembflag[i] = 0. print "no observed members in cluster ", i continue a = sets.Set(templist1) b = sets.Set(templist2) members = a & b members = list(members) #templist1=N.argsort(templist1) #templist2=N.argsort(templist2) subset = [] odv = [] odr = [] ccvobs = my.relsumv(vbox, 0.5 * simL * H0) ccz = my.zofv(ccvobs) cdtheta = self.r200[i] / my.DA(ccz, h) ccx1 = 0.5 * simL ccx2 = 0.5 * simL for k in members: dr = (N.sqrt((x1[k] - ccx1)**2 + (x2[k] - ccx2)**2)) / self.r200[i] if dr < nr: dv = (gvobs[k] - ccvobs) / (1 - gvobs[k] * ccvobs / (9.e10)) / self.sigma[i] if abs(dv) <= nv: #deltav: gdtheta = dr * self.r200[i] / my.DA(gz[k], h) if gdtheta <= cdtheta: #make sure galaxy is in cone field-of-view subset.append(k) odv.append(dv) odr.append(dr) self.obsmembids[i] = subset self.obsdr[i] = odr self.obsdv[i] = odv self.obsmembincut[i] = len(subset) if self.obsmembincut[i] < 1.: nomemb = nomemb + 1. self.obsmembflag[i] = 0. print nomemb, " clusters with no observed members", nomemb / len( self.x1)
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.