/// <summary>
        /// Return tonic statistic.
        /// </summary>
        ///
        /// <param name="tonicCoordinates">List of SCL tonic signal values.</param>
        /// <param name="numberOfAffectedPoints">Number of affected points.</param>
        ///
        /// <returns>
        /// Tonic statistic for a specified lst of SCL tonic signal values.
        /// </returns>
        public TonicStatistics GetTonicStatistic(List <SignalDataByTime> tonicCoordinates, int numberOfAffectedPoints)
        {
            InflectionLine         inflectionLinesHandler = new InflectionLine();
            List <InflectionPoint> inflectionPoints       = inflectionLinesHandler.GetInflectionPoints(AffectedCoordinatePoints(tonicCoordinates, numberOfAffectedPoints), "lowPass");

            return(GetTonicStatisticsForPoints(inflectionPoints));
        }
        /// <summary>
        /// Calculate arousal statistics for the passed time window.
        /// </summary>
        ///
        /// <param name="highPassCoordinates">List of all signal values stored in the cache.</param>
        /// <param name="numberOfAffectedPoints">Number of affected points.</param>
        /// <param name="timeWindow">Time wondow.</param>
        ///
        /// <returns>
        /// Arousal statistics for the passed time window.
        /// </returns>
        private ArousalStatistics GetArousalInfoForCoordinates(List <SignalDataByTime> highPassCoordinates, int numberOfAffectedPoints, double timeWindow)
        {
            InflectionLine          inflectionLinesHandler          = new InflectionLine();
            List <SignalDataByTime> highPassCoordinatesByTimeWindow = AffectedCoordinatePoints(highPassCoordinates, numberOfAffectedPoints);
            List <InflectionPoint>  inflectionPoints = inflectionLinesHandler.GetInflectionPoints(highPassCoordinatesByTimeWindow, "highPass");
            ArousalStatistics       result           = new ArousalStatistics();

            result = GetArousalInfoForInflectionPoints(inflectionPoints, timeWindow);
            result.SCRArousalArea          = GetArousalArea(highPassCoordinatesByTimeWindow, timeWindow);
            result.MovingAverage           = GetMovingAverage(signalValues, numberOfAffectedPoints);
            result.GeneralArousalLevel     = GetGeneralArousalLevel(result.MovingAverage);
            result.SCRAchievedArousalLevel = GetPhasicLevel(result.SCRArousalArea);
            result.LastValue          = highPassCoordinates.ElementAt(highPassCoordinates.Count - 1).HighPassValue;
            result.LastRawSignalValue = signalValues.ElementAt(signalValues.Length - 1).SignalValue;

            return(result);
        }