382 {
383 if (linkIndex == 0 && linkKey == 0)
384 {
386 return;
387 }
388
389 unsigned targetIndex = 0
u;
391 ++ targetIndex;
392
393
394
395
396
397
398
399
400
402 {
404 {
407 {
409 allowedSet.insert(i);
410 }
411 }
413 for (auto iter = allowedSet.begin(); iter != allowedSet.end();)
414 {
417 if (eventIndex + 1 >= targetOffsetColumn.size())
418 throw std::runtime_error (
"target offset column not yet filled for: " +
m_targetNames.at(index));
419 if (targetOffsetColumn.at(eventIndex) + linkIndex >= targetOffsetColumn.at(eventIndex + 1))
420 iter = allowedSet.erase(iter);
421 else
423 }
424
425
426
427
428
429
430
431
433 {
435 targetIndex = *allowedSet.begin();
436 else
437 {
438 std::ostringstream
error;
439 error <<
"target key mismatch: read sgkey " << std::hex << linkKey << std::dec;
442 {
445 {
446 error <<
", alternate key found for non-variant link:";
448 {
449 if (key != linkKey)
450 error <<
" " << std::hex <<
key << std::dec;
451 }
452 } else
453 {
455 }
456 throw std::runtime_error (std::move (error).
str());
457 }
458 }
459 }
460
462 {
463
464
466 return;
467 }
468
470 if (eventIndex + 1 >= targetOffsetColumn.size())
471 throw std::runtime_error (
"target offset column not yet filled for: " +
m_targetNames.at(targetIndex));
472 auto myLinkIndex =
linkIndex + targetOffsetColumn.at(eventIndex);
473 if (myLinkIndex >= targetOffsetColumn.at(eventIndex + 1))
474 throw std::runtime_error (
"index out of range for link: " +
m_columnName +
" with element index " + std::to_string(linkIndex) +
" targeting " +
m_targetNames.at(targetIndex) +
" with offset " + std::to_string(targetOffsetColumn.at(eventIndex)) +
" and next offset " + std::to_string(targetOffsetColumn.at(eventIndex + 1)));
475
477 }
std::vector< SG::sgkey_t > m_targetKeys
std::vector< const std::vector< ColumnarOffsetType > * > m_targetOffsetColumns
std::vector< std::vector< typename CM::LinkKeyType > > m_keysColumns
@ u
Enums for curvilinear frames.
@ linkIndex
link index for multiple track and vertex matches
static LinkIndexType mergeLinkKeyIndex(LinkIndexType key, LinkIndexType index)
merge a key and index value into a link value