4#include "Framework/Configure/Parameters.h"
6#include "Framework/Logger.h"
14#include "Tracking/Reco/TrackingGeometryUser.h"
19#include "Acts/Definitions/Common.hpp"
20#include "Acts/Definitions/TrackParametrization.hpp"
21#include "Acts/Definitions/Units.hpp"
22#include "Acts/EventData/TrackParameters.hpp"
23#include "Acts/Utilities/Logger.hpp"
26#include "Acts/Geometry/GeometryContext.hpp"
29#include "Acts/MagneticField/MagneticFieldContext.hpp"
30#include "Acts/MagneticField/MagneticFieldProvider.hpp"
33#include <Acts/Geometry/TrackingGeometry.hpp>
36#include "Acts/MagneticField/ConstantBField.hpp"
37#include "Acts/Propagator/AbortList.hpp"
38#include "Acts/Propagator/ActionList.hpp"
39#include "Acts/Propagator/DenseEnvironmentExtension.hpp"
40#include "Acts/Propagator/EigenStepper.hpp"
41#include "Acts/Propagator/MaterialInteractor.hpp"
42#include "Acts/Propagator/Navigator.hpp"
43#include "Acts/Propagator/Propagator.hpp"
44#include "Acts/Propagator/StandardAborters.hpp"
45#include "Acts/Propagator/detail/SteppingLogger.hpp"
46#include "Acts/Surfaces/PerigeeSurface.hpp"
47#include "Acts/Utilities/Logger.hpp"
52#include "Acts/EventData/MultiTrajectory.hpp"
53#include "Acts/EventData/MultiTrajectoryHelpers.hpp"
54#include "Acts/EventData/VectorTrackContainer.hpp"
55#include "Acts/Geometry/GeometryIdentifier.hpp"
56#include "Acts/TrackFinding/CombinatorialKalmanFilter.hpp"
57#include "Acts/TrackFinding/MeasurementSelector.hpp"
58#include "Acts/TrackFitting/GainMatrixSmoother.hpp"
59#include "Acts/TrackFitting/GainMatrixUpdater.hpp"
60#include "Acts/Utilities/CalibrationContext.hpp"
63#include "Acts/TrackFitting/KalmanFitter.hpp"
67#include "Acts/Propagator/MultiEigenStepperLoop.hpp"
70#include "Tracking/Event/Measurement.h"
71#include "Tracking/Event/Track.h"
72#include "Tracking/Reco/TrackExtrapolatorTool.h"
73#include "Tracking/Sim/IndexSourceLink.h"
74#include "Tracking/Sim/MeasurementCalibrator.h"
75#include "Tracking/Sim/TrackingUtils.h"
78#include "Tracking/Sim/BFieldXYZUtils.h"
80using Updater = Acts::GainMatrixUpdater;
81using Smoother = Acts::GainMatrixSmoother;
84 Acts::ActionList<Acts::detail::SteppingLogger, Acts::MaterialInteractor>;
85using AbortList = Acts::AbortList<Acts::EndOfWorldReached>;
87using CkfPropagator = Acts::Propagator<Acts::EigenStepper<>, Acts::Navigator>;
88using TrackContainer = Acts::TrackContainer<Acts::VectorTrackContainer,
89 Acts::VectorMultiTrajectory>;
142 const std::vector<ldmx::Measurement> &ldmxsps)
143 -> std::unordered_multimap<Acts::GeometryIdentifier,
146 template <
typename geometry_t,
typename source_link_hash_t,
147 typename source_link_equality_t>
148 std::vector<std::vector<std::size_t>> computeSharedHits(
149 std::vector<ldmx::Track> tracks, std::vector<ldmx::Measurement> meas_coll,
150 geometry_t &tg, source_link_hash_t &&sourceLinkHash,
151 source_link_equality_t &&sourceLinkEquality)
const;
154 bool dumpobj_{
false};
161 double processing_time_{0.};
164 std::map<std::string, double> profiling_map_;
166 bool debug_acts_{
false};
168 std::shared_ptr<Acts::PlaneSurface> target_surface_;
169 Acts::RotationMatrix3 surf_rotation_;
173 bool const_b_field_{
true};
176 bool remove_stereo_{
false};
179 bool use1_dmeasurements_{
true};
185 double propagator_step_size_{200.};
186 int propagator_max_steps_{1000};
189 bool use_extrapolate_location_{
true};
190 std::vector<double> extrapolate_location_{0., 0., 0.};
191 bool use_seed_perigee_{
false};
194 std::string measurement_collection_{
"TaggerMeasurements"};
196 std::string sim_particles_pass_name_;
197 std::string sim_particles_event_passname_;
204 double outlier_pval_{3.84};
207 std::string out_trk_collection_{
"Tracks"};
210 std::string seed_coll_name_{
"seedTracks"};
213 std::string field_map_{
""};
215 std::string input_pass_name_{
""};
218 std::unique_ptr<const CkfPropagator> propagator_;
222 const Acts::CombinatorialKalmanFilter<CkfPropagator, TrackContainer>>
226 std::shared_ptr<tracking::reco::TrackExtrapolatorTool<CkfPropagator>>
235 std::vector<double> map_offset_{
242 bool tagger_tracking_{
true};
Base classes for all user event processing components to extend.
Conditions object for random number seeds.
A source link that stores just an index_.
Implements an event buffer system for storing event data.
Class which represents the process under execution.
virtual void process(Event &event) final
Processing an event for a Producer is calling produce.
Class encapsulating parameters for configuring a processor.
void produce(framework::Event &event) override
Run the processor.
void configure(framework::config::Parameters ¶meters) override
Configure the processor using the given user specified parameters.
void onNewRun(const ldmx::RunHeader &rh) override
onNewRun is the first function called for each processor after the conditions are fully configured an...
CKFProcessor(const std::string &name, framework::Process &process)
Constructor.
int nseeds_
n seeds and n tracks
void onProcessStart() override
Callback for the EventProcessor to take any necessary action when the processing of events starts,...
void onProcessEnd() override
Callback for the EventProcessor to take any necessary action when the processing of events finishes,...
virtual ~CKFProcessor()=default
Destructor.
a helper base class providing some methods to shorten access to common conditions used within the tra...
The measurement calibrator can be a function or a class/struct able to retrieve the sim hits containe...