UvwCoords.h

Go to the documentation of this file.
00001 #include <vector>
00002 #include <map>
00003 using namespace std;
00004 
00005 #include "Enum.hpp"
00006 #include "CorrelationMode.h"
00007 
00008 #include <ms/MeasurementSets/MSFieldColumns.h>
00009 
00010 #include <measures/Measures.h>
00011 #include <measures/Measures/MEpoch.h>
00012 #include <measures/Measures/MPosition.h>
00013 #include <measures/Measures/MDirection.h>
00014 #include <measures/Measures/MCBaseline.h>
00015 #include <measures/Measures/MBaseline.h>
00016 #include <measures/Measures/MCuvw.h>
00017 #include <measures/Measures/Muvw.h>
00018 #include <casa/Quanta.h>
00019 
00020 using namespace casa;
00021 
00022 #include "ASDMEntities.h"
00023 using namespace asdm;
00024 
00042 class UvwCoords{
00043 public:
00044 
00052   UvwCoords(ASDM* const datasetPtr);
00053 
00055   ~UvwCoords();
00056 
00079   void uvw_bl( Tag configDescriptionId, 
00080                const vector<vector<Angle> >& phaseDir,
00081                double timeCentroid,
00082                Enum<CorrelationMode> correlationMode,
00083                bool reverse, bool autoTrailing,
00084                vector<Vector<casa::Double> >& v_uvw,
00085                casa::MSFieldColumns* msfc_p=0);
00086 
00110   void uvw_bl( Tag configDescriptionId, 
00111                const vector<vector<Angle> >& phaseDir,
00112                const vector<double>& v_timeCentroid,
00113                Enum<CorrelationMode> correlationMode,
00114                bool reverse, bool autoTrailing, 
00115                vector<Vector<casa::Double> >& v_uvw,
00116                casa::MSFieldColumns* msfc_p=0);
00117 
00155   void uvw_bl( asdm::MainRow* mainRow, vector<pair<unsigned int,double> > v_tci, 
00156                Enum<CorrelationMode> correlationMode,
00157                pair<bool,bool> dataOrder, vector<Vector<casa::Double> >& v_uvw);
00158 
00159 
00181   void uvw_bl( asdm::MainRow* mainRow, vector<double> v_timeCentroid, 
00182                Enum<CorrelationMode> correlationMode,
00183                pair<bool,bool> dataOrder,
00184                vector<casa::Vector<casa::Double> >& v_uvw,
00185                casa::MSFieldColumns* msfc_p=0 );
00186 
00187 private:
00188 
00192   struct ArrayParam{
00193   public:
00194     Tag                   subarrayId;        //<! (sub)array identifier
00195     vector<Tag>           v_ant;             //<! sequence of antennas
00196     unsigned int          nrepeat;           //<! number of MS main table rows per antenna baseline
00197     Enum<CorrelationMode> e_correlationMode; //<! correlation mode (original mode passed through the user filter)
00202     bool operator== ( ArrayParam & rhs){
00203       set<Tag> a, b;
00204       for(unsigned int na=0; na<v_ant.size(); na++){
00205         a.insert(v_ant[na]);
00206       }
00207 
00208       for (unsigned int na=0; na<rhs.v_ant.size(); na++) {
00209         b.insert(rhs.v_ant[na]);
00210       }
00211 
00212       if( a != b ) return false;
00213       return true;
00214     }
00215     string show(){
00216       ostringstream os;
00217       for(unsigned int n=0; n<v_ant.size(); n++)os << v_ant[n].toString() << " ";
00218       os << " nrepeat " << nrepeat;
00219       return os.str();
00220     }
00221   };
00222 
00223   map<Tag,ArrayParam>            m_array_;
00224   map<Tag,MPosition>             m_antPos_;
00225   map<Tag,Vector<casa::Double> > m_antUVW_;
00226 
00227   // the 3 fundamental attributes of the state machine
00228   double                         timeCentroid_;
00229   vector<vector<Angle> >         phaseDir_; 
00230   Tag                            subarrayId_;
00231 
00232   Vector<casa::Double>           sduvw_;
00233 
00251   vector<double> antPos(const vector<double>& stationPos, const vector<double>& antOffset);
00252 
00266   void uvw_an(double timeCentroid, const vector<vector<Angle> >& phaseDir, const vector<Tag>& v_antId);
00267 
00268 
00286   void uvw_bl( const vector<Tag>& v_antennaId, unsigned int nrep, bool reverse, vector<Vector<casa::Double> >& v_uvw);
00287 
00288 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1