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 CalCurveTable_CLASS
00035 #define CalCurveTable_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
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 #include "CReceiverBand.h"
00093 using namespace ReceiverBandMod;
00094
00095
00096
00097 #include "CAtmPhaseCorrection.h"
00098 using namespace AtmPhaseCorrectionMod;
00099
00100
00101
00102 #include "CPolarizationType.h"
00103 using namespace PolarizationTypeMod;
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113 #include "CCalCurveType.h"
00114 using namespace CalCurveTypeMod;
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124 #ifndef WITHOUT_ACS
00125 #include <asdmIDLC.h>
00126 using asdmIDL::CalCurveTableIDL;
00127 #endif
00128
00129 using asdm::Angle;
00130 using asdm::AngularRate;
00131 using asdm::ArrayTime;
00132 using asdm::Complex;
00133 using asdm::Entity;
00134 using asdm::EntityId;
00135 using asdm::EntityRef;
00136 using asdm::Flux;
00137 using asdm::Frequency;
00138 using asdm::Humidity;
00139 using asdm::Interval;
00140 using asdm::Length;
00141 using asdm::PartId;
00142 using asdm::Pressure;
00143 using asdm::Speed;
00144 using asdm::Tag;
00145 using asdm::Temperature;
00146
00147 using asdm::DuplicateKey;
00148 using asdm::ConversionException;
00149 using asdm::NoSuchRow;
00150 using asdm::DuplicateKey;
00151
00152 #include <Representable.h>
00153
00154 namespace asdm {
00155
00156
00157
00158
00159 class ASDM;
00160 class CalCurveRow;
00298 class CalCurveTable : public Representable {
00299 friend class asdm::ASDM;
00300
00301 public:
00302
00303
00309 static vector<string> getKeyName();
00310
00311
00312 virtual ~CalCurveTable();
00313
00319 ASDM &getContainer() const;
00320
00326 unsigned int size() ;
00327
00333 string getName() const;
00334
00338 Entity getEntity() const;
00339
00344 void setEntity(Entity e);
00345
00346
00347
00348
00349
00354 CalCurveRow *newRow();
00355
00360 CalCurveRow* newRowEmpty();
00361
00362
00406 CalCurveRow *newRow(Tag calDataId, Tag calReductionId, int numAntenna, int numBaseline, int numAPC, int numReceptor, int numPoly, vector<string > antennaNames, string refAntennaName, ReceiverBand receiverBand, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > frequencyRange, CalCurveType typeCurve, ArrayTime timeOrigin, vector<vector<vector<vector<float > > > > curve, vector<vector<vector<float > > > rms);
00407
00412 CalCurveRow *newRowFull(Tag calDataId, Tag calReductionId, int numAntenna, int numBaseline, int numAPC, int numReceptor, int numPoly, vector<string > antennaNames, string refAntennaName, ReceiverBand receiverBand, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > frequencyRange, CalCurveType typeCurve, ArrayTime timeOrigin, vector<vector<vector<vector<float > > > > curve, vector<vector<vector<float > > > rms);
00413
00414
00427 CalCurveRow *newRow(CalCurveRow *row);
00428
00433 CalCurveRow *newRowCopy(CalCurveRow *row);
00434
00435
00436
00437
00438
00439
00452 CalCurveRow* add(CalCurveRow* x) ;
00453
00454
00455
00456
00457
00458
00459
00460
00461
00467 vector<CalCurveRow *> get() ;
00468
00469
00470
00471
00472
00484 CalCurveRow* CalCurveTable::getRowByKey(Tag calDataId, Tag calReductionId);
00485
00486
00487
00488
00489
00535 CalCurveRow* lookup(Tag calDataId, Tag calReductionId, int numAntenna, int numBaseline, int numAPC, int numReceptor, int numPoly, vector<string > antennaNames, string refAntennaName, ReceiverBand receiverBand, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > frequencyRange, CalCurveType typeCurve, ArrayTime timeOrigin, vector<vector<vector<vector<float > > > > curve, vector<vector<vector<float > > > rms);
00536
00537
00538 #ifndef WITHOUT_ACS
00539
00545 CalCurveTableIDL *toIDL() ;
00546 #endif
00547
00548 #ifndef WITHOUT_ACS
00549
00555 void fromIDL(CalCurveTableIDL x) throw(DuplicateKey,ConversionException);
00556 #endif
00557
00561 char *toFITS() const throw(ConversionException);
00562
00566 void fromFITS(char *fits) throw(ConversionException);
00567
00571 string toVOTable() const throw(ConversionException);
00572
00576 void fromVOTable(string vo) throw(ConversionException);
00577
00584 string toXML() throw(ConversionException);
00585
00591 void fromXML(string xmlDoc) throw(ConversionException);
00592
00598 string toMIME();
00599
00606 void setFromMIME(const string & mimeMsg);
00607
00617 void toFile(string directory);
00618
00627 void setFromFile(const string& directory);
00628
00629 private:
00630
00639 CalCurveTable (ASDM & container);
00640
00641 ASDM & container;
00642
00643 bool archiveAsBin;
00644 bool fileAsBin ;
00645
00646 Entity entity;
00647
00648
00649
00653 static string tableName;
00654
00655
00659 static vector<string> key;
00660
00661
00667 CalCurveRow* checkAndAdd(CalCurveRow* x) throw (DuplicateKey);
00668
00669
00670
00671
00672
00673
00674 vector<CalCurveRow * > privateRows;
00675
00676
00677
00678 vector<CalCurveRow *> row;
00679
00680
00681 void error() throw(ConversionException);
00682
00683 };
00684
00685 }
00686
00687 #endif