23 #ifndef LSST_SPHGEOM_CHUNKER_H_
24 #define LSST_SPHGEOM_CHUNKER_H_
45 std::vector<int32_t> subChunkIds;
50 std::swap(chunkId, sc.chunkId);
51 subChunkIds.swap(sc.subChunkIds);
69 int32_t numSubStripesPerStripe);
71 bool operator==(
Chunker const & c)
const {
72 return _numStripes == c._numStripes &&
73 _numSubStripesPerStripe == c._numSubStripesPerStripe;
76 bool operator!=(
Chunker const & c)
const {
77 return _numStripes != c._numStripes ||
78 _numSubStripesPerStripe != c._numSubStripesPerStripe;
90 return _numSubStripesPerStripe;
110 bool valid(int32_t chunkId)
const;
112 Box getChunkBoundingBox(int32_t stripe, int32_t chunk)
const;
113 Box getSubChunkBoundingBox(int32_t subStripe, int32_t subChunk)
const;
117 return chunkId / (2 * _numStripes);
121 int32_t
getChunk(int32_t chunkId, int32_t stripe)
const {
122 return chunkId - stripe*2*_numStripes;
128 int32_t numChunksPerStripe;
129 int32_t numSubChunksPerChunk;
133 numChunksPerStripe(0),
134 numSubChunksPerChunk(0)
140 int32_t numSubChunksPerChunk;
142 SubStripe() : subChunkWidth(), numSubChunksPerChunk(0) {}
145 int32_t _getChunkId(int32_t stripe, int32_t chunk)
const {
146 return stripe * 2 * _numStripes + chunk;
149 int32_t _getSubChunkId(int32_t stripe, int32_t subStripe,
150 int32_t chunk, int32_t subChunk)
const {
151 int32_t y = subStripe - stripe * _numSubStripesPerStripe;
152 int32_t x = subChunk -
153 chunk * _subStripes[subStripe].numSubChunksPerChunk;
154 return y * _maxSubChunksPerSubStripeChunk + x;
157 void _getSubChunks(std::vector<SubChunks> & subChunks,
159 NormalizedAngleInterval
const & lon,
163 int32_t maxSS)
const;
166 int32_t _numSubStripesPerStripe;
167 int32_t _numSubStripes;
168 int32_t _maxSubChunksPerSubStripeChunk;
169 Angle _subStripeHeight;
170 std::vector<Stripe> _stripes;
171 std::vector<SubStripe> _subStripes;
This file declares a class for representing angles.
This file declares a class for representing longitude/latitude angle boxes on the unit sphere.
std::vector< int32_t > getAllChunks() const
Definition: Chunker.cc:258
int32_t getStripe(int32_t chunkId) const
Return the stripe for the specified chunkId.
Definition: Chunker.h:116
int32_t getNumSubStripesPerStripe() const
Definition: Chunker.h:89
int32_t getChunk(int32_t chunkId, int32_t stripe) const
Return the chunk for the given chunkId and stripe.
Definition: Chunker.h:121
std::vector< int32_t > getAllSubChunks(int32_t chunkId) const
Definition: Chunker.cc:269
std::vector< SubChunks > getSubChunksIntersecting(Region const &r) const
Definition: Chunker.cc:148
int32_t getNumStripes() const
Definition: Chunker.h:83
bool valid(int32_t chunkId) const
Return 'true' if the specified chunk number is valid.
Definition: Chunker.cc:285
std::vector< int32_t > getChunksIntersecting(Region const &r) const
Definition: Chunker.cc:103