CalPointingTable.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 CalPointingTable_CLASS
00035 #define CalPointingTable_CLASS
00036
00037 #include <string>
00038 #include <vector>
00039 #include <map>
00040
00041
00042
00043
00044 #include <ArrayTime.h>
00045
00046
00047
00048 #include <Temperature.h>
00049
00050
00051
00052 #include <Angle.h>
00053
00054
00055
00056 #include <Tag.h>
00057
00058
00059
00060 #include <Frequency.h>
00061
00062
00063
00064
00065
00066
00067
00068
00069 #include "CReceiverBand.h"
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 #include "CAntennaMake.h"
00080
00081
00082
00083 #include "CAtmPhaseCorrection.h"
00084
00085
00086
00087
00088
00089
00090
00091 #include "CPointingModelMode.h"
00092
00093
00094
00095 #include "CPointingMethod.h"
00096
00097
00098
00099
00100
00101 #include "CPolarizationType.h"
00102
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
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142 #include <ConversionException.h>
00143 #include <DuplicateKey.h>
00144 #include <UniquenessViolationException.h>
00145 #include <NoSuchRow.h>
00146 #include <DuplicateKey.h>
00147
00148
00149 #ifndef WITHOUT_ACS
00150 #include <asdmIDLC.h>
00151 #endif
00152
00153 #include <Representable.h>
00154
00155 #include <pthread.h>
00156
00157 namespace asdm {
00158
00159
00160
00161
00162 class ASDM;
00163 class CalPointingRow;
00430 class CalPointingTable : public Representable {
00431 friend class ASDM;
00432
00433 public:
00434
00435
00441 static const std::vector<std::string>& getKeyName();
00442
00443
00444 virtual ~CalPointingTable();
00445
00451 ASDM &getContainer() const;
00452
00458 unsigned int size() const;
00459
00467 std::string getName() const;
00468
00476 static std::string name() ;
00477
00482 std::string getVersion() const ;
00483
00489 static const std::vector<std::string>& getAttributesNames();
00490
00496 static const std::vector<std::string>& defaultAttributesNamesInBin();
00497
00501 Entity getEntity() const;
00502
00507 void setEntity(Entity e);
00508
00516 std::string toXML() ;
00517
00518 #ifndef WITHOUT_ACS
00519
00525 asdmIDL::CalPointingTableIDL *toIDL() ;
00526
00534 void toIDL(asdmIDL::CalPointingTableIDL& x) const;
00535
00536 #endif
00537
00538 #ifndef WITHOUT_ACS
00539
00545 void fromIDL(asdmIDL::CalPointingTableIDL x) ;
00546 #endif
00547
00548
00549
00550
00551
00556 CalPointingRow *newRow();
00557
00558
00604 CalPointingRow *newRow(string antennaName, ReceiverBandMod::ReceiverBand receiverBand, Tag calDataId, Tag calReductionId, ArrayTime startValidTime, ArrayTime endValidTime, Temperature ambientTemperature, AntennaMakeMod::AntennaMake antennaMake, AtmPhaseCorrectionMod::AtmPhaseCorrection atmPhaseCorrection, vector<Angle > direction, vector<Frequency > frequencyRange, PointingModelModeMod::PointingModelMode pointingModelMode, PointingMethodMod::PointingMethod pointingMethod, int numReceptor, vector<PolarizationTypeMod::PolarizationType > polarizationTypes, vector<vector<Angle > > collOffsetRelative, vector<vector<Angle > > collOffsetAbsolute, vector<vector<Angle > > collError, vector<vector<bool > > collOffsetTied, vector<double > reducedChiSquared);
00605
00606
00607
00620 CalPointingRow *newRow(CalPointingRow *row);
00621
00622
00623
00624
00625
00626
00639 CalPointingRow* add(CalPointingRow* x) ;
00640
00641
00642
00643
00644
00645
00646
00647
00648
00654 std::vector<CalPointingRow *> get() ;
00655
00662 const std::vector<CalPointingRow *>& get() const ;
00663
00664
00665
00666
00667
00683 CalPointingRow* getRowByKey(string antennaName, ReceiverBandMod::ReceiverBand receiverBand, Tag calDataId, Tag calReductionId);
00684
00685
00686
00687
00688
00736 CalPointingRow* lookup(string antennaName, ReceiverBandMod::ReceiverBand receiverBand, Tag calDataId, Tag calReductionId, ArrayTime startValidTime, ArrayTime endValidTime, Temperature ambientTemperature, AntennaMakeMod::AntennaMake antennaMake, AtmPhaseCorrectionMod::AtmPhaseCorrection atmPhaseCorrection, vector<Angle > direction, vector<Frequency > frequencyRange, PointingModelModeMod::PointingModelMode pointingModelMode, PointingMethodMod::PointingMethod pointingMethod, int numReceptor, vector<PolarizationTypeMod::PolarizationType > polarizationTypes, vector<vector<Angle > > collOffsetRelative, vector<vector<Angle > > collOffsetAbsolute, vector<vector<Angle > > collError, vector<vector<bool > > collOffsetTied, vector<double > reducedChiSquared);
00737
00738
00739 void setUnknownAttributeBinaryReader(const std::string& attributeName, BinaryAttributeReaderFunctor* barFctr);
00740 BinaryAttributeReaderFunctor* getUnknownAttributeBinaryReader(const std::string& attributeName) const;
00741
00742 private:
00743
00752 CalPointingTable (ASDM & container);
00753
00754 ASDM & container;
00755
00756 bool archiveAsBin;
00757 bool fileAsBin ;
00758
00759 std::string version ;
00760
00761 Entity entity;
00762
00763
00764
00772 CalPointingRow* checkAndAdd(CalPointingRow* x, bool skipCheckUniqueness=false) ;
00773
00779 void append(CalPointingRow* x) ;
00780
00786 void addWithoutCheckingUnique(CalPointingRow* x) ;
00787
00788
00789
00790
00791
00792
00793
00794
00795 std::vector<CalPointingRow * > privateRows;
00796
00797
00798
00799 std::vector<CalPointingRow *> row;
00800
00801
00802 void error() ;
00803
00804
00811 void fromXML(std::string& xmlDoc) ;
00812
00813 std::map<std::string, BinaryAttributeReaderFunctor *> unknownAttributes2Functors;
00814
00819 void setFromMIMEFile(const std::string& directory);
00820
00821
00822
00823 void setFromXMLFile(const std::string& directory);
00824
00832 std::string toMIME(const asdm::ByteOrder* byteOrder=asdm::ByteOrder::Machine_Endianity);
00833
00834
00841 void setFromMIME(const std::string & mimeMsg);
00842
00846 std::string MIMEXMLPart(const asdm::ByteOrder* byteOrder=asdm::ByteOrder::Machine_Endianity);
00847
00857 void toFile(std::string directory);
00858
00862 bool loadInProgress;
00863 void checkPresenceInMemory() {
00864 if (!presentInMemory && !loadInProgress) {
00865 loadInProgress = true;
00866 setFromFile(getContainer().getDirectory());
00867 presentInMemory = true;
00868 loadInProgress = false;
00869 }
00870 }
00879 void setFromFile(const std::string& directory);
00880
00881 };
00882
00883 }
00884
00885 #endif