4#include <thrust/device_vector.h>
6#include <isce3/core/Common.h>
7#include <isce3/product/SubSwaths.h>
10namespace isce3::cuda::product {
23 unsigned int _n_subswaths = 0;
27 CUDA_HOST BaseSubSwaths() {}
36 _length(cpu_subswaths.
length()),
37 _width(cpu_subswaths.
width())
44 if (cpu_subswaths.
numSubSwaths() == 1 and sz_1st_subswath == 0)
65 CUDA_HOSTDEV
size_t length()
const {
return _length; }
70 CUDA_HOSTDEV
size_t width()
const {
return _width; }
75 CUDA_HOSTDEV
unsigned int n_subswaths()
const {
return _n_subswaths; }
87 thrust::device_vector<int> _valid_start_samples;
91 thrust::device_vector<int> _valid_stop_samples;
110 return thrust::raw_pointer_cast(_valid_start_samples.data());
118 return thrust::raw_pointer_cast(_valid_start_samples.data());
126 return thrust::raw_pointer_cast(_valid_stop_samples.data());
134 return thrust::raw_pointer_cast(_valid_stop_samples.data());
152 int* _valid_start_view =
nullptr;
153 int* _valid_stop_view =
nullptr;
177 CUDA_DEV
bool contains(
const int index_aztime,
const int index_srange)
const
181 if (_n_subswaths == 0)
186 if (index_aztime < 0 || index_aztime >= _length || index_srange < 0 ||
187 index_srange >= _width)
190 for (
unsigned int i_subswath = 0; i_subswath < _n_subswaths; ++i_subswath)
193 const auto swath_offset = i_subswath * _length;
196 const auto subswath_rg_start = *(_valid_start_view + swath_offset + index_aztime);
199 const auto subswath_rg_stop = *(_valid_stop_view + swath_offset + index_aztime);
201 if (index_srange >= subswath_rg_start && index_srange < subswath_rg_stop)
CUDA_HOST BaseSubSwaths(const isce3::product::SubSwaths &cpu_subswaths)
Construct with an existing CPU subswath object.
Definition SubSwaths.h:35
CUDA_HOST BaseSubSwaths(const size_t length, const size_t width, unsigned int n_subswaths)
Construct a BaseSubSwaths object with specified parameters.
Definition SubSwaths.h:56
CUDA_HOSTDEV size_t width() const
Get the width of the radar grid.
Definition SubSwaths.h:70
CUDA_HOSTDEV size_t length() const
Get the length of the radar grid.
Definition SubSwaths.h:65
CUDA_HOSTDEV unsigned int n_subswaths() const
Get the number of subswaths.
Definition SubSwaths.h:75
Owner subswaths class for use in GPU geocode.
Definition SubSwaths.h:83
CUDA_HOST int * ptr_to_valid_stop()
Get pointer to device_vector of sample stops.
Definition SubSwaths.h:124
CUDA_HOST int * ptr_to_valid_start()
Get pointer to device_vector of sample starts.
Definition SubSwaths.h:108
CUDA_HOST OwnerSubSwaths()
Default constructor initializing no subswaths so no masking occurs.
Definition SubSwaths.h:97
CUDA_HOST const int * ptr_to_valid_start() const
Get const pointer to device_vector of sample starts.
Definition SubSwaths.h:116
CUDA_HOST const int * ptr_to_valid_stop() const
Get const pointer to device_vector of sample stops.
Definition SubSwaths.h:132
CUDA_HOST ViewSubSwaths()
Default constructor uninitialized with an owner needed for test harness.
Definition SubSwaths.h:160
CUDA_DEV bool contains(const int index_aztime, const int index_srange) const
Check if a specific index is contained within the subswaths.
Definition SubSwaths.h:177
Sub-swaths metadata of a SAR dataset.
Definition SubSwaths.h:23
const isce3::core::Matrix< int > & getValidSamplesArray(const int n) const
Get valid samples for a sub-swath's array indexed from 1 (1st sub-swath)
Definition SubSwaths.cpp:11
int numSubSwaths() const
Get number of sub-swaths.
Definition SubSwaths.h:61