File indexing completed on 2025-01-18 09:27:43
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/EventData/SourceLink.hpp"
0012 #include "Acts/Geometry/GeometryIdentifier.hpp"
0013 #include "Acts/Geometry/TrackingGeometry.hpp"
0014 #include "Acts/Plugins/Podio/PodioDynamicColumns.hpp"
0015 #include "Acts/Utilities/HashedString.hpp"
0016 #include "Acts/Utilities/Helpers.hpp"
0017
0018 #include <limits>
0019 #include <memory>
0020
0021 #include <podio/Frame.h>
0022
0023 namespace ActsPodioEdm {
0024 class Surface;
0025 }
0026
0027 namespace Acts {
0028 namespace PodioUtil {
0029
0030 using Identifier = uint64_t;
0031 constexpr Identifier kNoIdentifier = std::numeric_limits<Identifier>::max();
0032 constexpr int kNoSurface = -1;
0033
0034
0035 class ConversionHelper {
0036 public:
0037 virtual std::optional<Identifier> surfaceToIdentifier(
0038 const Surface& surface) const = 0;
0039 virtual const Surface* identifierToSurface(Identifier identifier) const = 0;
0040
0041 virtual Identifier sourceLinkToIdentifier(const SourceLink& sl) = 0;
0042 virtual SourceLink identifierToSourceLink(Identifier identifier) const = 0;
0043 };
0044
0045 std::shared_ptr<const Surface> convertSurfaceFromPodio(
0046 const ConversionHelper& helper, const ActsPodioEdm::Surface& surface);
0047
0048 ActsPodioEdm::Surface convertSurfaceToPodio(const ConversionHelper& helper,
0049 const Acts::Surface& surface);
0050 }
0051
0052 namespace podio_detail {
0053
0054
0055 void recoverDynamicColumns(
0056 const podio::Frame& frame, const std::string& stem,
0057 std::unordered_map<HashedString,
0058 std::unique_ptr<podio_detail::ConstDynamicColumnBase>>&
0059 dynamic);
0060 }
0061 }