// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once #include #include #include #include #include "CrystalLattice.h" #include "UnitCell.h" struct ScanResultElem { int64_t number = -1; float collection_efficiency = 0.0; std::optional x; std::optional y; std::optional angle_deg; std::optional pixel_sum; std::optional indexed_lattice_count; std::optional min_viable_pixel; std::optional max_viable_pixel; std::optional err_pixels; std::optional sat_pixels; std::optional bkg; std::optional spot_count; std::optional spot_count_low_res; std::optional spot_count_indexed; std::optional spot_count_ice; std::optional indexing_solution; std::optional profile_radius; std::optional b_factor; std::optional res; std::optional uc; std::optional xfel_pulse_id; std::optional mosaicity; std::optional niggli_class; std::optional integrated_reflections; std::optional image_scale_factor; std::optional image_scale_cc; std::optional ice_ring_score; }; struct ScanResult { std::string file_prefix; std::vector images; std::optional rotation_lattice; // Bravais lattice type of the global rotation-indexing solution (from RotationIndexer). std::optional rotation_crystal_system; std::optional rotation_centering; }; // Two-letter Bravais lattice symbol: crystal-system letter + centering, e.g. "tP", "oC", "cF", "hR". inline std::string BravaisSymbol(gemmi::CrystalSystem system, char centering) { char family; switch (system) { case gemmi::CrystalSystem::Triclinic: family = 'a'; break; case gemmi::CrystalSystem::Monoclinic: family = 'm'; break; case gemmi::CrystalSystem::Orthorhombic: family = 'o'; break; case gemmi::CrystalSystem::Tetragonal: family = 't'; break; case gemmi::CrystalSystem::Trigonal: family = 'h'; break; case gemmi::CrystalSystem::Hexagonal: family = 'h'; break; case gemmi::CrystalSystem::Cubic: family = 'c'; break; default: family = 'a'; break; } return std::string{family} + centering; }