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 CalFluxTable_CLASS
00035
#define CalFluxTable_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
#include "CStokesParameter.h"
00089
using namespace StokesParameterMod;
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
#include "CFluxCalibrationMethod.h"
00106
using namespace FluxCalibrationMethodMod;
00107
00108
00109
00110
00111
00112
#include "CSourceModel.h"
00113
using namespace SourceModelMod;
00114
00115
00116
00117
00118
00119
#ifndef WITHOUT_ACS
00120
#include <asdmIDLC.h>
00121
using asdmIDL::CalFluxTableIDL;
00122
#endif
00123
00124
using asdm::Angle;
00125
using asdm::AngularRate;
00126
using asdm::ArrayTime;
00127
using asdm::Complex;
00128
using asdm::Entity;
00129
using asdm::EntityId;
00130
using asdm::EntityRef;
00131
using asdm::Flux;
00132
using asdm::Frequency;
00133
using asdm::Humidity;
00134
using asdm::Interval;
00135
using asdm::Length;
00136
using asdm::PartId;
00137
using asdm::Pressure;
00138
using asdm::Speed;
00139
using asdm::Tag;
00140
using asdm::Temperature;
00141
00142
using asdm::DuplicateKey;
00143
using asdm::ConversionException;
00144
using asdm::NoSuchRow;
00145
using asdm::DuplicateKey;
00146
00147
#include <Representable.h>
00148
00149
namespace asdm {
00150
00151
00152
00153
00154
class ASDM;
00155
class CalFluxRow;
00292 class CalFluxTable :
public Representable {
00293
friend class asdm::ASDM;
00294
00295
public:
00296
00297
00303
static vector<string>
getKeyName();
00304
00305
00306
virtual ~
CalFluxTable();
00307
00313
ASDM &
getContainer()
const;
00314
00320
unsigned int size() ;
00321
00327 string
getName()
const;
00328
00332
Entity getEntity()
const;
00333
00338
void setEntity(
Entity e);
00339
00340
00341
00342
00343
00348
CalFluxRow *
newRow();
00349
00354
CalFluxRow*
newRowEmpty();
00355
00356
00386
CalFluxRow *
newRow(
Tag calDataId,
Tag calReductionId, string sourceName,
int numFrequency,
int numStokes,
ArrayTime startValidTime,
ArrayTime endValidTime, vector<StokesParameterMod::StokesParameter > stokes, vector<vector<double > > flux, vector<vector<double > > fluxError, FluxCalibrationMethodMod::FluxCalibrationMethod fluxMethod, vector<Frequency > frequencyRange);
00387
00392
CalFluxRow *
newRowFull(
Tag calDataId,
Tag calReductionId, string sourceName,
int numFrequency,
int numStokes,
ArrayTime startValidTime,
ArrayTime endValidTime, vector<StokesParameterMod::StokesParameter > stokes, vector<vector<double > > flux, vector<vector<double > > fluxError, FluxCalibrationMethodMod::FluxCalibrationMethod fluxMethod, vector<Frequency > frequencyRange);
00393
00394
00407
CalFluxRow *
newRow(
CalFluxRow *row);
00408
00413
CalFluxRow *
newRowCopy(
CalFluxRow *row);
00414
00415
00416
00417
00418
00419
00432
CalFluxRow*
add(
CalFluxRow* x) ;
00433
00434
00435
00436
00437
00438
00439
00440
00441
00447 vector<CalFluxRow *>
get() ;
00448
00449
00450
00451
00452
00466
CalFluxRow*
getRowByKey(
Tag calDataId,
Tag calReductionId, string sourceName);
00467
00468
00469
00470
00471
00503
CalFluxRow*
lookup(
Tag calDataId,
Tag calReductionId, string sourceName,
int numFrequency,
int numStokes,
ArrayTime startValidTime,
ArrayTime endValidTime, vector<StokesParameterMod::StokesParameter > stokes, vector<vector<double > > flux, vector<vector<double > > fluxError, FluxCalibrationMethodMod::FluxCalibrationMethod fluxMethod, vector<Frequency > frequencyRange);
00504
00505
00506
#ifndef WITHOUT_ACS
00507
00513 CalFluxTableIDL *
toIDL() ;
00514
#endif
00515
00516
#ifndef WITHOUT_ACS
00517
00523
void fromIDL(CalFluxTableIDL x)
throw(
DuplicateKey,
ConversionException);
00524
#endif
00525
00529
char *
toFITS()
const throw(
ConversionException);
00530
00534
void fromFITS(
char *fits)
throw(
ConversionException);
00535
00539 string
toVOTable()
const throw(
ConversionException);
00540
00544
void fromVOTable(string vo)
throw(
ConversionException);
00545
00552 string
toXML()
throw(
ConversionException);
00553
00559
void fromXML(string xmlDoc)
throw(
ConversionException);
00560
00566 string
toMIME();
00567
00574
void setFromMIME(
const string & mimeMsg);
00575
00585
void toFile(string directory);
00586
00595
void setFromFile(
const string& directory);
00596
00597
private:
00598
00607
CalFluxTable (
ASDM & container);
00608
00609
ASDM & container;
00610
00611
bool archiveAsBin;
00612
bool fileAsBin ;
00613
00614
Entity entity;
00615
00616
00617
00621
static string tableName;
00622
00623
00627
static vector<string> key;
00628
00629
00635
CalFluxRow* checkAndAdd(
CalFluxRow* x)
throw (
DuplicateKey);
00636
00637
00638
00639
00640
00641
00642 vector<CalFluxRow * > privateRows;
00643
00644
00645
00646 vector<CalFluxRow *> row;
00647
00648
00649
void error()
throw(
ConversionException);
00650
00651 };
00652
00653 }
00654
00655
#endif