v1.0.0-rc.81
This commit is contained in:
@@ -52,6 +52,7 @@ void JFJochHDF5Reader::ReadFile(const std::string& filename) {
|
||||
try {
|
||||
auto dataset = std::make_shared<JFJochReaderDataset>();
|
||||
master_file = std::make_unique<HDF5ReadOnlyFile>(filename);
|
||||
dataset->experiment.DetectIceRings(true);
|
||||
|
||||
std::filesystem::path fsPath(filename);
|
||||
dataset->experiment.FilePrefix(dataset_name(filename));
|
||||
@@ -171,6 +172,10 @@ void JFJochHDF5Reader::ReadFile(const std::string& filename) {
|
||||
dataset->experiment.IndexingAlgorithm(IndexingAlgorithmEnum::FFBIDX);
|
||||
}
|
||||
|
||||
auto ring_current_A = master_file->GetOptFloat("/entry/source/current");
|
||||
if (ring_current_A) dataset->experiment.RingCurrent_mA(ring_current_A.value() * 1000.0);
|
||||
|
||||
dataset->experiment.DetectIceRings(master_file->GetOptBool("/entry/instrument/detector/detectorSpecific/detect_ice_rings").value_or(false));
|
||||
dataset->experiment.PoniRot1_rad(master_file->GetOptFloat("/entry/instrument/detector/transformations/rot1").value_or(0.0));
|
||||
dataset->experiment.PoniRot2_rad(master_file->GetOptFloat("/entry/instrument/detector/transformations/rot2").value_or(0.0));
|
||||
dataset->experiment.PoniRot3_rad(master_file->GetOptFloat("/entry/instrument/detector/transformations/rot3").value_or(0.0));
|
||||
@@ -254,6 +259,14 @@ void JFJochHDF5Reader::ReadFile(const std::string& filename) {
|
||||
}
|
||||
}
|
||||
|
||||
// Read fluorescence spectrum if present
|
||||
if (master_file->Exists("/entry/instrument/fluorescence")) {
|
||||
auto energy = master_file->ReadOptVector<float>("/entry/instrument/fluorescence/energy");
|
||||
auto data = master_file->ReadOptVector<float>("/entry/instrument/fluorescence/data");
|
||||
if (!energy.empty() && energy.size() == data.size())
|
||||
dataset->experiment.FluorescenceSpectrum(XrayFluorescenceSpectrum(energy, data));
|
||||
}
|
||||
|
||||
auto detector_name = master_file->GetString("/entry/instrument/detector/description");
|
||||
|
||||
DetectorSetup detector = DetDECTRIS(image_size_x, image_size_y, detector_name, {});
|
||||
@@ -431,6 +444,11 @@ bool JFJochHDF5Reader::LoadImage_i(std::shared_ptr<JFJochReaderDataset> &dataset
|
||||
s.ice_ring = (spot_ice.at(i) != 0);
|
||||
message.spots.emplace_back(s);
|
||||
}
|
||||
|
||||
message.spot_count = source_file->ReadElement<uint32_t>("/entry/MX/peakCountUnfiltered", image_id);
|
||||
message.spot_count_ice_rings = source_file->ReadElement<uint32_t>("/entry/MX/peakCountIceRingRes", image_id);
|
||||
message.spot_count_low_res = source_file->ReadElement<uint32_t>("/entry/MX/peakCountLowRes", image_id);
|
||||
message.spot_count_indexed = source_file->ReadElement<uint32_t>("/entry/MX/peakCountIndexed", image_id);
|
||||
}
|
||||
|
||||
if (!dataset->az_int_bin_to_q.empty()) {
|
||||
|
||||
@@ -57,6 +57,7 @@ std::shared_ptr<JFJochReaderDataset> JFJochHttpReader::UpdateDataset_i() {
|
||||
return {};
|
||||
|
||||
auto dataset = std::make_shared<JFJochReaderDataset>();
|
||||
dataset->experiment.DetectIceRings(true);
|
||||
|
||||
// JFJochReader is always using int32_t
|
||||
dataset->experiment.BitDepthImage(32);
|
||||
@@ -65,6 +66,7 @@ std::shared_ptr<JFJochReaderDataset> JFJochHttpReader::UpdateDataset_i() {
|
||||
dataset->experiment.BeamX_pxl(msg->start_message->beam_center_x);
|
||||
dataset->experiment.BeamY_pxl(msg->start_message->beam_center_y);
|
||||
dataset->experiment.DetectorDistance_mm(msg->start_message->detector_distance * 1000.0);
|
||||
dataset->experiment.DetectIceRings(msg->start_message->detect_ice_rings.value_or(false));
|
||||
dataset->az_int_bin_to_q = msg->start_message->az_int_bin_to_q;
|
||||
dataset->az_int_bin_to_phi = msg->start_message->az_int_bin_to_phi;
|
||||
dataset->q_bins = msg->start_message->az_int_q_bin_count.value_or(0);
|
||||
|
||||
@@ -72,6 +72,8 @@ void JFJochReader::UpdateGeomMetadata(const DiffractionExperiment &experiment) {
|
||||
return;
|
||||
|
||||
auto new_dataset = std::make_shared<JFJochReaderDataset>(*dataset);
|
||||
// At the moment subset of options is limited to safe ones...need to change it in the future
|
||||
|
||||
new_dataset->experiment.BeamX_pxl(experiment.GetBeamX_pxl());
|
||||
new_dataset->experiment.BeamY_pxl(experiment.GetBeamY_pxl());
|
||||
new_dataset->experiment.DetectorDistance_mm(experiment.GetDetectorDistance_mm());
|
||||
@@ -80,7 +82,9 @@ void JFJochReader::UpdateGeomMetadata(const DiffractionExperiment &experiment) {
|
||||
new_dataset->experiment.PoniRot2_rad(experiment.GetDatasetSettings().GetPoniRot2_rad());
|
||||
new_dataset->experiment.PoniRot3_rad(experiment.GetDatasetSettings().GetPoniRot3_rad());
|
||||
new_dataset->experiment.SetUnitCell(experiment.GetUnitCell());
|
||||
|
||||
new_dataset->experiment.ImportIndexingSettings(experiment.GetIndexingSettings());
|
||||
new_dataset->experiment.ImportBraggIntegrationSettings(experiment.GetBraggIntegrationSettings());
|
||||
new_dataset->experiment.DetectIceRings(experiment.IsDetectIceRings());
|
||||
dataset = new_dataset;
|
||||
}
|
||||
|
||||
|
||||
@@ -241,3 +241,9 @@ std::vector<float> JFJochReaderImage::GetAzInt1D_BinToQ() const {
|
||||
} else
|
||||
return {};
|
||||
}
|
||||
|
||||
std::shared_ptr<JFJochReaderDataset> JFJochReaderImage::CreateMutableDataset() {
|
||||
std::shared_ptr<JFJochReaderDataset> new_dataset = std::make_shared<JFJochReaderDataset>(*dataset);
|
||||
dataset = new_dataset;
|
||||
return new_dataset;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ constexpr static int32_t ERROR_PXL_VALUE = INT32_MIN;
|
||||
constexpr static int32_t SATURATED_PXL_VALUE = INT32_MAX;
|
||||
|
||||
class JFJochReaderImage {
|
||||
const std::shared_ptr<const JFJochReaderDataset> dataset;
|
||||
std::shared_ptr<const JFJochReaderDataset> dataset;
|
||||
|
||||
std::vector<int32_t> image; // Image in the reader must be 32-bit signed, uncompressed
|
||||
DataMessage message;
|
||||
@@ -51,6 +51,8 @@ public:
|
||||
|
||||
// Functions that change the content
|
||||
void CalcROI(const ROIElement *input);
|
||||
|
||||
std::shared_ptr<JFJochReaderDataset> CreateMutableDataset();
|
||||
};
|
||||
|
||||
#endif //JFJOCH_JFJOCHREADERIMAGE_H
|
||||
|
||||
Reference in New Issue
Block a user