32 #include <pybind11/pybind11.h>
33 #include <pybind11/stl.h>
36 class MagneticFieldProvider;
39 namespace py = pybind11;
43 template <
typename stepper_t,
typename navigator_t>
46 py::class_<propagator_t>(
m, (prefix +
"Propagator").c_str())
54 py::arg(
"stepper"), py::arg(
"navigator"),
59 std::shared_ptr<prop_if_t>>(
60 m, (prefix +
"ConcretePropagator").c_str())
61 .def(py::init<propagator_t>());
66 namespace Acts::Python {
68 auto [
m, prop, mex] = ctx.
get(
"main",
"propagation",
"examples");
73 py::class_<Acts::Navigator, std::shared_ptr<Acts::Navigator>>(
81 auto c = py::class_<Config>(nav,
"Config").def(py::init<>());
95 std::shared_ptr<Acts::Experimental::DetectorNavigator>>(
96 m,
"DetectorNavigator")
99 return Acts::Experimental::DetectorNavigator{
104 auto c = py::class_<Config>(nav,
"Config").def(py::init<>());
116 propagatorImpl, randomNumberSvc,
mode, sterileLogger, debugOutput,
117 energyLoss, multipleScattering, recordMaterialInteractions,
ntests,
118 d0Sigma, z0Sigma, phiSigma, thetaSigma, qpSigma, tSigma, phiRange,
120 propagationStepCollection, propagationMaterialCollection,
121 covarianceTransport, covariances, correlations);
123 py::class_<ActsExamples::PropagatorInterface,
124 std::shared_ptr<ActsExamples::PropagatorInterface>>(
125 mex,
"PropagatorInterface");
128 auto stepper = py::class_<Acts::EigenStepper<>>(
m,
"EigenStepper");
133 [](std::shared_ptr<const Acts::MagneticFieldProvider>
bField,
136 return {
std::move(bField), overstepLimit.value()};
141 py::arg(
"bField"), py::arg(
"overstepLimit") = std::nullopt);
152 auto stepper = py::class_<Acts::AtlasStepper>(
m,
"AtlasStepper");
153 stepper.def(
py::init<std::shared_ptr<const Acts::MagneticFieldProvider>>());
155 addPropagator<Acts::AtlasStepper, Acts::Navigator>(prop,
"Atlas");
160 py::class_<Acts::StraightLineStepper>(
m,
"StraightLineStepper");
163 addPropagator<Acts::StraightLineStepper, Acts::Navigator>(prop,