24 :
public JOmniFactory<IterativeVertexFinder_factory, IterativeVertexFinderConfig> {
28 std::unique_ptr<AlgoT> m_algo;
30 Input<Acts::ConstVectorMultiTrajectory> m_acts_track_states_input{
this};
31 Input<Acts::ConstVectorTrackContainer> m_acts_tracks_input{
this};
32 PodioInput<edm4eic::ReconstructedParticle> m_edm4eic_reconParticles_input{
this};
33 PodioOutput<edm4eic::Vertex> m_vertices_output{
this};
35 ParameterRef<int> m_maxVertices{
this,
"maxVertices",
config().maxVertices,
36 "Maximum num vertices that can be found"};
37 ParameterRef<bool> m_reassignTracksAfterFirstFit{
38 this,
"reassignTracksAfterFirstFit",
config().reassignTracksAfterFirstFit,
39 "Whether or not to reassign tracks after first fit"};
40 ParameterRef<unsigned int> m_minTrackHits{
41 this,
"minTrackHits",
config().minTrackHits,
42 "Minimum number of hits to require for the tracks used"};
44 Service<ACTSGeo_service> m_ACTSGeoSvc{
this};
48 m_algo = std::make_unique<AlgoT>(this->
GetPrefix());
49 m_algo->level(
static_cast<algorithms::LogLevel
>(
logger()->level()));
50 m_algo->applyConfig(
config());
55 auto track_states_vec = m_acts_track_states_input();
56 auto tracks_vec = m_acts_tracks_input();
57 assert(!track_states_vec.empty() &&
"ConstVectorMultiTrajectory vector should not be empty");
58 assert(track_states_vec.front() !=
nullptr &&
59 "ConstVectorMultiTrajectory pointer should not be null");
60 assert(!tracks_vec.empty() &&
"ConstVectorTrackContainer vector should not be empty");
61 assert(tracks_vec.front() !=
nullptr &&
"ConstVectorTrackContainer pointer should not be null");
63 m_algo->process(AlgoT::Input{track_states_vec.front(), tracks_vec.front(),
64 m_edm4eic_reconParticles_input()},
65 AlgoT::Output{m_vertices_output().get()});