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

Last change on this file since 1123 was 1123, checked in by MatthewWhiting, 12 years ago

Moving the code that reads from and writes to FITS files containing reconstructed, momentmap, mask etc arrays to the FitsIO directory, away from Cubes. Updating all include statements as well.

File size: 4.7 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/FitsIO/ReadExistingRecon.hh>
44#include <duchamp/FitsIO/ReadExistingSmooth.hh>
45#include <duchamp/Detection/detection.hh>
46#include <duchamp/Outputs/columns.hh>
47#include <duchamp/Utils/utils.hh>
48#include <duchamp/Utils/mycpgplot.hh>
49#include <duchamp/Utils/Statistics.hh>
50using namespace mycpgplot;
51using namespace Statistics;
52
53namespace duchamp
54{
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 the requested parameter.
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    if(!this->head.isWCS()){
67      if(this->par.getSortingParam()=="ra"){
68        DUCHAMPWARN("sortDetections","No good WCS, so sorting by xvalue");
69        SortDetections(*this->objectList, "xvalue");
70      }
71      else if(this->par.getSortingParam()=="dec"){
72        DUCHAMPWARN("sortDetections","No good WCS, so sorting by yvalue");
73        SortDetections(*this->objectList, "yvalue");
74      }
75      else if(this->par.getSortingParam()=="vel" || this->par.getSortingParam()=="w50"){
76        DUCHAMPWARN("sortDetections","No good WCS, so sorting by zvalue");
77        SortDetections(*this->objectList, "zvalue");
78      }
79      else {
80        SortDetections(*this->objectList, this->par.getSortingParam());
81      }
82    }
83    else SortDetections(*this->objectList, this->par.getSortingParam());
84    for(size_t i=0; i<this->objectList->size();i++)
85      this->objectList->at(i).setID(i+1);
86
87  }
88  //--------------------------------------------------------------------
89
90  void Cube::readSavedArrays()
91  {
92    /// @details
93    ///  This function reads in reconstructed and/or smoothed arrays that have
94    ///   been saved on disk in FITS files.
95    ///  To do this it calls the functions Cube::readReconCube() and
96    ///   Cube::readSmoothCube().
97    ///  The Param set is consulted to determine which of these arrays are needed.
98
99    // If the reconstructed array is to be read in from disk
100    if( this->par.getFlagReconExists() && this->par.getFlagATrous() ){
101      std::cout << "Reading reconstructed array: "<<std::endl;
102      // if( this->readReconCube() == FAILURE){
103      ReadExistingRecon reconReader(this);
104      if( reconReader.read() == FAILURE){
105        DUCHAMPWARN("Duchamp", "Could not read in existing reconstructed array. Will perform reconstruction using assigned parameters.");
106        this->par.setFlagReconExists(false);
107      }
108      else std::cout << "Reconstructed array available.\n";
109    }
110
111    if( this->par.getFlagSmoothExists() && this->par.getFlagSmooth() ){
112      std::cout << "Reading smoothed array: "<<std::endl;
113      ReadExistingSmooth smoothReader(this);
114      if( smoothReader.read() == FAILURE){
115        //      if( this->readSmoothCube() == FAILURE){
116        DUCHAMPWARN("Duchamp", "Could not read in existing smoothed array. Will smooth the cube using assigned parameters.");
117        this->par.setFlagSmoothExists(false);
118      }
119      else std::cout << "Smoothed array available.\n";
120    }
121   
122  }
123
124}
Note: See TracBrowser for help on using the repository browser.