v1.0.0-rc.179 (#90)
Build Packages / Create release (push) Successful in 8s
Build Packages / build:portable:macos-arm64:nocuda (push) Successful in 5m11s
Build Packages / build:rugnux:linux-aarch64:cuda (push) Successful in 10m32s
Build Packages / build:portable:linux-x86_64:nocuda (push) Successful in 18m26s
Build Packages / build:portable:linux-x86_64:cuda (push) Successful in 22m11s
Build Packages / build:jfjoch:ubuntu2204:nocuda (push) Successful in 23m32s
Build Packages / build:portable:windows-x86_64:nocuda (push) Successful in 25m36s
Build Packages / build:jfjoch:rocky8:nocuda (push) Successful in 27m28s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 28m10s
Build Packages / build:jfjoch:rocky9:nocuda (push) Successful in 28m10s
Build Packages / build:portable:windows-x86_64:cuda (push) Successful in 29m24s
Build Packages / build:jfjoch:ubuntu2404:nocuda (push) Successful in 21m45s
Build Packages / Generate python client (push) Successful in 31s
Build Packages / Build documentation (push) Successful in 1m21s
Build Packages / build:jfjoch:rocky8:cuda-sls9 (push) Successful in 24m2s
Build Packages / build:jfjoch:rocky9:cuda-sls9 (push) Successful in 29m25s
Build Packages / build:jfjoch:rocky8:cuda (push) Successful in 30m27s
Build Packages / build:jfjoch:ubuntu2204:cuda (push) Successful in 27m12s
Build Packages / build:jfjoch:ubuntu2404:cuda (push) Successful in 32m20s
Build Packages / build:jfjoch:rocky9:cuda (push) Successful in 33m36s
Build Packages / Unit tests (push) Successful in 2h7m18s
Build Packages / Validation Battery (push) Successful in 33m19s
Build Packages / Create release (push) Successful in 8s
Build Packages / build:portable:macos-arm64:nocuda (push) Successful in 5m11s
Build Packages / build:rugnux:linux-aarch64:cuda (push) Successful in 10m32s
Build Packages / build:portable:linux-x86_64:nocuda (push) Successful in 18m26s
Build Packages / build:portable:linux-x86_64:cuda (push) Successful in 22m11s
Build Packages / build:jfjoch:ubuntu2204:nocuda (push) Successful in 23m32s
Build Packages / build:portable:windows-x86_64:nocuda (push) Successful in 25m36s
Build Packages / build:jfjoch:rocky8:nocuda (push) Successful in 27m28s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 28m10s
Build Packages / build:jfjoch:rocky9:nocuda (push) Successful in 28m10s
Build Packages / build:portable:windows-x86_64:cuda (push) Successful in 29m24s
Build Packages / build:jfjoch:ubuntu2404:nocuda (push) Successful in 21m45s
Build Packages / Generate python client (push) Successful in 31s
Build Packages / Build documentation (push) Successful in 1m21s
Build Packages / build:jfjoch:rocky8:cuda-sls9 (push) Successful in 24m2s
Build Packages / build:jfjoch:rocky9:cuda-sls9 (push) Successful in 29m25s
Build Packages / build:jfjoch:rocky8:cuda (push) Successful in 30m27s
Build Packages / build:jfjoch:ubuntu2204:cuda (push) Successful in 27m12s
Build Packages / build:jfjoch:ubuntu2404:cuda (push) Successful in 32m20s
Build Packages / build:jfjoch:rocky9:cuda (push) Successful in 33m36s
Build Packages / Unit tests (push) Successful in 2h7m18s
Build Packages / Validation Battery (push) Successful in 33m19s
* Rugnux: Stills processing needs only the unit cell and space group beyond what the file records - detector distance, beam centre, tilt, panel placement, saturation level, gain and polarisation plane are found from the images - and is up to twice as fast. * Rugnux: Stills can be indexed without a GPU, with a CPU implementation of the fast-feedback indexer (macOS, computers without a GPU). * Rugnux: Rotation and stills data are integrated in the detector's own units with one gain model, improving data from CCD detectors. * Web frontend: The Rugnux live page shows the placed model with its electron density and anomalous difference map in a Mol* viewer. Reviewed-on: #90 Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
This commit was merged in pull request #90.
This commit is contained in:
1 parent
afbe844b20
commit
b00c668e3a
394 files changed
+57778
-2178
No files matched your search
@@ -112,6 +112,47 @@ std::pair<double, double> DetectorModules::PlaneToImage(double px, double py) co
|
||||
return modules[m].PlaneToImage(px, py);
|
||||
}
|
||||
|
||||
std::pair<double, double> DetectorModules::ImageToPlane(int64_t panel, double x, double y) const {
|
||||
if (panel < 0)
|
||||
return {x, y};
|
||||
return modules.at(panel).ImageToPlane(x, y);
|
||||
}
|
||||
|
||||
std::pair<double, double> DetectorModules::PlaneToImage(int64_t panel, double px, double py) const {
|
||||
if (panel < 0)
|
||||
return {px, py};
|
||||
return modules.at(panel).PlaneToImage(px, py);
|
||||
}
|
||||
|
||||
std::optional<PanelPoint> DetectorModules::PlaneToPanel(double px, double py) const {
|
||||
if (modules.empty())
|
||||
return PanelPoint{-1, px, py};
|
||||
for (size_t i = 0; i < modules.size(); i++) {
|
||||
const auto [x, y] = modules[i].PlaneToImage(px, py);
|
||||
if (modules[i].ContainsImagePixel(x, y))
|
||||
return PanelPoint{static_cast<int64_t>(i), x, y};
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
PlaneBox DetectorModules::PlaneBounds(int64_t width, int64_t height) const {
|
||||
if (modules.empty())
|
||||
return {0.0, 0.0, static_cast<double>(width), static_cast<double>(height)};
|
||||
PlaneBox box{INFINITY, INFINITY, -INFINITY, -INFINITY};
|
||||
for (const auto &m: modules) {
|
||||
const double xa = static_cast<double>(m.x0) - 0.5, xb = static_cast<double>(m.x0 + m.width) - 0.5;
|
||||
const double ya = static_cast<double>(m.y0) - 0.5, yb = static_cast<double>(m.y0 + m.height) - 0.5;
|
||||
for (const auto &[x, y]: {std::pair{xa, ya}, std::pair{xb, ya}, std::pair{xa, yb}, std::pair{xb, yb}}) {
|
||||
const auto [px, py] = m.ImageToPlane(x, y);
|
||||
box.x0 = std::min(box.x0, px);
|
||||
box.y0 = std::min(box.y0, py);
|
||||
box.x1 = std::max(box.x1, px);
|
||||
box.y1 = std::max(box.y1, py);
|
||||
}
|
||||
}
|
||||
return box;
|
||||
}
|
||||
|
||||
void DetectorModules::Apply(const std::vector<ModuleShift> &shifts) {
|
||||
for (auto &m: modules) {
|
||||
const auto [cx, cy] = m.PlaneCentre();
|
||||
|
||||
Reference in new issue
Block a user