48 auto copy =
m_copy->copy(ctx);
49 traccc::edm::measurement_collection::host meas_host{
m_hostMR->mr()};
50 (*copy)(*measurements, meas_host)->wait();
51 ATH_MSG_DEBUG(
"Copied " << meas_host.size() <<
" measurements.");
56 for (std::size_t i = 0; i < meas_host.size(); ++i) {
57 if (meas_host[i].dimensions() == 2u) ++n_pixels;
65 auto pixel_cont = std::make_unique<xAOD::PixelClusterContainer>(
67 auto pixel_aux = std::make_unique<xAOD::PixelClusterAuxContainer>();
68 auto strip_cont = std::make_unique<xAOD::StripClusterContainer>(
70 auto strip_aux = std::make_unique<xAOD::StripClusterAuxContainer>();
75 pixel_cont->push_new(n_pixels,
77 strip_cont->push_new(n_strips,
80 pixel_aux->resize(pixel_cont->size());
81 strip_aux->resize(strip_cont->size());
83 pixel_cont->setStore(pixel_aux.get());
84 strip_cont->setStore(strip_aux.get());
87 auto pixItr = pixel_cont->begin();
88 auto stripItr = strip_cont->begin();
93 for (std::size_t i = 0; i < meas_host.size(); ++i) {
94 const auto& meas = meas_host[i];
95 const uint64_t detrayId = meas.surface_link().value();
98 if (meas.dimensions() == 2u) {
107 meas.local_position()[1]);
110 Eigen::Matrix<float, 2, 1> localPosition(localPos.x(), localPos.y());
111 Eigen::Matrix<float, 2, 2> localCovariance =
112 Eigen::Matrix<float, 2, 2>::Zero();
113 localCovariance(0, 0) = meas.local_variance()[0];
114 localCovariance(1, 1) = meas.local_variance()[1];
118 xaod_pcl->
setMeasurement<2>(pixHash, localPosition, localCovariance);
120 Eigen::Matrix<float, 3, 1>(gp.x(), gp.y(), gp.z());
134 Eigen::Matrix<float, 1, 1> localPosition = Eigen::Matrix<float, 1, 1>::Zero();
135 Eigen::Matrix<float, 1, 1> localCovariance = Eigen::Matrix<float, 1, 1>::Zero();
138 localPosition(0, 0) = meas.local_position()[0];
139 localCovariance(0, 0) = meas.local_variance()[0];
141 localPosition(0, 0) = meas.local_position()[1];
142 localCovariance(0, 0) = meas.local_variance()[1];
147 xaod_scl->
setMeasurement<1>(stripHash, localPosition, localCovariance);
154 ATH_MSG_DEBUG(
"Converted " << pixel_idx <<
" pixel clusters, "
155 << strip_idx <<
" strip clusters");
163 ATH_CHECK(pixelHandle.
record(std::move(pixel_cont), std::move(pixel_aux)));
166 ATH_CHECK(stripHandle.
record(std::move(strip_cont), std::move(strip_aux)));
168 return StatusCode::SUCCESS;