4 #ifndef DP3_DDECAL_ROTATION_CONSTRAINT_H_
5 #define DP3_DDECAL_ROTATION_CONSTRAINT_H_
21 const std::vector<uint32_t>& solutions_per_direction,
22 const std::vector<double>& frequencies)
override;
24 void SetWeights(
const std::vector<double>& weights)
override;
26 std::vector<ConstraintResult>
GetResult()
const override {
return results_; }
33 const dcomplex ll = data[0] + data[3] + i * (data[2] - data[1]);
34 const dcomplex rr = data[0] + data[3] + i * (data[1] - data[2]);
35 const double angle = 0.5 * (std::arg(ll) - std::arg(rr));
40 static void SetRotation(std::complex<double>* data,
double angle) {
41 data[0] = std::cos(angle);
42 data[1] = -std::sin(angle);
48 std::vector<ConstraintResult> results_;
This class is the base class for classes that implement a constraint on calibration solutions....
Definition: Constraint.h:27
std::complex< double > dcomplex
Definition: Constraint.h:29
Definition: RotationConstraint.h:14
static void SetRotation(std::complex< double > *data, double angle)
Definition: RotationConstraint.h:40
void SetWeights(const std::vector< double > &weights) override
std::vector< ConstraintResult > GetResult() const override
Definition: RotationConstraint.h:26
void Initialize(size_t n_antennas, const std::vector< uint32_t > &solutions_per_direction, const std::vector< double > &frequencies) override
static double FitRotation(const std::complex< double > *data)
Definition: RotationConstraint.h:29
void Apply(SolutionSpan &solutions, double time) override
RotationConstraint()=default
Definition: AmplitudeOnlyConstraint.h:12
aocommon::xt::Span< std::complex< double >, 4 > SolutionSpan
Definition: Solutions.h:20