mirror of
https://github.com/slsdetectorgroup/aare.git
synced 2025-06-15 08:47:14 +02:00
merge numpy changes with project structure
This commit is contained in:
@ -26,50 +26,6 @@ FileFactory<detector, DataType> *FileFactory<detector, DataType>::get_factory(st
|
||||
throw std::runtime_error("Unsupported file type");
|
||||
}
|
||||
|
||||
template <DetectorType detector, typename DataType>
|
||||
void FileFactory<detector, DataType>::parse_fname(File<detector, DataType> *file) {
|
||||
file->base_path = fpath.parent_path();
|
||||
file->base_name = fpath.stem();
|
||||
file->ext = fpath.extension();
|
||||
|
||||
auto pos = file->base_name.rfind("_");
|
||||
file->findex = std::stoi(file->base_name.substr(pos + 1));
|
||||
pos = file->base_name.find("_master_");
|
||||
file->base_name.erase(pos);
|
||||
}
|
||||
|
||||
template <DetectorType detector, typename DataType>
|
||||
sls_detector_header FileFactory<detector, DataType>::read_header(const std::filesystem::path &fname) {
|
||||
sls_detector_header h{};
|
||||
FILE *fp = fopen(fname.c_str(), "r");
|
||||
if (!fp)
|
||||
throw std::runtime_error(fmt::format("Could not open: {} for reading", fname.c_str()));
|
||||
|
||||
size_t rc = fread(reinterpret_cast<char *>(&h), sizeof(h), 1, fp);
|
||||
fclose(fp);
|
||||
if (rc != 1)
|
||||
throw std::runtime_error("Could not read header from file");
|
||||
return h;
|
||||
}
|
||||
|
||||
template <DetectorType detector, typename DataType>
|
||||
void FileFactory<detector, DataType>::find_geometry(File<detector, DataType> *file) {
|
||||
uint16_t r{};
|
||||
uint16_t c{};
|
||||
for (int i = 0; i != file->n_subfiles; ++i) {
|
||||
auto h = this->read_header(file->data_fname(i, 0));
|
||||
r = std::max(r, h.row);
|
||||
c = std::max(c, h.column);
|
||||
|
||||
file->positions.push_back({h.row, h.column});
|
||||
}
|
||||
r++;
|
||||
c++;
|
||||
|
||||
file->rows = r * file->subfile_rows;
|
||||
file->cols = c * file->subfile_cols;
|
||||
|
||||
file->rows += (r - 1) * file->cfg.module_gap_row;
|
||||
}
|
||||
|
||||
template class FileFactory<DetectorType::Jungfrau, uint16_t>;
|
||||
template class FileFactory<DetectorType::Jungfrau, uint16_t>;
|
Reference in New Issue
Block a user