public Throughput(TestMeasurements test) { totalTrials = 0; missedTrials = 0; double totalMovementTime = 0; double totalEffectiveAmplitude = 0; List <double> projectedCoordinates = new List <double>(); foreach (BlockMeasurements b in test.blocksData) { foreach (TrialMeasurements t in b.trialsData) { UpdateOutlierState(t); if (!t.isMarkedAsOutlier) { totalTrials++; if (t.missedTarget) { missedTrials++; } totalMovementTime += t.trialDuration; totalEffectiveAmplitude += t.effectiveAmplitudeOfMovement; projectedCoordinates.Add(t.finalPositionProjectedOnMovementAxis); } } } double stdev = ResultsMath.ComputeStandardDeviation(projectedCoordinates); errorRate = (float)missedTrials / (float)totalTrials; averageMovementTime = totalMovementTime / totalTrials; effectiveAmplitude = totalEffectiveAmplitude / totalTrials; effectiveWidth = ResultsMath.EffectiveWidthForStdevValue(stdev); effectiveIndexOfDifficulty = ResultsMath.IndexOfDifficulty(effectiveWidth, effectiveAmplitude); throughput = effectiveIndexOfDifficulty / averageMovementTime; }
public IndexOfDifficulty(float targetWidth, float targetsDistance) { this.targetWidth = targetWidth; this.targetsDistance = targetsDistance; this.indexOfDifficulty = ResultsMath.IndexOfDifficulty(targetWidth, targetsDistance); }