isce3  0.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
ProcessingInformation.h
1 //-*- C++ -*-
2 //-*- coding: utf-8 -*-
3 //
4 // Author: Bryan V. Riel
5 // Copyright 2017-2019
6 
7 #pragma once
8 
9 // std
10 #include <valarray>
11 #include <map>
12 
13 // isce3::core
14 #include <isce3/core/LUT2d.h>
15 
16 // Declaration
17 namespace isce3 {
18  namespace product {
19  class ProcessingInformation;
20  }
21 }
22 
23 // Definition of isce3::product::ProcessingInformation
25 
26  public:
29 
31  inline ProcessingInformation(const ProcessingInformation & proc);
32 
35 
37  inline const std::valarray<double> & slantRange() const { return _slantRange; }
39  inline void slantRange(const std::valarray<double> & r) { _slantRange = r; }
40 
42  inline const std::valarray<double> & zeroDopplerTime() const { return _zeroDopplerTime; }
44  inline void zeroDopplerTime(const std::valarray<double> & t) { _zeroDopplerTime = t; }
45 
48  return _effectiveVelocity;
49  }
51  inline void effectiveVelocity(const isce3::core::LUT2d<double> & lut) {
52  _effectiveVelocity = lut;
53  }
54 
56  inline const std::map<char, isce3::core::LUT2d<double>> & azimuthFMRateMap() const {
57  return _azimuthFMRate;
58  }
59 
61  inline const isce3::core::LUT2d<double> & azimuthFMRate(char freq) const {
62  return _azimuthFMRate.at(freq);
63  }
65  inline void azimuthFMRate(const isce3::core::LUT2d<double> & lut, char freq) {
66  _azimuthFMRate[freq] = lut;
67  }
68 
70  inline const std::map<char, isce3::core::LUT2d<double>> & dopplerCentroidMap() const {
71  return _dopplerCentroid;
72  }
73 
75  inline const isce3::core::LUT2d<double> & dopplerCentroid(char freq) const {
76  return _dopplerCentroid.at(freq);
77  }
79  inline void dopplerCentroid(const isce3::core::LUT2d<double> & lut, char freq) {
80  _dopplerCentroid[freq] = lut;
81  }
82 
83  private:
84  // Coordinates
85  std::valarray<double> _slantRange;
86  std::valarray<double> _zeroDopplerTime;
87  isce3::core::DateTime _refEpoch;
88 
89  // Constant look up tables
90  isce3::core::LUT2d<double> _effectiveVelocity;
91 
92  // Frequency-dependent look up tables stored in maps
93  std::map<char, isce3::core::LUT2d<double>> _azimuthFMRate;
94  std::map<char, isce3::core::LUT2d<double>> _dopplerCentroid;
95 };
96 
97 // Copy constructor
101  _slantRange(proc.slantRange()), _zeroDopplerTime(proc.zeroDopplerTime()) {
102  for (auto const & pair : proc.azimuthFMRateMap()) {
103  _azimuthFMRate[pair.first] = pair.second;
104  }
105  for (auto const & pair: proc.dopplerCentroidMap()) {
106  _dopplerCentroid[pair.first] = pair.second;
107  }
108 }
109 
110 // Deep assignment operator
115  _slantRange = proc.slantRange();
116  _zeroDopplerTime = proc.zeroDopplerTime();
117  _effectiveVelocity = proc.effectiveVelocity();
118  for (auto const & pair : proc.azimuthFMRateMap()) {
119  _azimuthFMRate[pair.first] = pair.second;
120  }
121  for (auto const & pair: proc.dopplerCentroidMap()) {
122  _dopplerCentroid[pair.first] = pair.second;
123  }
124  return *this;
125 }
void azimuthFMRate(const isce3::core::LUT2d< double > &lut, char freq)
Set look-up-table for azimuth FM rate.
Definition: ProcessingInformation.h:65
const isce3::core::LUT2d< double > & dopplerCentroid(char freq) const
Get read-only look-up-table for Doppler centroid.
Definition: ProcessingInformation.h:75
void dopplerCentroid(const isce3::core::LUT2d< double > &lut, char freq)
Set look-up-table for azimuth FM rate.
Definition: ProcessingInformation.h:79
ProcessingInformation & operator=(const ProcessingInformation &proc)
Deep assignment operator.
Definition: ProcessingInformation.h:114
const std::map< char, isce3::core::LUT2d< double > > & dopplerCentroidMap() const
Get read-only map for Doppler centroid tables.
Definition: ProcessingInformation.h:70
Data structure to store date time to nano-sec precision.
Definition: DateTime.h:18
ProcessingInformation()
Default constructor.
Definition: ProcessingInformation.h:28
const std::valarray< double > & slantRange() const
Get read-only slant range coordinates.
Definition: ProcessingInformation.h:37
void effectiveVelocity(const isce3::core::LUT2d< double > &lut)
Set look-up-table for effective velocity.
Definition: ProcessingInformation.h:51
void zeroDopplerTime(const std::valarray< double > &t)
Set zero Doppler time coordinates.
Definition: ProcessingInformation.h:44
void slantRange(const std::valarray< double > &r)
Set slant range coordinates.
Definition: ProcessingInformation.h:39
const isce3::core::LUT2d< double > & effectiveVelocity() const
Get read-only look-up-table for effective velocity.
Definition: ProcessingInformation.h:47
const std::map< char, isce3::core::LUT2d< double > > & azimuthFMRateMap() const
Get read-only map for azimuth FM rate tables.
Definition: ProcessingInformation.h:56
const isce3::core::LUT2d< double > & azimuthFMRate(char freq) const
Get read-only look-up-table for azimuth FM rate.
Definition: ProcessingInformation.h:61
Definition: ProcessingInformation.h:24
const std::valarray< double > & zeroDopplerTime() const
Get read-only zero Doppler time coordinates.
Definition: ProcessingInformation.h:42

Generated for ISCE3.0 by doxygen 1.8.5.