23 #include "pybind11/pybind11.h"
24 #include "pybind11/eigen.h"
25 #include "pybind11/stl.h"
31 using namespace pybind11::literals;
37 py::class_<Quadrupole, std::shared_ptr<Quadrupole>,
BaseCore> clsQuadrupole(mod,
"Quadrupole");
40 typedef Eigen::Matrix<double, 2, 2, Eigen::DontAlign>
Matrix;
43 clsQuadrupole.def(py::init<double, double, double, bool>(),
"ixx"_a = 1.0,
"iyy"_a = 1.0,
"ixy"_a = 0.0,
44 "normalize"_a =
false);
45 clsQuadrupole.def(py::init<BaseCore::ParameterVector const &, bool>(),
"vector"_a,
"normalize"_a =
false);
46 clsQuadrupole.def(py::init<Matrix const &, bool>(),
"matrix"_a,
"normalize"_a =
true);
47 clsQuadrupole.def(py::init<Quadrupole const &>());
48 clsQuadrupole.def(py::init<BaseCore const &>());
49 clsQuadrupole.def(py::init<BaseCore::Convolution const &>());
51 py::implicitly_convertible<BaseCore::Convolution, Quadrupole>();
60 clsQuadrupole.def(
"getIxx", &Quadrupole::getIxx);
61 clsQuadrupole.def(
"getIyy", &Quadrupole::getIyy);
62 clsQuadrupole.def(
"getIxy", &Quadrupole::getIxy);
63 clsQuadrupole.def(
"setIxx", &Quadrupole::setIxx);
64 clsQuadrupole.def(
"setIyy", &Quadrupole::setIyy);
65 clsQuadrupole.def(
"setIxy", &Quadrupole::setIxy);
69 return std::static_pointer_cast<Quadrupole>(
self.
transform(t).copy());
72 self.transform(t).inPlace();