Files
Jungfraujoch/common/Coord.h
T
leonarski_f cc3eb8352c
Build Packages / Unit tests (push) Skipped
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m28s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m9s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m47s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m58s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 11m39s
Build Packages / build:rpm (rocky8) (push) Successful in 11m43s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 12m59s
Build Packages / Generate python client (push) Successful in 35s
Build Packages / Build documentation (push) Successful in 59s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m48s
Build Packages / build:rpm (rocky9) (push) Successful in 12m32s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m24s
Build Packages / XDS test (durin plugin) (push) Successful in 7m35s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m50s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m40s
Build Packages / DIALS test (push) Successful in 11m19s
v1.0.0-rc.148 (#58)
This is an UNSTABLE release. The release has significant modifications for data processing - in case of troubles go back to 1.0.0-rc.144.

* jfjoch_broker: Improve azimuthal integration (add <I^2> calculation)
* jfjoch_broker: Fixes around indexing, aiming to handle multi-lattice crystals (work in progress, it is not fully integrated)
* jfjoch_writer: Save mean(I), stddev(I), and count(I) for each azimuthal bin

Reviewed-on: #58
2026-06-08 08:30:35 +02:00

64 lines
1.6 KiB
C++

// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#pragma once
#include <ostream>
#include <vector>
class Coord {
public:
float x,y,z;
Coord();
Coord(const float in[3]);
Coord(float x, float y, float z);
void swap(Coord& other) noexcept;
Coord operator+(const Coord &in) const;
Coord operator-(const Coord &in) const;
Coord operator*(float in) const;
Coord operator/(float in) const;
Coord operator-() const;
Coord& operator+=(const Coord &in);
Coord& operator-=(const Coord &in);
Coord& operator*=(float in);
Coord& operator/=(float in);
bool operator==(const Coord &other) const;
Coord operator%(const Coord &in) const; // Cross product
float operator*(const Coord &in) const; // Dot product
const float& operator[](int64_t val) const;
float& operator[](int64_t val);
float Length() const;
Coord Normalize() const;
friend std::ostream &operator<<( std::ostream &output, const Coord &in );
};
Coord operator*(float in1, const Coord& in2);
inline void swap(Coord& a, Coord& b) noexcept;
float angle_deg(const Coord &in1, const Coord &in2);
class RotMatrix {
float v[3][3];
public:
RotMatrix();
RotMatrix(float alpha, const Coord &dir);
Coord operator*(const Coord &in) const;
RotMatrix operator*(const RotMatrix &other) const;
RotMatrix invert() const;
RotMatrix transpose() const;
RotMatrix operator!() const;
std::vector<float> arr() const;
};
inline void swap(Coord& a, Coord& b) noexcept {
a.swap(b);
}