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 CalBandpassTable_CLASS
00035 #define CalBandpassTable_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
00090
00091
00092
00093
00094
00095
00096
00097 #include "CReceiverBand.h"
00098 using namespace ReceiverBandMod;
00099
00100
00101
00102
00103
00104
00105
00106 #include "CAtmPhaseCorrection.h"
00107 using namespace AtmPhaseCorrectionMod;
00108
00109
00110
00111 #include "CPolarizationType.h"
00112 using namespace PolarizationTypeMod;
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::CalBandpassTableIDL;
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 CalBandpassRow;
00316 class CalBandpassTable : public Representable {
00317 friend class asdm::ASDM;
00318
00319 public:
00320
00321
00327 static vector<string> getKeyName();
00328
00329
00330 virtual ~CalBandpassTable();
00331
00337 ASDM &getContainer() const;
00338
00344 unsigned int size() ;
00345
00351 string getName() const;
00352
00356 Entity getEntity() const;
00357
00362 void setEntity(Entity e);
00363
00364
00365
00366
00367
00372 CalBandpassRow *newRow();
00373
00378 CalBandpassRow* newRowEmpty();
00379
00380
00428 CalBandpassRow *newRow(Tag calDataId, Tag calReductionId, BasebandName basebandName, int numAntenna, int numBaseline, int numAPC, int numReceptor, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > freqLimits, ReceiverBand receiverBand, vector<string > antennaNames, string refAntennaName, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, int numAmpliPoly, vector<vector<vector<vector<float > > > > ampliCurve, vector<vector<vector<float > > > ampliRms, int numPhasePoly, vector<vector<vector<vector<Angle > > > > phaseCurve, vector<vector<vector<float > > > phaseRms);
00429
00434 CalBandpassRow *newRowFull(Tag calDataId, Tag calReductionId, BasebandName basebandName, int numAntenna, int numBaseline, int numAPC, int numReceptor, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > freqLimits, ReceiverBand receiverBand, vector<string > antennaNames, string refAntennaName, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, int numAmpliPoly, vector<vector<vector<vector<float > > > > ampliCurve, vector<vector<vector<float > > > ampliRms, int numPhasePoly, vector<vector<vector<vector<Angle > > > > phaseCurve, vector<vector<vector<float > > > phaseRms);
00435
00436
00449 CalBandpassRow *newRow(CalBandpassRow *row);
00450
00455 CalBandpassRow *newRowCopy(CalBandpassRow *row);
00456
00457
00458
00459
00460
00461
00474 CalBandpassRow* add(CalBandpassRow* x) ;
00475
00476
00477
00478
00479
00480
00481
00482
00483
00489 vector<CalBandpassRow *> get() ;
00490
00491
00492
00493
00494
00508 CalBandpassRow* CalBandpassTable::getRowByKey(Tag calDataId, Tag calReductionId, BasebandName basebandName);
00509
00510
00511
00512
00513
00563 CalBandpassRow* lookup(Tag calDataId, Tag calReductionId, BasebandName basebandName, int numAntenna, int numBaseline, int numAPC, int numReceptor, ArrayTime startValidTime, ArrayTime endValidTime, vector<Frequency > freqLimits, ReceiverBand receiverBand, vector<string > antennaNames, string refAntennaName, vector<AtmPhaseCorrection > atmPhaseCorrections, vector<PolarizationType > polarizationTypes, int numAmpliPoly, vector<vector<vector<vector<float > > > > ampliCurve, vector<vector<vector<float > > > ampliRms, int numPhasePoly, vector<vector<vector<vector<Angle > > > > phaseCurve, vector<vector<vector<float > > > phaseRms);
00564
00565
00566 #ifndef WITHOUT_ACS
00567
00573 CalBandpassTableIDL *toIDL() ;
00574 #endif
00575
00576 #ifndef WITHOUT_ACS
00577
00583 void fromIDL(CalBandpassTableIDL x) throw(DuplicateKey,ConversionException);
00584 #endif
00585
00589 char *toFITS() const throw(ConversionException);
00590
00594 void fromFITS(char *fits) throw(ConversionException);
00595
00599 string toVOTable() const throw(ConversionException);
00600
00604 void fromVOTable(string vo) throw(ConversionException);
00605
00612 string toXML() throw(ConversionException);
00613
00619 void fromXML(string xmlDoc) throw(ConversionException);
00620
00626 string toMIME();
00627
00634 void setFromMIME(const string & mimeMsg);
00635
00645 void toFile(string directory);
00646
00655 void setFromFile(const string& directory);
00656
00657 private:
00658
00667 CalBandpassTable (ASDM & container);
00668
00669 ASDM & container;
00670
00671 bool archiveAsBin;
00672 bool fileAsBin ;
00673
00674 Entity entity;
00675
00676
00677
00681 static string tableName;
00682
00683
00687 static vector<string> key;
00688
00689
00695 CalBandpassRow* checkAndAdd(CalBandpassRow* x) throw (DuplicateKey);
00696
00697
00698
00699
00700
00701
00702 vector<CalBandpassRow * > privateRows;
00703
00704
00705
00706 vector<CalBandpassRow *> row;
00707
00708
00709 void error() throw(ConversionException);
00710
00711 };
00712
00713 }
00714
00715 #endif