Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

SubsetStat.cxx

Go to the documentation of this file.
00001 /***************************************************************************
00002         
00003  Simple statistics object for internal alignment use
00004 
00005  ***************************************************************************/
00006 
00007 #include "SubsetStat.h"
00008 
00009 #include <cmath>
00010 #include <iostream>
00011 
00012 SubsetStat::SubsetStat()
00013    :size(0),
00014     sum(0.0),
00015     sum2(0.0)
00016 {
00017 }
00018 
00019 void SubsetStat::Fill(const double &value)
00020 {
00021    size++;
00022    sum  += value;
00023    sum2 += value*value;   
00024 }
00025 
00026 
00027 double SubsetStat::GetMean() const
00028 {
00029    if(size < 1) return 0.0;
00030 
00031    //calculate mean
00032    const double mean = sum/double(size);
00033 
00034    return mean;
00035 }
00036 
00037 double SubsetStat::GetSigma() const
00038 {
00039    if(size < 2) return 0.0;
00040       
00041    //calculate standard deviation
00042    const double size_tmp = size;
00043    const double sigma    = (size_tmp*sum2 - sum*sum)/(size_tmp*(size_tmp-1.0));
00044 
00045    if(sigma < 0.0)
00046    {
00047       std::cout << "Floating point error: sigma can not be negative!" << std::endl;
00048       return 0.0;
00049    }
00050 
00051    return std::pow(sigma, 0.5);
00052 }
00053 
00054 void SubsetStat::Reset()
00055 {
00056    size = 0;
00057    sum  = 0.0;
00058    sum = 0.0;
00059 }

Generated on Mon Feb 15 11:07:40 2010 for loon by  doxygen 1.3.9.1