Source code for GalaxySurveyVIPERS
"""
.. class:: GalaxySurveyVIPERS
.. moduleauthor:: Johan Comparat <johan.comparat__at__gmail.com>
The class GalaxySurveyVIPERS is dedicated to handling VIPERS 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 GalaxySurveyVIPERS:
"""
Loads the environement proper to the VIPERS survey :
* Defines all the proper paths in the database,
* Opens the catalog,
:param redshift_catalog: name of the VIPERS redshift catalog (path to the fits file)
"""
def __init__(self,redshift_catalog="VIPERS_W14_summary_v1.fits"):
self.redshift_catalog = redshift_catalog
self.database_dir = os.environ['DATA_DIR']
self.vipers_dir = join(self.database_dir,"VIPERS")
self.vipers_catalog_dir = join(self.vipers_dir,"catalogs")
self.vipers_spectra_dir = join(self.vipers_dir,"spectra")
hd = fits.open(join(self.vipers_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['E_BV'][i] * CalzettiLaw((1 + self.catalog['zspec'][i]) * line[1])) for i in range(len(self.catalog['zspec']))])
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