Source code for jetset.cosmo_tools

__author__ = "Andrea Tramacere"

from astropy.units import  Unit as u
from astropy import cosmology 

__all__=['Cosmo']


[docs] class Cosmo (object): def __init__(self,astropy_cosmo=None,DL_cm=None,verbose=False): _c = None if DL_cm is not None and astropy_cosmo is not None: raise RuntimeError('Either you provide an astropy cosmology objet, or luminosity distance in cm, or nothing') elif astropy_cosmo is None and DL_cm is None: _c = cosmology.Planck13 elif astropy_cosmo is not None and DL_cm is None: _c = astropy_cosmo elif astropy_cosmo is None and DL_cm is not None: _c=None if verbose is True: print("using cosmo without z and only DL, should be used only for galactic objects!!") print("z will be fixed to zero") else: raise RuntimeError('Either you provide an astropy comsology objet, or luminosity distance in cm, or nothing') self._c = _c self._DL_cm = DL_cm def __repr__(self): if self._c is not None: s= '%s' % self._c elif self._DL_cm is not None: x=self._DL_cm*u('cm') s= 'cosmology is not defined, the luminosity distance has been set to %s'%x else: s='you have to define either an astropy comoslogy model or set a luminosity distance in cm' return s
[docs] def get_DL_cm(self,z=None): if self._c is not None: #THIS IS FIXING THE ERROR WITH PICKLED COSMO #TODO open issue on astropy! try: _d= self._c.luminosity_distance( z ).to('cm').value except: _d = self._c.luminosity_distance(z) _d = _d.value*u(str(_d.unit)) _d = _d.to('cm').value else: _d = self._DL_cm.value return _d