// package access for testing only tb 2014-01-17
  List<List<SamplingPoint>> splitByOrbit(List<SamplingPoint> points) {
    final Map<Integer, List<SamplingPoint>> map = new HashMap<>();
    for (final SamplingPoint point : points) {
      final int id = point.getReference();
      if (!map.containsKey(id)) {
        map.put(id, new ArrayList<SamplingPoint>());
      }
      map.get(id).add(point);
    }
    final ArrayList<List<SamplingPoint>> byOrbit = new ArrayList<>(map.size());
    for (final List<SamplingPoint> orbitPoints : map.values()) {
      byOrbit.add(orbitPoints);
    }

    return byOrbit;
  }
  void removeSamples(List<SamplingPoint> samples) {
    final List<SamplingPoint> remainingSamples = new ArrayList<>(samples.size());
    final ClearSkyProbability clearSkyProbability = Container.CLEAR_SKY_PROBABILITY;
    final double minimumClearSkyProbability = 0.05;

    for (final SamplingPoint point : samples) {
      final double f =
          minimumClearSkyProbability
              / clearSkyProbability.getSample(point.getLon(), point.getLat());
      if (point.getRandom() <= f) {
        remainingSamples.add(point);
      }
    }

    samples.clear();
    samples.addAll(remainingSamples);
  }