Line data Source code
1 : /** 2 : Bojan Nikolic <b.nikolic@mrao.cam.ac.uk>, <bojan@bnikolic.co.uk> 3 : 4 : This file is part of LibAIR and is licensed under GNU Public 5 : License Version 2 6 : 7 : \file columns_data.hpp 8 : Renamed columns_data.h 2023 9 : 10 : */ 11 : #ifndef _LIBAIR_COLUMNS_DATA_HPP__ 12 : #define _LIBAIR_COLUMNS_DATA_HPP__ 13 : 14 : #include <memory> 15 : 16 : #include "model_enums.h" 17 : 18 : namespace LibAIR2 { 19 : 20 : class Column; 21 : class TrivialGrossColumn; 22 : class ContinuumColumn; 23 : class PartitionTable; 24 : 25 : /** Utility class for any water columns to manage the lifetime of 26 : associated data. 27 : */ 28 : class WaterData 29 : { 30 : 31 : /// The partition table (if used) 32 : std::unique_ptr<PartitionTable> pt; 33 : 34 : /// The water column 35 : std::unique_ptr<Column> _wcol; 36 : 37 : /// The water continuum column 38 : std::unique_ptr<ContinuumColumn> _wcont; 39 : 40 : public: 41 : 42 : // ---------- Public types ---------------------- 43 : 44 : /// The lines that we know about. 45 : enum Lines { 46 : ///Set up for simulating the 183 GHz line 47 : L183, 48 : ///Set up for simulating the 22 GHz line 49 : L22, 50 : ///Set up all of the lines 51 : LALL}; 52 : 53 : 54 : // ---------- Public data -------------- 55 : 56 0 : Column * wcol(void) {return _wcol.get();}; 57 : 58 0 : ContinuumColumn * wcont(void) {return _wcont.get();} ; 59 : 60 : // ---------- Construction / Destruction -------------- 61 : 62 : WaterData(Lines line, 63 : PartitionTreatment t, 64 : Continuum c, 65 : double n); 66 : 67 : virtual ~WaterData(); 68 : 69 : }; 70 : 71 : /** Specialisation for 183 GHz. 72 : 73 : \bug Implemented only for compatibility purposes while 74 : refactoring WaterData 75 : */ 76 : class Water183Data : 77 : public WaterData 78 : { 79 : 80 : public: 81 : 82 : // ---------- Public types ---------------------- 83 : 84 : // ---------- Public data -------------- 85 : 86 : // ---------- Construction / Destruction -------------- 87 : 88 : Water183Data(PartitionTreatment t, 89 : Continuum c, 90 : double n); 91 : 92 : }; 93 : 94 : } 95 : 96 : #endif