WVMCalRow.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef WVMCalRow_CLASS
00035 #define WVMCalRow_CLASS
00036
00037 #include <vector>
00038 #include <string>
00039 #include <set>
00040
00041 #ifndef WITHOUT_ACS
00042 #include <asdmIDLC.h>
00043 #endif
00044
00045
00046
00047
00048
00049
00050
00051 #include <Tag.h>
00052
00053
00054
00055 #include <Temperature.h>
00056
00057
00058
00059 #include <Frequency.h>
00060
00061
00062
00063 #include <ArrayTimeInterval.h>
00064
00065
00066
00067
00068
00069
00070
00071
00072 #include "CWVRMethod.h"
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 #include <ConversionException.h>
00090 #include <NoSuchRow.h>
00091 #include <IllegalAccessException.h>
00092
00093 #include <RowTransformer.h>
00094
00095
00096
00097
00098
00099
00100 namespace asdm {
00101
00102
00103
00104
00105
00106 class SpectralWindowRow;
00107
00108
00109 class AntennaRow;
00110
00111
00112 class AntennaRow;
00113
00114
00115 class WVMCalRow;
00116 typedef void (WVMCalRow::*WVMCalAttributeFromBin) (EndianIStream& eis);
00117 typedef void (WVMCalRow::*WVMCalAttributeFromText) (const string& s);
00118
00125 class WVMCalRow {
00126 friend class asdm::WVMCalTable;
00127 friend class asdm::RowTransformer<WVMCalRow>;
00128
00129
00130 public:
00131
00132 virtual ~WVMCalRow();
00133
00137 WVMCalTable &getTable() const;
00138
00143 bool isAdded() const;
00144
00146
00148
00149
00150
00151
00152
00153
00154
00155
00160 ArrayTimeInterval getTimeInterval() const;
00161
00162
00163
00164
00174 void setTimeInterval (ArrayTimeInterval timeInterval);
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00192 WVRMethodMod::WVRMethod getWvrMethod() const;
00193
00194
00195
00196
00204 void setWvrMethod (WVRMethodMod::WVRMethod wvrMethod);
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00222 vector<Frequency > getPolyFreqLimits() const;
00223
00224
00225
00226
00234 void setPolyFreqLimits (vector<Frequency > polyFreqLimits);
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00252 int getNumInputAntenna() const;
00253
00254
00255
00256
00264 void setNumInputAntenna (int numInputAntenna);
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00282 int getNumChan() const;
00283
00284
00285
00286
00294 void setNumChan (int numChan);
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00312 int getNumPoly() const;
00313
00314
00315
00316
00324 void setNumPoly (int numPoly);
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00342 vector<vector<vector<float > > > getPathCoeff() const;
00343
00344
00345
00346
00354 void setPathCoeff (vector<vector<vector<float > > > pathCoeff);
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00372 vector<vector<Temperature > > getRefTemp() const;
00373
00374
00375
00376
00384 void setRefTemp (vector<vector<Temperature > > refTemp);
00385
00386
00387
00388
00389
00390
00392
00394
00395
00396
00397
00398
00399
00400
00401
00406 Tag getAntennaId() const;
00407
00408
00409
00410
00420 void setAntennaId (Tag antennaId);
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00438 vector<Tag> getInputAntennaId() const;
00439
00440
00441
00442
00450 void setInputAntennaId (vector<Tag> inputAntennaId);
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00468 Tag getSpectralWindowId() const;
00469
00470
00471
00472
00482 void setSpectralWindowId (Tag spectralWindowId);
00483
00484
00485
00486
00487
00488
00490
00492
00493
00494
00495
00496
00503 SpectralWindowRow* getSpectralWindowUsingSpectralWindowId();
00504
00505
00506
00507
00508
00509
00510
00511
00518 AntennaRow* getAntennaUsingAntennaId();
00519
00520
00521
00522
00523
00524
00532 void setInputAntennaId (int i, Tag inputAntennaId);
00533
00534
00535
00536
00537
00542 void addInputAntennaId(Tag id);
00543
00548 void addInputAntennaId(const vector<Tag> & id);
00549
00550
00556 const Tag getInputAntennaId(int i);
00557
00565 AntennaRow* getAntennaUsingInputAntennaId(int i);
00566
00571 vector<AntennaRow *> getAntennasUsingInputAntennaId();
00572
00573
00574
00575
00576
00577
00578
00606 bool compareNoAutoInc(Tag antennaId, Tag spectralWindowId, ArrayTimeInterval timeInterval, WVRMethodMod::WVRMethod wvrMethod, vector<Frequency > polyFreqLimits, int numInputAntenna, int numChan, int numPoly, vector<vector<vector<float > > > pathCoeff, vector<vector<Temperature > > refTemp, vector<Tag> inputAntennaId);
00607
00608
00609
00610
00632 bool compareRequiredValue(WVRMethodMod::WVRMethod wvrMethod, vector<Frequency > polyFreqLimits, int numInputAntenna, int numChan, int numPoly, vector<vector<vector<float > > > pathCoeff, vector<vector<Temperature > > refTemp, vector<Tag> inputAntennaId);
00633
00634
00643 bool equalByRequiredValue(WVMCalRow* x) ;
00644
00645 #ifndef WITHOUT_ACS
00646
00650 asdmIDL::WVMCalRowIDL *toIDL() const;
00651
00659 void toIDL(asdmIDL::WVMCalRowIDL& x) const;
00660 #endif
00661
00662 #ifndef WITHOUT_ACS
00663
00668 void setFromIDL (asdmIDL::WVMCalRowIDL x) ;
00669 #endif
00670
00675 std::string toXML() const;
00676
00683 void setFromXML (std::string rowDoc) ;
00684
00687
00689
00690 std::map<std::string, WVMCalAttributeFromBin> fromBinMethods;
00691 void antennaIdFromBin( EndianIStream& eis);
00692 void spectralWindowIdFromBin( EndianIStream& eis);
00693 void timeIntervalFromBin( EndianIStream& eis);
00694 void wvrMethodFromBin( EndianIStream& eis);
00695 void polyFreqLimitsFromBin( EndianIStream& eis);
00696 void numInputAntennaFromBin( EndianIStream& eis);
00697 void numChanFromBin( EndianIStream& eis);
00698 void numPolyFromBin( EndianIStream& eis);
00699 void pathCoeffFromBin( EndianIStream& eis);
00700 void refTempFromBin( EndianIStream& eis);
00701 void inputAntennaIdFromBin( EndianIStream& eis);
00702
00703
00704
00712 static WVMCalRow* fromBin(EndianIStream& eis, WVMCalTable& table, const std::vector<std::string>& attributesSeq);
00713
00720 void fromText(const std::string& attributeName, const std::string& t);
00722
00723 private:
00727 WVMCalTable &table;
00731 bool hasBeenAdded;
00732
00733
00734 void isAdded(bool added);
00735
00736
00745 WVMCalRow (WVMCalTable &table);
00746
00764 WVMCalRow (WVMCalTable &table, WVMCalRow &row);
00765
00767
00769
00770
00771
00772
00773
00774
00775 ArrayTimeInterval timeInterval;
00776
00777
00778
00779
00780
00781
00782
00783
00784
00785
00786 WVRMethodMod::WVRMethod wvrMethod;
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797 vector<Frequency > polyFreqLimits;
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808 int numInputAntenna;
00809
00810
00811
00812
00813
00814
00815
00816
00817
00818
00819 int numChan;
00820
00821
00822
00823
00824
00825
00826
00827
00828
00829
00830 int numPoly;
00831
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841 vector<vector<vector<float > > > pathCoeff;
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852 vector<vector<Temperature > > refTemp;
00853
00854
00855
00856
00857
00859
00861
00862
00863
00864
00865
00866
00867 Tag antennaId;
00868
00869
00870
00871
00872
00873
00874
00875
00876
00877
00878 vector<Tag> inputAntennaId;
00879
00880
00881
00882
00883
00884
00885
00886
00887
00888
00889 Tag spectralWindowId;
00890
00891
00892
00893
00894
00896
00898
00899
00900
00901
00902
00903
00904
00905
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919
00920
00922
00924
00925
00926
00927
00928
00929
00930
00931
00932
00933
00934
00935
00936
00937
00938
00939
00941
00943 std::map<std::string, WVMCalAttributeFromText> fromTextMethods;
00944
00945 void antennaIdFromText (const string & s);
00946
00947
00948 void spectralWindowIdFromText (const string & s);
00949
00950
00951 void timeIntervalFromText (const string & s);
00952
00953
00954 void wvrMethodFromText (const string & s);
00955
00956
00957 void polyFreqLimitsFromText (const string & s);
00958
00959
00960 void numInputAntennaFromText (const string & s);
00961
00962
00963 void numChanFromText (const string & s);
00964
00965
00966 void numPolyFromText (const string & s);
00967
00968
00969 void pathCoeffFromText (const string & s);
00970
00971
00972 void refTempFromText (const string & s);
00973
00974
00975 void inputAntennaIdFromText (const string & s);
00976
00977
00978
00979
00984 void toBin(EndianOSStream& eoss);
00985
00995 };
00996
00997 }
00998
00999 #endif