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

HxExportExtraIdentMaskMean.h

00001 /*
00002  *  Copyright (c) 2002, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Dennis Koelma (koelma@wins.uva.nl)
00007  *
00008  */
00009 
00010 #ifndef HxExportExtraIdentMaskMean_h
00011 #define HxExportExtraIdentMaskMean_h
00012 
00013 #include "HxClassName.h"
00014 #include "HxSizes.h"
00015 #include "HxCategories.h"
00016 #include "HxTagList.h"
00017 
00018 
00022 template<class ResultT, class ImValT, class ExtraValT>
00023 class HxExportExtraIdentMaskMean
00024 {
00025 public:
00027     typedef HxTagTransInVar     TransVarianceCategory;
00028 
00030     typedef HxTag1Phase         PhaseCategory;
00031 
00032 
00034                         HxExportExtraIdentMaskMean(HxTagList& tags);
00035 
00037                         ~HxExportExtraIdentMaskMean();
00038 
00040     void                doIt(const ImValT& imV, const ExtraValT& extraV);
00041 
00043     static HxString     className();
00044 
00045 private:
00046     HxTagList&          _tags;
00047     ExtraValT           _maskVal;
00048     ResultT             _result;
00049     HxScalarInt         _num;
00050 };
00051 
00052 template<class ResultT, class ImValT, class ExtraValT>
00053 
00054 HxExportExtraIdentMaskMean<ResultT,ImValT,ExtraValT>::HxExportExtraIdentMaskMean(HxTagList& tags) : _tags(tags)
00055 {
00056     _maskVal = HxGetTag<int>(tags, "maskVal");
00057     _result = HxScalarInt(0);
00058     _num = 0;
00059 }
00060 
00061 template<class ResultT, class ImValT, class ExtraValT>
00062 HxExportExtraIdentMaskMean<ResultT,ImValT,ExtraValT>::~HxExportExtraIdentMaskMean()
00063 {
00064     _result = _result / (ResultT) _num;
00065     HxAddTag(_tags, "result", HxValue(_result));
00066 }
00067 
00068 template<class ResultT, class ImValT, class ExtraValT>
00069 inline void
00070 HxExportExtraIdentMaskMean<ResultT,ImValT,ExtraValT>::doIt(const ImValT& imV,
00071                                                   const ExtraValT& extraV)
00072 {
00073     if (extraV == _maskVal) {
00074         _result += imV;
00075         _num += 1;
00076     }
00077 }
00078 
00079 template<class ResultT, class ImValT, class ExtraValT>
00080 inline HxString
00081 HxExportExtraIdentMaskMean<ResultT,ImValT,ExtraValT>::className()
00082 {
00083     return HxString("identMaskMean");
00084 }
00085 
00086 
00087 #endif

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