EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
ActsTrackMerger_factory.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) 2025 Wouter Deconinck
3
4#pragma once
5
6#include <ActsExamples/EventData/Track.hpp>
7#include <JANA/JEvent.h>
8#include <memory>
9#include <string>
10#include <utility>
11#include <vector>
12
15
16namespace eicrecon {
17
25class ActsTrackMerger_factory : public JOmniFactory<ActsTrackMerger_factory, NoConfig> {
26public:
28
29private:
30 std::unique_ptr<AlgoT> m_algo;
31
32 Input<Acts::ConstVectorMultiTrajectory> m_acts_track_states1_input{this};
33 Input<Acts::ConstVectorTrackContainer> m_acts_tracks1_input{this};
34 Input<Acts::ConstVectorMultiTrajectory> m_acts_track_states2_input{this};
35 Input<Acts::ConstVectorTrackContainer> m_acts_tracks2_input{this};
36 Output<Acts::ConstVectorMultiTrajectory> m_acts_track_states_output{this};
37 Output<Acts::ConstVectorTrackContainer> m_acts_tracks_output{this};
38
39public:
40 void Configure() {
41 m_algo = std::make_unique<AlgoT>(this->GetPrefix());
42 m_algo->level((algorithms::LogLevel)logger()->level());
43 m_algo->applyConfig(config());
44 m_algo->init();
45 }
46
47 void Process(int32_t /* run_number */, uint64_t /* event_number */) {
48 auto track_states1_vec = m_acts_track_states1_input();
49 auto tracks1_vec = m_acts_tracks1_input();
50 auto track_states2_vec = m_acts_track_states2_input();
51 auto tracks2_vec = m_acts_tracks2_input();
52
53 assert(!track_states1_vec.empty() && "ConstVectorMultiTrajectory vector 1 should not be empty");
54 assert(track_states1_vec.front() != nullptr &&
55 "ConstVectorMultiTrajectory pointer 1 should not be null");
56 assert(!tracks1_vec.empty() && "ConstVectorTrackContainer vector 1 should not be empty");
57 assert(tracks1_vec.front() != nullptr &&
58 "ConstVectorTrackContainer pointer 1 should not be null");
59 assert(!track_states2_vec.empty() && "ConstVectorMultiTrajectory vector 2 should not be empty");
60 assert(track_states2_vec.front() != nullptr &&
61 "ConstVectorMultiTrajectory pointer 2 should not be null");
62 assert(!tracks2_vec.empty() && "ConstVectorTrackContainer vector 2 should not be empty");
63 assert(tracks2_vec.front() != nullptr &&
64 "ConstVectorTrackContainer pointer 2 should not be null");
65
66 m_algo->process(AlgoT::Input{track_states1_vec.front(), tracks1_vec.front(),
67 track_states2_vec.front(), tracks2_vec.front()},
68 AlgoT::Output{&m_acts_track_states_output().emplace_back(),
69 &m_acts_tracks_output().emplace_back()});
70 }
71};
72
73} // namespace eicrecon
Definition JOmniFactory.h:30
NoConfig & config()
Retrieve reference to embedded config object.
Definition JOmniFactory.h:576
std::shared_ptr< spdlog::logger > & logger()
Retrieve reference to already-configured logger.
Definition JOmniFactory.h:573
std::string GetPrefix()
Definition JOmniFactory.h:570
Definition ActsTrackMerger_factory.h:25
void Configure()
Definition ActsTrackMerger_factory.h:40
void Process(int32_t, uint64_t)
Definition ActsTrackMerger_factory.h:47
Definition ActsTrackMerger.h:21
-client
Definition CalorimeterClusterRecoCoG.cc:37