cisst-saw
Loading...
Searching...
No Matches
mtsIntervalStatistics.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3
4/*
5 Author(s): Marcin Balicki, Anton Deguet
6 Created on: 2010-03-31
7
8 (C) Copyright 2010-2023 Johns Hopkins University (JHU), All Rights Reserved.
9
10--- begin cisst license - do not edit ---
11
12This software is provided "as is" under an open source license, with
13no warranty. The complete license can be found in license.txt and
14http://www.cisst.org/cisst/license.txt.
15
16--- end cisst license ---
17*/
18
19
24
25#ifndef _mtsIntervalStatistics_h
26#define _mtsIntervalStatistics_h
27
35
37
46
47 CMN_DECLARE_SERVICES(CMN_DYNAMIC_CREATION, CMN_LOG_ALLOW_DEFAULT);
48
49public:
51 typedef unsigned long long int TimeTicksType;
52
55
57 inline const double & PeriodAvg(void) const {
58 return mPeriodAvg;
59 }
60
62 inline const double & PeriodStdDev(void) const {
63 return mPeriodStdDev;
64 }
65
67 inline const double & PeriodMin(void) const {
68 return mPeriodMin;
69 }
70
72 inline const double & PeriodMax(void) const {
73 return mPeriodMax;
74 }
75
77 inline const double & ComputeTimeAvg(void) const {
78 return mComputeTimeAvg;
79 }
80
82 inline const double & ComputeTimeStdDev(void) const {
83 return mComputeTimeStdDev;
84 }
85
87 inline const double & ComputeTimeMin(void) const {
88 return mComputeTimeMin;
89 }
90
92 inline const double & ComputeTimeMax(void) const {
93 return mComputeTimeMax;
94 }
95
97 inline const unsigned int & NumberOfSamples(void) const {
98 return mNumberOfSamples;
99 }
100
103 inline const unsigned int & NumberOfOverruns(void) const {
104 return mNumberOfOverruns;
105 }
106
108 inline void SetStatisticsInterval(const double & time) {
109 mStatisticsInterval = time;
110 }
111
113 inline const double & StatisticsInterval(void) const {
114 return mStatisticsInterval;
115 }
116
118 void Update(const double sample, const double computeTime);
119
121 inline void SetCallback(mtsCallableVoidBase * callback) {
122 mCallback = callback;
123 }
124
125 template <class __classType>
126 inline void SetCallback(void (__classType::*method)(void),
127 __classType * classInstantiation) {
128 this->SetCallback(new mtsCallableVoidMethod<__classType>(method, classInstantiation));
129 }
130
131 void Reset(void);
132
133 inline void SetFromExisting(const double periodAvg,
134 const double periodStdDev,
135 const double periodMin,
136 const double periodMax,
137 const double computeTimeAvg,
138 const double computeTimeStdDev,
139 const double computeTimeMin,
140 const double computeTimeMax,
141 const unsigned int numberOfSamples,
142 const unsigned int numberOfOverruns,
143 const double statisticsInterval) {
144 mPeriodAvg = periodAvg;
145 mPeriodStdDev = periodStdDev;
146 mPeriodMin = periodMin;
147 mPeriodMax = periodMax;
148 mComputeTimeAvg = computeTimeAvg;
149 mComputeTimeStdDev = computeTimeStdDev;
150 mComputeTimeMin = computeTimeMin;
151 mComputeTimeMax = computeTimeMax;
152 mNumberOfSamples = numberOfSamples;
153 mNumberOfOverruns = numberOfOverruns;
154 mStatisticsInterval = statisticsInterval;
155 }
156
157private:
158
160 double mPeriodSum;
161 double mPeriodSumSquares;
162 double mPeriodRunningMin;
163 double mPeriodRunningMax;
164 double mComputeTimeSum;
165 double mComputeTimeSumSquares;
166 double mComputeTimeRunningMin;
167 double mComputeTimeRunningMax;
168 unsigned int mRunningNumberOfSamples;
169 unsigned int mRunningNumberOfOverruns;
170 double mLastUpdateTime;
171
173 const osaTimeServer * mTimeServer;
174
176 double mPeriodAvg;
177 double mPeriodStdDev;
178 double mPeriodMin;
179 double mPeriodMax;
180 double mComputeTimeAvg;
181 double mComputeTimeStdDev;
182 double mComputeTimeMin;
183 double mComputeTimeMax;
184 unsigned int mNumberOfSamples;
185 unsigned int mNumberOfOverruns;
186
188 double mStatisticsInterval;
189
191 mtsCallableVoidBase * mCallback;
192
193public:
194
197
199 void ToStream(std::ostream & outputStream) const override;
200
202 void ToStreamRaw(std::ostream & outputStream, const char delimiter = ' ',
203 bool headerOnly = false, const std::string & headerPrefix = "") const override;
204
208 void SerializeRaw(std::ostream & outputStream) const override;
209
212 void DeSerializeRaw(std::istream & inputStream) override;
213};
214
216
217#endif // _mtsIntervalStatistics_h
Definition mtsCallableVoidBase.h:40
Definition mtsCallableVoidMethod.h:45
mtsGenericObject(void)
Definition mtsGenericObject.h:77
Definition mtsIntervalStatistics.h:45
void SetCallback(void(__classType::*method)(void), __classType *classInstantiation)
Definition mtsIntervalStatistics.h:126
void ToStream(std::ostream &outputStream) const override
const unsigned int & NumberOfOverruns(void) const
Definition mtsIntervalStatistics.h:103
void SetStatisticsInterval(const double &time)
Definition mtsIntervalStatistics.h:108
void SetFromExisting(const double periodAvg, const double periodStdDev, const double periodMin, const double periodMax, const double computeTimeAvg, const double computeTimeStdDev, const double computeTimeMin, const double computeTimeMax, const unsigned int numberOfSamples, const unsigned int numberOfOverruns, const double statisticsInterval)
Definition mtsIntervalStatistics.h:133
const double & PeriodMin(void) const
Definition mtsIntervalStatistics.h:67
const double & PeriodMax(void) const
Definition mtsIntervalStatistics.h:72
const double & ComputeTimeStdDev(void) const
Definition mtsIntervalStatistics.h:82
const double & ComputeTimeMin(void) const
Definition mtsIntervalStatistics.h:87
unsigned long long int TimeTicksType
Definition mtsIntervalStatistics.h:51
const double & StatisticsInterval(void) const
Definition mtsIntervalStatistics.h:113
const double & PeriodStdDev(void) const
Definition mtsIntervalStatistics.h:62
const double & ComputeTimeMax(void) const
Definition mtsIntervalStatistics.h:92
void ToStreamRaw(std::ostream &outputStream, const char delimiter=' ', bool headerOnly=false, const std::string &headerPrefix="") const override
void SetCallback(mtsCallableVoidBase *callback)
Definition mtsIntervalStatistics.h:121
void SerializeRaw(std::ostream &outputStream) const override
void Update(const double sample, const double computeTime)
~mtsIntervalStatistics()
Definition mtsIntervalStatistics.h:196
const double & PeriodAvg(void) const
Definition mtsIntervalStatistics.h:57
void DeSerializeRaw(std::istream &inputStream) override
const double & ComputeTimeAvg(void) const
Definition mtsIntervalStatistics.h:77
const unsigned int & NumberOfSamples(void) const
Definition mtsIntervalStatistics.h:97
mtsGenericObject BaseType
Definition mtsIntervalStatistics.h:54
Class for relative time.
Definition osaTimeServer.h:74
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition cmnClassRegisterMacros.h:199
const int CMN_DYNAMIC_CREATION
Definition cmnClassRegisterMacros.h:328
Declaration of cmnDeSerializer and functions cmnDeSerializeRaw.
#define CISST_EXPORT
Definition cmnExportMacros.h:50
#define CMN_LOG_ALLOW_DEFAULT
Definition cmnLogLoD.h:76
Declaration of cmnSerializer and functions cmnSerializeRaw.
Defines a command with no argument.
Rules of exporting.
Defines mtsGenericObject.
Declaration of osaTimeServer class.