Updates March 2023
This commit is contained in:
@@ -154,3 +154,41 @@ std::string JFJochReceiverService::GetJPEG(const PreviewJPEGSettings &settings)
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
void JFJochReceiverService::LoadInternalGeneratorImage(const DiffractionExperiment &experiment,
|
||||
const std::vector<uint16_t> &image,
|
||||
uint64_t image_number) {
|
||||
std::vector<uint16_t> raw_geom, eiger_geom;
|
||||
|
||||
const uint16_t *frame;
|
||||
if (image.size() == RAW_MODULE_SIZE * experiment.GetModulesNum()) {
|
||||
frame = image.data();
|
||||
} else if (image.size() == experiment.GetPixelsNum()) {
|
||||
raw_geom.resize(RAW_MODULE_SIZE * experiment.GetModulesNum());
|
||||
ConvertedToRawGeometry(experiment, raw_geom.data(), image.data());
|
||||
frame = raw_geom.data();
|
||||
} else
|
||||
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid,
|
||||
"Size of input array with raw expected image is wrong");
|
||||
|
||||
for (int i = 0; i < experiment.GetDataStreamsNum(); i++) {
|
||||
uint32_t module0 = experiment.GetFirstModuleOfDataStream(i);
|
||||
switch (experiment.GetDetectorSetup().GetDetectorType()) {
|
||||
case DetectorType::EIGER:
|
||||
eiger_geom.resize(RAW_MODULE_SIZE);
|
||||
for (int m = 0; m < experiment.GetModulesNum(i); m++) {
|
||||
RawToEigerInput(eiger_geom.data(), frame + (module0 + m) * RAW_MODULE_SIZE);
|
||||
aq_devices[i].SetInternalGeneratorFrame(eiger_geom.data(),
|
||||
m + experiment.GetModulesNum(i) * image_number);
|
||||
}
|
||||
break;
|
||||
case DetectorType::JUNGFRAU:
|
||||
for (int m = 0; m < experiment.GetModulesNum(i); m++)
|
||||
aq_devices[i].SetInternalGeneratorFrame(frame + (module0 + m) * RAW_MODULE_SIZE,
|
||||
m + experiment.GetModulesNum(i) * image_number);
|
||||
break;
|
||||
default:
|
||||
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Detector not supported");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user