Warning, file /acts/Python/Examples/src/EDM4hep.cpp was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "ActsExamples/DD4hepDetector/DD4hepDetector.hpp"
0010 #include "ActsExamples/Framework/IAlgorithm.hpp"
0011 #include "ActsExamples/Io/EDM4hep/EDM4hepMeasurementInputConverter.hpp"
0012 #include "ActsExamples/Io/EDM4hep/EDM4hepMeasurementOutputConverter.hpp"
0013 #include "ActsExamples/Io/EDM4hep/EDM4hepMultiTrajectoryOutputConverter.hpp"
0014 #include "ActsExamples/Io/EDM4hep/EDM4hepParticleOutputConverter.hpp"
0015 #include "ActsExamples/Io/EDM4hep/EDM4hepSimHitOutputConverter.hpp"
0016 #include "ActsExamples/Io/EDM4hep/EDM4hepSimInputConverter.hpp"
0017 #include "ActsExamples/Io/EDM4hep/EDM4hepTrackInputConverter.hpp"
0018 #include "ActsExamples/Io/EDM4hep/EDM4hepTrackOutputConverter.hpp"
0019 #include "ActsExamples/Io/Podio/PodioMeasurementInputConverter.hpp"
0020 #include "ActsExamples/Io/Podio/PodioOutputConverter.hpp"
0021 #include "ActsExamples/Io/Podio/PodioReader.hpp"
0022 #include "ActsExamples/Io/Podio/PodioWriter.hpp"
0023 #include "ActsPython/Utilities/Helpers.hpp"
0024 #include "ActsPython/Utilities/Macros.hpp"
0025
0026 #include <podio/CollectionBase.h>
0027 #include <podio/Frame.h>
0028 #include <pybind11/pybind11.h>
0029 #include <pybind11/stl.h>
0030 #include <pybind11/stl/filesystem.h>
0031
0032 namespace py = pybind11;
0033 using namespace pybind11::literals;
0034
0035 using namespace Acts;
0036 using namespace ActsPython;
0037 using namespace ActsExamples;
0038
0039 PYBIND11_MODULE(ActsExamplesPythonBindingsEDM4hep, m) {
0040 ACTS_PYTHON_DECLARE_READER(ActsExamples::PodioReader, m, "PodioReader",
0041 inputPath, outputFrame, category);
0042
0043 ACTS_PYTHON_DECLARE_WRITER(ActsExamples::PodioWriter, m, "PodioWriter",
0044 inputFrame, outputPath, category, collections,
0045 separateFilesPerThread);
0046
0047 py::class_<PodioOutputConverter, IAlgorithm,
0048 std::shared_ptr<PodioOutputConverter>>(m, "PodioOutputConverter")
0049 .def_property_readonly("collections", &PodioOutputConverter::collections);
0050
0051 py::class_<PodioInputConverter, IAlgorithm,
0052 std::shared_ptr<PodioInputConverter>>(m, "PodioInputConverter");
0053
0054 {
0055 auto [alg, config] =
0056 declareAlgorithm<PodioMeasurementInputConverter, PodioInputConverter>(
0057 m, "PodioMeasurementInputConverter");
0058 ACTS_PYTHON_STRUCT(
0059 config, inputMeasurements, inputFrame, outputMeasurements,
0060 outputMeasurementParticlesMap, outputMeasurementSimHitsMap,
0061 outputParticleMeasurementsMap, outputSimHitMeasurementsMap,
0062 inputSimHits, inputSimHitAssociation);
0063 }
0064
0065 {
0066 auto [alg, config] = declareAlgorithm<EDM4hepSimInputConverter, IAlgorithm>(
0067 m, "EDM4hepSimInputConverter");
0068 ACTS_PYTHON_STRUCT(
0069 config, inputFrame, inputParticles, inputSimHits,
0070 outputParticlesGenerator, outputParticlesSimulation, outputSimHits,
0071 outputSimHitAssociation, outputSimVertices, dd4hepDetector,
0072 trackingGeometry, sortSimHitsInTime, particleRMin, particleRMax,
0073 particleZMin, particleZMax, particlePtMin, particlePtMax);
0074
0075 using Config = EDM4hepSimInputConverter::Config;
0076 pythonRangeProperty(config, "particleR", &Config::particleRMin,
0077 &Config::particleRMax);
0078
0079 pythonRangeProperty(config, "particleZ", &Config::particleZMin,
0080 &Config::particleZMax);
0081
0082 pythonRangeProperty(config, "pt", &Config::particlePtMin,
0083 &Config::particlePtMax);
0084 }
0085
0086 ACTS_PYTHON_DECLARE_ALGORITHM(EDM4hepTrackInputConverter, m,
0087 "EDM4hepTrackInputConverter", inputFrame,
0088 inputTracks, outputTracks, Bz);
0089
0090 {
0091 auto [alg, config] =
0092 declareAlgorithm<EDM4hepSimHitOutputConverter, PodioOutputConverter>(
0093 m, "EDM4hepSimHitOutputConverter");
0094 ACTS_PYTHON_STRUCT(config, inputSimHits, inputParticles, outputParticles,
0095 outputSimTrackerHits);
0096 }
0097
0098 ACTS_PYTHON_DECLARE_ALGORITHM(EDM4hepMeasurementInputConverter, m,
0099 "EDM4hepMeasurementInputConverter", inputFrame,
0100 outputMeasurements, outputMeasurementSimHitsMap,
0101 outputClusters);
0102
0103 {
0104 auto [alg, config] = declareAlgorithm<EDM4hepMeasurementOutputConverter,
0105 PodioOutputConverter>(
0106 m, "EDM4hepMeasurementOutputConverter");
0107 ACTS_PYTHON_STRUCT(config, inputMeasurements, inputClusters,
0108 outputTrackerHitsPlane, outputTrackerHitsRaw);
0109 }
0110
0111 {
0112 auto [alg, config] =
0113 declareAlgorithm<EDM4hepParticleOutputConverter, PodioOutputConverter>(
0114 m, "EDM4hepParticleOutputConverter");
0115 ACTS_PYTHON_STRUCT(config, inputParticles, outputParticles);
0116 }
0117
0118 {
0119 auto [alg, config] = declareAlgorithm<EDM4hepMultiTrajectoryOutputConverter,
0120 PodioOutputConverter>(
0121 m, "EDM4hepMultiTrajectoryOutputConverter");
0122 ACTS_PYTHON_STRUCT(config, inputTrajectories, inputMeasurementParticlesMap,
0123 outputTracks, Bz);
0124 }
0125
0126 {
0127 auto [alg, config] =
0128 declareAlgorithm<EDM4hepTrackOutputConverter, PodioOutputConverter>(
0129 m, "EDM4hepTrackOutputConverter");
0130 ACTS_PYTHON_STRUCT(config, inputTracks, outputTracks, Bz);
0131 }
0132 }