casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ATMWaterVaporRadiometer.h
Go to the documentation of this file.
1 #ifndef _ATM_WATERVAPORRADIOMETER_H
2 #define _ATM_WATERVAPORRADIOMETER_H
3 /*******************************************************************************
4  * ALMA - Atacama Large Millimiter Array
5  * (c) Instituto de Estructura de la Materia, 2009
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  *
21  * "@(#) $Id: ATMWaterVaporRadiometer.h Exp $"
22  *
23  * who when what
24  * -------- -------- ----------------------------------------------
25  * pardo 24/03/09 created
26  */
27 
28 #ifndef __cplusplus
29 #error This is a C++ include file and cannot be used from plain C
30 #endif
31 
32 #include "ATMCommon.h"
33 #include "ATMPercent.h"
34 #include "ATMTemperature.h"
35 
36 #include <vector>
37 
38 using std::vector;
39 
41 
48 {
49 public:
50 
52 
54  WaterVaporRadiometer(const vector<unsigned int> &IdChannels);
55 
57  WaterVaporRadiometer(const vector<unsigned int> &IdChannels,
58  const vector<double> &skyCoupling);
59 
60  inline WaterVaporRadiometer(const vector<unsigned int> &IdChannels,
61  double skyCoupling)
62  {
63  WaterVaporRadiometer(IdChannels, vector<double> (IdChannels.size(),
64  skyCoupling));
65  }
66 
68  WaterVaporRadiometer(const vector<unsigned int> &IdChannels,
69  const vector<Percent> &signalGain);
70 
71  /* WaterVaporRadiometer(vector<unsigned int> IdChannels, Percent signalGain); */
72 
74  WaterVaporRadiometer(const vector<unsigned int> &IdChannels,
75  const vector<double> &skyCoupling,
76  const vector<Percent> &signalGain);
77 
79  WaterVaporRadiometer(const vector<unsigned int> &IdChannels,
80  const Temperature &spilloverTemperature);
81 
83  WaterVaporRadiometer(const vector<unsigned int> &IdChannels,
84  const vector<double> &skyCoupling,
85  const Temperature &spilloverTemperature);
86 
88  WaterVaporRadiometer(const vector<unsigned int> &IdChannels,
89  const vector<Percent> &signalGain,
90  const Temperature &spilloverTemperature);
91 
93  WaterVaporRadiometer(const vector<unsigned int> &IdChannels,
94  const vector<double> &skyCoupling,
95  const vector<Percent> &signalGain,
96  const Temperature &spilloverTemperature);
97 
98  virtual ~WaterVaporRadiometer();
99 
101  inline vector<unsigned int> getIdChannels() const { return IdChannels_; }
102 
104  inline vector<double> getSkyCoupling() const { return skyCoupling_; }
105 
107  inline void multiplySkyCoupling(double factor)
108  {
109  for(unsigned int i = 0; i < skyCoupling_.size(); i++) {
110  skyCoupling_[i] = skyCoupling_[i] * factor;
111  }
112  }
114  inline void multiplySkyCouplingChannel(unsigned int ichan, double factor)
115  {
116  skyCoupling_[ichan] = skyCoupling_[ichan] * factor;
117  }
118 
120  inline void setSkyCoupling(double factor)
121  {
122  /* for(unsigned int i=0; i<skyCoupling_.size(); i++){ skyCoupling_[i] = factor;} */
123  for(vector<double>::iterator it(skyCoupling_.begin()),
124  itmax(skyCoupling_.end()); it != itmax; ++it) {
125  (*it) = factor;
126  }
127  }
128  inline void setSkyCoupling(unsigned int i, double factor)
129  {
130  if(i < skyCoupling_.size()) {
131  skyCoupling_[i] = factor;
132  } else { /* throw(Error()); */
133  }
134  }
135 
137  inline vector<Percent> getsignalGain() const { return signalGain_; }
141  inline void setSpilloverTemperature(Temperature spilloverTemperature) { spilloverTemperature_ = spilloverTemperature; }
142 
143 protected:
144  vector<unsigned int> IdChannels_;
145  vector<double> skyCoupling_;
146  vector<Percent> signalGain_;
148 
149 private:
150  // /** Inaccessible Copy Constructor */
151  // WaterVaporRadiometer(const WaterVaporRadiometer&);
152 
153  // /** Inaccessible assignment operator */
154  // WaterVaporRadiometer& operator=(const WaterVaporRadiometer&);
155 
156 
157 }; // class WaterVaporRadiometer
158 
160 
161 #endif
#define ATM_NAMESPACE_END
Definition: ATMCommon.h:38
This is an axuliary class to SkyStatus that allows to identify the spectral windows that actually cor...
vector< unsigned int > IdChannels_
void multiplySkyCoupling(double factor)
Multiplier of the Sky coupling vector.
Temperature getSpilloverTemperature() const
Accessor to SpilloverTemperature.
vector< double > getSkyCoupling() const
Accessor to Sky coupling of the different radiometric channels (vector of double) ...
#define ATM_NAMESPACE_BEGIN
Definition: ATMCommon.h:37
vector< unsigned int > getIdChannels() const
Accessor to identifiers of radiometric channels (vector of int)
vector< Percent > getsignalGain() const
Accessor to signalGain of the different radiometric channels (vector of percent)
WaterVaporRadiometer(const vector< unsigned int > &IdChannels, double skyCoupling)
void multiplySkyCouplingChannel(unsigned int ichan, double factor)
Multiplier of one Sky coupling channel.
void setSpilloverTemperature(Temperature spilloverTemperature)
Setter of SpilloverTemperature.
void setSkyCoupling(unsigned int i, double factor)
Temperature value with units.
virtual ~WaterVaporRadiometer()
void setSkyCoupling(double factor)
Setter of the Sky coupling vector to a single Sky Coupling value.