#include #include #include #include "ConstructionWrapper.hh" #include "G4System.hh" namespace py = pybind11; template void makeConstructionWrapper(M & m, std::string name){ py::class_(m, name.data()).def(py::init()) .def("addLayer", &ConstructionWrapper::addLayer, py::arg("thickness"), py::arg("material"), py::arg("isActive")=true, py::arg("nx")=1, py::arg("ny")=-1) .def("getNSensors", &ConstructionWrapper::getNSensors); } template void makeG4System(M& m, std::string name){ py::class_(m, name.data()).def(py::init()) .def("init", &G4System::init, py::arg("cw"), py::arg("gui")=false) .def("run_gui", &G4System::run_gui) .def("run_batch", &G4System::run_batch, py::arg("nEvents"), py::arg("partSpecies"), py::arg("minEnergy_GeV"), py::arg("maxEnergy_GeV")) .def("run_visualize", &G4System::run_visualize, py::arg("partSpecies"), py::arg("minEnergy_GeV"), py::arg("maxEnergy_GeV")) .def("applyUICommand", &G4System::applyUICommand, py::arg("command")); } PYBIND11_MODULE(minicalo, m) { m.doc() = "pybind11 plugin"; // optional module docstring makeConstructionWrapper(m, "ConstructionWrapper"); makeG4System(m, "G4System"); }