Source code for GalaxySurveyVVDS
"""
.. class:: GalaxySurveyVVDS
.. moduleauthor:: Johan Comparat <johan.comparat__at__gmail.com>
The class GalaxySurveyVVDS is dedicated to handling VVDS survey.
"""
from os.path import join
import os
import numpy as n
import astropy.io.fits as fits
from MiscellanousFunctionsLibrary import *
import astropy.units as u
[docs]class GalaxySurveyVVDS:
"""
Loads the environement proper to the VVDS survey :
* Defines all the proper paths in the database,
* Opens the catalog,
:param redshift_catalog: name of the VVDS redshift catalog (path to the fits file)
"""
def __init__(self,redshift_catalog="VVDS_WIDE_summary.fits"):
self.redshift_catalog = redshift_catalog
self.database_dir = os.environ['DATA_DIR']
self.vvds_dir = join(self.database_dir,"VVDS")
self.vvds_catalog_dir = join(self.vvds_dir,"catalogs")
self.vvds_spectra_dir = join(self.vvds_dir,"spectra")
hd = fits.open(join(self.vvds_catalog_dir,self.redshift_catalog))
self.catalog = hd[1].data
hd.close()
[docs] def computeLineLuminosity(self,line,distanceCorrection):
""" computes the line luminosities for the line list given.
:param catalog: fits catalog containing redshift, EBV and line fluxes
:param line:
"""
ebvCorrection=n.array([ 10**(0.4 *self.catalog['EBV_MW'][i] * CalzettiLaw((1 + self.catalog['Z'][i]) * line[1])) for i in range(len(self.catalog['Z']))])
correctionAperture = 1. / self.catalog['fo']
flux=ebvCorrection* correctionAperture * self.catalog[line[2] +'_flux']* u.erg/ u.cm**2 /u.s
Luminosity=fits.Column(name=line[2]+"_luminosity",format="D", unit="erg/s", array=distanceCorrection*flux )
LuminosityErr=fits.Column(name=line[2]+"_luminosityErr",format="D", unit="erg/s", array= self.catalog[line[2]+'_fluxErr']/ self.catalog[line[2]+'_flux']* distanceCorrection *flux)
return Luminosity, LuminosityErr