00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef LATTICES_LATTICEHISTSPECIALIZE_H
00029 #define LATTICES_LATTICEHISTSPECIALIZE_H
00030
00031
00032
00033 #include <casacore/casa/aips.h>
00034 #include <casacore/casa/BasicSL/Complex.h>
00035
00036 namespace casacore {
00037
00038
00039 template <class T> class Vector;
00040 template <class T> class Block;
00041 class PGPlotter;
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 class LatticeHistSpecialize
00071 {
00072 public:
00073
00074 static void makeCumulative (Vector<Float>& counts,
00075 Float& yMax, uInt nBins,
00076 Float scale);
00077 static void makeCumulative (Vector<Complex>& counts,
00078 Complex& yMax, uInt nBins,
00079 Float scale);
00080
00081
00082 static void makeLogarithmic (Vector<Float>& counts,
00083 Float& yMax,
00084 uInt nBins);
00085 static void makeLogarithmic (Vector<Complex>& counts,
00086 Complex& yMax,
00087 uInt nBins);
00088
00089
00090
00091 static Float mul(Float v1, Float v2);
00092 static Complex mul(Complex v1, Complex v2);
00093
00094
00095 static void plot(PGPlotter& plot, Bool doGauss, Bool doCumu, Bool doLog,
00096 Float linearSum, Float yMax, Float binWidth,
00097 const Vector<Float>& values,
00098 const Vector<Float>& counts, const Vector<Float>& stats,
00099 uInt whereLabel, uInt ci, Bool page);
00100 static void plot(PGPlotter& plot, Bool doGauss, Bool doCumu, Bool doLog,
00101 Complex linearSum, Complex yMax, Complex binWidth,
00102 const Vector<Complex>& values,
00103 const Vector<Complex>& counts, const Vector<Complex>& stats,
00104 uInt whereLabel, uInt ci, Bool page);
00105
00106
00107 static void process(
00108 const Float* pInData, const Bool* pInMask,
00109 Block<Float>* pHist, const Vector<Float>& clip,
00110 Float binWidth, uInt offset, uInt nrval,
00111 uInt nBins, uInt dataIncr, uInt maskIncr
00112 );
00113
00114 static void process (
00115 const Complex* pInData, const Bool* pInMask,
00116 Block<Complex>* pHist, const Vector<Complex>& clip,
00117 Complex binWidth, uInt offset, uInt nrval,
00118 uInt nBins, uInt dataIncr, uInt maskIncr
00119 );
00120
00121
00122 static Float setBinWidth (Float dmin, Float dmax, uInt nBins);
00123
00124 static Complex setBinWidth(Complex dmin, Complex dmax, uInt nBins);
00125
00126 private:
00127 static uInt bin(Float datum, Float min, Float width, uInt nBins);
00128
00129 static void makeGauss(uInt& nGPts, Float& gMax,
00130 Vector<Float>& gX, Vector<Float>& gY,
00131 Float dMean, Float dSigma,
00132 Float dSum, Float xMin,
00133 Float xMax, Float binWidth,
00134 Bool doCumu, Bool doLog);
00135
00136 static void plotHist (const Vector<Float>& x,
00137 const Vector<Float>& y,
00138 PGPlotter& plotter);
00139 };
00140
00141
00142 }
00143
00144 #endif