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 CalPhaseTable_CLASS
00035 #define CalPhaseTable_CLASS
00036
00037 #include <string>
00038 #include <vector>
00039 #include <map>
00040 #include <set>
00041 using std::string;
00042 using std::vector;
00043 using std::map;
00044
00045 #include <Angle.h>
00046 #include <AngularRate.h>
00047 #include <ArrayTime.h>
00048 #include <ArrayTimeInterval.h>
00049 #include <Complex.h>
00050 #include <Entity.h>
00051 #include <EntityId.h>
00052 #include <EntityRef.h>
00053 #include <Flux.h>
00054 #include <Frequency.h>
00055 #include <Humidity.h>
00056 #include <Interval.h>
00057 #include <Length.h>
00058 #include <PartId.h>
00059 #include <Pressure.h>
00060 #include <Speed.h>
00061 #include <Tag.h>
00062 #include <Temperature.h>
00063 #include <ConversionException.h>
00064 #include <DuplicateKey.h>
00065 #include <UniquenessViolationException.h>
00066 #include <NoSuchRow.h>
00067 #include <DuplicateKey.h>
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 #include "CBasebandName.h"
00079 using namespace BasebandNameMod;
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 #include "CReceiverBand.h"
00090 using namespace ReceiverBandMod;
00091
00092
00093
00094
00095
00096 #include "CAtmPhaseCorrection.h"
00097 using namespace AtmPhaseCorrectionMod;
00098
00099
00100
00101 #include "CPolarizationType.h"
00102 using namespace PolarizationTypeMod;
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128 #ifndef WITHOUT_ACS
00129 #include <asdmIDLC.h>
00130 using asdmIDL::CalPhaseTableIDL;
00131 #endif
00132
00133 using asdm::Angle;
00134 using asdm::AngularRate;
00135 using asdm::ArrayTime;
00136 using asdm::Complex;
00137 using asdm::Entity;
00138 using asdm::EntityId;
00139 using asdm::EntityRef;
00140 using asdm::Flux;
00141 using asdm::Frequency;
00142 using asdm::Humidity;
00143 using asdm::Interval;
00144 using asdm::Length;
00145 using asdm::PartId;
00146 using asdm::Pressure;
00147 using asdm::Speed;
00148 using asdm::Tag;
00149 using asdm::Temperature;
00150
00151 using asdm::DuplicateKey;
00152 using asdm::ConversionException;
00153 using asdm::NoSuchRow;
00154 using asdm::DuplicateKey;
00155
00156 #include <Representable.h>
00157
00158 namespace asdm {
00159
00160
00161
00162
00163 class ASDM;
00164 class CalPhaseRow;
00319 class CalPhaseTable : public Representable {
00320 friend class asdm::ASDM;
00321
00322 public:
00323
00324
00330 static vector<string> getKeyName();
00331
00332
00333 virtual ~CalPhaseTable();
00334
00340 ASDM &getContainer() const;
00341
00347 unsigned int size() ;
00348
00354 string getName() const;
00355
00359 Entity getEntity() const;
00360
00365 void setEntity(Entity e);
00366
00367
00368
00369
00370
00375 CalPhaseRow *newRow();
00376
00381 CalPhaseRow* newRowEmpty();
00382
00383
00429 CalPhaseRow *newRow(Tag calDataId, Tag calReductionId, BasebandName basebandName, int numBaseline, int numAPC, int numReceptor, ReceiverBand receiverBand, vector<vector<string > > antennaNames, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > frequencyRange, vector<vector<vector<float > > > ampli, vector<vector<vector<float > > > phase, vector<vector<vector<Angle > > > phaseRms, vector<vector<Angle > > statPhaseRms, vector<vector<float > > decorrelationFactor, vector<Length > baselineLengths, vector<Angle > direction);
00430
00435 CalPhaseRow *newRowFull(Tag calDataId, Tag calReductionId, BasebandName basebandName, int numBaseline, int numAPC, int numReceptor, ReceiverBand receiverBand, vector<vector<string > > antennaNames, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > frequencyRange, vector<vector<vector<float > > > ampli, vector<vector<vector<float > > > phase, vector<vector<vector<Angle > > > phaseRms, vector<vector<Angle > > statPhaseRms, vector<vector<float > > decorrelationFactor, vector<Length > baselineLengths, vector<Angle > direction);
00436
00437
00450 CalPhaseRow *newRow(CalPhaseRow *row);
00451
00456 CalPhaseRow *newRowCopy(CalPhaseRow *row);
00457
00458
00459
00460
00461
00462
00475 CalPhaseRow* add(CalPhaseRow* x) ;
00476
00477
00478
00479
00480
00481
00482
00483
00484
00490 vector<CalPhaseRow *> get() ;
00491
00492
00493
00494
00495
00509 CalPhaseRow* CalPhaseTable::getRowByKey(Tag calDataId, Tag calReductionId, BasebandName basebandName);
00510
00511
00512
00513
00514
00562 CalPhaseRow* lookup(Tag calDataId, Tag calReductionId, BasebandName basebandName, int numBaseline, int numAPC, int numReceptor, ReceiverBand receiverBand, vector<vector<string > > antennaNames, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > frequencyRange, vector<vector<vector<float > > > ampli, vector<vector<vector<float > > > phase, vector<vector<vector<Angle > > > phaseRms, vector<vector<Angle > > statPhaseRms, vector<vector<float > > decorrelationFactor, vector<Length > baselineLengths, vector<Angle > direction);
00563
00564
00565 #ifndef WITHOUT_ACS
00566
00572 CalPhaseTableIDL *toIDL() ;
00573 #endif
00574
00575 #ifndef WITHOUT_ACS
00576
00582 void fromIDL(CalPhaseTableIDL x) throw(DuplicateKey,ConversionException);
00583 #endif
00584
00588 char *toFITS() const throw(ConversionException);
00589
00593 void fromFITS(char *fits) throw(ConversionException);
00594
00598 string toVOTable() const throw(ConversionException);
00599
00603 void fromVOTable(string vo) throw(ConversionException);
00604
00611 string toXML() throw(ConversionException);
00612
00618 void fromXML(string xmlDoc) throw(ConversionException);
00619
00625 string toMIME();
00626
00633 void setFromMIME(const string & mimeMsg);
00634
00644 void toFile(string directory);
00645
00654 void setFromFile(const string& directory);
00655
00656 private:
00657
00666 CalPhaseTable (ASDM & container);
00667
00668 ASDM & container;
00669
00670 bool archiveAsBin;
00671 bool fileAsBin ;
00672
00673 Entity entity;
00674
00675
00676
00680 static string tableName;
00681
00682
00686 static vector<string> key;
00687
00688
00694 CalPhaseRow* checkAndAdd(CalPhaseRow* x) throw (DuplicateKey);
00695
00696
00697
00698
00699
00700
00701 vector<CalPhaseRow * > privateRows;
00702
00703
00704
00705 vector<CalPhaseRow *> row;
00706
00707
00708 void error() throw(ConversionException);
00709
00710 };
00711
00712 }
00713
00714 #endif