DetectorModules: panel look-up by id, plane -> panel, plane bounds and a per-pixel walk; mask size checked
Stage 0 of analysing panel detectors in their stored layout. The table of modules already is the panel table; what the consumers converted in the next stages need from it: - ImageToPlane / PlaneToImage on a known panel, no search; panel -1 (empty table) is the identity. - PlaneToPanel: the panel holding a plane point and its image position, nullopt in a gap (never passed through, unlike the existing PlaneToImage). - PlaneBounds: the box of all panel footprints on the plane; with an empty table exactly the image rectangle today's prediction bounds test uses. - ForEachPixel: f(panel, index, px, py) panel by panel, row by row, gaps not visited; with an empty table the plain row-major loop with plane == image. The image preprocessors (CPU, GPU) and the Bragg engines (CPU, GPU; Metal derives from CPU) now refuse a pixel mask whose size is not the image's, instead of reading a mask of another size out of range. Every reader sizes the experiment's detector, and so the mask, by the image it reads, so nothing that runs today is refused. Nothing calls the new functions yet: no output changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu
This commit is contained in:
1 parent
b9ada7914b
commit
a8202789f5
6 files changed
+104
-2
No files matched your search
@@ -9,7 +9,11 @@
|
||||
|
||||
ImagePreprocessorCPU::ImagePreprocessorCPU(const DiffractionExperiment &experiment, const PixelMask &mask)
|
||||
: ImagePreprocessor(experiment),
|
||||
mask_bits(mask.GetPackedMask()) {}
|
||||
mask_bits(mask.GetPackedMask()) {
|
||||
if (mask.GetMask().size() != npixels)
|
||||
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid,
|
||||
"Pixel mask size doesn't match the image");
|
||||
}
|
||||
|
||||
ImageStatistics ImagePreprocessorCPU::Analyze(ImagePreprocessorBuffer &processed_image, const uint8_t *image_ptr, CompressedImageMode image_mode) {
|
||||
if (processed_image.size() != npixels)
|
||||
|
||||
Reference in new issue
Block a user