#include <UtilBlockedRunningAverageVector.h>
Inheritance diagram for UtilBlockedRunningAverageVector:

Public Member Functions | |
| UtilBlockedRunningAverageVector (int vector_size, int target_sample_size=10) | |
| virtual | ~UtilBlockedRunningAverageVector () |
| void | SetSampleSize (int size) |
| int | Add (const std::vector< double > &val) |
| int | Add (const std::vector< double > &mean, const std::vector< double > &sigma, int nsamples) |
| std::vector< double > | LastSample () const |
| virtual void | Clear (bool clear_population=true) |
Private Attributes | |
| std::deque< std::vector< double > > | fMeans |
| std::deque< std::vector< double > > | fSigmas |
| std::deque< size_t > | fNsamples |
This class is like a vectorized version of UtilRunningAverage. See that classes docs for an overview.
Created on: Fri Apr 15 10:13:39 2005
Definition at line 33 of file UtilBlockedRunningAverageVector.h.
|
||||||||||||
|
Definition at line 5 of file UtilBlockedRunningAverageVector.cxx. 00006 : UtilRunningAverageVector(vector_size,target_sample_size) 00007 { 00008 }
|
|
|
Definition at line 36 of file UtilBlockedRunningAverageVector.h. 00036 {}
|
|
||||||||||||||||
|
Add a new block of samples. Return the size of the sample set after this addition. Note, this size be be smaller than before the addition if a larger block is pushed out of the set. However, once the sample size is larger than the target, it will never be allowed to go smaller than the target. Definition at line 47 of file UtilBlockedRunningAverageVector.cxx. References fMeans, fNsamples, fSigmas, and SetSampleSize(). 00049 {
00050 fNsamples.push_front(nsamples);
00051 fMeans.push_front(mean);
00052 fSigmas.push_front(sigma);
00053
00054 size_t vsiz = fSx.size();
00055 for (size_t ind=0; ind<vsiz; ++ind) {
00056
00057 double x = nsamples*mean[ind];
00058 double xx = sigma[ind]*sigma[ind]*(nsamples-1)
00059 + nsamples*mean[ind]*mean[ind];
00060
00061 fSx[ind] += x;
00062 fSxx[ind] += xx;
00063
00064 fPx[ind] += x;
00065 fPxx[ind] += xx;
00066
00067 }
00068 fPn += nsamples;
00069 fSn += nsamples;
00070
00071 this->SetSampleSize(fSampleTargetSize); // remove any blocks if total sample is full
00072 return fSn;
00073 }
|
|
|
Add a new single (not blocked!) value to the sample and population. Returns the size of the sample set after this addition. Reimplemented from UtilRunningAverageVector. Definition at line 43 of file UtilBlockedRunningAverageVector.cxx. Referenced by BDSwicPedAccessor::SetSpillTime(). 00044 {
00045 return this->Add(val,vector<double>(val.size(),0),1);
00046 }
|
|
|
Clear all samples. If clear_population is false, only the sample set is cleared. Reimplemented from UtilRunningAverageVector. Definition at line 80 of file UtilBlockedRunningAverageVector.cxx. References UtilRunningAverageVector::Clear(), fMeans, fNsamples, and fSigmas. Referenced by BDSwicPedAccessor::SetSpillTime(). 00081 {
00082 this->UtilRunningAverageVector::Clear(clear_population);
00083 fMeans.clear();
00084 fSigmas.clear();
00085 fNsamples.clear();
00086 }
|
|
|
Return the last sample, ie, the last mean added. Returns 0.0 if samples are empty. Reimplemented from UtilRunningAverageVector. Definition at line 74 of file UtilBlockedRunningAverageVector.cxx. References fMeans.
|
|
|
Set the target sample size. The actual sample size may be temporarily smaller than this. Once full, the actual sample size will never go below this but in general will fluctuate higher as more blocks of samples are added or removed. Reimplemented from UtilRunningAverageVector. Definition at line 9 of file UtilBlockedRunningAverageVector.cxx. References fMeans, fNsamples, and fSigmas. Referenced by Add(). 00010 {
00011 fSampleTargetSize = size; // target size
00012
00013 size_t vsiz = fSx.size();
00014
00015 size_t current_size = fNsamples.size();
00016 if (!current_size) return;
00017
00018 size_t nlost = fNsamples.back();
00019 while (fSn - nlost >= fSampleTargetSize) {
00020
00021 vector<double> lost_mean = fMeans.back();
00022 vector<double> lost_sigma = fSigmas.back();
00023
00024 for (size_t ind=0; ind<vsiz; ++ind) {
00025 double x = nlost*lost_mean[ind];
00026 double xx = lost_sigma[ind]*lost_sigma[ind]*(nlost-1)
00027 + nlost*lost_mean[ind]*lost_mean[ind];
00028
00029 fSn -= nlost;
00030 fSx[ind] -= x;
00031 fSxx[ind] -= xx;
00032 }
00033
00034 fNsamples.pop_back();
00035 fMeans.pop_back();
00036 fSigmas.pop_back();
00037
00038 if (!fNsamples.size()) break;
00039 nlost = fNsamples.back();
00040 }
00041 }
|
|
|
Definition at line 66 of file UtilBlockedRunningAverageVector.h. Referenced by Add(), Clear(), LastSample(), and SetSampleSize(). |
|
|
Definition at line 67 of file UtilBlockedRunningAverageVector.h. Referenced by Add(), Clear(), and SetSampleSize(). |
|
|
Definition at line 66 of file UtilBlockedRunningAverageVector.h. Referenced by Add(), Clear(), and SetSampleSize(). |
1.3.9.1