public List<SelectionDetail> getSelectionDetailsAtIndex(int xIndex) {

    List<SelectionDetail> vals = new ArrayList<>();

    for (int i = 0; i < mData.getDataSetCount(); i++) {

      DataSet<?> dataSet = mData.getDataSetByIndex(i);

      // extract all y-values from all DataSets at the given x-index
      final float yVal = dataSet.getYValForXIndex(xIndex);
      if (yVal == Float.NaN) continue;

      vals.add(new SelectionDetail(yVal, i, dataSet));
    }

    return vals;
  }