EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
FarDetectorLinearTracking_factory.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) 2024 - 2025, Simon Gardner
3
4#pragma once
5
7
8// Event Model related classes
9#include <edm4eic/EDM4eicVersion.h>
10#include <edm4eic/MCRecoTrackerHitAssociationCollection.h>
11#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
12#include <edm4eic/MCRecoTrackerHitLinkCollection.h>
13#endif
14#include <edm4eic/MCRecoTrackParticleAssociationCollection.h>
15#include <edm4eic/TrackCollection.h>
16#include <edm4eic/Measurement2DCollection.h>
18
20#include <spdlog/logger.h>
21
22namespace eicrecon {
23
25 : public JOmniFactory<FarDetectorLinearTracking_factory, FarDetectorLinearTrackingConfig> {
26
27public:
29
30private:
31 std::unique_ptr<AlgoT> m_algo;
32
33 VariadicPodioInput<edm4eic::Measurement2D> m_hits_input{this};
34#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
35 PodioInput<edm4eic::MCRecoTrackerHitLink> m_hits_links_input{this};
36#endif
37 PodioInput<edm4eic::MCRecoTrackerHitAssociation> m_hits_association_input{this};
38 PodioOutput<edm4eic::Track> m_tracks_output{this};
39#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
40 PodioOutput<edm4eic::MCRecoTrackParticleLink> m_tracks_links_output{this};
41#endif
42 PodioOutput<edm4eic::MCRecoTrackParticleAssociation> m_tracks_association_output{this};
43
44 ParameterRef<std::size_t> n_layer{this, "numLayers", config().n_layer};
45 ParameterRef<std::vector<double>> layer_weights{this, "layerWeights", config().layer_weights};
46 ParameterRef<std::size_t> layer_hits_max{this, "layerHitsMax", config().layer_hits_max};
47 ParameterRef<float> chi2_max{this, "chi2Max", config().chi2_max};
48
49public:
50 void Configure() {
51 m_algo = std::make_unique<AlgoT>(GetPrefix());
52 m_algo->level(static_cast<algorithms::LogLevel>(logger()->level()));
53 m_algo->applyConfig(config());
54 m_algo->init();
55 }
56
57 void Process(int32_t /* run_number */, uint64_t /* event_number */) {
58
59 try {
60 std::vector<gsl::not_null<const edm4eic::Measurement2DCollection*>> hits;
61 for (const auto& hit : m_hits_input()) {
62 hits.push_back(gsl::not_null<const edm4eic::Measurement2DCollection*>{hit});
63 }
64
65 // Prepare the input tuple
66 auto input = std::make_tuple(hits,
67#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
68 m_hits_links_input(),
69#endif
70 m_hits_association_input());
71
72 m_algo->process(input, {m_tracks_output().get(),
73#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
74 m_tracks_links_output().get(),
75#endif
76 m_tracks_association_output().get()});
77 } catch (std::exception& e) {
78 throw JException(e.what());
79 }
80 }
81};
82
83} // namespace eicrecon
Definition JOmniFactory.h:30
FarDetectorLinearTrackingConfig & 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
Definition FarDetectorLinearTracking_factory.h:25
void Process(int32_t, uint64_t)
Definition FarDetectorLinearTracking_factory.h:57
void Configure()
Definition FarDetectorLinearTracking_factory.h:50
Definition FarDetectorLinearTracking.h:48
-client
Definition CalorimeterClusterRecoCoG.cc:37