source: trunk/src/Cubes/cubes_extended.cc @ 528

Last change on this file since 528 was 528, checked in by MatthewWhiting, 15 years ago

Changing the documentation comments to match the askapsoft style. Also have split ChanMap? and Object3D into separate files.

File size: 3.9 KB
Line 
1// -----------------------------------------------------------------------
2// cubes_extended.cc: Extra member functions for the Cube class, that
3//                    depend on extra classes.
4// -----------------------------------------------------------------------
5// Copyright (C) 2006, Matthew Whiting, ATNF
6//
7// This program is free software; you can redistribute it and/or modify it
8// under the terms of the GNU General Public License as published by the
9// Free Software Foundation; either version 2 of the License, or (at your
10// option) any later version.
11//
12// Duchamp is distributed in the hope that it will be useful, but WITHOUT
13// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15// for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with Duchamp; if not, write to the Free Software Foundation,
19// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
20//
21// Correspondence concerning Duchamp may be directed to:
22//    Internet email: Matthew.Whiting [at] atnf.csiro.au
23//    Postal address: Dr. Matthew Whiting
24//                    Australia Telescope National Facility, CSIRO
25//                    PO Box 76
26//                    Epping NSW 1710
27//                    AUSTRALIA
28// -----------------------------------------------------------------------
29#include <unistd.h>
30#include <iostream>
31#include <iomanip>
32#include <vector>
33#include <algorithm>
34#include <string>
35#include <math.h>
36
37#include <wcslib/wcs.h>
38
39#include <duchamp/duchamp.hh>
40#include <duchamp/param.hh>
41#include <duchamp/fitsHeader.hh>
42#include <duchamp/Cubes/cubes.hh>
43#include <duchamp/Detection/detection.hh>
44#include <duchamp/Detection/columns.hh>
45#include <duchamp/Utils/utils.hh>
46#include <duchamp/Utils/mycpgplot.hh>
47#include <duchamp/Utils/Statistics.hh>
48using namespace mycpgplot;
49using namespace Statistics;
50
51namespace duchamp
52{
53
54  using namespace Column;
55
56  void Cube::sortDetections()
57  {
58    ///  @details
59    ///  A front end to the sort-by functions.
60    ///  If there is a good WCS, the detection list is sorted by velocity.
61    ///  Otherwise, it is sorted by increasing z-pixel value.
62    ///  The ID numbers are then re-calculated.
63 
64    if(this->head.isWCS()) SortByVel(*this->objectList);
65    else SortByZ(*this->objectList);
66    for(int i=0; i<this->objectList->size();i++)
67      this->objectList->at(i).setID(i+1);
68
69  }
70  //--------------------------------------------------------------------
71
72  void Cube::readSavedArrays()
73  {
74    /// @details
75    ///  This function reads in reconstructed and/or smoothed arrays that have
76    ///   been saved on disk in FITS files.
77    ///  To do this it calls the functions Cube::readReconCube() and
78    ///   Cube::readSmoothCube().
79    ///  The Param set is consulted to determine which of these arrays are needed.
80
81    // If the reconstructed array is to be read in from disk
82    if( this->par.getFlagReconExists() && this->par.getFlagATrous() ){
83      std::cout << "Reading reconstructed array: "<<std::endl;
84      if( this->readReconCube() == FAILURE){
85        std::stringstream errmsg;
86        errmsg <<"Could not read in existing reconstructed array.\n"
87               <<"Will perform reconstruction using assigned parameters.\n";
88        duchampWarning("Duchamp", errmsg.str());
89        this->par.setFlagReconExists(false);
90      }
91      else std::cout << "Reconstructed array available.\n";
92    }
93
94    if( this->par.getFlagSmoothExists() && this->par.getFlagSmooth() ){
95      std::cout << "Reading smoothed array: "<<std::endl;
96      if( this->readSmoothCube() == FAILURE){
97        std::stringstream errmsg;
98        errmsg <<"Could not read in existing smoothed array.\n"
99               <<"Will smooth the cube using assigned parameters.\n";
100        duchampWarning("Duchamp", errmsg.str());
101        this->par.setFlagSmoothExists(false);
102      }
103      else std::cout << "Smoothed array available.\n";
104    }
105   
106  }
107
108}
Note: See TracBrowser for help on using the repository browser.