![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999-2000 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: averager.h,v $ $Revision: 1.10 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef averager_H_ 00009 #define averager_H_ 00010 00013 00014 #include <vlutil/vlMachineTypes.h> 00015 #include <vector> 00016 00025 #include "vrfutil/vrfutilDefines.h" 00026 class DT_DLL_vrfutil DtAverager 00027 { 00028 public: 00030 DtAverager(); 00031 00032 DtAverager(unsigned int maxPopulation); 00033 00035 DtAverager(const DtAverager& orig); 00036 00038 DtAverager& operator=(const DtAverager& orig); 00039 00041 virtual ~DtAverager(); 00042 00047 virtual double sampleMean() const; 00048 00053 virtual double sampleMedian() const; 00054 00058 virtual double sampleStandardDeviation() const; 00059 00064 virtual double sampleMinimum() const; 00065 00070 virtual double sampleMaximum() const; 00071 00073 virtual void addSample(double sample); 00074 00078 virtual double lastSample() const; 00079 00082 virtual unsigned int maxPopulationSize() const; 00083 00085 virtual void setMaxPopulationSize(unsigned int maxPopulation); 00086 00088 virtual void invalidatePopulation(); 00089 00091 virtual std::vector<double>& samples(); 00092 virtual const std::vector<double>& samples() const; 00093 00095 virtual unsigned int currentSampleIndex() const; 00096 00098 virtual unsigned int currentPopulationSize() const; 00099 00100 protected: 00103 virtual void invalidateStatistics(); 00104 00106 virtual void validateStatistics(); 00107 00108 void resetStatistics(); 00109 00110 private: 00111 00112 mutable double mySampleMean; 00113 mutable bool mySampleMeanValid; 00114 00115 mutable double mySampleMedian; 00116 mutable bool mySampleMedianValid; 00117 00118 mutable double mySampleStandardDeviation; 00119 mutable bool mySampleStandardDeviationValid; 00120 00121 mutable double mySampleMaximum; 00122 mutable bool mySampleMaximumValid; 00123 00124 mutable double mySampleMinimum; 00125 mutable bool mySampleMinimumValid; 00126 00127 unsigned int myCurrentPopulationSize; 00128 unsigned int myCurrentSampleIndex; 00129 00130 mutable std::vector<double> mySamples; 00131 mutable std::vector<double> mySortedSamples; 00132 }; 00133 00134 #endif