1 #ifndef MHO_DiFXBaselineProcessor_HH__
2 #define MHO_DiFXBaselineProcessor_HH__
114 void SetDiFXCodes2VexCodes(
const std::map< std::string, std::string >& d2v_map) { fDiFX2VexStationCodes = d2v_map; };
121 void SetDiFXCodes2VexNames(
const std::map< std::string, std::string >& d2v_map) { fDiFX2VexStationNames = d2v_map; };
141 if(fRefStation == fRemStation)
170 void SetFreqGroups(std::vector< std::string > fgroups) { fOnlyFreqGroups = fgroups; }
175 fSelectByBandwidth =
true;
195 fHasGlobalGrid =
true;
202 const std::vector< std::pair< int, mho_json > >&
GetBaselineFreqs()
const {
return fBaselineFreqs; }
213 void DeleteDiFXVisRecords();
215 std::string ConstructCorFileName(
const std::string& output_dir,
const std::string& root_code,
216 const std::string&
baseline,
const std::string& baseline_shortname);
218 std::string DetermineFreqGroup(
double freq);
220 std::string fRootCode;
221 std::string fCorrDate;
224 std::string fRefStation;
225 std::string fRemStation;
226 std::string fRefStationName;
227 std::string fRemStationName;
228 std::string fRefStationMk4Id;
229 std::string fRemStationMk4Id;
230 std::string fBaselineName;
231 std::string fBaselineShortName;
232 std::string fBaselineDelim;
241 std::map< std::string, std::string > fDiFX2VexStationCodes;
243 std::map< std::string, std::string > fDiFX2VexStationNames;
246 std::vector< MHO_DiFXVisibilityRecord* > fRecords;
249 std::map< std::string, std::map< int, std::vector< MHO_DiFXVisibilityRecord* > > > fVisibilities;
251 std::set< int > fZoomFreqIndices;
253 std::set< std::string > fPolPairSet;
254 std::set< int > fFreqIndexSet;
255 std::set< int > fAPSet;
256 std::set< int > fSpecPointSet;
257 std::set< double > fBandwidthSet;
258 std::size_t fNPolPairs;
259 std::size_t fNChannels;
261 std::size_t fNSpectralPoints;
263 std::string fStartTime;
264 std::string fStopTime;
265 std::string fSourceName;
267 bool fHaveBaselineData;
270 std::map< int, double > fNBitsToFactor;
273 bool fAttachDiFXInput;
277 std::vector< std::pair< int, mho_json > > fBaselineFreqs;
278 std::set< std::string > fFreqBandLabelSet;
292 std::vector< std::tuple< std::string, double, double > > fFreqBands;
293 std::vector< std::string > fOnlyFreqGroups;
294 bool fSelectByBandwidth;
295 double fOnlyBandwidth;
298 struct VisRecordTimeLess
313 VisRecordTimeLess fTimePredicate;
316 struct FreqIndexPairLess
318 bool operator()(
const std::pair< int, mho_json >& a,
const std::pair< int, mho_json >& b)
const
320 double a_freq = a.second[
"freq"];
321 double b_freq = b.second[
"freq"];
323 double a_bw = a.second[
"bw"];
324 double b_bw = b.second[
"bw"];
326 std::string a_sb = a.second[
"sideband"];
327 std::string b_sb = b.second[
"sideband"];
348 double a_center = a_freq + a_sign * (a_bw / 2.0);
349 double b_center = b_freq + b_sign * (b_bw / 2.0);
351 return a_center < b_center;
355 FreqIndexPairLess fFreqPredicate;
Class MHO_DiFXBaselineProcessor.
Definition: MHO_DiFXBaselineProcessor.hh:31
virtual ~MHO_DiFXBaselineProcessor()
Definition: MHO_DiFXBaselineProcessor.cc:56
void SetExportAsMark4False()
Definition: MHO_DiFXBaselineProcessor.hh:93
visibility_store_type * GetVisibilities()
Definition: MHO_DiFXBaselineProcessor.hh:164
void SetDiFXCodes2VexCodes(const std::map< std::string, std::string > &d2v_map)
Setter for difx station codes to vex codes (2 char -> 2 char), but difx uses all caps.
Definition: MHO_DiFXBaselineProcessor.hh:114
void SetFrequencyBands(std::vector< std::tuple< std::string, double, double > > fbands)
Definition: MHO_DiFXBaselineProcessor.hh:168
void SetOnlyBandwidth(double bw)
Definition: MHO_DiFXBaselineProcessor.hh:172
std::string GetRefStationMk4Id() const
Getter for reference station mk4id.
Definition: MHO_DiFXBaselineProcessor.hh:153
void SetZoomFreqIndices(const std::set< int > &zoom_indices)
Definition: MHO_DiFXBaselineProcessor.hh:178
std::string GetBaselineShortName() const
Definition: MHO_DiFXBaselineProcessor.hh:162
void SetGlobalSkyFreqGrid(const std::vector< double > &grid_MHz, double tol=MHO_SkyFreqGrid::DEFAULT_TOL_MHZ)
Provides a precomputed global sky-frequency grid (MHz, sorted ascending, deduplicated over freq) used...
Definition: MHO_DiFXBaselineProcessor.hh:192
void Clear()
Definition: MHO_DiFXBaselineProcessor.cc:651
void SetDiFXInputData(const mho_json *input)
Setter for difx .input data (needed for processing visibilities)
Definition: MHO_DiFXBaselineProcessor.hh:41
bool IsAutoCorr() const
Checks if reference station is equal to remote station.
Definition: MHO_DiFXBaselineProcessor.hh:139
void SetScanIndex(std::size_t idx)
Setter for scan index.
Definition: MHO_DiFXBaselineProcessor.hh:48
void SetStationCodes(MHO_StationCodeMap *code_map)
Setter for station codes (2 characater -> 1 character)
Definition: MHO_DiFXBaselineProcessor.cc:358
void WriteVisibilityObjects(std::string output_dir)
Writes visibility objects in HOPS4 format to an output directory.
Definition: MHO_DiFXBaselineProcessor.cc:595
void SetRescaleFalse()
Setter for rescale false - Do NOT apply mk4 style visibility normalization.
Definition: MHO_DiFXBaselineProcessor.hh:74
int GetBaselineID() const
Getter for (difx) baseline id.
Definition: MHO_DiFXBaselineProcessor.hh:55
void SetExportAsMark4True()
Definition: MHO_DiFXBaselineProcessor.hh:91
void SetRescaleTrue()
Setter for rescale true - apply mk4 style visibility normalization.
Definition: MHO_DiFXBaselineProcessor.hh:79
MHO_DiFXBaselineProcessor()
Definition: MHO_DiFXBaselineProcessor.cc:26
void ConstructVisibilityFileObjects()
Constructs visibility file objects by organizing data and setting tags for visibilities and weights.
Definition: MHO_DiFXBaselineProcessor.cc:363
const std::vector< std::pair< int, mho_json > > & GetBaselineFreqs() const
Read-only access to the ordered (ascending sky_freq) list of channels this baseline will export....
Definition: MHO_DiFXBaselineProcessor.hh:202
void SetFreqGroups(std::vector< std::string > fgroups)
Definition: MHO_DiFXBaselineProcessor.hh:170
void SetCorrelationDate(std::string corrdate)
Setter for correlation date.
Definition: MHO_DiFXBaselineProcessor.hh:69
void Organize()
Build the per-baseline derived state (fFreqIndexSet -> fBaselineFreqs, AP counts, scan times,...
Definition: MHO_DiFXBaselineProcessor.cc:152
void SetDiFXCodes2VexNames(const std::map< std::string, std::string > &d2v_map)
Setter for difx codes to vex names (difx 2 char code to canonical station names (8 char))
Definition: MHO_DiFXBaselineProcessor.hh:121
void SetAttachDiFXInputFalse()
Setter for attach difx input false (do not attach difx .input info to visibilities)
Definition: MHO_DiFXBaselineProcessor.hh:89
void AddRecord(MHO_DiFXVisibilityRecord *record)
Adds a visibility record (chunk of difx data) to the processor if it matches baseline and selection c...
Definition: MHO_DiFXBaselineProcessor.cc:61
void SetAttachDiFXInputTrue()
Setter for attach difx .input true (attaches json object containing difx .input info to visibilities)
Definition: MHO_DiFXBaselineProcessor.hh:84
void SetRootCode(std::string rcode)
Setter for (hops) root code.
Definition: MHO_DiFXBaselineProcessor.hh:62
std::string GetRemStationMk4Id() const
Getter for remote station mk4id.
Definition: MHO_DiFXBaselineProcessor.hh:160
Class MHO_DiFXVisibilityRecord.
Definition: MHO_DiFXVisibilityRecord.hh:24
int mjd
Definition: MHO_DiFXVisibilityRecord.hh:93
double seconds
Definition: MHO_DiFXVisibilityRecord.hh:94
Creates a sorted, tolerance-deduplicated list of sky frequencies (MHz) with indexed lookup....
Definition: MHO_SkyFreqGrid.hh:23
static constexpr double DEFAULT_TOL_MHZ
Definition: MHO_SkyFreqGrid.hh:25
Class MHO_StationCodeMap Handles the mapping of two character and one character station representatio...
Definition: MHO_StationCodeMap.hh:27
Class MHO_TableContainer.
Definition: MHO_TableContainer.hh:36
Definition: difx2mark4.h:111
int baseline
Definition: fourfit3.c:62
Definition: MHO_AdhocFlagging.hh:18