Line data Source code
1 : #ifndef _ATM_WVRMEASUREMENT_H 2 : #define _ATM_WVRMEASUREMENT_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: ATMWVRMeasurement.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 "ATMAngle.h" 33 : #include "ATMCommon.h" 34 : #include "ATMLength.h" 35 : #include "ATMTemperature.h" 36 : #include <vector> 37 : #include <math.h> 38 : 39 : using std::vector; 40 : 41 : ATM_NAMESPACE_BEGIN 42 : 43 : /*! \brief This is an auxiliary class that allows to create objects corresponding 44 : * to measurements (and their analysis) of a multichannel water vapor radiometer system. 45 : */ 46 : class WVRMeasurement 47 : { 48 : public: 49 : /** Class constructor with no radiometric channels */ 50 : WVRMeasurement(); 51 : /** The basic class constructor, with the elevation angle corresponding to the measurement, and the measurements themselves 52 : in the channels of the water vapor radiometer system */ 53 : WVRMeasurement(const Angle &elevation, 54 : const vector<Temperature> &measuredSkyBrightness); 55 : /** A more general class constructor, with the elevation angle corresponding to the measurement, the measurements themselves 56 : in the channels of the water vapor radiometer system, the fitted values in those channels and the sigma of the fit. This 57 : constructor is not intended to be used by the user, but by water vapor retrieval procedures inside the SkyStatus class */ 58 : WVRMeasurement(const Angle &elevation, 59 : const vector<Temperature> &measuredSkyBrightness, 60 : const vector<Temperature> &fittedSkyBrightness, 61 : const Length &retrievedWaterVaporColumn, 62 : const Temperature &sigma_fittedSkyBrightness); 63 : 64 : /** Destructor */ 65 : virtual ~WVRMeasurement(); 66 : 67 : /** Accessor to elevation */ 68 0 : Angle getElevation() const { return elevation_; } 69 : /** Accessor to air mass */ 70 : double getAirMass() const { return 1.0 / sin(elevation_.get()); } 71 : /** Accessor to measured sky brightness temperature */ 72 0 : vector<Temperature> getmeasuredSkyBrightness() const { return v_measuredSkyBrightness_; } 73 : /** Accessor to fitted sky brightness temperatures */ 74 0 : vector<Temperature> getfittedSkyBrightness() const { return v_fittedSkyBrightness_; } 75 : /** Setter of fitted sky brightness temperatures */ 76 0 : void setfittedSkyBrightness(const vector<Temperature> &a) { v_fittedSkyBrightness_ = a; } 77 : /** Accessor to retrieved water vapor column */ 78 0 : Length getretrievedWaterVaporColumn() const { return retrievedWaterVaporColumn_; } 79 : /** Setter of retrieved water vapor column */ 80 0 : void setretrievedWaterVaporColumn(const Length &a) { retrievedWaterVaporColumn_ = a; } 81 : /** Accessor to sigma of the fit (in K) */ 82 0 : Temperature getSigmaFit() const { return sigma_fittedSkyBrightness_; } 83 : /** Setter of sigma of the fit (in K) */ 84 0 : void setSigmaFit(const Temperature &a) { sigma_fittedSkyBrightness_ = a; } 85 : 86 : protected: 87 : Angle elevation_; 88 : vector<Temperature> v_measuredSkyBrightness_; 89 : vector<Temperature> v_fittedSkyBrightness_; // !< Fitted sky brightness temperatures over all WVR channels for each event 90 : Length retrievedWaterVaporColumn_; // !< Retrieved zenith water vapor column for each event 91 : Temperature sigma_fittedSkyBrightness_; // !< Sigma on the fitted sky brightness temperatures (average sigma over the WVR channels for each event). 92 : }; // class WVRMeasurement 93 : 94 : ATM_NAMESPACE_END 95 : 96 : #endif /*!_ATM_WVRMEASUREMENT_H*/