v1.0.0-rc.50

This commit is contained in:
2025-06-20 09:52:26 +02:00
parent 2bd9f4a424
commit 0d1b388f4d
197 changed files with 916 additions and 504 deletions
+45 -1
View File
@@ -4,9 +4,10 @@
#include "JFJochReaderImage.h"
#include "../common/PixelMask.h"
#include "JFJochDecompress.h"
#include "../image_analysis/bragg_integration/BraggIntegrate2D.h"
JFJochReaderImage::JFJochReaderImage(const DataMessage &in_message,
const std::shared_ptr<JFJochReaderDataset> &in_dataset)
const std::shared_ptr<const JFJochReaderDataset> &in_dataset)
: message(in_message),
dataset(in_dataset),
image(in_dataset->experiment.GetPixelsNum(), 0){
@@ -91,6 +92,23 @@ void JFJochReaderImage::ProcessInputImage(const void *data, size_t npixel, int64
}
}
void JFJochReaderImage::BraggIntegrate(const BraggIntegrationSettings& settings) {
if (message.indexing_lattice.has_value()) {
CompressedImage local_image(image,
dataset->experiment.GetXPixelsNum(),
dataset->experiment.GetYPixelsNum());
DiffractionExperiment experiment(dataset->experiment);
experiment.ImportBraggIntegrationSettings(settings);
auto integration_result = BraggIntegrate2D(experiment,
local_image,
message.indexing_lattice.value());
message.reflections = integration_result.reflections;
message.b_factor = integration_result.b_factor;
}
}
const DataMessage &JFJochReaderImage::ImageData() const {
return message;
}
@@ -198,3 +216,29 @@ void JFJochReaderImage::CalcROI(const ROIElement *input) {
const std::optional<ROIMessage> &JFJochReaderImage::GetROI() const {
return roi;
}
std::vector<float> JFJochReaderImage::GetAzint1D() const {
if (dataset->azimuthal_bins <= 1) {
return message.az_int_profile;
} else if (message.az_int_profile.size() == dataset->azimuthal_bins * dataset->q_bins
&& dataset->azimuthal_bins * dataset->q_bins > 0 ) {
std::vector<float> tmp(dataset->q_bins);
for (int i = 0; i < message.az_int_profile.size(); i++)
tmp[i % dataset->q_bins] += message.az_int_profile[i];
return tmp;
} else
return {};
}
std::vector<float> JFJochReaderImage::GetAzInt1D_BinToQ() const {
if (dataset->azimuthal_bins <= 1) {
return dataset->az_int_bin_to_q;
} else if (dataset->az_int_bin_to_q.size() == dataset->azimuthal_bins * dataset->q_bins
&& dataset->azimuthal_bins * dataset->q_bins > 0 ) {
std::vector<float> tmp(dataset->q_bins);
for (int i = 0; i < dataset->q_bins; i++)
tmp[i] = dataset->az_int_bin_to_q[i];
return tmp;
} else
return {};
}