Ejemplo n.º 1
0
def cgmsurvey_from_sightlines_fields(fields,
                                     sightlines,
                                     rho_max=300 * u.kpc,
                                     name=None,
                                     dummysys=True,
                                     embuffer=None,
                                     **kwargs):
    """Instantiate CGMAbsSurvey object from lists fo IgmGalaxyFields and IGMSightlines

    Parameters
    ----------
    fields: list of IgmGalaxyFields
    sightlines : list of IGMSightlines
    name : str, optional
        Name for the survey
    dummysys : bool, optional
        Passed on to 'cgm_from_galaxy_igmsystems()'.  If True, create CGMAbsSys
        even if no matching IGMSystem is found in any sightline for some galaxy
    embuffer : Quantity, optional
        Velocity buffer between background source (e.g., QSO) and CGMAbsSys

     Returns
    -------
    cgmsurvey: CGMAbsSurvey
    """
    if ((not isinstance(fields, list)) | (not isinstance(sightlines, list)) |
        (len(fields) != len(sightlines))):
        raise IOError(
            "Inputs fields and sightlines must lists of the same length")

    if dummysys is True:
        from linetools.spectralline import AbsLine
        ismlist = LineList('ISM')

    from pyigm.cgm.cgmsurvey import CGMAbsSurvey
    cgmsys = []
    for i, ff in enumerate(fields):
        print(ff.name)
        thiscgmlist = cgmabssys_from_sightline_field(ff,
                                                     sightlines[i],
                                                     rho_max=rho_max,
                                                     dummysys=dummysys,
                                                     linelist=ismlist,
                                                     embuffer=embuffer,
                                                     **kwargs)
        cgmsys.extend(thiscgmlist)
    if name is not None:
        cgmsurvey = CGMAbsSurvey.from_cgmabssys(cgmsys, survey=name)
    else:
        cgmsurvey = CGMAbsSurvey.from_cgmabssys(cgmsys)
    return cgmsurvey