@Override
  public TreeMap<Integer, NavigableMap<Integer, IScan>> getScansByRtSpan(double rtStart,
      double rtEnd) {
    TreeMap<Integer, NavigableMap<Integer, IScan>> viewMap = new TreeMap<>();
    boolean hasNonZeroElements = false;
    for (Integer i : getMapMsLevel2index().keySet()) {
      NavigableMap<Integer, IScan> scansByRtSpanAtMsLevel = getScansByRtSpanAtMsLevel(rtStart,
          rtEnd, i);
      if (scansByRtSpanAtMsLevel != null) {
        hasNonZeroElements = true;
        viewMap.put(i, scansByRtSpanAtMsLevel);
      }
    }
    if (hasNonZeroElements) {
      return viewMap;
    }
    return null;
  }
@ Override public TreeMap < Integer , NavigableMap < Integer , IScan > > getScansByRtSpan ( double rtStart , double rtEnd ) { TreeMap < Integer , NavigableMap < Integer , IScan > > viewMap = new TreeMap < > ( ) ; boolean hasNonZeroElements = false ; for ( Integer i : getMapMsLevel2index ( ) . keySet ( ) ) { NavigableMap < Integer , IScan > scansByRtSpanAtMsLevel = getScansByRtSpanAtMsLevel ( rtStart , rtEnd , i ) ; if ( scansByRtSpanAtMsLevel != null ) { hasNonZeroElements = true ; viewMap . put ( i , scansByRtSpanAtMsLevel ) ; } } if ( hasNonZeroElements ) { return viewMap ; } return null ; }
Returns a range of scans, whose RT is in the inclusive interval [rtStart; rtEnd]. That means,
ceil RT match is used for rtStart and floor RT for rtEnd. If it so happens, that the RTs are
between just 2 consecutive scans, then null is returned.

@param rtStart The beginning of RT window
@param rtEnd The end of RT window
@return null, if no scans were in this window