EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
CKFTracking.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) 2022 Whitney Armstrong, Wouter Deconinck
3
4#pragma once
5
6#include <Acts/EventData/VectorMultiTrajectory.hpp>
7#include <Acts/EventData/VectorTrackContainer.hpp>
8#include <Acts/Geometry/TrackingGeometry.hpp>
9#include <Acts/MagneticField/MagneticFieldProvider.hpp>
10#include <Acts/TrackFinding/CombinatorialKalmanFilter.hpp>
11#include <Acts/TrackFinding/MeasurementSelector.hpp>
12#include <Acts/Utilities/Logger.hpp>
13#include <Acts/Utilities/Result.hpp>
14#include <ActsExamples/EventData/Track.hpp>
15#include <algorithms/algorithm.h>
16#include <edm4eic/Measurement2DCollection.h>
17#include <edm4eic/TrackSeedCollection.h>
18#include <Eigen/Core>
19#include <memory>
20#include <string>
21#include <string_view>
22#include <vector>
23
24#include "CKFTrackingConfig.h"
28
29namespace eicrecon {
30
31using CKFTrackingAlgorithm = algorithms::Algorithm<
32 algorithms::Input<edm4eic::TrackSeedCollection, edm4eic::Measurement2DCollection>,
33 algorithms::Output<Acts::ConstVectorMultiTrajectory*, Acts::ConstVectorTrackContainer*>>;
34
40class CKFTracking : public CKFTrackingAlgorithm, public WithPodConfig<eicrecon::CKFTrackingConfig> {
41public:
44 using TrackFinderOptions = Acts::CombinatorialKalmanFilterOptions<ActsExamples::TrackContainer>;
45 using TrackFinderResult = Acts::Result<std::vector<ActsExamples::TrackContainer::TrackProxy>>;
46
51 public:
52 virtual ~CKFTrackingFunction() = default;
53
54 virtual TrackFinderResult operator()(const ActsExamples::TrackParameters&,
55 const TrackFinderOptions&,
56 ActsExamples::TrackContainer&) const = 0;
57 };
58
62 static std::shared_ptr<CKFTrackingFunction>
63 makeCKFTrackingFunction(std::shared_ptr<const Acts::TrackingGeometry> trackingGeometry,
64 std::shared_ptr<const Acts::MagneticFieldProvider> magneticField,
65 const Acts::Logger& logger);
66
67 CKFTracking(std::string_view name)
69 {"inputTrackParameters", "inputMeasurements"},
70 {"outputActsTrackStates", "outputActsTracks"},
71 "Combinatorial Kalman Filter track finding"} {}
72
73 void init() final;
74 void process(const Input&, const Output&) const final;
75
76private:
77 std::shared_ptr<const Acts::Logger> m_acts_logger{nullptr};
78 std::shared_ptr<CKFTrackingFunction> m_trackFinderFunc;
79 std::shared_ptr<const ActsGeometryProvider> m_geoSvc{
80 algorithms::ActsSvc::instance().acts_geometry_provider()};
81 std::shared_ptr<const Acts::MagneticFieldProvider> m_BField{m_geoSvc->getFieldProvider()};
82
83 Acts::MeasurementSelector::Config m_sourcelinkSelectorCfg;
84
86 const Acts::Logger& acts_logger() const { return *m_acts_logger; }
87};
88
89} // namespace eicrecon
virtual TrackFinderResult operator()(const ActsExamples::TrackParameters &, const TrackFinderOptions &, ActsExamples::TrackContainer &) const =0
Definition CKFTracking.h:40
CKFTracking(std::string_view name)
Definition CKFTracking.h:67
Acts::Result< std::vector< ActsExamples::TrackContainer::TrackProxy > > TrackFinderResult
Definition CKFTracking.h:45
static std::shared_ptr< CKFTrackingFunction > makeCKFTrackingFunction(std::shared_ptr< const Acts::TrackingGeometry > trackingGeometry, std::shared_ptr< const Acts::MagneticFieldProvider > magneticField, const Acts::Logger &logger)
Definition CKFTrackingFunction.cc:55
Acts::CombinatorialKalmanFilterOptions< ActsExamples::TrackContainer > TrackFinderOptions
Definition CKFTracking.h:44
Definition WithPodConfig.h:22
-client
Definition CalorimeterClusterRecoCoG.cc:37
algorithms::Algorithm< algorithms::Input< edm4eic::TrackSeedCollection, edm4eic::Measurement2DCollection >, algorithms::Output< Acts::ConstVectorMultiTrajectory *, Acts::ConstVectorTrackContainer * > > CKFTrackingAlgorithm
Definition CKFTracking.h:33
Definition SimCalorimeterHitProcessor.cc:35