EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
FarDetectorLinearTracking.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
6#include <DDRec/CellIDPositionConverter.h>
7#include <algorithms/algorithm.h>
9#include <edm4eic/MCRecoTrackParticleAssociationCollection.h>
10#include <edm4eic/EDM4eicVersion.h>
11#include <edm4eic/MCRecoTrackerHitAssociationCollection.h>
12#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
13#include <edm4eic/MCRecoTrackerHitLinkCollection.h>
14#include <podio/LinkNavigator.h>
15#endif
16#include <edm4eic/Measurement2DCollection.h>
17#include <edm4eic/TrackCollection.h>
18#include <edm4hep/MCParticle.h>
19#include <Eigen/Core>
20#include <cstddef>
21#include <gsl/pointers>
22#include <optional>
23#include <string>
24#include <string_view>
25#include <vector>
26
28
29#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
30#include <edm4eic/MCRecoTrackParticleLinkCollection.h>
31#endif
32
33namespace eicrecon {
34
35using FarDetectorLinearTrackingAlgorithm = algorithms::Algorithm<
36 algorithms::Input<std::vector<edm4eic::Measurement2DCollection>,
37#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
38 std::optional<edm4eic::MCRecoTrackerHitLinkCollection>,
39#endif
40 std::optional<edm4eic::MCRecoTrackerHitAssociationCollection>>,
41 algorithms::Output<edm4eic::TrackCollection,
42#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
43 std::optional<edm4eic::MCRecoTrackParticleLinkCollection>,
44#endif
45 std::optional<edm4eic::MCRecoTrackParticleAssociationCollection>>>;
46
48 public WithPodConfig<FarDetectorLinearTrackingConfig> {
49
50public:
51 FarDetectorLinearTracking(std::string_view name)
53 {"inputHitCollections",
54#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
55 "inputMCRecoTrackerHitLinks",
56#endif
57 "inputMCRecoTrackerHitAssociations"},
58 {"outputTrackCollection",
59#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
60 "outputMCRecoTrackLinks",
61#endif
62 "outputMCRecoTrackAssociations"},
63 "Fit track segments from hits in the tracker layers"} {
64 }
65
67 void init() final;
68
70 void process(const Input&, const Output&) const final;
71
72private:
73 const dd4hep::rec::CellIDPositionConverter* m_cellid_converter{nullptr};
74 Eigen::VectorXd m_layerWeights;
75
76 Eigen::Vector3d m_optimumDirection;
77
78 void checkHitCombination(
79 Eigen::MatrixXd* hitMatrix, edm4eic::TrackCollection* outputTracks,
80#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
81 edm4eic::MCRecoTrackParticleLinkCollection* trackLinks,
82#endif
83 edm4eic::MCRecoTrackParticleAssociationCollection* assocTracks,
84 const std::vector<gsl::not_null<const edm4eic::Measurement2DCollection*>>& inputHits,
85 const std::vector<std::vector<edm4hep::MCParticle>>& assocParts,
86 const std::vector<std::size_t>& layerHitIndex) const;
87
89 bool checkHitPair(const Eigen::Vector3d& hit1, const Eigen::Vector3d& hit2) const;
90
92 void
93 ConvertClusters(const edm4eic::Measurement2DCollection& clusters,
94#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
95 const podio::LinkNavigator<edm4eic::MCRecoTrackerHitLinkCollection>& link_nav,
96#endif
97 const edm4eic::MCRecoTrackerHitAssociationCollection& assoc_hits,
98 std::vector<std::vector<Eigen::Vector3d>>& pointPositions,
99 std::vector<std::vector<edm4hep::MCParticle>>& assoc_parts) const;
100};
101
102} // namespace eicrecon
Definition FarDetectorLinearTracking.h:48
FarDetectorLinearTracking(std::string_view name)
Definition FarDetectorLinearTracking.h:51
Definition WithPodConfig.h:22
Definition ActsGeometryProvider.h:28
-client
Definition CalorimeterClusterRecoCoG.cc:37
algorithms::Algorithm< algorithms::Input< std::vector< edm4eic::Measurement2DCollection >, std::optional< edm4eic::MCRecoTrackerHitLinkCollection >, std::optional< edm4eic::MCRecoTrackerHitAssociationCollection > >, algorithms::Output< edm4eic::TrackCollection, std::optional< edm4eic::MCRecoTrackParticleLinkCollection >, std::optional< edm4eic::MCRecoTrackParticleAssociationCollection > > > FarDetectorLinearTrackingAlgorithm
Definition FarDetectorLinearTracking.h:45