source: trunk/src/SDMath.h@ 169

Last change on this file since 169 was 169, checked in by kil064, 20 years ago

moev functionality from SDMath to SDMathWrapper (adding SDMathWrapper.cc in
the process). This removes an unnecessary layer from SDMath

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.7 KB
RevLine 
[2]1//#---------------------------------------------------------------------------
2//# SDMath.h: A collection of single dish mathematical operations
3//#---------------------------------------------------------------------------
4//# Copyright (C) 2004
[125]5//# ATNF
[2]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 Free
9//# Software Foundation; either version 2 of the License, or (at your option)
10//# any later version.
11//#
12//# This program is distributed in the hope that it will be useful, but
13//# WITHOUT ANY WARRANTY; without even the implied warranty of
14//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
15//# Public License for more details.
16//#
17//# You should have received a copy of the GNU General Public License along
18//# with this program; if not, write to the Free Software Foundation, Inc.,
19//# 675 Massachusetts Ave, Cambridge, MA 02139, USA.
20//#
21//# Correspondence concerning this software should be addressed as follows:
22//# Internet email: Malte.Marquarding@csiro.au
23//# Postal address: Malte Marquarding,
24//# Australia Telescope National Facility,
25//# P.O. Box 76,
26//# Epping, NSW, 2121,
27//# AUSTRALIA
28//#
29//# $Id:
30//#---------------------------------------------------------------------------
[125]31#ifndef SDMATH_H
32#define SDMATH_H
[2]33
[38]34#include <string>
35#include <vector>
[130]36#include <casa/aips.h>
[81]37#include <casa/Utilities/CountedPtr.h>
[2]38
[83]39namespace asap {
[2]40
41class SDMemTable;
42
[66]43namespace SDMath {
[152]44
45// Quotient
46
[125]47 casa::CountedPtr<SDMemTable> quotient(const casa::CountedPtr<SDMemTable>& on,
48 const casa::CountedPtr<SDMemTable>& off);
[152]49
50// Hanning
51
[125]52 casa::CountedPtr<SDMemTable> hanning(const casa::CountedPtr<SDMemTable>& in);
[48]53
[152]54// Average in time
55
[165]56 casa::CountedPtr<SDMemTable> average (const casa::Block<casa::CountedPtr<SDMemTable> >& in,
57 const casa::Vector<casa::Bool>& mask,
58 bool scanAverage, const std::string& weightStr);
[48]59
[152]60// Statistics
61
[130]62 std::vector<float> statistic(const casa::CountedPtr<SDMemTable>& in,
63 const std::vector<bool>& mask, const std::string& which);
64
[169]65
66// Simple mathematical operations. what=0 (mul) or 1 (add)
67
68 SDMemTable* simpleOperate (const SDMemTable& in, casa::Float offset,
69 casa::Bool doAll, casa::uInt what);
70
71// Average polarizations
72
73 SDMemTable* averagePol (const SDMemTable& in, const casa::Vector<casa::Bool>& mask);
74
75// Bin up spectra
76
77 SDMemTable* bin (const SDMemTable& in, casa::Int width);
78
79
80
[155]81// private like functions (this is not a class so can't make them private)
[130]82
[152]83// Weighting type for time averaging
84
[162]85 enum WeightType {NONE,VAR,TSYS};
[144]86
[152]87// Function to use accumulate data during time averaging
88
[146]89 void accumulate (casa::Double& timeSum, casa::Double& intSum, casa::Int& nAccum,
90 casa::MaskedArray<casa::Float>& sum, casa::Array<casa::Float>& sumSq,
91 casa::Array<casa::Float>& nPts, casa::Array<casa::Float>& tSysSum,
92 const casa::Array<casa::Float>& tSys, const casa::Array<casa::Float>& nInc,
93 const casa::Vector<casa::Bool>& mask, casa::Double time, casa::Double interval,
94 const casa::Block<casa::CountedPtr<SDMemTable> >& in,
95 casa::uInt iTab, casa::uInt iRow, casa::uInt axis, casa::uInt nAxesSub,
[162]96 casa::Bool useMask, WeightType wtType);
[146]97
[152]98// Function to fill Scan Container when averaging in time
99
[144]100 void fillSDC (SDContainer& sc, const casa::Array<casa::Bool>& mask,
101 const casa::Array<casa::Float>& data,
102 const casa::Array<casa::Float>& tSys,
103 casa::Int scanID, casa::Double timeStamp,
104 casa::Double interval, const casa::String& sourceName,
105 const casa::Vector<casa::uInt>& freqID);
106
[162]107// Put the data and mask into the SDContainer
108 void putDataInSDC (SDContainer& sc, const casa::Array<casa::Float>& data,
109 const casa::Array<casa::Bool>& mask);
110
[152]111// Function to normalize data when averaging in time
[144]112
[146]113 void normalize (casa::MaskedArray<casa::Float>& data,
114 const casa::Array<casa::Float>& sumSq,
115 const casa::Array<casa::Float>& nPts,
[162]116 WeightType wtType, casa::Int axis, casa::Int nAxes);
[152]117
118// Function to get the current cursor location
119 void getCursorLocation (casa::IPosition& start, casa::IPosition& end,
120 const SDMemTable& in);
[162]121
122// Convert weight string to enum value
123
124 void convertWeightString (WeightType& wt, const std::string& weightStr);
[125]125
[165]126};
[146]127
[165]128} // namespace
[146]129
[165]130#endif
Note: See TracBrowser for help on using the repository browser.