@Override
	public double[] collectStatsImp(SegmentEventRecoder recorder) {

		List<InfinteMutation> mutations = recorder.getMutationsSorted();
		if (mutations.size() < minW)
			return new double[bins];// same size always... right!
		double[] data = new double[bins];

		// init with the first 2.
		BufferManager manager = new BufferManager();
		for (int i = 0; i < minW/2+1; i++) {
			manager.slideRight(mutations.get(i));
			//System.out.println(manager);
		}
		//now widen!
		while(manager.getWidth()<minW){
			manager.widen(mutations.get(manager.index - manager.getWidth()-1), mutations.get(manager.index));
		}

		while (manager.index < mutations.size()) {
			double o = maxOmega(manager, mutations);
			//System.out.println(manager + "\t" + o);
			double p = manager.getPosition();
			int b = (int) (p * bins);
			data[b] = Math.max(o, data[b]);

			// now move right... if we can't narrow first.
			if (manager.index == mutations.size()-1 && manager.getWidth() > minW) {
				manager.narrow();
			}
			if (manager.index < mutations.size()) {
				manager.slideRight(mutations.get(manager.index));
			}
		}

		return data;
	}