source: tags/release-1.1.10/src/duchamp.hh @ 1323

Last change on this file since 1323 was 759, checked in by MatthewWhiting, 14 years ago

Non-functional change - only doxygen comments.

File size: 10.0 KB
Line 
1// -----------------------------------------------------------------------
2// duchamp.hh: Definitions for use with Duchamp
3// -----------------------------------------------------------------------
4// Copyright (C) 2006, Matthew Whiting, ATNF
5//
6// This program is free software; you can redistribute it and/or modify it
7// under the terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 2 of the License, or (at your
9// option) any later version.
10//
11// Duchamp is distributed in the hope that it will be useful, but WITHOUT
12// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14// for more details.
15//
16// You should have received a copy of the GNU General Public License
17// along with Duchamp; if not, write to the Free Software Foundation,
18// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
19//
20// Correspondence concerning Duchamp may be directed to:
21//    Internet email: Matthew.Whiting [at] atnf.csiro.au
22//    Postal address: Dr. Matthew Whiting
23//                    Australia Telescope National Facility, CSIRO
24//                    PO Box 76
25//                    Epping NSW 1710
26//                    AUSTRALIA
27// -----------------------------------------------------------------------
28#ifndef DUCHAMP_HH
29#define DUCHAMP_HH
30
31#include <iostream>
32#include <string>
33
34// need to undef these in case other packages have them defined.
35#undef PACKAGE_BUGREPORT
36#undef PACKAGE_NAME
37#undef PACKAGE_STRING
38#undef PACKAGE_TARNAME
39#undef PACKAGE_VERSION
40#undef HAVE_PGPLOT
41#include <duchamp/config.h>
42
43#ifdef HAVE_PGPLOT
44#include <duchamp/Utils/mycpgplot.hh>
45#endif
46
47/// The primary namespace for all functionality directly related to Duchamp
48namespace duchamp
49{
50
51  /// @brief How to convey whether a function has worked
52  enum OUTCOME {SUCCESS=0, FAILURE};
53
54  /// Usage message for command line help.
55  const std::string ERR_USAGE_MSG =
56    "Usage: Duchamp [OPTION] [FILE]\n\
57Duchamp is an object finder for spectral-line FITS cubes.\n\
58\n\
59  -p FILE      Read in parameters from FILE, including FITS image location.\n\
60  -f FILE      Use default parameters with imageFile=FILE\n\
61  -x           Do not use X-windows PGPLOT output\n\
62               (equivalent to setting flagXOutput=false -- overrides the parameter file)\n\n\
63  -v           Return version number and exit\n\
64  -h           Display this help information and exit\n";
65
66  /// Usage message for command line help for Selavy.
67  const std::string SELAVY_ERR_USAGE_MSG =
68    "Usage: Selavy [OPTION] [FILE]\n\
69Selavy re-analyses and re-plots objects found by Duchamp.\n\
70\n\
71  -p FILE      Read in parameters from FILE, including FITS image location.\n\
72  -f FILE      Use default parameters with imageFile=FILE\n\
73  -x           Do not use X-windows PGPLOT output\n\
74               (equivalent to setting flagXOutput=false -- overrides the parameter file)\n\n\
75  -v           Return version number and exit\n\
76  -h           Display this help information and exit\n";
77
78  /// Shorter Usage message for command line help.
79  const std::string ERR_USAGE_MSG_SHORT="Usage: Duchamp -p [parameter file]\n";
80
81  /// The program name. (Duchamp)
82  const std::string PROGNAME = PACKAGE_NAME;
83
84  /// The program version
85  const std::string VERSION = PACKAGE_VERSION;
86
87  // Specialised functions to report warnings and errors -- in duchamp.cc
88  /// Print a warning message to the stderr
89  void duchampWarning(std::string subroutine, std::string warning);
90  /// Print an error message to the stderr and sound the bell
91  void duchampError(std::string subroutine, std::string error);
92
93
94  /// The spectral type that we want the wcsprm structs to be in.
95  const char duchampVelocityType[9] = "VOPT-F2W";
96  /// The spectral type that we want the wcsprm structs to be in when no velocity info is present.
97  const char duchampFrequencyType[9] = "FREQ    ";
98
99  /// Descriptions of the various spectral axis types
100  enum TYPEDESC {FREQUENCY=0,VELOCITY,WAVELENGTH};
101  /// Human-readable descriptions of the various spectral axis types
102  const std::string duchampSpectralDescription[3]=
103    {"Frequency", "Velocity", "Wavelength"};
104
105  // The following are the FITS Header Keywords corresponding to the
106  // parameters related to the atrous reconstruction.
107
108  /// FITS header keyword for min atrous scale
109  const std::string keyword_scaleMin     = "DU_MINSC";
110  /// FITS header keyword for S/N used in atrous reconstruction
111  const std::string keyword_snrRecon     = "DU_ATCUT";
112  /// FITS header keyword for number of dimensions used in atrous reconstruction
113  const std::string keyword_reconDim     = "DU_ATDIM";
114  /// FITS header keyword for the code number of the filter used in atrous reconstruction
115  const std::string keyword_filterCode   = "DU_FILTR";
116  /// FITS header keyword: does this file hold the reconstructed array or the residual?
117  const std::string keyword_ReconResid   = "DU_RECON";
118  /// FITS header keyword: type of smoothing done.
119  const std::string keyword_smoothtype   = "DU_SMTYP";
120  /// FITS header keyword for the gaussian kernel major axis FWHM
121  const std::string keyword_kernmaj      = "DU_KMAJ";
122  /// FITS header keyword for the gaussian kernel minor axis FWHM
123  const std::string keyword_kernmin      = "DU_KMIN";
124  /// FITS header keyword for the gaussian kernel position angle
125  const std::string keyword_kernpa       = "DU_KPA";
126  /// FITS header keyword for the Hanning filter width
127  const std::string keyword_hanningwidth = "DU_WHANN";
128  /// FITS header keyword for the image subsection used
129  const std::string keyword_subsection   = "DU_IMSUB";
130
131  // And these are the comments corresponding to the relevant keywords
132  /// FITS header comment for DU_MINSC keyword
133  const std::string comment_scaleMin     = "Duchamp parameter scaleMin";
134  /// FITS header comment for DU_ATCUT keyword
135  const std::string comment_snrRecon     = "Duchamp parameter snrRecon";
136  /// FITS header comment for DU_ATDIM keyword
137  const std::string comment_reconDim     = "Duchamp parameter reconDim";
138  /// FITS header comment for DU_FILTR keyword
139  const std::string comment_filterCode   = "Duchamp parameter filterCode";
140  /// FITS header comment for DU_RECON keyword
141  const std::string comment_ReconResid   = "Is this the reconstruction or residual?";
142  /// FITS header comment for DU_SMTYP keyword
143  const std::string comment_smoothtype   = "Type of smoothing done";
144  /// FITS header comment for DU_KMAJ  keyword
145  const std::string comment_kernmaj      = "Duchamp parameter kernMaj";
146  /// FITS header comment for DU_KMIN  keyword
147  const std::string comment_kernmin      = "Duchamp parameter kernMin";
148  /// FITS header comment for DU_KPA   keyword
149  const std::string comment_kernpa       = "Duchamp parameter kernPA";
150  /// FITS header comment for DU_WHANN keyword
151  const std::string comment_hanningwidth = "Duchamp parameter hanningWidth";
152  /// FITS header comment for DU_IMSUB keyword
153  const std::string comment_subsection   = "Subsection of the original image";
154
155  // Descriptive Headers: for the reconstruction case
156  const std::string header_reconHistory1 =
157    "Reconstructed with a trous wavelet technique";
158  const std::string header_reconHistory2 =
159    "Reconstruction by " + PROGNAME + " v." + VERSION;
160  const std::string header_reconHistory_input =
161    "Original (input) image used by " + PROGNAME + " follows";
162  const std::string header_reconSubsection_comment  =
163    "A subsection of the original was reconstructed by " + PROGNAME;
164  const std::string header_atrous_comment  =
165    "The following are the Duchamp parameters used in reconstruction";
166
167  // Descriptive Headers: for the Smoothing case
168  const std::string header_smoothHistory =
169    "Smoothed by " + PROGNAME + " v." + VERSION;
170  const std::string header_smoothHistory_input =
171    "Original (input) image used by " + PROGNAME + " follows";
172  const std::string header_smoothSubsection_comment  =
173    "A subsection of the original was smoothed by " + PROGNAME;
174  const std::string header_smoothSpatial = "Spatial, gaussian kernel";
175  const std::string header_smoothSpectral= "Spectral, hanning filter";
176
177  // Descriptive Headers: for the output Mask image
178  const std::string header_maskHistory =
179    "Results of searching by " + PROGNAME + " v." + VERSION;
180  const std::string header_maskHistory_input =
181    "Input image used by " + PROGNAME + " follows";
182  const std::string header_maskSubsection_comment =
183    "A subsection of the original was searched by " + PROGNAME;
184
185  // Descriptive Headers: for the output Moment-0 image
186  const std::string header_moment0History =
187    "Moment-0 map from searching by " + PROGNAME + " v." + VERSION;
188  const std::string header_moment0History_input =
189    "Input image used by " + PROGNAME + " follows";
190  const std::string header_moment0Subsection_comment =
191    "A subsection of the original was searched by " + PROGNAME;
192
193}
194
195#ifdef HAVE_PGPLOT
196namespace duchamp
197{
198
199  // Colours used in graphical output
200  /// The colour for the Blank edges
201  const int DUCHAMP_BLANK_EDGE_COLOUR = mycpgplot::MAGENTA;
202  /// The colour for the edge of the cube
203  const int DUCHAMP_CUBE_EDGE_COLOUR = mycpgplot::YELLOW;
204  /// The colour for the reconstructed spectra
205  const int DUCHAMP_RECON_SPECTRA_COLOUR = mycpgplot::RED;
206  /// The colour for the baseline spectra
207  const int DUCHAMP_BASELINE_SPECTRA_COLOUR = mycpgplot::YELLOW;
208  /// The colour for the object outline
209  const int DUCHAMP_OBJECT_OUTLINE_COLOUR = mycpgplot::BLUE;
210  /// The colour for the Milky-way region spectral boundaries
211  const int DUCHAMP_MILKY_WAY_COLOUR = mycpgplot::DARKGREEN;
212  /// The colour for the tick marks in the image cutouts
213  const int DUCHAMP_TICKMARK_COLOUR = mycpgplot::RED;
214  /// The colour for the text identifying objects on the maps
215  const int DUCHAMP_ID_TEXT_COLOUR = mycpgplot::RED;
216  /// The colour for the WCS axes on the maps
217  const int DUCHAMP_WCS_AXIS_COLOUR = mycpgplot::WCSGREEN;
218
219}
220
221#else
222namespace duchamp
223{
224  /// The colour for the text identifying objects on the maps
225  const int DUCHAMP_ID_TEXT_COLOUR = 2;
226  /// The colour for the WCS axes on the maps
227  const int DUCHAMP_WCS_AXIS_COLOUR = 3;
228
229}
230
231#endif
232
233
234#endif
Note: See TracBrowser for help on using the repository browser.