Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxNgbMean.h

00001 /*
00002  *  Copyright (c) 2000, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Edo Poll                (poll@wins.uva.nl)
00007  */
00008 
00009 #ifndef HxNgbMean_h
00010 #define HxNgbMean_h
00011 
00012 #include "HxClassName.h"
00013 #include "HxSizes.h"
00014 #include "HxCategories.h"
00015 #include "HxTagList.h"
00016 
00017 
00018 template<class ResultT, class ArithT>
00019 class HxNgbMean
00020 {
00021 public:
00022 
00023     typedef HxTagLoop           IteratorCategory;
00024     typedef HxTag1Phase         PhaseCategory;
00025 
00026 
00027                             HxNgbMean(HxTagList& tags);
00028 
00029     HxSizes                 size();
00030     void                    init(int, int, ArithT);
00031 
00032     void                    next(int, int, ArithT value);
00033     void                    next(int, int, int, ArithT value);
00034     ArithT                  result() const;
00035 
00036     static HxString         className();
00037 
00038 private:
00039     ResultT                 _sum;
00040     int                     _cnt;
00041     HxSizes                 _size;
00042 };
00043 
00044 template<class ResultT, class ArithT>
00045 inline HxString
00046 HxNgbMean<ResultT, ArithT>::className()
00047 {
00048     static HxString s("mean");
00049     return s;
00050 }
00051 
00052 template<class ResultT, class ArithT>
00053 inline void
00054 HxNgbMean<ResultT, ArithT>::init(int, int, ArithT)
00055 {
00056     _cnt = 0;
00057     _sum = HxScalarInt(0);
00058 }
00059 
00060 template<class ResultT, class ArithT>
00061 inline void
00062 HxNgbMean<ResultT, ArithT>::next(int, int, ArithT value)
00063 {
00064     _cnt++;
00065     _sum += ResultT(value);
00066 }
00067 
00068 template<class ResultT, class ArithT>
00069 inline void
00070 HxNgbMean<ResultT, ArithT>::next(int, int, int, ArithT value)
00071 {
00072     _cnt++;
00073     _sum += ResultT(value);
00074 }
00075 
00076 template<class ResultT, class ArithT>
00077 inline HxSizes  
00078 HxNgbMean<ResultT, ArithT>::size()
00079 {
00080     return _size;
00081 }
00082 
00083 template<class ResultT, class ArithT>
00084 inline ArithT
00085 HxNgbMean<ResultT, ArithT>::result() const
00086 {
00087     return _sum / ResultT(HxScalarInt(_cnt));
00088 }
00089 
00090 #ifdef INC_TEMPLATE_SRC
00091 #include "HxNgbMean.c"
00092 #endif
00093 
00094 #endif

Generated on Tue Feb 3 14:18:40 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001