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

HxNgbPercentile2d.h

00001 /*
00002  *  Copyright (c) 1999, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Edo Poll                (poll@wins.uva.nl)
00007  *  Marc Navarro            (mnavarro@wins.uva.nl)
00008  */
00009 
00010 #ifndef HxNgbPercentile2d_h
00011 #define HxNgbPercentile2d_h
00012 
00013 #include "HxClassName.h"
00014 #include "HxSizes.h"
00015 #include "HxCategories.h"
00016 #include "HxTagList.h"
00017 
00018 
00021 template<class ArithT>
00022 class HxNgbPercentile2d
00023 {
00024 public:
00025 
00027     typedef HxTagLoop           IteratorCategory;
00028 
00030     typedef HxTag1Phase         PhaseCategory;
00031 
00032 
00037                             HxNgbPercentile2d(HxTagList& tags);
00038 
00040                             ~HxNgbPercentile2d();
00041 
00043     HxSizes                 size();
00044 
00046     void                    init(int, int, ArithT);
00047 
00049     void                    next(int x, int y, ArithT value);
00050 
00052     ArithT                  result() const;
00053 
00055     static HxString         className();
00056 
00057 private:
00058     int                     _pctIdx;
00059     int                     _size;
00060 
00061     ArithT*                 _values;
00062     int                     _i;
00063 };
00064 
00065 template<class ArithT>
00066 ostream&
00067 operator<<(ostream& os, const HxNgbPercentile2d<ArithT>& pct)
00068 {
00069     return pct.put(os);
00070 }
00071 
00072 template<class ArithT>
00073 inline HxString
00074 HxNgbPercentile2d<ArithT>::className()
00075 {
00076     static HxString s("percentile");
00077     return s;
00078 }
00079 
00080 template<class ArithT>
00081 inline void
00082 HxNgbPercentile2d<ArithT>::init(int, int, ArithT)
00083 {
00084     _i = 0;
00085 }
00086 
00087 template<class ArithT>
00088 inline void
00089 HxNgbPercentile2d<ArithT>::next(int, int, ArithT value)
00090 {
00091     _values[_i++] = value;
00092 }
00093 
00094 template<class ArithT>
00095 inline HxSizes
00096 HxNgbPercentile2d<ArithT>::size()
00097 {
00098     return HxSizes(_size, _size, 1);
00099 }
00100 
00101 template<class ArithT>
00102 inline ArithT
00103 HxNgbPercentile2d<ArithT>::result() const
00104 {
00105     std::sort(&_values[0], &_values[_size*_size]);
00106     return _values[_pctIdx];
00107 }
00108 
00109 #ifdef INC_TEMPLATE_SRC
00110 #include "HxNgbPercentile2d.c"
00111 #endif
00112 
00113 #endif

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