File indexing completed on 2026-10-28 08:20:59
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "ActsExamples/Io/EDM4hep/EDM4hepTrackInputConverter.hpp"
0010
0011 #include "ActsExamples/Io/EDM4hep/EDM4hepUtil.hpp"
0012 #include "ActsPlugins/EDM4hep/EDM4hepUtil.hpp"
0013
0014 #include <stdexcept>
0015
0016 #include <edm4hep/TrackCollection.h>
0017 #include <podio/Frame.h>
0018
0019 namespace ActsExamples {
0020
0021 EDM4hepTrackInputConverter::EDM4hepTrackInputConverter(
0022 const Config& config, std::unique_ptr<const Acts::Logger> logger)
0023 : PodioInputConverter("EDM4hepTrackInputConverter", config.inputFrame,
0024 std::move(logger)),
0025 m_cfg(config) {
0026 m_outputTracks.initialize(m_cfg.outputTracks);
0027 }
0028
0029 ProcessCode EDM4hepTrackInputConverter::convert(
0030 const AlgorithmContext& ctx, const podio::Frame& frame) const {
0031 const auto& trackCollection =
0032 frame.get<edm4hep::TrackCollection>(m_cfg.inputTracks);
0033
0034 auto trackContainer = std::make_shared<Acts::VectorTrackContainer>();
0035 auto trackStateContainer = std::make_shared<Acts::VectorMultiTrajectory>();
0036 TrackContainer tracks(trackContainer, trackStateContainer);
0037
0038 for (const auto& inputTrack : trackCollection) {
0039 auto track = tracks.makeTrack();
0040 ActsPlugins::EDM4hepUtil::readTrack(ctx.recoGeoContext, inputTrack, track,
0041 m_cfg.Bz);
0042 }
0043
0044 ConstTrackContainer constTracks{
0045 std::make_shared<Acts::ConstVectorTrackContainer>(
0046 std::move(*trackContainer)),
0047 std::make_shared<Acts::ConstVectorMultiTrajectory>(
0048 std::move(*trackStateContainer))};
0049
0050 m_outputTracks(ctx, std::move(constTracks));
0051
0052 return ProcessCode::SUCCESS;
0053 }
0054
0055 }