key4hep / key4hep/k4MarlinWrapper
Collection name has leftover `/` from TES in EDM4hep2Lcio
- 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
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