key4hep / key4hep/k4MarlinWrapper

Collection name has leftover `/` from TES in EDM4hep2Lcio

Open
#235 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
3
Forks
19
PR merge metrics
No merged PRs in 30d

Description

### TL; DR:

It is only removed for the `collectionNames`, not for `idToName`
https://github.com/key4hep/k4MarlinWrapper/blob/163d9a184cf2a196c2d55aa9199f76ee2ecee39a/k4MarlinWrapper/src/components/StoreUtils.cpp#L90-L98

The name from `idToName` ends up as is in `lcio_event->getCollection(name)`
https://github.com/key4hep/k4MarlinWrapper/blob/163d9a184cf2a196c2d55aa9199f76ee2ecee39a/k4MarlinWrapper/src/components/EDM4hep2Lcio.cpp#L466-L469

This then throws an uncaught missing collection exception that only gets reported by the MarlinProcessorWrapper this tool was attached to, at first glance looking like one of the usual missing collection problems...

```
[ctest] ToolSvc.EventNu... DEBUG Event: 0 Run: 0
[ctest] EventNumber FATAL Standard std::exception is caught in sysExecute
[ctest] EventNumber ERROR lcio::DataNotAvailableException: LCEventImpl::getCollection: collection not in event:/BuildUpVertices
```

I have not looked at everything so I don't know if we can just remove the `/` or if we need more changes to not break in another place. We also should also add a test covering this.

### More details:

I encountered this while trying to add the MLJetTagger to CLDConfig after switching to the `IOSvc`
https://github.com/key4hep/CLDConfig/pull/78

From this comment it looks like that part of the code should not even run for the `BuildUpVertices`
https://github.com/key4hep/k4MarlinWrapper/blob/163d9a184cf2a196c2d55aa9199f76ee2ecee39a/k4MarlinWrapper/src/components/EDM4hep2Lcio.cpp#L462
But I think the actual condition is different, all my collections are from the TES event if not produced by a functional algorithm
```
[ctest] ToolSvc.EventNu... INFO Converting all collections from EDM4hep to LCIO
[ctest] ToolSvc.EventNu... DEBUG Adding 'YokeEndcapCollectionContributions' from TES to conversion? trueAdding 'YokeEndcapCollection' from TES to conversion? trueAdding 'VertexBarrelCollection' from TES to conversion? trueAdding 'OuterTrackerBarrelCollection' from TES to conversion? trueAdding 'YokeBarrelCollectionContributions' from TES to conversion? trueAdding 'VertexEndcapCollection' from TES to conversion? trueAdding 'LumiCalCollection' from TES to conversion? trueAdding 'ECalBarrelCollection' from TES to conversion? trueAdding 'YokeBarrelCollection' from TES to conversion? trueAdding 'OuterTrackerEndcapCollection' from TES to conversion? trueAdding 'HCalRingCollection' from TES to conversion? trueAdding 'HCalRingCollectionContributions' from TES to conversion? trueAdding 'MCParticles' from TES to conversion? falseAdding 'ECalBarrelCollectionContributions' from TES to conversion? trueAdding 'EventHeader' from TES to conversion? trueAdding 'ECalEndcapCollectionContributions' from TES to conversion? trueAdding 'HCalBarrelCollectionContributions' from TES to conversion? trueAdding 'LumiCalCollectionContributions' from TES to conversion? trueAdding 'ECalEndcapCollection' from TES to conversion? trueAdding 'HCalBarrelCollection' from TES to conversion? trueAdding 'InnerTrackerBarrelCollection' from TES to conversion? trueAdding 'HCalEndcapCollection' from TES to conversion? trueAdding 'HCalEndcapCollectionContributions' from TES to conversion? trueAdding 'InnerTrackerEndcapCollection' from TES to conversion? trueAdding 'BuildUpVertices' from TES to conversion? trueAdding 'BuildUpVertices_associatedParticles' from TES to conversion? trueAdding 'BuildUpVertices_RP' from TES to conversion? trueAdding 'BuildUpVertices_RP_startVertices' from TES to conversion? trueAdding 'BuildUpVertices_V0' from TES to conversion? trueAdding 'BuildUpVertices_V0_associatedParticles' from TES to conversion? trueAdding 'BuildUpVertices_V0_RP' from TES to conversion? trueAdding 'BuildUpVertices_V0_RP_startVertices' from TES to conversion? trueAdding 'ECALBarrel' from TES to conversion? trueAdding 'ECALEndcap' from TES to conversion? trueAdding 'HCALBarrel' from TES to conversion? trueAdding 'HCALEndcap' from TES to conversion? trueAdding 'HCALOther' from TES to conversion? trueAdding 'ITrackerEndcapHits' from TES to conversion? trueAdding 'ITrackerHits' from TES to conversion? trueAdding 'LumiCalClusters' from TES to conversion? trueAdding 'LumiCalHits' from TES to conversion? trueAdding 'LumiCalRecoParticles' from TES to conversion? trueAdding 'LumiCalRecoParticles_startVertices' from TES to conversion? trueAdding 'MUON' from TES to conversion? trueAdding 'OTrackerEndcapHits' from TES to conversion? trueAdding 'OTrackerHits' from TES to conversion? trueAdding 'PandoraClusters' from TES to conversion? trueAdding 'PandoraPFOs' from TES to conversion? trueAdding 'PandoraPFOs_startVertices' from TES to conversion? trueAdding 'PandoraStartVertices' from TES to conversion? trueAdding 'PandoraStartVertices_associatedParticles' from TES to conversion? trueAdding 'PrimaryVertices' from TES to conversion? trueAdding 'PrimaryVertices_associatedParticles' from TES to conversion? trueAdding 'PrimaryVertices_RP' from TES to conversion? trueAdding 'PrimaryVertices_RP_startVertices' from TES to conversion? trueAdding 'RefinedVertexJets' from TES to conversion? trueAdding 'RefinedVertexJets_PID_yth' from TES to conversion? trueAdding 'RefinedVertexJets_startVertices' from TES to conversion? trueAdding 'RefinedVertexJets_vtx' from TES to conversion? trueAdding 'RefinedVertexJets_vtx_associatedParticles' from TES to conversion? trueAdding 'RefinedVertexJets_vtx_RP' from TES to conversion? trueAdding 'RefinedVertexJets_vtx_RP_startVertices' from TES to conversion? trueAdding 'RefinedVertices' from TES to conversion? trueAdding 'RefinedVertices_associatedParticles' from TES to conversion? trueAdding 'RefinedVertices_RP' from TES to conversion? trueAdding 'RefinedVertices_RP_startVertices' from TES to conversion? trueAdding 'SiTracks' from TES to conversion? trueAdding 'SiTracks_dQdx' from TES to conversion? trueAdding 'SiTracksCT' from TES to conversion? trueAdding 'SiTracksCT_dQdx' from TES to conversion? trueAdding 'SiTracks_Refitted' from TES to conversion? trueAdding 'SiTracks_Refitted_dQdx' from TES to conversion? trueAdding 'VXDEndcapTrackerHits' from TES to conversion? trueAdding 'VXDTrackerHits' from TES to conversion? trueAdding 'VertexJets' from TES to conversion? trueAdding 'VertexJets_PID_yth' from TES to conversion? trueAdding 'VertexJets_startVertices' from TES to conversion? trueAdding 'DebugHits' from TES to conversion? trueAdding 'EfficientMCParticles' from TES to conversion? trueAdding 'InefficientMCParticles' from TES to conversion? trueAdding 'LooseSelectedPandoraPFOs' from TES to conversion? trueAdding 'MCParticlesSkimmed' from TES to conversion? trueAdding 'MCPhysicsParticles' from TES to conversion? trueAdding 'PFOsFromJets' from TES to conversion? trueAdding 'SelectedPandoraPFOs' from TES to conversion? trueAdding 'TightSelectedPandoraPFOs' from TES to conversion? trueAdding 'CalohitMCTruthLink' from TES to conversion? trueAdding 'ClusterMCTruthLink' from TES to conversion? trueAdding 'InnerTrackerBarrelHitsRelations' from TES to conversion? trueAdding 'InnerTrackerEndcapHitsRelations' from TES to conversion? trueAdding 'MCTruthClusterLink' from TES to conversion? trueAdding 'MCTruthRecoLink' from TES to conversion? trueAdding 'MCTruthSiTracksLink' from TES to conversion? trueAdding 'OuterTrackerBarrelHitsRelations' from TES to conversion? trueAdding 'OuterTrackerEndcapHitsRelations' from TES to conversion? trueAdding 'RecoMCTruthLink' from TES to conversion? trueAdding 'RefinedVertexJets_rel' from TES to conversion? trueAdding 'RelationCaloHit' from TES to conversion? trueAdding 'RelationMuonHit' from TES to conversion? trueAdding 'SiTracksMCTruthLink' from TES to conversion? trueAdding 'VXDEndcapTrackerHitRelations' from TES to conversion? trueAdding 'VXDTrackerHitRelations' from TES to conversion? trueAdding 'RefinedJetTag_G' from TES to conversion? trueAdding 'RefinedJetTag_U' from TES to conversion? trueAdding 'RefinedJetTag_S' from TES to conversion? trueAdding 'RefinedJetTag_C' from TES to conversion? trueAdding 'RefinedJetTag_B' from TES to conversion? trueAdding 'RefinedJetTag_D' from TES to conversion? trueAdding 'RefinedJetTag_TAU' from TES to conversion? trueConverting collection EventHeader (storing it as )
```
(there is also a missing `endmsg()` in that printout)

Contributor guide

Open the contributing guide

Research direction

Start by reading the linked handling in src/components/StoreUtils.cpp and src/components/EDM4hep2Lcio.cpp, especially the collectionNames/idToName flow and the lcio_event->getCollection(name) call. Reproduce the missing-collection exception, then add a regression test covering a TES-derived name and verify that collection lookup no longer retains the leftover slash.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.