14 namespace ActsExamples {
50 template <
typename propagator_t>
60 return executeTest(context, cfg, logger, startParameters);
69 template <
typename parameters_t>
73 double pathLength = std::numeric_limits<double>::max())
const {
74 ACTS_DEBUG(
"Test propagation/extrapolation starts");
86 using ActionList = Acts::ActionList<SteppingLogger, MaterialInteractor>;
87 using AbortList = Acts::AbortList<EndOfWorld>;
88 using PropagatorOptions =
91 PropagatorOptions
options(context.geoContext, context.magFieldContext);
96 startParameters.transverseMomentum() < cfg.ptLoopers;
99 auto& mInteractor =
options.actionList.get<MaterialInteractor>();
100 mInteractor.multipleScattering = cfg.multipleScattering;
101 mInteractor.energyLoss = cfg.energyLoss;
102 mInteractor.recordInteractions = cfg.recordMaterialInteractions;
105 auto& sLogger =
options.actionList.get<SteppingLogger>();
106 sLogger.sterile = cfg.sterileLogger;
108 options.maxStepSize = cfg.maxStepSize;
111 auto result = m_propagator.propagate(startParameters,
options);
113 const auto& resultValue = result.value();
114 auto steppingResults =
115 resultValue.template get<SteppingLogger::result_type>();
118 pOutput.first =
std::move(steppingResults.steps);
120 if (cfg.recordMaterialInteractions) {
121 auto materialResult =
122 resultValue.template get<MaterialInteractor::result_type>();
123 pOutput.second =
std::move(materialResult);