EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
AmbiguitySolver_factory.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) 2024 Minjung Kim, Barak Schmookler
3#pragma once
4
9#include <ActsExamples/EventData/Track.hpp>
10#include <JANA/JEvent.h>
11#include <cassert>
12#include <memory>
13#include <string>
14#include <utility>
15#include <vector>
16
17namespace eicrecon {
18
20 : public JOmniFactory<AmbiguitySolver_factory, AmbiguitySolverConfig> {
21
22private:
24 std::unique_ptr<AlgoT> m_algo;
25
26 Input<Acts::ConstVectorMultiTrajectory> m_acts_track_states_input{this};
27 Input<Acts::ConstVectorTrackContainer> m_acts_tracks_input{this};
28 Output<Acts::ConstVectorMultiTrajectory> m_acts_track_states_output{this};
29 Output<Acts::ConstVectorTrackContainer> m_acts_tracks_output{this};
30
31 ParameterRef<std::uint32_t> m_maximumSharedHits{this, "maximumSharedHits",
32 config().maximum_shared_hits,
33 "Maximum number of shared hits allowed"};
34 ParameterRef<std::uint32_t> m_maximumIterations{
35 this, "maximumIterations", config().maximum_iterations, "Maximum number of iterations"};
36 ParameterRef<std::size_t> m_nMeasurementsMin{
37 this, "nMeasurementsMin", config().n_measurements_min,
38 "Number of measurements required for further reconstruction"};
39
40public:
41 void Configure() {
42 m_algo = std::make_unique<AlgoT>(this->GetPrefix());
43 m_algo->level(static_cast<algorithms::LogLevel>(logger()->level()));
44 m_algo->applyConfig(config());
45 m_algo->init();
46 }
47
48 void Process(int32_t /* run_number */, uint64_t /* event_number */) {
49 auto track_states_vec = m_acts_track_states_input();
50 auto tracks_vec = m_acts_tracks_input();
51 assert(!track_states_vec.empty() && "ConstVectorMultiTrajectory vector should not be empty");
52 assert(track_states_vec.front() != nullptr &&
53 "ConstVectorMultiTrajectory pointer should not be null");
54 assert(!tracks_vec.empty() && "ConstVectorTrackContainer vector should not be empty");
55 assert(tracks_vec.front() != nullptr && "ConstVectorTrackContainer pointer should not be null");
56
57 m_algo->process(AlgoT::Input{track_states_vec.front(), tracks_vec.front()},
58 AlgoT::Output{&m_acts_track_states_output().emplace_back(),
59 &m_acts_tracks_output().emplace_back()});
60 }
61};
62
63} // namespace eicrecon
Definition JOmniFactory.h:30
AmbiguitySolverConfig & 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 AmbiguitySolver_factory.h:20
void Configure()
Definition AmbiguitySolver_factory.h:41
void Process(int32_t, uint64_t)
Definition AmbiguitySolver_factory.h:48
Definition AmbiguitySolver.h:25
-client
Definition CalorimeterClusterRecoCoG.cc:37