A computer-implemented method of calculating a recovery score for a subject, the method comprising: obtaining a pair of heartrate values, a first of the values, HR rest , representing the heartrate of the subject in a resting position and a second of the values, HR stand , representing the heartrate of the subject in a standing position (S101); characterised in that the method further comprises: inputting the pair of heartrate values into a probability density function f ( HR rest , HR stand ) which uses the difference between the value of ( HR stand - HR rest ) and a non-zero constant, μ , that represents a desired value of the difference between the standing and resting heart rates, to generate a recovery score for the subject (S102), wherein f ( HR rest , HR stand ) is of the form: f HR rest HR stand = S × A σ × B HR stand − HR rest − μ σ 2 , wherein A and B are non-zero constants, wherein μ is a non-zero constant that represents a desired value of the difference between the standing and resting heart rates, and acts as a location parameter that translates the peak of the curve of the distribution generated by the probability density function to a location representing an optimum recovery score for the subject, wherein S is a non-zero scaling constant, and wherein σ is a non-zero scaling constant that defines the width of the curve of the distribution generated by the probability density function; and outputting the generated recovery score (S103). obtaining a pair of heartrate values, a first of the values, HR rest , representing the heartrate of the subject in a resting position and a second of the values, HR stand , representing the heartrate of the subject in a standing position (S101); characterised in that the method further comprises: inputting the pair of heartrate values into a probability density function f ( HR rest , HR stand ) which uses the difference between the value of ( HR stand - HR rest ) and a non-zero constant, μ , that represents a desired value of the difference between the standing and resting heart rates, to generate a recovery score for the subject (S102), wherein f ( HR rest , HR stand ) is of the form: f HR rest HR stand = S × A σ × B HR stand − HR rest − μ σ 2 , wherein A and B are non-zero constants, wherein μ is a non-zero constant that represents a desired value of the difference between the standing and resting heart rates, and acts as a location parameter that translates the peak of the curve of the distribution generated by the probability density function to a location representing an optimum recovery score for the subject, wherein S is a non-zero scaling constant, and wherein σ is a non-zero scaling constant that defines the width of the curve of the distribution generated by the probability density function; and outputting the generated recovery score (S103). inputting the pair of heartrate values into a probability density function f ( HR rest , HR stand ) which uses the difference between the value of ( HR stand - HR rest ) and a non-zero constant, μ , that represents a desired value of the difference between the standing and resting heart rates, to generate a recovery score for the subject (S102), wherein f ( HR rest , HR stand ) is of the form: f HR rest HR stand = S × A σ × B HR stand − HR rest − μ σ 2 , wherein A and B are non-zero constants, wherein μ is a non-zero constant that represents a desired value of the difference between the standing and resting heart rates, and acts as a location parameter that translates the peak of the curve of the distribution generated by the probability density function to a location representing an optimum recovery score for the subject, wherein S is a non-zero scaling constant, and wherein σ is a non-zero scaling constant that defines the width of the curve of the distribution generated by the probability density function; and outputting the generated recovery score (S103). <EOS>