File indexing completed on 2026-03-30 07:48:37
0001
0002
0003
0004
0005 #pragma once
0006
0007 #include <Acts/EventData/VectorMultiTrajectory.hpp>
0008 #include <Acts/EventData/VectorTrackContainer.hpp>
0009 #include <Acts/MagneticField/MagneticFieldProvider.hpp>
0010 #include <algorithms/algorithm.h>
0011 #include <edm4eic/ReconstructedParticleCollection.h>
0012 #include <edm4eic/VertexCollection.h>
0013 #include <memory>
0014 #include <string>
0015 #include <string_view>
0016
0017 #include "algorithms/interfaces/ActsSvc.h"
0018 #include "algorithms/interfaces/WithPodConfig.h"
0019 #include "algorithms/tracking/ActsGeometryProvider.h"
0020 #include "algorithms/tracking/IterativeVertexFinderConfig.h"
0021
0022 namespace eicrecon {
0023
0024 using IterativeVertexFinderAlgorithm = algorithms::Algorithm<
0025 algorithms::Input<Acts::ConstVectorMultiTrajectory, Acts::ConstVectorTrackContainer,
0026 edm4eic::ReconstructedParticleCollection>,
0027 algorithms::Output<edm4eic::VertexCollection>>;
0028
0029 class IterativeVertexFinder : public IterativeVertexFinderAlgorithm,
0030 public WithPodConfig<eicrecon::IterativeVertexFinderConfig> {
0031 public:
0032 IterativeVertexFinder(std::string_view name)
0033 : IterativeVertexFinderAlgorithm{
0034 name,
0035 {"inputActsTrackStates", "inputActsTracks", "inputReconstructedParticles"},
0036 {"outputVertices"},
0037 "Iterative vertex finder"} {}
0038
0039 void init() final {};
0040 void process(const Input&, const Output&) const final;
0041
0042 private:
0043 std::shared_ptr<const ActsGeometryProvider> m_geoSvc{
0044 algorithms::ActsSvc::instance().acts_geometry_provider()};
0045 std::shared_ptr<const Acts::MagneticFieldProvider> m_BField{m_geoSvc->getFieldProvider()};
0046 };
0047 }