/** Calculate the frequency of every one of the keys of the X axis */
  @Override
  protected void processData(ExperimentSummaryData summaryData) {
    Map<Integer, Integer> valuesIdentified = new HashMap<Integer, Integer>();
    Map<Integer, Integer> valuesUnidentified = new HashMap<Integer, Integer>();

    List<Double> chargeIdentified = summaryData.getPrecChargeVecExp(true);
    int maxChargeFound = 0;
    for (double key : chargeIdentified) {
      int auxKey = (int) key;
      int value = valuesIdentified.containsKey(auxKey) ? valuesIdentified.get(auxKey) + 1 : 1;
      valuesIdentified.put(auxKey, value);
      if (auxKey > maxChargeFound) maxChargeFound = auxKey;
    }

    List<Double> chargeUnidentified = summaryData.getPrecChargeVecExp(false);
    for (double key : chargeUnidentified) {
      int auxKey = (int) key;
      int value = valuesUnidentified.containsKey(auxKey) ? valuesUnidentified.get(auxKey) + 1 : 1;
      valuesUnidentified.put(auxKey, value);
      if (auxKey > maxChargeFound) maxChargeFound = auxKey;
    }

    if (maxChargeFound == 0) {
      recordError("No correct charges has been found");
      return;
    }

    List<SeriesPair<Integer, Integer>> identified = new ArrayList<SeriesPair<Integer, Integer>>();
    // List<SeriesPair<Integer,Integer>> unidentified = new
    // ArrayList<SeriesPair<Integer,Integer>>();
    // With the 'for' loop we ensure that the SeriesPair are added in an ordered way
    for (int key = 1; key <= maxChargeFound; key++) {
      // Only the charges found are stored int the intermediate identified
      if (valuesIdentified.containsKey(key))
        identified.add(new SeriesPair<Integer, Integer>(key, valuesIdentified.get(key)));

      // if(valuesUnidentified.containsKey(key))
      //    unidentified.add(new SeriesPair<Integer, Integer>(key,valuesUnidentified.get(key)));
    }

    if (identified.isEmpty()) {
      recordError("The experiment does not contain identified spectra");
      return;
    }

    intermediateData = new IntermediateData();
    // In this case the type and the name of the series are the same
    intermediateData.addPrideChartSerie(
        new DataSeries<Integer, Integer>(
            DataSeriesType.IDENTIFIED_SPECTRA, "Identified Spectra", identified));
    // intermediateData.addPrideChartSerie(new
    // DataSeries<Integer,Integer>(DataSeriesType.UNIDENTIFIED_SPECTRA, "Unidentified Spectra",
    // unidentified));

    try {
      intermediateData.setVariable("experimentSize", summaryData.size());
    } catch (JSONException e) {
      e.printStackTrace();
    }
  }