Back to home page

EIC code displayed by LXR

 
 

    


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 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
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 }