21 const Acts::Result<Acts::TrackContainer<Acts::VectorTrackContainer, Acts::VectorMultiTrajectory,
22 Acts::ValueHolder>::TrackProxy>& actsResult,
23 Acts::TrackContainer<Acts::VectorTrackContainer, Acts::VectorMultiTrajectory,
24 Acts::ValueHolder>& tracks,
25 Acts::GeometryContext
const& gctx) {
26 TrackFitResult result;
27 if (!actsResult.ok()) {
28 result.fit_status = 1;
32 auto track = actsResult.value();
33 const auto& params = track.parameters();
34 auto& states = tracks.trackStateContainer();
36 result.fit_status = 0;
37 result.chi2 = track.chi2();
38 result.ndf = track.nDoF();
39 result.q_over_p = params[Acts::eBoundQOverP];
40 result.phi = params[Acts::eBoundPhi];
41 result.theta = params[Acts::eBoundTheta];
42 result.time = params[Acts::eBoundTime];
49 if (track.hasReferenceSurface()) {
50 Acts::Vector3
const direction(std::sin(result.theta) * std::cos(result.phi),
51 std::sin(result.theta) * std::sin(result.phi),
52 std::cos(result.theta));
53 auto const global = track.referenceSurface().localToGlobal(
54 gctx, Acts::Vector2{params[Acts::eBoundLoc0], params[Acts::eBoundLoc1]}, direction);
55 result.ref_loc = {global.x(), global.y(), global.z()};
59 result.ref_loc = {params[Acts::eBoundLoc0], params[Acts::eBoundLoc1], 0.0};
62 states.visitBackwards(track.tipIndex(), [&](
auto ts) {
63 if (!ts.typeFlags().isMeasurement()) {
66 if (!(ts.hasCalibrated())) {
69 if (!ts.hasSmoothed()) {
73 auto meas = ts.template calibrated<2>();
74 auto smooth = ts.smoothed();
77 fitted << smooth[Acts::eBoundLoc0], smooth[Acts::eBoundLoc1];
79 Acts::Vector2 residual = meas - fitted;
80 result.input_measurements_x.push_back(meas[0]);
81 result.input_measurements_y.push_back(meas[1]);
82 result.fitted_measurements_x.push_back(fitted[0]);
83 result.fitted_measurements_y.push_back(fitted[1]);
84 result.residuals_x.push_back(residual[0]);
85 result.residuals_y.push_back(residual[1]);
88 result.n_meas =
static_cast<std::int32_t
>(result.input_measurements_x.size());
TrackFitResult fromActsFitResult(const Acts::Result< Acts::TrackContainer< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory, Acts::ValueHolder >::TrackProxy > &actsResult, Acts::TrackContainer< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory, Acts::ValueHolder > &tracks, Acts::GeometryContext const &gctx)
Definition Utilities.hpp:20