Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-03-30 07:48:37

0001 // Created by Joe Osborn
0002 // Subject to the terms in the LICENSE file found in the top-level directory.
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 } // namespace eicrecon