23 :
public JOmniFactory<SecondaryVertexFinder_factory, SecondaryVertexFinderConfig> {
27 std::unique_ptr<AlgoT> m_algo;
29 PodioInput<edm4eic::ReconstructedParticle> m_reco_input{
this};
30 Input<Acts::ConstVectorMultiTrajectory> m_acts_track_states_input{
this};
31 Input<Acts::ConstVectorTrackContainer> m_acts_tracks_input{
this};
32 PodioOutput<edm4eic::Vertex> m_vertices_output{
this};
34 ParameterRef<unsigned int> m_maxVertices{
this,
"maxVertices",
config().maxVertices,
35 "Maximum num vertices that can be found"};
36 ParameterRef<bool> m_reassignTracksAfterFirstFit{
37 this,
"reassignTracksAfterFirstFit",
config().reassignTracksAfterFirstFit,
38 "Whether or not to reassign tracks after first fit"};
39 ParameterRef<float> m_tracksMaxZinterval{
this,
"tracksMaxZinterval",
config().tracksMaxZinterval,
40 "Max z interval for Acts::AdaptiveMultiVertexFinder."};
41 ParameterRef<unsigned int> m_maxIterations{
this,
"maxIterations",
config().maxIterations,
42 "Max iterations for Acts::AdaptiveMultivertexFinder"};
43 ParameterRef<float> m_maxDistToLinPoint{
44 this,
"maxDistToLinPoint",
config().maxDistToLinPoint,
45 "Max disttance to line point (pca) for Acts::AdaptiveMultivertexFinder"};
47 Service<ACTSGeo_service> m_ACTSGeoSvc{
this};
51 m_algo = std::make_unique<AlgoT>(this->
GetPrefix());
52 m_algo->level(
static_cast<algorithms::LogLevel
>(
logger()->level()));
53 m_algo->applyConfig(
config());
58 auto track_states_vec = m_acts_track_states_input();
59 auto tracks_vec = m_acts_tracks_input();
60 assert(!track_states_vec.empty() &&
"ConstVectorMultiTrajectory vector should not be empty");
61 assert(track_states_vec.front() !=
nullptr &&
62 "ConstVectorMultiTrajectory pointer should not be null");
63 assert(!tracks_vec.empty() &&
"ConstVectorTrackContainer vector should not be empty");
64 assert(tracks_vec.front() !=
nullptr &&
"ConstVectorTrackContainer pointer should not be null");
69 track_states_vec.front(),
73 m_vertices_output().get(),