36 throw std::invalid_argument(
"Missing source link input collection");
39 throw std::invalid_argument(
"Missing measurement input collection");
42 throw std::invalid_argument(
"Missing space point output collection");
45 throw std::invalid_argument(
"Missing tracking geometry");
48 throw std::invalid_argument(
"Missing space point maker geometry selection");
57 if ((geoId.approach() != 0
u) or (geoId.boundary() != 0
u) or
58 (geoId.sensitive() != 0
u)) {
59 throw std::invalid_argument(
60 "Invalid geometry selection: only volume and layer are allowed to be "
87 auto geoSelLastUnique = std::unique(geoSelBeg, geoSelEnd, isDuplicate);
88 if (geoSelLastUnique != geoSelEnd) {
90 <<
" geometry selection duplicates");
93 ACTS_INFO(
"Space point geometry selection:");
102 spBuilderConfig.slSurfaceAccessor
103 .connect<&IndexSourceLink::SurfaceAccessor::operator()>(
108 boost::container::static_vector<Acts::SourceLink, 2> slinks)
114 spBuilderConfig, spConstructor,
120 const auto& sourceLinks = m_inputSourceLinks(ctx);
121 const auto& measurements = m_inputMeasurements(ctx);
128 const auto& meas = measurements[islink.index()];
131 [](
const auto& measurement) {
132 auto expander = measurement.expander();
135 expander * measurement.covariance() * expander.transpose();
136 return std::make_pair(par, cov);
149 for (
auto [moduleGeoId, moduleSourceLinks] : groupedByModule) {
150 for (
auto& sourceLink : moduleSourceLinks) {
151 m_spacePointBuilder.buildSpacePoint(
153 std::back_inserter(spacePoints));
158 spacePoints.shrink_to_fit();
160 ACTS_DEBUG(
"Created " << spacePoints.size() <<
" space points");
161 m_outputSpacePoints(ctx,
std::move(spacePoints));