#include "aare/CalculateEta.hpp" #include // #include only for version 3 #include namespace py = pybind11; using namespace ::aare; template void define_eta(py::module &m, const std::string &typestr) { auto class_name = fmt::format("Eta{}", typestr); py::class_>(m, class_name.c_str()) .def(py::init<>()) .def_readwrite("x", &Eta2::x, "eta x value") .def_readwrite("y", &Eta2::y, "eta y value") .def_readwrite("c", &Eta2::c, "eta corner value cTopLeft, cTopRight, " "cBottomLeft, cBottomRight") .def_readwrite("sum", &Eta2::sum, "photon energy of cluster"); } void define_corner_enum(py::module &m) { py::enum_(m, "corner", "enum.Enum") .value("cTopLeft", corner::cTopLeft) .value("cTopRight", corner::cTopRight) .value("cBottomLeft", corner::cBottomLeft) .value("cBottomRight", corner::cBottomRight) .export_values(); } template void register_calculate_2x2eta(py::module &m) { using ClusterType = Cluster; m.def( "calculate_eta2", [](const aare::ClusterVector &clusters) { auto eta2 = new std::vector>( calculate_eta2(clusters)); return return_vector(eta2); }, R"(calculates eta2x2)", py::arg("clusters")); m.def( "calculate_eta2", [](const aare::Cluster &cluster) { return calculate_eta2(cluster); }, R"(calculates eta2x2)", py::arg("cluster")); m.def( "calculate_full_eta2", [](const aare::Cluster &cluster) { return calculate_full_eta2(cluster); }, R"(calculates full eta2x2)", py::arg("cluster")); m.def( "calculate_full_eta2", [](const aare::ClusterVector &clusters) { auto eta2 = new std::vector>( calculate_full_eta2(clusters)); return return_vector(eta2); }, R"(calculates full eta2x2)", py::arg("clusters")); } template void register_calculate_3x3eta(py::module &m) { using ClusterType = Cluster; m.def( "calculate_eta3", [](const aare::ClusterVector &clusters) { auto eta = new std::vector>(calculate_eta3(clusters)); return return_vector(eta); }, R"(calculates eta3x3 using entire cluster)", py::arg("clusters")); m.def( "calculate_cross_eta3", [](const aare::ClusterVector &clusters) { auto eta = new std::vector>(calculate_cross_eta3(clusters)); return return_vector(eta); }, R"(calculates eta3x3 taking into account cross pixels in cluster)", py::arg("clusters")); m.def( "calculate_eta3", [](const ClusterType &cluster) { return calculate_eta3(cluster); }, R"(calculates eta3x3 using entire cluster)", py::arg("cluster")); m.def( "calculate_cross_eta3", [](const ClusterType &cluster) { return calculate_cross_eta3(cluster); }, R"(calculates eta3x3 taking into account cross pixels in cluster)", py::arg("cluster")); }