13 : m_measurementOffsets(nMeasurementContainerMax, 0
ul) {}
34 std::size_t n_elements = clusterContainer.
size();;
35 std::size_t sl_idx = 0;
36 for( ; sl_idx < n_elements; ++sl_idx) {
37 const auto *measurement = clusterContainer[sl_idx];
38 if (measurement->identifierHash() != lastIdHash or
39 measurement->type() != lastMeasurementType)
42 currentRange->
updateEnd(typeIndex, sl_idx);
44 lastIdHash = measurement->identifierHash();
45 lastMeasurementType = measurement->type();
49 if (measurementSurfaceId.value() == 0
u) {
51 throw std::domain_error(
"No Acts surface associated to measurement");
58 std::stringstream
msg;
59 msg <<
"Measurement not clustered by identifierHash / geometryId. New measurement "
60 << sl_idx <<
" with geo Id " << measurementSurfaceId
61 <<
" type = " <<
static_cast<unsigned int>(measurement->type())
62 <<
" idHash=" << measurement->identifierHash()
63 <<
" but already recorded for this geo ID the range : [" << ret.first->second.containerIndex() <<
"]"
64 << ret.first->second.elementBeginIndex()
65 <<
" .. " << ret.first->second.elementEndIndex()
66 << (ret.first->second.isConsistentRange() ?
"" :
" !Container index inconsistent or not in increasing order!");
67 throw std::runtime_error(
msg.str());
69 currentRange = &ret.first->second;
74 currentRange->
updateEnd(typeIndex, sl_idx);