private void PickDataFromSet(PsaParametersSet set, DateTime date) { PsaParameterData rpmData = set.GetParameterOfType(PsaParameterType.EngineRpm); PsaParameterData pressureData = set.GetParameterOfType(PsaParameterType.FuelSystemPressure); IList <int> idleIndexes = IdleRpmValueExtractor. ExtractIdleIndexes(rpmData.GetDoubles()); if (idleIndexes.Count < idleRpmValuesCountLowerThreshold) { return; } IList <double> idlePressureValues = ExtractIdlePressureValues(idleIndexes, pressureData.GetDoubles()); result.Values.Add( new KeyValuePair <DateTime, double>( date, idlePressureValues.Average())); // Let's get OcrToIdleRpmRatio PsaParameterData ocrData = set.GetParameterOfType(PsaParameterType. DieselPressureRegulatorRatio); if (ocrData != null) { IList <double> ocrValues = ocrData.ExtractByIndexes(idleIndexes).ToList(); IList <double> rpmValues = rpmData.ExtractByIndexes(idleIndexes).ToList(); if (ocrValues.Count != rpmValues.Count) { throw new Exception("Counts should be equal!"); } IList <double> ratioValues = new List <double>(); for (int i = 0; i < rpmValues.Count; i++) { double ratio = ocrValues[i] / rpmValues[i]; if (double.IsInfinity(ratio)) { continue; } ratioValues.Add(RatioMultiplier * ocrValues[i] / rpmValues[i]); } result.OcrToRpmRatio[date] = ratioValues.Average(); } }