def METHOD_NAME(target, start_time, end_time, interval, airmass_limit, observation_facility=None):
    """
    Uses astroplan to calculate the airmass for a sidereal target
    for each given interval between the start and end times.
    The resulting data omits any airmass above the provided limit (or
    default, if one is not provided), as well as any airmass calculated
    during the day (defined as between astronomical twilights).
    Important note: only works for sidereal targets! For non-sidereal visibility, see here:
    https://github.com/TOMToolkit/tom_nonsidereal_airmass
    :param start_time: start of the window for which to calculate the airmass
    :type start_time: datetime
    :param end_time: end of the window for which to calculate the airmass
    :type end_time: datetime
    :param interval: time interval, in minutes, at which to calculate airmass within the given window
    :type interval: int
    :param airmass_limit: maximum acceptable airmass for the resulting calculations
    :type airmass_limit: int
    :param observation_facility: observing facility for which to calculate the airmass. None indicates all available
        facilities.
    :type observation_facility: BaseObservationFacility
    :returns: A dictionary containing the airmass data for each site. The dict keys consist of the site name prepended
        with the observing facility. The values are the airmass data, structured as an array containing two arrays. The
        first array contains the set of datetimes used in the airmass calculations. The second array contains the
        corresponding set of airmasses calculated.
    :rtype: dict
    """
    if target.type != 'SIDEREAL':
        msg = '\033[1m\033[91mAirmass plotting is only supported for sidereal targets\033[0m'
        logger.info(msg)
        empty_visibility = {}
        return empty_visibility
    if end_time < start_time:
        raise Exception('Start must be before end')
    if airmass_limit is None:
        airmass_limit = 10
    if observation_facility is None:
        facilities = facility.get_service_classes()
    else:
        facilities = [observation_facility]
    body = FixedTarget(name=target.name, coord=SkyCoord(target.ra, target.dec, unit='deg'))
    visibility = {}
    sun, time_range = get_astroplan_sun_and_time(start_time, end_time, interval)
    for observing_facility in facilities:
        observing_facility_class = facility.get_service_class(observing_facility)
        sites = observing_facility_class().get_observing_sites()
        for site, site_details in sites.items():
            observer = Observer(longitude=site_details.get('longitude')*units.deg,
                                latitude=site_details.get('latitude')*units.deg,
                                elevation=site_details.get('elevation')*units.m)
            sun_alt = observer.altaz(time_range, sun).alt
            obj_airmass = observer.altaz(time_range, body).secz
            bad_indices = np.argwhere(
                (obj_airmass >= airmass_limit) |
                (obj_airmass <= 1) |
                (sun_alt > -18*units.deg)  # between astronomical twilights, i.e. sun is up
            )
            obj_airmass = [None if i in bad_indices else float(airmass) for i, airmass in enumerate(obj_airmass)]
            visibility[f'({observing_facility}) {site}'] = (time_range.datetime, obj_airmass)
    return visibility