source: trunk/src/LineCatalog.h@ 1840

Last change on this file since 1840 was 1534, checked in by Malte Marquarding, 16 years ago

Fix for Ticket #90; treating integer as double columns now

File size: 2.9 KB
Line 
1//
2// C++ Interface: LineCatalog
3//
4// Description:
5//
6//
7// Author: Malte Marquarding <Malte.Marquarding@csiro.au>, (C) 2006
8//
9// Copyright: See COPYING file that comes with this distribution
10//
11//
12#ifndef LINECATALOG_H
13#define LINECATALOG_H
14
15#include <string>
16
17#include <casa/aips.h>
18#include <tables/Tables/Table.h>
19
20namespace asap {
21/**
22 * A represenation of a line catalog, which can be ASCII, or an aips++ table
23 *
24 * ASCII catalogs have to be formatted like JPL.
25 * Name frequency error log(I)
26 * Only "name", "frequency" and log(I) are used at this stage
27 *
28 * @author Malte Marquarding
29 * @date $Date:$
30 */
31class LineCatalog {
32public:
33 /**
34 *
35 * @param name the name of the ASCII file or aips++ table
36 */
37 explicit LineCatalog(const std::string& name = "jpl");
38
39 virtual ~LineCatalog() {}
40
41 /**
42 * select a subset of the data by frequency range
43 * @param fmin the lower frequency bound
44 * @param fmax the upper frequency bound
45 */
46 void setFrequencyLimits(double fmin, double fmax);
47
48 /**
49 * select a subset of the table by line strength range
50 * @param smin the lower strength bound
51 * @param smin the upper strength bound
52 */
53 void setStrengthLimits(double smin, double smax);
54
55 /**
56 * select a subset of the data by name pattern match (unix-style)
57 * @param name the string pattern e.g. "*CS*"
58 * @param ptype pattern type e.g.
59 * @li "pattern"
60 * @li "regex"
61 */
62 void setPattern(const std::string& name, const std::string& ptype="pattern");
63
64 /**
65 * save the table with current limits to disk (as an aips++ table)
66 * @param name the filename
67 */
68 void save(const std::string& name);
69
70 /**
71 * Return a string representation of this table
72 * @param row an integer describing the row number to show
73 * default -1 is all rows
74 * @return std::string
75 */
76 std::string summary(int row=-1) const;
77
78 /**
79 * Return the rest frequency value for a specific row
80 * @param row the row number
81 * @return a double rest frequency value
82 */
83 double getFrequency(uint row) const;
84
85 /**
86 * Return the line strength value for a specific row
87 * @param row the row number
88 * @return a double rest line strength value
89 */
90 double getStrength(uint row) const;
91
92 /**
93 *
94 * @param row
95 * @return
96 */
97 std::string getName(uint row) const;
98
99 int nrow() const { return table_.nrow(); }
100
101 void reset() { table_ = baseTable_; }
102
103private:
104 /**
105 * utility function to handle range limits
106 * @param lmin the lower limit
107 * @param lmax the upper limit
108 * @param colname the columd to apply the limits to
109 * @return a new casa::Table
110 */
111 casa::Table setLimits(double lmin, double lmax, const std::string& colname);
112
113 double getDouble(const std::string& colname, uint row) const;
114
115 // the table with seelection
116 casa::Table table_;
117 // the pristine table
118 casa::Table baseTable_;
119};
120
121} // namespace
122
123#endif //LINECATALOG_H
Note: See TracBrowser for help on using the repository browser.