source: tags/release-0.9.2/Utils/utils.hh @ 1323

Last change on this file since 1323 was 78, checked in by Matthew Whiting, 18 years ago

Changed the name of findSigma to findStddev

File size: 4.4 KB
Line 
1#ifndef UTILS_H
2#define UTILS_H
3
4#include <wcs.h>
5#include <string>
6using std::string;
7// #include <functional>
8// #include <algorithm>
9// #include <iterator>
10
11// define the speed of light for WCS-related accessor functions
12const float C_kms = 299792.458;
13
14// Divide by the following correction factor to convert from MADFM to sigma estimator.
15const float correctionFactor = 0.6744888;
16// Multiply by the following correction factor to convert from trimmedSigma to sigma estimator.
17const double trimToNormal = 1.17036753077;
18
19// MENU ROUTINES FOR DIGANOSTIC/TEST PROGRAMS
20string menu();
21string specMenu();
22string orionMenu();
23string imageMenu();
24string twoblMenu();
25
26int linear_regression(int num, float *x, float *y, int ilow, int ihigh, float &slope, float &errSlope, float &intercept, float &errIntercept, float &r);
27void zscale(long imagesize, float *image, float &z1, float &z2);
28void zscale(long imagesize, float *image, float &z1, float &z2, float nullVal);
29void swap(float &a, float &b);
30void sort(float *arr, int begin, int end);
31void sort(float *arr, float *matchingArray, int begin, int end);
32// template< typename BidirectionalIterator, typename Compare >
33// void quick_sort( BidirectionalIterator first, BidirectionalIterator last, Compare cmp );
34// template< typename BidirectionalIterator >
35// inline void quick_sort( BidirectionalIterator first, BidirectionalIterator last );
36
37// STATISTICS-RELATED ROUTINES
38void findMinMax(const float *array, const int size, float &min, float &max);
39float findMean(float *&array, int size);
40float findStddev(float *&array, int size);
41float findMedian(float *&array, int size);
42float findMADFM(float *&array, int size);
43void findMedianStats(float *&array, int size, float &median, float &madfm);
44void findMedianStats(float *&array, long size, float &median, float &madfm);
45void findNormalStats(float *&array, int size, float &mean, float &sig);
46void findTrimmedHistStats(float *array, const int size, float &tmean, float &tsigma);
47void getRandomSpectrum(int length, float *x, float *y);
48void getRandomSpectrum(int length, float *x, double *y);
49void getRandomSpectrum(int length, float mean, float sigma, float *x, double *y);
50void getRandomSpectrum(int length, float mean, float sigma, float *x, float *y);
51float getNormalRV();
52float getNormalRVtrunc();
53float getNormalRV(float mean, float sigma);
54void getSigmaFactors(int &numScales, float *factors);
55void getSigmaFactors2D(int &numScales, float *factors);
56void getSigmaFactors3D(int &numScales, float *factors);
57void getSigmaFactors1DNew(int &numScales);
58void getSigmaFactors2DNew(int &numScales);
59void getSigmaFactors3DNew(int &numScales);
60
61
62// PLOTTING ROUTINES
63void cpgwedglog(const char* side, float disp, float width, float fg, float bg, const char *label);
64void cpghistlog(int npts, float *data, float datamin, float datamax, int nbin, int pgflag);
65void cpgcumul(int npts, float *data, float datamin, float datamax, int pgflag);
66void plotLine(const float slope, const float intercept);
67void lineOfEquality();
68void lineOfBestFit(int size, float *x, float *y);
69void lineOfBestFitPB(const int size, const float *x, const float *y);
70void plotVertLine(const float xval, const int colour, const int style);
71void plotVertLine(const float xval);
72void plotVertLine(const float xval, const int colour);
73void plotHorizLine(const float yval, const int colour, const int style);
74void plotHorizLine(const float yval);
75void plotHorizLine(const float yval, const int colour);
76void drawContours(const int size, const float *x, const float *y);
77
78// POSITION-RELATED ROUTINES
79string getIAUNameEQ(double ra, double dec, float equinox);
80string getIAUNameGAL(double ra, double dec);
81string decToDMS(double dec, string type);
82double dmsToDec(string dms);
83double angularSeparation(double &ra1, double &dec1, double &ra2, double &dec2);
84
85// WCS-RELATED ROUTINES
86double pixelToVelocity(wcsprm *wcs, double &x, double &y, double &z);
87int wcsToPixSingle(wcsprm *wcs, const double *world, double *pix);
88int pixToWCSSingle(wcsprm *wcs, const double *pix, double *world);
89int wcsToPixMulti(wcsprm *wcs, const double *world, double *pix, const int npts);
90int pixToWCSMulti(wcsprm *wcs, const double *pix, double *world, const int npts);
91float setVel_kms(wcsprm *wcs, const double coord);
92double velToCoord(wcsprm *wcs, const float velocity);
93
94// FILTER SMOOTHING ROUTINES
95void waveletSmooth(int dim,float *array, int arraySize, float sigma);
96void hanningSmooth(float *array, int arraySize, int hanningSize);
97void tophatSmooth(float *array, int arraySize, int width);
98
99#endif
Note: See TracBrowser for help on using the repository browser.