10 : m_measurementOffsets(nMeasurementContainerMax, 0
ul)
19 throw std::runtime_error(
"Adding collection with too big a typeIndex");
35 std::size_t n_elements = clusterContainer.
size();;
36 std::size_t sl_idx = 0;
37 for( ; sl_idx < n_elements; ++sl_idx) {
38 const auto *measurement = clusterContainer[sl_idx];
39 if (measurement->identifierHash() != lastIdHash or
40 measurement->type() != lastMeasurementType)
43 currentRange->
updateEnd(typeIndex, sl_idx);
45 lastIdHash = measurement->identifierHash();
46 lastMeasurementType = measurement->type();
50 if (measurementSurfaceId.value() == 0
u) {
52 throw std::domain_error(
"No Acts surface associated to measurement");
59 std::stringstream
msg;
60 msg <<
"Measurement not clustered by identifierHash / geometryId. New measurement "
61 << sl_idx <<
" with geo Id " << measurementSurfaceId
62 <<
" type = " <<
static_cast<unsigned int>(measurement->type())
63 <<
" idHash=" << measurement->identifierHash()
64 <<
" but already recorded for this geo ID the range : [" << ret.first->second.containerIndex() <<
"]"
65 << ret.first->second.elementBeginIndex()
66 <<
" .. " << ret.first->second.elementEndIndex()
67 << (ret.first->second.isConsistentRange() ?
"" :
" !Container index inconsistent or not in increasing order!");
68 throw std::runtime_error(
msg.str());
70 currentRange = &ret.first->second;
75 currentRange->
updateEnd(typeIndex, sl_idx);
81 std::vector<std::pair<const xAOD::UncalibratedMeasurementContainer *, std::size_t>>
84 std::vector<std::pair<const xAOD::UncalibratedMeasurementContainer *, std::size_t>> offsets;
92 {
return a.containerPtr(); },