diff --git a/DDDigi/src/DigiContainerCombine.cpp b/DDDigi/src/DigiContainerCombine.cpp index a68e6f53915829aa79362093b7349af8a4580229..700c97c2dc2017de3b8339914f942056592c63df 100644 --- a/DDDigi/src/DigiContainerCombine.cpp +++ b/DDDigi/src/DigiContainerCombine.cpp @@ -103,12 +103,14 @@ public: for( std::size_t j=start; j < keys.size(); ++j ) { if ( keys[j].item() == key.item() ) { DetectorHistory* next = std::any_cast<DetectorHistory>(work[j]); - std::string next_name = next->name; - cnt = (combine->m_erase_combined) ? out.merge(std::move(*next)) : out.insert(*next); - combine->info(format, thr, next_name.c_str(), keys[j].mask(), cnt, "histories"); - used_keys_insert(keys[j]); - cnt_hist += cnt; - cnt_conts++; + if ( next ) { + std::string next_name = next->name; + cnt = (combine->m_erase_combined) ? out.merge(std::move(*next)) : out.insert(*next); + combine->info(format, thr, next_name.c_str(), keys[j].mask(), cnt, "histories"); + used_keys_insert(keys[j]); + cnt_hist += cnt; + cnt_conts++; + } } } key.set_mask(combine->m_deposit_mask); @@ -122,12 +124,14 @@ public: for( std::size_t j=start; j < keys.size(); ++j ) { if ( keys[j].item() == key.item() ) { DetectorResponse* next = std::any_cast<DetectorResponse>(work[j]); - std::string next_name = next->name; - cnt = (combine->m_erase_combined) ? out.merge(std::move(*next)) : out.insert(*next); - combine->info(format, thr, next_name.c_str(), keys[j].mask(), cnt, "responses"); - used_keys_insert(keys[j]); - cnt_response += cnt; - cnt_conts++; + if ( next ) { + std::string next_name = next->name; + cnt = (combine->m_erase_combined) ? out.merge(std::move(*next)) : out.insert(*next); + combine->info(format, thr, next_name.c_str(), keys[j].mask(), cnt, "responses"); + used_keys_insert(keys[j]); + cnt_response += cnt; + cnt_conts++; + } } } key.set_mask(combine->m_deposit_mask); diff --git a/DDDigi/src/DigiData.cpp b/DDDigi/src/DigiData.cpp index bbe18cd3ebcadb2eaeb5d69939edb80c6d404367..fc9b20771f00557bb59944efcfc48124baae6fbd 100644 --- a/DDDigi/src/DigiData.cpp +++ b/DDDigi/src/DigiData.cpp @@ -450,7 +450,7 @@ void DataSegment::print_keys() const { /// Call on failed any-casts during data requests std::string DataSegment::invalid_cast(Key key, const std::type_info& type) const { - return dd4hep::format(0, "Invalid segment data cast. Key:%-32s %016lX -> %04X %04X %10ld type:%s", + return dd4hep::format(0, "Invalid segment data cast. Key:%-32s %016lX -> %04X %04X %08X type:%s", Key::key_name(key).c_str(), key.value(), key.segment(), key.mask(), key.item(), typeName(type).c_str()); diff --git a/DDDigi/src/DigiStoreDump.cpp b/DDDigi/src/DigiStoreDump.cpp index d3144fae47889e4fe49274a8559f931a10455c7a..37f9e715ccfcee3c961afe50330f488ed1cd5dbe 100644 --- a/DDDigi/src/DigiStoreDump.cpp +++ b/DDDigi/src/DigiStoreDump.cpp @@ -167,7 +167,7 @@ DigiStoreDump::dump_history(DigiContext& context, std::vector<std::string> records; str << Key::key_name(container_key) << "[" << seq_no << "]:"; - line = format("+----- %-30s Container: Segment:%04X Mask:%04X Item:%08X Cell:%016X Hist: Hits:%ld Parts:%ld", + line = format("+----- %-30s Container: Segment:%04X Mask:%04X Item:%08X Cell:%016lX Hist: Hits:%ld Parts:%ld", str.str().c_str(), container_key.segment(), container_key.mask(), container_key.item(), cell, history.hits.size(), history.particles.size()); records.emplace_back(line);