File indexing completed on 2025-09-18 08:13:11
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "Acts/Utilities/Logger.hpp"
0010 #include "ActsExamples/Digitization/DigitizationAlgorithm.hpp"
0011 #include "ActsExamples/Digitization/DigitizationConfig.hpp"
0012 #include "ActsExamples/Digitization/DigitizationConfigurator.hpp"
0013 #include "ActsExamples/Digitization/DigitizationCoordinatesConverter.hpp"
0014 #include "ActsExamples/Digitization/MuonSpacePointDigitizer.hpp"
0015 #include "ActsExamples/Io/Json/JsonDigitizationConfig.hpp"
0016 #include "ActsPython/Utilities/Helpers.hpp"
0017 #include "ActsPython/Utilities/Macros.hpp"
0018
0019 #include <array>
0020 #include <memory>
0021 #include <tuple>
0022 #include <utility>
0023
0024 #include <pybind11/pybind11.h>
0025 #include <pybind11/stl.h>
0026
0027 namespace py = pybind11;
0028
0029 using namespace ActsExamples;
0030 using namespace Acts;
0031
0032 namespace ActsPython {
0033
0034 void addDigitization(Context& ctx) {
0035 auto [m, mex] = ctx.get("main", "examples");
0036
0037 mex.def("readDigiConfigFromJson", readDigiConfigFromJson);
0038 mex.def("writeDigiConfigToJson", writeDigiConfigToJson);
0039
0040 {
0041 using Config = DigitizationAlgorithm::Config;
0042
0043 auto a =
0044 py::class_<DigitizationAlgorithm, IAlgorithm,
0045 std::shared_ptr<DigitizationAlgorithm>>(
0046 mex, "DigitizationAlgorithm")
0047 .def(py::init<Config&, Logging::Level>(), py::arg("config"),
0048 py::arg("level"))
0049 .def_property_readonly("config", &DigitizationAlgorithm::config);
0050
0051 auto c = py::class_<Config>(a, "Config").def(py::init<>());
0052
0053 ACTS_PYTHON_STRUCT(
0054 c, inputSimHits, outputMeasurements, outputClusters,
0055 outputMeasurementParticlesMap, outputMeasurementSimHitsMap,
0056 outputParticleMeasurementsMap, outputSimHitMeasurementsMap,
0057 surfaceByIdentifier, randomNumbers, doOutputCells, doClusterization,
0058 doMerge, minEnergyDeposit, digitizationConfigs, minMaxRetries);
0059
0060 c.def_readonly("mergeNsigma", &Config::mergeNsigma);
0061 c.def_readonly("mergeCommonCorner", &Config::mergeCommonCorner);
0062
0063 patchKwargsConstructor(c);
0064
0065 auto cc = py::class_<DigiComponentsConfig>(mex, "DigiComponentsConfig")
0066 .def(py::init<>());
0067
0068 ACTS_PYTHON_STRUCT(cc, geometricDigiConfig, smearingDigiConfig);
0069
0070 py::class_<DigiConfigContainer>(mex, "DigiConfigContainer")
0071 .def(py::init<std::vector<
0072 std::pair<GeometryIdentifier, DigiComponentsConfig>>>());
0073 }
0074
0075 ACTS_PYTHON_DECLARE_ALGORITHM(
0076 MuonSpacePointDigitizer, mex, "MuonSpacePointDigitizer", inputSimHits,
0077 inputParticles, outputSpacePoints, randomNumbers,
0078
0079 trackingGeometry, digitizeTime, dumpVisualization, strawDeadTime
0080
0081 );
0082
0083 {
0084 using DC = DigitizationConfigurator;
0085 auto dc = py::class_<DC>(mex, "DigitizationConfigurator").def(py::init<>());
0086
0087 dc.def("__call__", &DC::operator());
0088
0089 ACTS_PYTHON_STRUCT(dc, inputDigiComponents, compactify,
0090 volumeLayerComponents, outputDigiComponents);
0091 }
0092
0093 {
0094 py::class_<DigitizationCoordinatesConverter,
0095 std::shared_ptr<DigitizationCoordinatesConverter>>(
0096 mex, "DigitizationCoordinatesConverter")
0097 .def(py::init<DigitizationAlgorithm::Config&>(), py::arg("config"))
0098 .def_property_readonly("config",
0099 &DigitizationCoordinatesConverter::config)
0100 .def("globalToLocal", &DigitizationCoordinatesConverter::globalToLocal)
0101 .def("localToGlobal", &DigitizationCoordinatesConverter::localToGlobal);
0102 }
0103 }
0104
0105 }