diff --git a/k4ActsTracking/include/k4ActsTracking/Measurement.hxx b/k4ActsTracking/include/k4ActsTracking/Measurement.hxx index 504feca..e4a6ccb 100644 --- a/k4ActsTracking/include/k4ActsTracking/Measurement.hxx +++ b/k4ActsTracking/include/k4ActsTracking/Measurement.hxx @@ -24,6 +24,8 @@ #include "Acts/EventData/detail/ParameterTraits.hpp" #include "Acts/EventData/detail/PrintParameters.hpp" +#include + #include #include diff --git a/k4ActsTracking/include/k4ActsTracking/SeedSpacePoint.hxx b/k4ActsTracking/include/k4ActsTracking/SeedSpacePoint.hxx index 9ff894a..eaeb14b 100644 --- a/k4ActsTracking/include/k4ActsTracking/SeedSpacePoint.hxx +++ b/k4ActsTracking/include/k4ActsTracking/SeedSpacePoint.hxx @@ -18,8 +18,11 @@ */ #pragma once +#include "k4ActsTracking/SourceLink.hxx" + #include #include + #include #include @@ -58,9 +61,9 @@ namespace ACTSTracking { constexpr float varianceR() const { return m_varianceRho; } constexpr float varianceZ() const { return m_varianceZ; } - constexpr SourceLink sourceLink() const { return m_sourceLink; } + const SourceLink& sourceLink() const { return m_sourceLink; } - const std::optional t() const { return m_sourceLink.edm4hepTHitP()->getTime(); } + std::optional t() const { return m_sourceLink.edm4hepHit().getTime(); } /// @TODO missing: const std::optional varianceT() const private: @@ -85,7 +88,7 @@ namespace ACTSTracking { * that the same measurement index always produces the same space point? * no need to check r since it is fully defined by x/y */ - constexpr bool operator==(const SeedSpacePoint& lhs, const SeedSpacePoint& rhs) { + inline bool operator==(const SeedSpacePoint& lhs, const SeedSpacePoint& rhs) { return (lhs.sourceLink() == rhs.sourceLink()) and (lhs.x() == rhs.x()) and (lhs.y() == rhs.y()) and (lhs.z() == rhs.z()) and (lhs.varianceR() == rhs.varianceR()) and (lhs.varianceZ() == rhs.varianceZ()); } diff --git a/k4ActsTracking/include/k4ActsTracking/SourceLink.hxx b/k4ActsTracking/include/k4ActsTracking/SourceLink.hxx index e35e59a..e3c3cdc 100644 --- a/k4ActsTracking/include/k4ActsTracking/SourceLink.hxx +++ b/k4ActsTracking/include/k4ActsTracking/SourceLink.hxx @@ -18,8 +18,9 @@ */ #pragma once -#include +#include +#include "Acts/EventData/SourceLink.hpp" #include "Acts/Surfaces/Surface.hpp" #include "k4ActsTracking/GeometryContainers.hxx" @@ -29,7 +30,7 @@ namespace ACTSTracking { class SourceLink final { public: //! \brief Construct from geometry identifier and hit - SourceLink(Acts::GeometryIdentifier gid, std::size_t index, edm4hep::TrackerHitPlane* edmhit) + SourceLink(Acts::GeometryIdentifier gid, std::size_t index, const edm4hep::TrackerHit edmhit) : m_geometryId(gid), m_index(index), m_edm4hephit(edmhit) {} // Construct an invalid source link. Must be default constructible to @@ -46,12 +47,12 @@ namespace ACTSTracking { constexpr std::size_t index() const { return m_index; } /// Access the edm4hep TrackerHitPlane /// @TODO: We want this to be a TrackerHit to support multiple types of tracking detector. However, TrackerHitPlane is currently not derived from TrackerHit as expected. - constexpr edm4hep::TrackerHitPlane* edm4hepTHitP() const { return m_edm4hephit; } + edm4hep::TrackerHit edm4hepHit() const { return m_edm4hephit; } private: - Acts::GeometryIdentifier m_geometryId; - std::size_t m_index = -1; - edm4hep::TrackerHitPlane* m_edm4hephit = nullptr; + Acts::GeometryIdentifier m_geometryId; + std::size_t m_index = -1; + edm4hep::TrackerHit m_edm4hephit{edm4hep::TrackerHit::makeEmpty()}; friend constexpr bool operator==(const SourceLink& lhs, const SourceLink& rhs) { return (lhs.m_geometryId == rhs.m_geometryId) and (lhs.m_index == rhs.m_index) and diff --git a/k4ActsTracking/src/components/ACTSSeededCKFTrackingAlg.cxx b/k4ActsTracking/src/components/ACTSSeededCKFTrackingAlg.cxx index 9560eb0..5d802ef 100644 --- a/k4ActsTracking/src/components/ACTSSeededCKFTrackingAlg.cxx +++ b/k4ActsTracking/src/components/ACTSSeededCKFTrackingAlg.cxx @@ -172,7 +172,7 @@ std::tuple ACTSSeededCKFTrac localCov(0, 0) = std::pow(hitplane.getDu() * Acts::UnitConstants::mm, 2); localCov(1, 1) = std::pow(hitplane.getDv() * Acts::UnitConstants::mm, 2); - ACTSTracking::SourceLink sourceLink(surface->geometryId(), measurements.size(), &hitPair.second); + ACTSTracking::SourceLink sourceLink(surface->geometryId(), measurements.size(), hitPair.second); Acts::SourceLink src_wrap{sourceLink}; ACTSTracking::Measurement meas = ACTSTracking::makeMeasurement(src_wrap, loc, localCov, Acts::eBoundLoc0, Acts::eBoundLoc1); @@ -467,7 +467,7 @@ std::tuple ACTSSeededCKFTrac // hits for (const ACTSTracking::SeedSpacePoint* sp : seed.sp()) { const ACTSTracking::SourceLink& sl = sp->sourceLink(); - seedTrack.addToTrackerHits(*(sl.edm4hepTHitP())); //trackHit); + seedTrack.addToTrackerHits(sl.edm4hepHit()); } seedTrack.addToTrackStates(*seedTrackState); diff --git a/k4ActsTracking/src/components/Helpers.cxx b/k4ActsTracking/src/components/Helpers.cxx index cfe47eb..4a57340 100644 --- a/k4ActsTracking/src/components/Helpers.cxx +++ b/k4ActsTracking/src/components/Helpers.cxx @@ -98,7 +98,7 @@ namespace ACTSTracking { auto sl = trk_state.getUncalibratedSourceLink().get(); - edm4hep::TrackerHit curr_hit(*sl.edm4hepTHitP()); + const auto curr_hit = sl.edm4hepHit(); hitsOnTrack.push_back(curr_hit);